diff --git a/CMakeLists.txt b/CMakeLists.txt
index 29e41047a1..4e8b26e254 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,8 @@ cmake_minimum_required(VERSION 2.6)
option(ANDROID "Enables a build for Android" OFF)
option(USE_EGL "Enables EGL OpenGL Interface" OFF)
+option(USE_X11 "Enables X11 Support" ON)
+option(USE_WAYLAND "Enables Wayland Support" OFF)
option(USE_GLES "Enables GLES And EGL, disables OGL" OFF)
option(DISABLE_WX "Disable wxWidgets (use CLI interface)" OFF)
@@ -114,6 +116,8 @@ if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm")
add_definitions(-marm -march=armv7-a)
add_definitions(-D_M_ARM=1)
add_definitions(-D_M_GENERIC=1)
+# Set generic options so you don't have to pass anything to cmake to build ARM
+ set(USE_GLES 1)
endif()
# Set these next two lines to test generic
@@ -168,8 +172,8 @@ if(APPLE)
set(ENV{PATH} /usr/bin:/bin:/usr/sbin:/sbin)
# Some of our code contains Objective C constructs.
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -x objective-c")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -x objective-c++")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -x objective-c -stdlib=libc++")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -x objective-c++ -stdlib=libc++")
# Avoid mistaking an object file for a source file on the link command line.
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -x none")
@@ -180,10 +184,10 @@ if(APPLE)
# This is inserted into the Info.plist as well.
# Note that the SDK determines the maximum version of which optional
# features can be used, not the minimum required version to run.
- set(OSX_MIN_VERSION "10.5.4")
+ set(OSX_MIN_VERSION "10.7")
set(TARGET_FLAGS "${TARGET_FLAGS} -mmacosx-version-min=${OSX_MIN_VERSION}")
- set(SYSROOT_LEGACY_PATH "/Developer/SDKs/MacOSX10.6.sdk")
- set(SYSROOT_PATH "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk")
+ set(SYSROOT_LEGACY_PATH "/Developer/SDKs/MacOSX10.7.sdk")
+ set(SYSROOT_PATH "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk")
if(EXISTS "${SYSROOT_PATH}/")
set(TARGET_SYSROOT ${SYSROOT_PATH})
elseif(EXISTS "${SYSROOT_LEGACY_PATH}/")
@@ -197,8 +201,8 @@ if(APPLE)
# This avoids a warning when linking with QuickTime.
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-no_arch_warnings")
# Specify target CPUs.
- set(TARGET_FLAGS "${TARGET_FLAGS} -Xarch_x86_64 -mssse3")
- set(TARGET_FLAGS "${TARGET_FLAGS} -Xarch_x86_64 -march=core2")
+ set(TARGET_FLAGS "${TARGET_FLAGS} -mssse3")
+ set(TARGET_FLAGS "${TARGET_FLAGS} -march=core2")
# Target flags apply to both C and C++ compilation.
# CMake passes these to the compiler on the link command line as well.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TARGET_FLAGS}")
@@ -247,9 +251,9 @@ if(CMAKE_BUILD_TYPE STREQUAL Debug)
set(wxWidgets_USE_DEBUG ON CACHE BOOL "Use wxWidgets Debugging")
endif(CMAKE_BUILD_TYPE STREQUAL Debug)
-if(CMAKE_BUILD_TYPE STREQUAL Release)
+if(CMAKE_BUILD_TYPE STREQUAL Release AND NOT APPLE)
add_definitions(-fomit-frame-pointer)
-endif(CMAKE_BUILD_TYPE STREQUAL Release)
+endif()
if(FASTLOG)
add_definitions(-DDEBUGFAST)
@@ -263,16 +267,28 @@ if(USE_GLES)
add_definitions(-DUSE_EGL=1)
set(USE_EGL True)
endif()
+# For now Wayland and EGL are tied to each other.
+# The alternative would be an shm path
+if(USE_WAYLAND)
+ add_definitions(-DUSE_EGL)
+ set(USE_EGL 1)
+endif()
if(USE_EGL)
message("EGL OpenGL interface enabled")
add_definitions(-DUSE_EGL=1)
+else()
+# Using GLX
+ set(USE_X11 1)
+ set(USE_WAYLAND 0)
endif()
add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
if(ANDROID)
message("Building for Android")
add_definitions(-DANDROID)
+ set(USE_X11 0)
+ set(USE_WAYLAND 0)
endif()
########################################
# Dependency checking
@@ -348,29 +364,53 @@ if(NOT ANDROID)
message("OpenAL NOT found, disabling OpenAL sound backend")
endif(OPENAL_FOUND)
+ if(UNIX AND NOT APPLE)
+# Note: The convention is to check USE_X11 or USE_WAYLAND where needed.
+# This is where we detect platforms and set the variables accordingly.
+ pkg_check_modules(WAYLAND wayland-egl wayland-client wayland-cursor)
+ if(USE_WAYLAND AND WAYLAND_FOUND)
+ pkg_check_modules(XKBCOMMON xkbcommon)
+ if(XKBCOMMON_FOUND)
+ set(USE_WAYLAND 1)
+ add_definitions(-DHAVE_WAYLAND)
+ include_directories(${WAYLAND_INCLUDE_DIR})
+ message("Wayland support enabled")
+ endif(XKBCOMMON_FOUND)
+ else()
+ set(USE_WAYLAND 0)
+ message("Wayland support disabled")
+ add_definitions(-DHAVE_WAYLAND=0)
+ endif(USE_WAYLAND AND WAYLAND_FOUND)
+
# Note: We do not need to explicitly check for X11 as it is done in the cmake
# FindOpenGL module on linux.
- if(UNIX AND NOT APPLE)
- if(X11_FOUND)
+ if(USE_X11 AND X11_FOUND)
+ set(USE_X11 1)
add_definitions(-DHAVE_X11=1)
include_directories(${X11_INCLUDE_DIR})
- message("X11 found")
+ message("X11 support enabled")
else()
- message(FATAL_ERROR "X11 is required but not found")
- endif(X11_FOUND)
- else()
- add_definitions(-DHAVE_X11=0)
+ set(USE_X11 0)
+ SET(X11_FOUND "")
+ message("X11 support disabled")
+ add_definitions(-DHAVE_X11=0)
+ endif(USE_X11 AND X11_FOUND)
+
+ if (NOT USE_WAYLAND AND NOT USE_X11)
+ message(FATAL_ERROR "\n"
+ "No suitable display platform found\n"
+ "Requires wayland or x11 to run")
+ endif()
endif()
- if(X11_FOUND)
+ if(USE_X11)
check_lib(XRANDR Xrandr)
+ if(XRANDR_FOUND)
+ add_definitions(-DHAVE_XRANDR=1)
+ else()
+ add_definitions(-DHAVE_XRANDR=0)
+ endif(XRANDR_FOUND)
endif()
- if(XRANDR_FOUND)
- add_definitions(-DHAVE_XRANDR=1)
- else()
- add_definitions(-DHAVE_XRANDR=0)
- endif(XRANDR_FOUND)
-
if(ENCODE_FRAMEDUMPS)
check_libav()
endif()
@@ -442,6 +482,13 @@ else()
set(LZO lzo2)
endif()
+if(ANDROID)
+ message("Using static libpng from Externals")
+ add_subdirectory(Externals/libpng)
+ include_directories(Externals/libpng)
+ set(PNG libpng)
+endif()
+
if(OPENAL_FOUND)
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
check_lib(SOUNDTOUCH SoundTouch soundtouch/soundtouch.h QUIET)
diff --git a/Data/User/GameConfig/G2BE5G.ini b/Data/User/GameConfig/G2BE5G.ini
index 53f2ebdc82..6c7f2952e2 100644
--- a/Data/User/GameConfig/G2BE5G.ini
+++ b/Data/User/GameConfig/G2BE5G.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for sound ingame.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G2BP7D.ini b/Data/User/GameConfig/G2BP7D.ini
index 27dca0e7c1..c1959c3d87 100644
--- a/Data/User/GameConfig/G2BP7D.ini
+++ b/Data/User/GameConfig/G2BP7D.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for sound ingame.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G3FE69.ini b/Data/User/GameConfig/G3FE69.ini
index 2f628b7bab..6e902ad0fa 100644
--- a/Data/User/GameConfig/G3FE69.ini
+++ b/Data/User/GameConfig/G3FE69.ini
@@ -15,7 +15,6 @@ PH_ZFar =
[Gecko]
[Core]
MMU = 1
-VBeam = 1
BlockMerging = 1
[Video_Settings]
SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/G3FF69.ini b/Data/User/GameConfig/G3FF69.ini
index 7367649d4b..37af95e657 100644
--- a/Data/User/GameConfig/G3FF69.ini
+++ b/Data/User/GameConfig/G3FF69.ini
@@ -15,7 +15,6 @@ PH_ZFar =
[Gecko]
[Core]
MMU = 1
-VBeam = 1
BlockMerging = 1
[Video_Settings]
SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/G3FP69.ini b/Data/User/GameConfig/G3FP69.ini
index 0272d70fde..cd74b017bf 100644
--- a/Data/User/GameConfig/G3FP69.ini
+++ b/Data/User/GameConfig/G3FP69.ini
@@ -15,7 +15,6 @@ PH_ZFar =
[Gecko]
[Core]
MMU = 1
-VBeam = 1
BlockMerging = 1
[Video_Settings]
SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/G3RD52.ini b/Data/User/GameConfig/G3RD52.ini
index e939d6e28a..826ce9cf01 100644
--- a/Data/User/GameConfig/G3RD52.ini
+++ b/Data/User/GameConfig/G3RD52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need lle audio to be fixed.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G3RE52.ini b/Data/User/GameConfig/G3RE52.ini
index 15a742f636..9c8fe2f404 100644
--- a/Data/User/GameConfig/G3RE52.ini
+++ b/Data/User/GameConfig/G3RE52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need lle audio to be fixed.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G3RF52.ini b/Data/User/GameConfig/G3RF52.ini
index cde2d9a8ca..f4309889ee 100644
--- a/Data/User/GameConfig/G3RF52.ini
+++ b/Data/User/GameConfig/G3RF52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need lle audio to be fixed.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G3RP52.ini b/Data/User/GameConfig/G3RP52.ini
index bb42289bd9..da409f4bb3 100644
--- a/Data/User/GameConfig/G3RP52.ini
+++ b/Data/User/GameConfig/G3RP52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need lle audio to be fixed.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G4FD69.ini b/Data/User/GameConfig/G4FD69.ini
index 4de9d5c61d..529b2e1109 100644
--- a/Data/User/GameConfig/G4FD69.ini
+++ b/Data/User/GameConfig/G4FD69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G4FE69.ini b/Data/User/GameConfig/G4FE69.ini
index f4b303cd32..858c03275b 100644
--- a/Data/User/GameConfig/G4FE69.ini
+++ b/Data/User/GameConfig/G4FE69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G4FF69.ini b/Data/User/GameConfig/G4FF69.ini
index 688bde8ea9..d44ff00823 100644
--- a/Data/User/GameConfig/G4FF69.ini
+++ b/Data/User/GameConfig/G4FF69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G4FP69.ini b/Data/User/GameConfig/G4FP69.ini
index f4b303cd32..858c03275b 100644
--- a/Data/User/GameConfig/G4FP69.ini
+++ b/Data/User/GameConfig/G4FP69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G6NE69.ini b/Data/User/GameConfig/G6NE69.ini
index 9759e5911d..e46faccb19 100644
--- a/Data/User/GameConfig/G6NE69.ini
+++ b/Data/User/GameConfig/G6NE69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/G6NP69.ini b/Data/User/GameConfig/G6NP69.ini
index 314a7ae4f5..50f5f76d98 100644
--- a/Data/User/GameConfig/G6NP69.ini
+++ b/Data/User/GameConfig/G6NP69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/G9TD52.ini b/Data/User/GameConfig/G9TD52.ini
index 95f5d1837b..b82d844554 100644
--- a/Data/User/GameConfig/G9TD52.ini
+++ b/Data/User/GameConfig/G9TD52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G9TE52.ini b/Data/User/GameConfig/G9TE52.ini
index 8ce046e142..899e3227c5 100644
--- a/Data/User/GameConfig/G9TE52.ini
+++ b/Data/User/GameConfig/G9TE52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G9TF52.ini b/Data/User/GameConfig/G9TF52.ini
index 625316cf7e..90ba7b3830 100644
--- a/Data/User/GameConfig/G9TF52.ini
+++ b/Data/User/GameConfig/G9TF52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G9TI52.ini b/Data/User/GameConfig/G9TI52.ini
index b4e063dc8e..901fc18224 100644
--- a/Data/User/GameConfig/G9TI52.ini
+++ b/Data/User/GameConfig/G9TI52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/G9TP52.ini b/Data/User/GameConfig/G9TP52.ini
index a00d3fb255..2a1d999a03 100644
--- a/Data/User/GameConfig/G9TP52.ini
+++ b/Data/User/GameConfig/G9TP52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GALE01.ini b/Data/User/GameConfig/GALE01.ini
index 0b2aee3d48..66924cd847 100644
--- a/Data/User/GameConfig/GALE01.ini
+++ b/Data/User/GameConfig/GALE01.ini
@@ -214,5 +214,5 @@ PH_ExtraParam = 0
PH_ZNear =
PH_ZFar =
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
[Gecko]
diff --git a/Data/User/GameConfig/GALJ01.ini b/Data/User/GameConfig/GALJ01.ini
index 06f866ebdb..f50aa54642 100644
--- a/Data/User/GameConfig/GALJ01.ini
+++ b/Data/User/GameConfig/GALJ01.ini
@@ -13,5 +13,5 @@ PH_ExtraParam = 0
PH_ZNear =
PH_ZFar =
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
[Gecko]
diff --git a/Data/User/GameConfig/GALP01.ini b/Data/User/GameConfig/GALP01.ini
index 991c10e0f5..226cd4d9da 100644
--- a/Data/User/GameConfig/GALP01.ini
+++ b/Data/User/GameConfig/GALP01.ini
@@ -105,6 +105,6 @@ PH_ExtraParam = 0
PH_ZNear =
PH_ZFar =
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
[Gecko]
diff --git a/Data/User/GameConfig/GBLE52.ini b/Data/User/GameConfig/GBLE52.ini
index 198f4eeb94..fc202bc14a 100644
--- a/Data/User/GameConfig/GBLE52.ini
+++ b/Data/User/GameConfig/GBLE52.ini
@@ -1,7 +1,7 @@
# GBLE52 - BLOODY ROAR(R): PRIMAL FURY
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs real xfb for videos to display and LLE audio for video sound.
+EmulationIssues = Needs real xfb for videos to display.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GBLP52.ini b/Data/User/GameConfig/GBLP52.ini
index a7eca2fb72..44d86d392f 100644
--- a/Data/User/GameConfig/GBLP52.ini
+++ b/Data/User/GameConfig/GBLP52.ini
@@ -1,7 +1,7 @@
# GBLP52 - BLOODY ROAR(R): PRIMAL FURY
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs real xfb for videos to display and LLE audio for video sound.
+EmulationIssues = Needs real xfb for videos to display.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GBME7F.ini b/Data/User/GameConfig/GBME7F.ini
index c02bf0fc8b..b36675174b 100644
--- a/Data/User/GameConfig/GBME7F.ini
+++ b/Data/User/GameConfig/GBME7F.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs real xfb for videos to show up and "LLE audio" for sound during videos.
+EmulationIssues = Needs real xfb for videos to show up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GBMP7F.ini b/Data/User/GameConfig/GBMP7F.ini
index 6daf1691f3..19a5c51643 100644
--- a/Data/User/GameConfig/GBMP7F.ini
+++ b/Data/User/GameConfig/GBMP7F.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs real xfb for videos to show up and "LLE audio" for sound during videos.
+EmulationIssues = Needs real xfb for videos to show up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GBSE8P.ini b/Data/User/GameConfig/GBSE8P.ini
index 5b91e4fe54..03767ab6df 100644
--- a/Data/User/GameConfig/GBSE8P.ini
+++ b/Data/User/GameConfig/GBSE8P.ini
@@ -3,7 +3,7 @@
EnableFPRF = True
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs lle audio to solve sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GBSP8P.ini b/Data/User/GameConfig/GBSP8P.ini
index c21ff6f50b..64de2f4068 100644
--- a/Data/User/GameConfig/GBSP8P.ini
+++ b/Data/User/GameConfig/GBSP8P.ini
@@ -3,7 +3,7 @@
EnableFPRF = True
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs lle audio to solve sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GC6E01.ini b/Data/User/GameConfig/GC6E01.ini
index b745ef89b2..66fb0df6db 100644
--- a/Data/User/GameConfig/GC6E01.ini
+++ b/Data/User/GameConfig/GC6E01.ini
@@ -14,5 +14,5 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/GC6P01.ini b/Data/User/GameConfig/GC6P01.ini
index 4ebad29a0f..73709894da 100644
--- a/Data/User/GameConfig/GC6P01.ini
+++ b/Data/User/GameConfig/GC6P01.ini
@@ -14,5 +14,5 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/GCPE6S.ini b/Data/User/GameConfig/GCPE6S.ini
index d483b5b255..4cc5e2880b 100644
--- a/Data/User/GameConfig/GCPE6S.ini
+++ b/Data/User/GameConfig/GCPE6S.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs real xfb for videos to appear and LLE audio for them to have sound.
+EmulationIssues = Needs real xfb for videos to appear.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GCPP6S.ini b/Data/User/GameConfig/GCPP6S.ini
index b088ab6a74..f05ed0c294 100644
--- a/Data/User/GameConfig/GCPP6S.ini
+++ b/Data/User/GameConfig/GCPP6S.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs real xfb for videos to appear and LLE audio for them to have sound.
+EmulationIssues = Needs real xfb for videos to appear.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GEND69.ini b/Data/User/GameConfig/GEND69.ini
index c7b7c6f2eb..7f10cedea9 100644
--- a/Data/User/GameConfig/GEND69.ini
+++ b/Data/User/GameConfig/GEND69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GENE69.ini b/Data/User/GameConfig/GENE69.ini
index cb4b698140..ccbd75120c 100644
--- a/Data/User/GameConfig/GENE69.ini
+++ b/Data/User/GameConfig/GENE69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GENP69.ini b/Data/User/GameConfig/GENP69.ini
index a29ab3d236..d09fbe846d 100644
--- a/Data/User/GameConfig/GENP69.ini
+++ b/Data/User/GameConfig/GENP69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GENS69.ini b/Data/User/GameConfig/GENS69.ini
index fc8dd1c8fe..2a22825215 100644
--- a/Data/User/GameConfig/GENS69.ini
+++ b/Data/User/GameConfig/GENS69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GEYE69.ini b/Data/User/GameConfig/GEYE69.ini
index ebf5159b27..ebdea57aa7 100644
--- a/Data/User/GameConfig/GEYE69.ini
+++ b/Data/User/GameConfig/GEYE69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Videos are messed up, needs LLE audio for proper sound.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GF5E69.ini b/Data/User/GameConfig/GF5E69.ini
index 79b7cf1fd5..eb1fd53fad 100644
--- a/Data/User/GameConfig/GF5E69.ini
+++ b/Data/User/GameConfig/GF5E69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GF6E69.ini b/Data/User/GameConfig/GF6E69.ini
index d812a5d154..770a2c2a6a 100644
--- a/Data/User/GameConfig/GF6E69.ini
+++ b/Data/User/GameConfig/GF6E69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GF6F69.ini b/Data/User/GameConfig/GF6F69.ini
index 2696bcb453..b1b162f832 100644
--- a/Data/User/GameConfig/GF6F69.ini
+++ b/Data/User/GameConfig/GF6F69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GF7E01.ini b/Data/User/GameConfig/GF7E01.ini
index f2107ac50e..c45903999d 100644
--- a/Data/User/GameConfig/GF7E01.ini
+++ b/Data/User/GameConfig/GF7E01.ini
@@ -77,7 +77,7 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 512
[Video_Hacks]
EFBToTextureEnable = False
diff --git a/Data/User/GameConfig/GF7P01.ini b/Data/User/GameConfig/GF7P01.ini
index c7da03cff4..4fef9f4188 100644
--- a/Data/User/GameConfig/GF7P01.ini
+++ b/Data/User/GameConfig/GF7P01.ini
@@ -74,7 +74,7 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 512
[Video_Hacks]
EFBToTextureEnable = False
diff --git a/Data/User/GameConfig/GFAD69.ini b/Data/User/GameConfig/GFAD69.ini
index 5abba727c5..dc38e8bb7a 100644
--- a/Data/User/GameConfig/GFAD69.ini
+++ b/Data/User/GameConfig/GFAD69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin and videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GFAE69.ini b/Data/User/GameConfig/GFAE69.ini
index f41893cbb3..b8703789f9 100644
--- a/Data/User/GameConfig/GFAE69.ini
+++ b/Data/User/GameConfig/GFAE69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin and videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GFAP69.ini b/Data/User/GameConfig/GFAP69.ini
index 97426b2f38..c201ae85d0 100644
--- a/Data/User/GameConfig/GFAP69.ini
+++ b/Data/User/GameConfig/GFAP69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin and videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GFAS69.ini b/Data/User/GameConfig/GFAS69.ini
index 1fd280f110..12b3ef55ae 100644
--- a/Data/User/GameConfig/GFAS69.ini
+++ b/Data/User/GameConfig/GFAS69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin and videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GFDD69.ini b/Data/User/GameConfig/GFDD69.ini
index 9fb2a9d2b4..114fae85c8 100644
--- a/Data/User/GameConfig/GFDD69.ini
+++ b/Data/User/GameConfig/GFDD69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio to play. Slow (r7473)
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GFDE69.ini b/Data/User/GameConfig/GFDE69.ini
index c335dec16c..091738a730 100644
--- a/Data/User/GameConfig/GFDE69.ini
+++ b/Data/User/GameConfig/GFDE69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio to play. Slow (r7473)
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GFEE01.ini b/Data/User/GameConfig/GFEE01.ini
index 65fd49c822..f5ff977720 100644
--- a/Data/User/GameConfig/GFEE01.ini
+++ b/Data/User/GameConfig/GFEE01.ini
@@ -6,7 +6,7 @@
[EmuState]
#The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use the LLE plugin to solve some sound issues (r6730).
+EmulationIssues =
[OnFrame]
[ActionReplay]
$Max/Infinite Health(IKE)
diff --git a/Data/User/GameConfig/GFEJ01.ini b/Data/User/GameConfig/GFEJ01.ini
index f64f5db0ad..7e75c716de 100644
--- a/Data/User/GameConfig/GFEJ01.ini
+++ b/Data/User/GameConfig/GFEJ01.ini
@@ -5,7 +5,7 @@
0x80204ce8=500
[EmuState]
#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Use the LLE plugin to solve some sound issues (r6730).
+EmulationStateId = 4
+EmulationIssues =
[OnFrame]
[ActionReplay]
diff --git a/Data/User/GameConfig/GFEP01.ini b/Data/User/GameConfig/GFEP01.ini
index 731e5023f8..8ebc18add8 100644
--- a/Data/User/GameConfig/GFEP01.ini
+++ b/Data/User/GameConfig/GFEP01.ini
@@ -7,7 +7,7 @@ SkipIdle = 0
[EmuState]
#The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 5
-EmulationIssues = Use the LLE plugin to solve some sound issues (r6730).
+EmulationIssues =
[OnFrame]
[ActionReplay]
[Video]
diff --git a/Data/User/GameConfig/GFYE69.ini b/Data/User/GameConfig/GFYE69.ini
index 4afc12a954..6100e5913c 100644
--- a/Data/User/GameConfig/GFYE69.ini
+++ b/Data/User/GameConfig/GFYE69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin and videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
$Master Code
diff --git a/Data/User/GameConfig/GFYP69.ini b/Data/User/GameConfig/GFYP69.ini
index 8d497995d1..9f6a5b344f 100644
--- a/Data/User/GameConfig/GFYP69.ini
+++ b/Data/User/GameConfig/GFYP69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin and videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GG5E52.ini b/Data/User/GameConfig/GG5E52.ini
index 1b292d43b3..97f50e2871 100644
--- a/Data/User/GameConfig/GG5E52.ini
+++ b/Data/User/GameConfig/GG5E52.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = LLE audio fixes sound issues.
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GGYE41.ini b/Data/User/GameConfig/GGYE41.ini
index d803a7d8d2..a34b296af9 100644
--- a/Data/User/GameConfig/GGYE41.ini
+++ b/Data/User/GameConfig/GGYE41.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Needs Real XFB for videos to show up, lle for sound issues.(r6932)
+EmulationIssues = Needs Real XFB for videos to show up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GGYP41.ini b/Data/User/GameConfig/GGYP41.ini
index db510165eb..f1a715cbe3 100644
--- a/Data/User/GameConfig/GGYP41.ini
+++ b/Data/User/GameConfig/GGYP41.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Needs Real XFB for videos to show up, lle for sound issues.(r6932)
+EmulationIssues = Needs Real XFB for videos to show up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GH2E69.ini b/Data/User/GameConfig/GH2E69.ini
index b1f64e6ef7..8c27de59c8 100644
--- a/Data/User/GameConfig/GH2E69.ini
+++ b/Data/User/GameConfig/GH2E69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Intro videos are messed up, skip them. Needs LLE audio for proper sound and the game is slow.
+EmulationIssues = Intro videos are messed up, skip them. The game is slow.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GH2P69.ini b/Data/User/GameConfig/GH2P69.ini
index 006dad78dc..060155d7fd 100644
--- a/Data/User/GameConfig/GH2P69.ini
+++ b/Data/User/GameConfig/GH2P69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Intro videos are messed up, skip them. Needs LLE audio for proper sound and the game is slow.
+EmulationIssues = Intro videos are messed up, skip them. The game is slow.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GHYE6S.ini b/Data/User/GameConfig/GHYE6S.ini
new file mode 100644
index 0000000000..0da41c41bb
--- /dev/null
+++ b/Data/User/GameConfig/GHYE6S.ini
@@ -0,0 +1,19 @@
+# GHYE6S - HauntedMansion
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs Real Xfb for the videos to display.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = True
diff --git a/Data/User/GameConfig/GJXE51.ini b/Data/User/GameConfig/GJXE51.ini
index d503dffbef..8895c14962 100644
--- a/Data/User/GameConfig/GJXE51.ini
+++ b/Data/User/GameConfig/GJXE51.ini
@@ -7,8 +7,8 @@ PH_ExtraParam = 0
PH_ZNear =
PH_ZFar =
[EmuState]
-EmulationStateId = 3
-EmulationIssues = Slow,needs mmu and lle audio plugin for proper audio(r7411).
+EmulationStateId = 4
+EmulationIssues = Slow because it needs mmu to run.
[OnFrame]
[ActionReplay]
[Gecko]
diff --git a/Data/User/GameConfig/GJZE52.ini b/Data/User/GameConfig/GJZE52.ini
index 3a9b1eb46e..857ea359e9 100644
--- a/Data/User/GameConfig/GJZE52.ini
+++ b/Data/User/GameConfig/GJZE52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = LLE audio fixes some sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GLYE69.ini b/Data/User/GameConfig/GLYE69.ini
index da2c0b1537..420abad7c2 100644
--- a/Data/User/GameConfig/GLYE69.ini
+++ b/Data/User/GameConfig/GLYE69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GLYP69.ini b/Data/User/GameConfig/GLYP69.ini
index 84392be595..db5615e290 100644
--- a/Data/User/GameConfig/GLYP69.ini
+++ b/Data/User/GameConfig/GLYP69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GM4E01.ini b/Data/User/GameConfig/GM4E01.ini
index c63b0d8a1b..5daa37570e 100644
--- a/Data/User/GameConfig/GM4E01.ini
+++ b/Data/User/GameConfig/GM4E01.ini
@@ -128,4 +128,3 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Core]
-VBeam = 1
diff --git a/Data/User/GameConfig/GM4J01.ini b/Data/User/GameConfig/GM4J01.ini
index 9431bc933a..b9d39df920 100644
--- a/Data/User/GameConfig/GM4J01.ini
+++ b/Data/User/GameConfig/GM4J01.ini
@@ -14,4 +14,3 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Core]
-VBeam = 1
diff --git a/Data/User/GameConfig/GM4P01.ini b/Data/User/GameConfig/GM4P01.ini
index f9cd8b3a71..1ab428de05 100644
--- a/Data/User/GameConfig/GM4P01.ini
+++ b/Data/User/GameConfig/GM4P01.ini
@@ -139,4 +139,3 @@ $Goraud Shading
[Video]
ProjectionHack = 0
[Core]
-VBeam = 1
diff --git a/Data/User/GameConfig/GM6EE9.ini b/Data/User/GameConfig/GM6EE9.ini
index fa3425b423..5997d56d3c 100644
--- a/Data/User/GameConfig/GM6EE9.ini
+++ b/Data/User/GameConfig/GM6EE9.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use LLE plugin for proper ingame sound. MMU speed hack is needed for balloon bombs or the game crashes.
+EmulationIssues = MMU speed hack is needed for balloon bombs or the game crashes.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GM6PE9.ini b/Data/User/GameConfig/GM6PE9.ini
index 0ae13640de..eba6dfdcfe 100644
--- a/Data/User/GameConfig/GM6PE9.ini
+++ b/Data/User/GameConfig/GM6PE9.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use LLE plugin for proper ingame sound. MMU speed hack is needed for balloon bombs or the game crashes.
+EmulationIssues = MMU speed hack is needed for balloon bombs or the game crashes.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GN8E69.ini b/Data/User/GameConfig/GN8E69.ini
index 3129860bb7..56b7c88dc5 100644
--- a/Data/User/GameConfig/GN8E69.ini
+++ b/Data/User/GameConfig/GN8E69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GN8P69.ini b/Data/User/GameConfig/GN8P69.ini
index f56f46bfcd..4d3c3167af 100644
--- a/Data/User/GameConfig/GN8P69.ini
+++ b/Data/User/GameConfig/GN8P69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GNLE69.ini b/Data/User/GameConfig/GNLE69.ini
index 68dcf3183b..74535e5040 100644
--- a/Data/User/GameConfig/GNLE69.ini
+++ b/Data/User/GameConfig/GNLE69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GOAE52.ini b/Data/User/GameConfig/GOAE52.ini
index 2d0371aa41..dbfb379652 100644
--- a/Data/User/GameConfig/GOAE52.ini
+++ b/Data/User/GameConfig/GOAE52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = LLE audio fixes sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GOYD69.ini b/Data/User/GameConfig/GOYD69.ini
index 21e74e2cb4..a2fd2afaf1 100644
--- a/Data/User/GameConfig/GOYD69.ini
+++ b/Data/User/GameConfig/GOYD69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Videos are messed up. Use LLE for proper sound.(r7446)
+EmulationIssues = Videos are messed up, skip them.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GOYE69.ini b/Data/User/GameConfig/GOYE69.ini
index 6dc35e5ada..808f83e4e9 100644
--- a/Data/User/GameConfig/GOYE69.ini
+++ b/Data/User/GameConfig/GOYE69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Videos are messed up. Use LLE for proper sound.(r7446)
+EmulationIssues = Videos are messed up, skip them.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GOYF69.ini b/Data/User/GameConfig/GOYF69.ini
index dbbedced45..0df6b4c9cc 100644
--- a/Data/User/GameConfig/GOYF69.ini
+++ b/Data/User/GameConfig/GOYF69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Videos are messed up. Use LLE for proper sound.(r7446)
+EmulationIssues = Videos are messed up, skip them.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GRQE41.ini b/Data/User/GameConfig/GRQE41.ini
index b03f78efd5..a077944376 100644
--- a/Data/User/GameConfig/GRQE41.ini
+++ b/Data/User/GameConfig/GRQE41.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 2
-EmulationIssues = Needs lle audio for sound and real XFB for videos to show up.
+EmulationIssues = Needs real XFB for videos to show up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GRUE78.ini b/Data/User/GameConfig/GRUE78.ini
index 3b0bb35f75..2ec6ad5185 100644
--- a/Data/User/GameConfig/GRUE78.ini
+++ b/Data/User/GameConfig/GRUE78.ini
@@ -1,7 +1,7 @@
# GRUE78 - Power Rangers Dino Thunder
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio for proper sound and Real XFB to display videos.
+EmulationIssues = Needs Real XFB to display videos.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GSOE8P.ini b/Data/User/GameConfig/GSOE8P.ini
index fd473fc5c8..82a4d6ad50 100644
--- a/Data/User/GameConfig/GSOE8P.ini
+++ b/Data/User/GameConfig/GSOE8P.ini
@@ -1,8 +1,8 @@
# GSOE8P - Sonic Mega Collection (US)
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Everything playable with glitches, sound requires LLE, videos require Real XFB
+EmulationStateId = 4
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
@@ -15,4 +15,5 @@ PH_ZFar =
[Gecko]
[Video_Settings]
UseXFB = True
-UseRealXFB = True
+UseRealXFB = False
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GSOP8P.ini b/Data/User/GameConfig/GSOP8P.ini
index c23e732791..92dad7a5f0 100644
--- a/Data/User/GameConfig/GSOP8P.ini
+++ b/Data/User/GameConfig/GSOP8P.ini
@@ -1,8 +1,8 @@
# GSOP8P - Sonic Mega Collection (EU)
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Everything playable with glitches, sound requires LLE, videos require Real XFB
+EmulationStateId = 4
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
@@ -15,4 +15,5 @@ PH_ZFar =
[Gecko]
[Video_Settings]
UseXFB = True
-UseRealXFB = True
+UseRealXFB = False
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GSWE64.ini b/Data/User/GameConfig/GSWE64.ini
index 75f82caf63..95246f3c8f 100644
--- a/Data/User/GameConfig/GSWE64.ini
+++ b/Data/User/GameConfig/GSWE64.ini
@@ -3,7 +3,6 @@
MMU = 1
BAT = 1
FastDiscSpeed = 1
-VBeam = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues =
EmulationStateId = 3
diff --git a/Data/User/GameConfig/GSWP64.ini b/Data/User/GameConfig/GSWP64.ini
index c580edee4f..3083317042 100644
--- a/Data/User/GameConfig/GSWP64.ini
+++ b/Data/User/GameConfig/GSWP64.ini
@@ -3,7 +3,6 @@
MMU = 1
BAT = 1
FastDiscSpeed = 1
-VBeam = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues =
EmulationStateId = 3
diff --git a/Data/User/GameConfig/GSWS64.ini b/Data/User/GameConfig/GSWS64.ini
index 8bcb77f296..5f3512743a 100644
--- a/Data/User/GameConfig/GSWS64.ini
+++ b/Data/User/GameConfig/GSWS64.ini
@@ -3,7 +3,6 @@
MMU = 1
BAT = 1
FastDiscSpeed = 1
-VBeam = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues =
EmulationStateId = 3
diff --git a/Data/User/GameConfig/GTZE41.ini b/Data/User/GameConfig/GTZE41.ini
index be20078a64..a6ee052467 100644
--- a/Data/User/GameConfig/GTZE41.ini
+++ b/Data/User/GameConfig/GTZE41.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs real Xfb for videos to display and LLE audio for proper sound and stability (hle freezes ingame).
+EmulationIssues = Needs real Xfb for videos to display.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GTZP41.ini b/Data/User/GameConfig/GTZP41.ini
index 4a350e41c6..64aa83e7d5 100644
--- a/Data/User/GameConfig/GTZP41.ini
+++ b/Data/User/GameConfig/GTZP41.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs real Xfb for videos to display and LLE audio for proper sound and stability (hle freezes ingame).
+EmulationIssues = Needs real Xfb for videos to display.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GUBE69.ini b/Data/User/GameConfig/GUBE69.ini
index c7ec4b728b..aa9a2e5cda 100644
--- a/Data/User/GameConfig/GUBE69.ini
+++ b/Data/User/GameConfig/GUBE69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = LLE audio is needed to fix some sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GUBP69.ini b/Data/User/GameConfig/GUBP69.ini
index 3903b90352..44239942f8 100644
--- a/Data/User/GameConfig/GUBP69.ini
+++ b/Data/User/GameConfig/GUBP69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = LLE audio is needed to fix some sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GWOE5G.ini b/Data/User/GameConfig/GWOE5G.ini
index 44ebf853ef..5b634129a8 100644
--- a/Data/User/GameConfig/GWOE5G.ini
+++ b/Data/User/GameConfig/GWOE5G.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio to get ingame.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GXBE69.ini b/Data/User/GameConfig/GXBE69.ini
index 715bc44c3c..d7bdd11a66 100644
--- a/Data/User/GameConfig/GXBE69.ini
+++ b/Data/User/GameConfig/GXBE69.ini
@@ -1,7 +1,7 @@
# GXBE69 - SSX3
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Has problematic intro videos(skip them).Use LLE plugin for the sound issues(r6598).
+EmulationIssues = Has problematic intro videos(skip them).
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GXBP69.ini b/Data/User/GameConfig/GXBP69.ini
index ba86019fc1..480834b7ef 100644
--- a/Data/User/GameConfig/GXBP69.ini
+++ b/Data/User/GameConfig/GXBP69.ini
@@ -1,7 +1,7 @@
# GXBP69 - SSX3
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Has problematic intro videos(skip them).Use LLE plugin for the sound issues(r6598).
+EmulationIssues = Has problematic intro videos(skip them).
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GXFE69.ini b/Data/User/GameConfig/GXFE69.ini
index d74632b761..5a188fea53 100644
--- a/Data/User/GameConfig/GXFE69.ini
+++ b/Data/User/GameConfig/GXFE69.ini
@@ -2,8 +2,8 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Unstable (crashes ingame).
+EmulationStateId = 4
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GXFF69.ini b/Data/User/GameConfig/GXFF69.ini
index 10a4862537..f02b269863 100644
--- a/Data/User/GameConfig/GXFF69.ini
+++ b/Data/User/GameConfig/GXFF69.ini
@@ -2,8 +2,8 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Unstable (crashes ingame).
+EmulationStateId = 4
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GXFP69.ini b/Data/User/GameConfig/GXFP69.ini
index ea3f4ead57..fc7a74e739 100644
--- a/Data/User/GameConfig/GXFP69.ini
+++ b/Data/User/GameConfig/GXFP69.ini
@@ -2,8 +2,8 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Unstable (crashes ingame).
+EmulationStateId = 4
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GXOE69.ini b/Data/User/GameConfig/GXOE69.ini
index 9284e2b63c..1772f72f2b 100644
--- a/Data/User/GameConfig/GXOE69.ini
+++ b/Data/User/GameConfig/GXOE69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Has problematic intro videos (skip them). Use LLE audio to fix sound issues.
+EmulationIssues = Has problematic intro videos (skip them).
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GXOX69.ini b/Data/User/GameConfig/GXOX69.ini
index 16a87d0840..a92484bacc 100644
--- a/Data/User/GameConfig/GXOX69.ini
+++ b/Data/User/GameConfig/GXOX69.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Has problematic intro videos (skip them). Use LLE audio to fix sound issues.
+EmulationIssues = Has problematic intro videos (skip them).
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GXXE01.ini b/Data/User/GameConfig/GXXE01.ini
index ad0e45abdf..f18d342d29 100644
--- a/Data/User/GameConfig/GXXE01.ini
+++ b/Data/User/GameConfig/GXXE01.ini
@@ -15,5 +15,5 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/GXXP01.ini b/Data/User/GameConfig/GXXP01.ini
index 16c64c1fa6..96db3fdd6a 100644
--- a/Data/User/GameConfig/GXXP01.ini
+++ b/Data/User/GameConfig/GXXP01.ini
@@ -15,5 +15,5 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/GZ2P01.ini b/Data/User/GameConfig/GZ2P01.ini
index bb6c58e20e..a226bf296d 100644
--- a/Data/User/GameConfig/GZ2P01.ini
+++ b/Data/User/GameConfig/GZ2P01.ini
@@ -6,8 +6,7 @@
[EmuState]
#The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-Issues="low FPS in big areas, no working sound"
-EmulationIssues = No Sound
+EmulationIssues =
[OnFrame]
[ActionReplay]
$(M)
diff --git a/Data/User/GameConfig/R7XE69.ini b/Data/User/GameConfig/R7XE69.ini
index 37dc50c356..709135c321 100644
--- a/Data/User/GameConfig/R7XE69.ini
+++ b/Data/User/GameConfig/R7XE69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Videos are messed up, needs LLE audio for proper sound.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/R7XJ13.ini b/Data/User/GameConfig/R7XJ13.ini
index d888766ae8..10836026e3 100644
--- a/Data/User/GameConfig/R7XJ13.ini
+++ b/Data/User/GameConfig/R7XJ13.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Videos are messed up, needs LLE audio for proper sound.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/R7XP69.ini b/Data/User/GameConfig/R7XP69.ini
index 0cf1f33ccc..4674fe0e5c 100644
--- a/Data/User/GameConfig/R7XP69.ini
+++ b/Data/User/GameConfig/R7XP69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Videos are messed up, needs LLE audio for proper sound.
+EmulationIssues = Videos are messed up, skip them.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RBHE08.ini b/Data/User/GameConfig/RBHE08.ini
index 80fb2a796e..2def435787 100644
--- a/Data/User/GameConfig/RBHE08.ini
+++ b/Data/User/GameConfig/RBHE08.ini
@@ -1,6 +1,5 @@
# RBHE08 - Resident Evil Archives: Resident Evil Zero
[Core] Values set here will override the main dolphin settings.
-VBeam = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 5
EmulationIssues =
diff --git a/Data/User/GameConfig/RBHJ08.ini b/Data/User/GameConfig/RBHJ08.ini
index 7ed45e1ee7..6ff5f267ba 100644
--- a/Data/User/GameConfig/RBHJ08.ini
+++ b/Data/User/GameConfig/RBHJ08.ini
@@ -1,6 +1,5 @@
# RBHJ08 - Biohazard 0
[Core] Values set here will override the main dolphin settings.
-VBeam = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 5
EmulationIssues =
diff --git a/Data/User/GameConfig/RBHP08.ini b/Data/User/GameConfig/RBHP08.ini
index ee4c6ec35f..0703e1fc4f 100644
--- a/Data/User/GameConfig/RBHP08.ini
+++ b/Data/User/GameConfig/RBHP08.ini
@@ -1,6 +1,5 @@
# RBHP08 - Resident Evil Archives: Resident Evil Zero
[Core] Values set here will override the main dolphin settings.
-VBeam = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 5
EmulationIssues =
diff --git a/Data/User/GameConfig/RBWE01.ini b/Data/User/GameConfig/RBWE01.ini
index a2cad6ff7d..8d6362e959 100644
--- a/Data/User/GameConfig/RBWE01.ini
+++ b/Data/User/GameConfig/RBWE01.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RBWP01.ini b/Data/User/GameConfig/RBWP01.ini
index 5422388866..896089fd8c 100644
--- a/Data/User/GameConfig/RBWP01.ini
+++ b/Data/User/GameConfig/RBWP01.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for proper sound.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RMLEH4.ini b/Data/User/GameConfig/RMLEH4.ini
index 9f46bde99a..0c7e830a80 100644
--- a/Data/User/GameConfig/RMLEH4.ini
+++ b/Data/User/GameConfig/RMLEH4.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use LLE audio to solve some sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RMLJH4.ini b/Data/User/GameConfig/RMLJH4.ini
index 44f37e8c50..0bf357494c 100644
--- a/Data/User/GameConfig/RMLJH4.ini
+++ b/Data/User/GameConfig/RMLJH4.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use LLE audio to solve some sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RMLK52.ini b/Data/User/GameConfig/RMLK52.ini
index 47adb3efe8..073a3307d7 100644
--- a/Data/User/GameConfig/RMLK52.ini
+++ b/Data/User/GameConfig/RMLK52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use LLE audio to solve some sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RMLP7U.ini b/Data/User/GameConfig/RMLP7U.ini
index 7dd5feeb6a..33b3c45275 100644
--- a/Data/User/GameConfig/RMLP7U.ini
+++ b/Data/User/GameConfig/RMLP7U.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use LLE audio to solve some sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RMLPH4.ini b/Data/User/GameConfig/RMLPH4.ini
index d9f964d486..b923c7441a 100644
--- a/Data/User/GameConfig/RMLPH4.ini
+++ b/Data/User/GameConfig/RMLPH4.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use LLE audio to solve some sound issues.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RO9EFS.ini b/Data/User/GameConfig/RO9EFS.ini
index 060aae9fad..711f3b2305 100644
--- a/Data/User/GameConfig/RO9EFS.ini
+++ b/Data/User/GameConfig/RO9EFS.ini
@@ -12,7 +12,7 @@ PH_ZNear =
PH_ZFar =
[EmuState]
EmulationStateId = 4
-EmulationIssues = Needs lle plugin for sound ingame(r7411)
+EmulationIssues =
[OnFrame]
[ActionReplay]
[Gecko]
diff --git a/Data/User/GameConfig/RO9PNK.ini b/Data/User/GameConfig/RO9PNK.ini
index 4001b97540..038001d969 100644
--- a/Data/User/GameConfig/RO9PNK.ini
+++ b/Data/User/GameConfig/RO9PNK.ini
@@ -12,7 +12,7 @@ PH_ZNear =
PH_ZFar =
[EmuState]
EmulationStateId = 4
-EmulationIssues = Needs lle plugin for sound ingame(r7411)
+EmulationIssues =
[OnFrame]
[ActionReplay]
[Gecko]
\ No newline at end of file
diff --git a/Data/User/GameConfig/RSFE7U.ini b/Data/User/GameConfig/RSFE7U.ini
index bf6e9e87c4..2a73e4c057 100644
--- a/Data/User/GameConfig/RSFE7U.ini
+++ b/Data/User/GameConfig/RSFE7U.ini
@@ -14,4 +14,4 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
diff --git a/Data/User/GameConfig/RSFJ99.ini b/Data/User/GameConfig/RSFJ99.ini
index 1113f6e7e9..07277538a3 100644
--- a/Data/User/GameConfig/RSFJ99.ini
+++ b/Data/User/GameConfig/RSFJ99.ini
@@ -14,4 +14,4 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
diff --git a/Data/User/GameConfig/RSFP99.ini b/Data/User/GameConfig/RSFP99.ini
index ec07d38569..a5d15c4adc 100644
--- a/Data/User/GameConfig/RSFP99.ini
+++ b/Data/User/GameConfig/RSFP99.ini
@@ -14,4 +14,4 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
diff --git a/Data/User/GameConfig/RSXE69.ini b/Data/User/GameConfig/RSXE69.ini
index 7934f8b283..141a7c1ce0 100644
--- a/Data/User/GameConfig/RSXE69.ini
+++ b/Data/User/GameConfig/RSXE69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Needs Wii nand dump and LLE for proper audio (reconnect wiimote if necessary). EFB cpu access gives proper bloom for a speed hit.
+EmulationIssues = Needs Wii nand dump (reconnect wiimote if necessary). EFB cpu access gives proper bloom for a speed hit.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RSXJ13.ini b/Data/User/GameConfig/RSXJ13.ini
index a1cf8f5497..9663796d11 100644
--- a/Data/User/GameConfig/RSXJ13.ini
+++ b/Data/User/GameConfig/RSXJ13.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Needs Wii nand dump and LLE for proper audio (reconnect wiimote if necessary). EFB cpu access gives proper bloom for a speed hit.
+EmulationIssues = Needs Wii nand dump (reconnect wiimote if necessary). EFB cpu access gives proper bloom for a speed hit.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RSXK69.ini b/Data/User/GameConfig/RSXK69.ini
index d3ccded18d..f7eb2ac1ca 100644
--- a/Data/User/GameConfig/RSXK69.ini
+++ b/Data/User/GameConfig/RSXK69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Needs Wii nand dump and LLE for proper audio (reconnect wiimote if necessary). EFB cpu access gives proper bloom for a speed hit.
+EmulationIssues = Needs Wii nand dump (reconnect wiimote if necessary). EFB cpu access gives proper bloom for a speed hit.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RSXP69.ini b/Data/User/GameConfig/RSXP69.ini
index c9b8ade9e5..418672638d 100644
--- a/Data/User/GameConfig/RSXP69.ini
+++ b/Data/User/GameConfig/RSXP69.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Needs Wii nand dump and LLE for proper audio (reconnect wiimote if necessary). EFB cpu access gives proper bloom for a speed hit.
+EmulationIssues = Needs Wii nand dump (reconnect wiimote if necessary). EFB cpu access gives proper bloom for a speed hit.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/S75E69.ini b/Data/User/GameConfig/S75E69.ini
index 77dde099c5..314bf62a62 100644
--- a/Data/User/GameConfig/S75E69.ini
+++ b/Data/User/GameConfig/S75E69.ini
@@ -14,6 +14,6 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/S75P69.ini b/Data/User/GameConfig/S75P69.ini
index 00225d65fe..edbfd2b746 100644
--- a/Data/User/GameConfig/S75P69.ini
+++ b/Data/User/GameConfig/S75P69.ini
@@ -14,4 +14,4 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
diff --git a/Data/User/GameConfig/SEMJ01.ini b/Data/User/GameConfig/SEMJ01.ini
index f0740ca7a3..280438a489 100644
--- a/Data/User/GameConfig/SEMJ01.ini
+++ b/Data/User/GameConfig/SEMJ01.ini
@@ -14,7 +14,7 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 0
[Video_Enhancements]
ForceFiltering = False
diff --git a/Data/User/GameConfig/SEMY4Q.ini b/Data/User/GameConfig/SEMY4Q.ini
index 817f8387e0..f01579ade7 100644
--- a/Data/User/GameConfig/SEMY4Q.ini
+++ b/Data/User/GameConfig/SEMY4Q.ini
@@ -14,7 +14,7 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 0
[Video_Enhancements]
ForceFiltering = False
diff --git a/Data/User/GameConfig/SEMZ4Q.ini b/Data/User/GameConfig/SEMZ4Q.ini
index 515a1bd029..1e828432f2 100644
--- a/Data/User/GameConfig/SEMZ4Q.ini
+++ b/Data/User/GameConfig/SEMZ4Q.ini
@@ -14,7 +14,7 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 0
[Video_Enhancements]
ForceFiltering = False
diff --git a/Data/User/GameConfig/SERE4Q.ini b/Data/User/GameConfig/SERE4Q.ini
index fbc9fa9d3c..526cd7fcda 100644
--- a/Data/User/GameConfig/SERE4Q.ini
+++ b/Data/User/GameConfig/SERE4Q.ini
@@ -14,6 +14,6 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 0
[Wii]
diff --git a/Data/User/GameConfig/SERF4Q.ini b/Data/User/GameConfig/SERF4Q.ini
index cd2fca395e..266abd0d76 100644
--- a/Data/User/GameConfig/SERF4Q.ini
+++ b/Data/User/GameConfig/SERF4Q.ini
@@ -14,6 +14,6 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 0
[Wii]
diff --git a/Data/User/GameConfig/SERP4Q.ini b/Data/User/GameConfig/SERP4Q.ini
index 7e332b8bcd..300b9d7e8b 100644
--- a/Data/User/GameConfig/SERP4Q.ini
+++ b/Data/User/GameConfig/SERP4Q.ini
@@ -14,6 +14,6 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
SafeTextureCacheColorSamples = 0
[Wii]
diff --git a/Data/User/GameConfig/SMOE41.ini b/Data/User/GameConfig/SMOE41.ini
index 3c61475544..9edd71f38d 100644
--- a/Data/User/GameConfig/SMOE41.ini
+++ b/Data/User/GameConfig/SMOE41.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound noise eliminated using LLE audio. With hle disable idleskip for normal dance school speed.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/SMOP41.ini b/Data/User/GameConfig/SMOP41.ini
index b9f913a639..18b790ac12 100644
--- a/Data/User/GameConfig/SMOP41.ini
+++ b/Data/User/GameConfig/SMOP41.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound noise eliminated using LLE audio. With hle disable idleskip for normal dance school speed.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/SMOX41.ini b/Data/User/GameConfig/SMOX41.ini
index 929a58f076..e8fa62ff14 100644
--- a/Data/User/GameConfig/SMOX41.ini
+++ b/Data/User/GameConfig/SMOX41.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound noise eliminated using LLE audio. With hle disable idleskip for normal dance school speed.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/SNCE8P.ini b/Data/User/GameConfig/SNCE8P.ini
index c259d40061..2be325922b 100644
--- a/Data/User/GameConfig/SNCE8P.ini
+++ b/Data/User/GameConfig/SNCE8P.ini
@@ -14,6 +14,6 @@ PH_ZNear =
PH_ZFar = 0.01
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
[Video_Hacks]
EFBAccessEnable = False
diff --git a/Data/User/GameConfig/SNCJ8P.ini b/Data/User/GameConfig/SNCJ8P.ini
index 7de58c7a00..f49713339b 100644
--- a/Data/User/GameConfig/SNCJ8P.ini
+++ b/Data/User/GameConfig/SNCJ8P.ini
@@ -14,6 +14,6 @@ PH_ZNear =
PH_ZFar = 0.01
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
[Video_Hacks]
EFBAccessEnable = False
diff --git a/Data/User/GameConfig/SNCP8P.ini b/Data/User/GameConfig/SNCP8P.ini
index 39a221d578..9f78dc824b 100644
--- a/Data/User/GameConfig/SNCP8P.ini
+++ b/Data/User/GameConfig/SNCP8P.ini
@@ -14,6 +14,6 @@ PH_ZNear =
PH_ZFar = 0.01
[Gecko]
[Video_Settings]
-EFBScale = 1
+EFBScale = -1
[Video_Hacks]
EFBAccessEnable = False
diff --git a/Data/User/GameConfig/SNJE69.ini b/Data/User/GameConfig/SNJE69.ini
index b3b7720c46..3b2c5f6834 100644
--- a/Data/User/GameConfig/SNJE69.ini
+++ b/Data/User/GameConfig/SNJE69.ini
@@ -1,7 +1,7 @@
# SNJE69 - NBA JAM
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Initial slowdowns, no commentary & other sound issues that LLE plugin can fix (r6598)
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/SNJP69.ini b/Data/User/GameConfig/SNJP69.ini
index 72ab8eb62f..134e803548 100644
--- a/Data/User/GameConfig/SNJP69.ini
+++ b/Data/User/GameConfig/SNJP69.ini
@@ -1,7 +1,7 @@
# SNJP69 - NBA JAM
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Initial slowdowns, no commentary & other sound issues that LLE plugin can fix (r6598)
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/SPDE52.ini b/Data/User/GameConfig/SPDE52.ini
index dae5e74567..ea50df3a7d 100644
--- a/Data/User/GameConfig/SPDE52.ini
+++ b/Data/User/GameConfig/SPDE52.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Needs LLE audio for sound ingame. Graphic glitches.
+EmulationIssues = Graphic glitches.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/SPDP52.ini b/Data/User/GameConfig/SPDP52.ini
index 39f2a95725..246eb0ddd7 100644
--- a/Data/User/GameConfig/SPDP52.ini
+++ b/Data/User/GameConfig/SPDP52.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Needs LLE audio for sound ingame. Graphic glitches.
+EmulationIssues = Graphic glitches.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/SQME52.ini b/Data/User/GameConfig/SQME52.ini
index c78a968d6d..c4d9f1bf26 100644
--- a/Data/User/GameConfig/SQME52.ini
+++ b/Data/User/GameConfig/SQME52.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for sound ingame.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/SQMP52.ini b/Data/User/GameConfig/SQMP52.ini
index 544354b081..0aa97ec05f 100644
--- a/Data/User/GameConfig/SQMP52.ini
+++ b/Data/User/GameConfig/SQMP52.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs LLE audio for sound ingame.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/STHP8P.ini b/Data/User/GameConfig/STHP8P.ini
index 32caf26a15..2e8678dac4 100644
--- a/Data/User/GameConfig/STHP8P.ini
+++ b/Data/User/GameConfig/STHP8P.ini
@@ -14,7 +14,7 @@ PH_ZNear =
PH_ZFar =
[EmuState]
EmulationStateId = 4
-EmulationIssues = Use LLE audio for sound issues.(r7483)
+EmulationIssues =
[OnFrame]
[ActionReplay]
[Gecko]
diff --git a/Data/User/GameConfig/SVME01.ini b/Data/User/GameConfig/SVME01.ini
index f5b581ab6a..56ea6df84d 100644
--- a/Data/User/GameConfig/SVME01.ini
+++ b/Data/User/GameConfig/SVME01.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use LLE audio to fix sound.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/SVMJ01.ini b/Data/User/GameConfig/SVMJ01.ini
index 52eb8b9311..b29e4821a4 100644
--- a/Data/User/GameConfig/SVMJ01.ini
+++ b/Data/User/GameConfig/SVMJ01.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use LLE audio to fix sound.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/SVMP01.ini b/Data/User/GameConfig/SVMP01.ini
index 68776a58ab..0652795a4f 100644
--- a/Data/User/GameConfig/SVMP01.ini
+++ b/Data/User/GameConfig/SVMP01.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Use LLE audio to fix sound.
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/SX4J01.ini b/Data/User/GameConfig/SX4J01.ini
index 12d93d6744..70a248d5d7 100644
--- a/Data/User/GameConfig/SX4J01.ini
+++ b/Data/User/GameConfig/SX4J01.ini
@@ -3,7 +3,7 @@
BlockMerging = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = The game randomly freezes. Use LLE audio for sound issues. Per pixel lighting creates a glitch in ether cave with direct 3d 9.
+EmulationIssues = The game randomly freezes. Per pixel lighting creates a glitch in ether cave with direct 3d 9.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/SX4P01.ini b/Data/User/GameConfig/SX4P01.ini
index b5988e291b..801db4f13a 100644
--- a/Data/User/GameConfig/SX4P01.ini
+++ b/Data/User/GameConfig/SX4P01.ini
@@ -3,7 +3,7 @@
BlockMerging = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = The game randomly freezes. Use LLE audio for sound issues. Per pixel lighting creates a glitch in ether cave with direct 3d 9.
+EmulationIssues = The game randomly freezes. Per pixel lighting creates a glitch in ether cave with direct 3d 9.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Externals/android-menudrawer/.gitignore b/Externals/android-menudrawer/.gitignore
new file mode 100644
index 0000000000..fdb137a854
--- /dev/null
+++ b/Externals/android-menudrawer/.gitignore
@@ -0,0 +1,30 @@
+/*
+
+!.gitignore
+!.travis.yml
+!CHANGELOG.md
+!README.md
+!LICENSE
+!checkstyle.xml
+!pom.xml
+
+!art/
+
+!library/
+library/*
+!library/src/
+!library/res/
+!library/AndroidManifest.xml
+!library/build.xml
+!library/pom.xml
+!library/project.properties
+
+!samples/
+samples/*
+!samples/src/
+!samples/res/
+!samples/libs/
+!samples/AndroidManifest.xml
+!samples/build.xml
+!samples/pom.xml
+!samples/project.properties
diff --git a/Externals/android-menudrawer/.travis.yml b/Externals/android-menudrawer/.travis.yml
new file mode 100644
index 0000000000..ee6ec5ca1f
--- /dev/null
+++ b/Externals/android-menudrawer/.travis.yml
@@ -0,0 +1,18 @@
+language: java
+
+notifications:
+ email: false
+
+before_install:
+ - wget http://dl.google.com/android/android-sdk_r21.0.1-linux.tgz
+ - tar -zxf android-sdk_r21.0.1-linux.tgz
+ - export ANDROID_HOME=~/builds/SimonVT/android-menudrawer/android-sdk-linux
+ - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
+ - TOOLS=$(android list sdk --no-ui | grep "Android SDK Platform-tools" | cut -d"-" -f1)
+ - android update sdk --filter "$TOOLS" --no-ui --force
+ - SDK=$(android list sdk --no-ui | grep ", API 16," | cut -d"-" -f1)
+ - android update sdk --filter "$SDK" --no-ui --force
+
+install:
+ - "mvn package --quiet -DskipTests"
+ - "mvn verify"
diff --git a/Externals/android-menudrawer/CHANGELOG.md b/Externals/android-menudrawer/CHANGELOG.md
new file mode 100644
index 0000000000..a570a8e420
--- /dev/null
+++ b/Externals/android-menudrawer/CHANGELOG.md
@@ -0,0 +1,44 @@
+Change Log
+==========
+
+Version 2.0.2 *(2013-03-31)*
+----------------------------
+ * Added listener that makes it possible to disabllow intercepting touch events over
+ certain views
+ * Added setter for the maximum animation duration
+ * Added getter for menu size
+ * Added methods that enable/disable indicator animation
+ * Fix: Removed log statements
+ * Fix: Drawing the active indicator might cause crash if the active view is not a
+ child of the MenuDrawer
+ * Fix: Crash in static drawer if no active indicator bitmap was set
+
+Version 2.0.1 *(2013-02-12)*
+----------------------------
+ * Indicator now animates between active views
+ * Fixed restoring state for right/bottom drawer
+
+Version 2.0.0 *(2013-01-23)*
+----------------------------
+
+ * Major API changes
+
+ * All classes are now in the net.simonvt.menudrawer package.
+ * MenuDrawerManager no longet exists. Menu is added with MenuDrawer#attach(...).
+ * Drawer position is now selected with Position enums instead of int constants.
+ * Width methods/attributes have been renamed to 'size'.
+
+ * Added top/bottom drawer.
+ * Added static (non-draggable, always visible) drawers.
+ * The touch bezel size is now configurable with MenuDrawer#setTouchBezelSize(int).
+ * MenuDrawer#saveState() now only required when dragging the entire window.
+ * Drawers can now be used in XML layouts.
+ * Fix: Scroller class caused conflicts with other libraries.
+ * Fix: No more overdraw when the drawer is closed.
+ * Fix: Content no longer falls behind when slowly dragging.
+
+
+Version 1.0.0 *(2012-10-30)*
+----------------------------
+
+Initial release.
diff --git a/Externals/android-menudrawer/LICENSE b/Externals/android-menudrawer/LICENSE
new file mode 100644
index 0000000000..7a4a3ea242
--- /dev/null
+++ b/Externals/android-menudrawer/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
\ No newline at end of file
diff --git a/Externals/android-menudrawer/README.md b/Externals/android-menudrawer/README.md
new file mode 100644
index 0000000000..1773274860
--- /dev/null
+++ b/Externals/android-menudrawer/README.md
@@ -0,0 +1,96 @@
+MenuDrawer
+==========
+
+A slide-out menu implementation, which allows users to navigate between views
+in your app. Most commonly the menu is revealed by either dragging the edge
+of the screen, or clicking the 'up' button in the action bar.
+
+
+Features
+--------
+
+ * The menu can be positioned along all four edges.
+ * Supports attaching an always visible, non-draggable menu, which is useful
+ on e.g. tablets.
+ * The menu can wrap both the content and the entire window.
+ * Allows the drawer to be opened by dragging the edge, the entire screen or
+ not at all.
+ * Can be used in XML layouts.
+ * Indicator that shows which screen is currently visible.
+
+
+Usage
+=====
+
+This library is very simple to use. It requires no extension of custom classes,
+it's simply added to an activity by calling one of the `MenuDrawer#attach(...)`
+methods.
+
+For more examples on how to use this library, check out the sample app.
+
+
+Left menu
+---------
+```java
+public class SampleActivity extends Activity {
+
+ private MenuDrawer mDrawer;
+
+ @Override
+ protected void onCreate(Bundle state) {
+ super.onCreate(state);
+ mDrawer = MenuDrawer.attach(this);
+ mDrawer.setContentView(R.layout.activity_sample);
+ mDrawer.setMenuView(R.layout.menu_sample);
+ }
+}
+```
+
+
+Right menu
+----------
+```java
+public class SampleActivity extends Activity {
+
+ private MenuDrawer mDrawer;
+
+ @Override
+ protected void onCreate(Bundle state) {
+ super.onCreate(state);
+ mDrawer = MenuDrawer.attach(this, Position.RIGHT);
+ mDrawer.setContentView(R.layout.activity_sample);
+ mDrawer.setMenuView(R.layout.menu_sample);
+ }
+}
+```
+
+
+Credits
+=======
+
+ * Cyril Mottier for his [articles][1] on the pattern
+
+
+License
+=======
+
+ Copyright 2012 Simon Vig Therkildsen
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+
+
+
+
+ [1]: http://android.cyrilmottier.com/?p=658
diff --git a/Externals/android-menudrawer/art/menu_arrow.svg b/Externals/android-menudrawer/art/menu_arrow.svg
new file mode 100644
index 0000000000..05f205a3bf
--- /dev/null
+++ b/Externals/android-menudrawer/art/menu_arrow.svg
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/checkstyle.xml b/Externals/android-menudrawer/checkstyle.xml
new file mode 100644
index 0000000000..beb2c4a7e6
--- /dev/null
+++ b/Externals/android-menudrawer/checkstyle.xml
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/library/AndroidManifest.xml b/Externals/android-menudrawer/library/AndroidManifest.xml
new file mode 100644
index 0000000000..a77d28a931
--- /dev/null
+++ b/Externals/android-menudrawer/library/AndroidManifest.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/Externals/android-menudrawer/library/build.xml b/Externals/android-menudrawer/library/build.xml
new file mode 100644
index 0000000000..e5eb1dc0d0
--- /dev/null
+++ b/Externals/android-menudrawer/library/build.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/library/pom.xml b/Externals/android-menudrawer/library/pom.xml
new file mode 100644
index 0000000000..b5bd881040
--- /dev/null
+++ b/Externals/android-menudrawer/library/pom.xml
@@ -0,0 +1,36 @@
+
+
+
+ 4.0.0
+
+
+ net.simonvt
+ android-menudrawer-parent
+ 2.0.3-SNAPSHOT
+ ../pom.xml
+
+
+ android-menudrawer
+ Android MenuDrawer
+ apklib
+
+
+
+ com.google.android
+ android
+ provided
+
+
+
+
+ src
+
+
+
+ com.jayway.maven.plugins.android.generation2
+ android-maven-plugin
+ true
+
+
+
+
diff --git a/Externals/android-menudrawer/library/project.properties b/Externals/android-menudrawer/library/project.properties
new file mode 100644
index 0000000000..c81c2d97f5
--- /dev/null
+++ b/Externals/android-menudrawer/library/project.properties
@@ -0,0 +1,16 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+android.library=true
+# Project target.
+target=android-17
+
diff --git a/Externals/android-menudrawer/library/res/values/attrs.xml b/Externals/android-menudrawer/library/res/values/attrs.xml
new file mode 100644
index 0000000000..c8ec779700
--- /dev/null
+++ b/Externals/android-menudrawer/library/res/values/attrs.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/library/res/values/colors.xml b/Externals/android-menudrawer/library/res/values/colors.xml
new file mode 100644
index 0000000000..2866c6abe6
--- /dev/null
+++ b/Externals/android-menudrawer/library/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+
+ #FF555555
+
+
diff --git a/Externals/android-menudrawer/library/res/values/ids.xml b/Externals/android-menudrawer/library/res/values/ids.xml
new file mode 100644
index 0000000000..c6001910b0
--- /dev/null
+++ b/Externals/android-menudrawer/library/res/values/ids.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/library/res/values/styles.xml b/Externals/android-menudrawer/library/res/values/styles.xml
new file mode 100644
index 0000000000..415be6d229
--- /dev/null
+++ b/Externals/android-menudrawer/library/res/values/styles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/BottomDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/BottomDrawer.java
new file mode 100644
index 0000000000..17f41e2c4c
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/BottomDrawer.java
@@ -0,0 +1,226 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.GradientDrawable;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+public class BottomDrawer extends VerticalDrawer {
+
+ private int mIndicatorLeft;
+
+ BottomDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public BottomDrawer(Context context) {
+ super(context);
+ }
+
+ public BottomDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public BottomDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ public void openMenu(boolean animate) {
+ animateOffsetTo(-mMenuSize, 0, animate);
+ }
+
+ @Override
+ public void closeMenu(boolean animate) {
+ animateOffsetTo(0, 0, animate);
+ }
+
+ @Override
+ public void setDropShadowColor(int color) {
+ final int endColor = color & 0x00FFFFFF;
+ mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM,
+ new int[] {
+ color,
+ endColor,
+ });
+ invalidate();
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ final int width = r - l;
+ final int height = b - t;
+ final int offsetPixels = (int) mOffsetPixels;
+ final int menuSize = mMenuSize;
+
+ mMenuContainer.layout(0, height - menuSize, width, height);
+ offsetMenu(offsetPixels);
+
+ if (USE_TRANSLATIONS) {
+ mContentContainer.layout(0, 0, width, height);
+ } else {
+ mContentContainer.layout(0, offsetPixels, width, height + offsetPixels);
+ }
+ }
+
+ /**
+ * Offsets the menu relative to its original position based on the position of the content.
+ *
+ * @param offsetPixels The number of pixels the content if offset.
+ */
+ private void offsetMenu(int offsetPixels) {
+ if (mOffsetMenu && mMenuSize != 0) {
+ final int height = getHeight();
+ final int menuSize = mMenuSize;
+ final float openRatio = (menuSize + (float) offsetPixels) / menuSize;
+
+ if (USE_TRANSLATIONS) {
+ if (offsetPixels != 0) {
+ final int offset = (int) (0.25f * (openRatio * menuSize));
+ mMenuContainer.setTranslationY(offset);
+ } else {
+ mMenuContainer.setTranslationY(height + menuSize);
+ }
+
+ } else {
+ final int oldMenuTop = mMenuContainer.getTop();
+ final int offsetBy = (int) (0.25f * (openRatio * menuSize));
+ final int offset = height - mMenuSize + offsetBy - oldMenuTop;
+ mMenuContainer.offsetTopAndBottom(offset);
+ mMenuContainer.setVisibility(offsetPixels == 0 ? INVISIBLE : VISIBLE);
+ }
+ }
+ }
+
+ @Override
+ protected void drawDropShadow(Canvas canvas, int offsetPixels) {
+ final int width = getWidth();
+ final int height = getHeight();
+
+ mDropShadowDrawable.setBounds(0, height + offsetPixels, width, height + offsetPixels + mDropShadowSize);
+ mDropShadowDrawable.draw(canvas);
+ }
+
+ @Override
+ protected void drawMenuOverlay(Canvas canvas, int offsetPixels) {
+ final int width = getWidth();
+ final int height = getHeight();
+ final float openRatio = ((float) Math.abs(offsetPixels)) / mMenuSize;
+
+ mMenuOverlay.setBounds(0, height + offsetPixels, width, height);
+ mMenuOverlay.setAlpha((int) (MAX_MENU_OVERLAY_ALPHA * (1.f - openRatio)));
+ mMenuOverlay.draw(canvas);
+ }
+
+ @Override
+ protected void drawIndicator(Canvas canvas, int offsetPixels) {
+ if (mActiveView != null && isViewDescendant(mActiveView)) {
+ Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition);
+ final int pos = position == null ? 0 : position;
+
+ if (pos == mActivePosition) {
+ final int height = getHeight();
+ final int menuHeight = mMenuSize;
+ final int indicatorHeight = mActiveIndicator.getHeight();
+
+ final float openRatio = ((float) Math.abs(offsetPixels)) / menuHeight;
+
+ mActiveView.getDrawingRect(mActiveRect);
+ offsetDescendantRectToMyCoords(mActiveView, mActiveRect);
+ final int indicatorWidth = mActiveIndicator.getWidth();
+
+ final float interpolatedRatio = 1.f - INDICATOR_INTERPOLATOR.getInterpolation((1.f - openRatio));
+ final int interpolatedHeight = (int) (indicatorHeight * interpolatedRatio);
+
+ final int indicatorBottom = height + offsetPixels + interpolatedHeight;
+ final int indicatorTop = indicatorBottom - indicatorHeight;
+ if (mIndicatorAnimating) {
+ final int finalLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2);
+ final int startLeft = mIndicatorStartPos;
+ final int diff = finalLeft - startLeft;
+ final int startOffset = (int) (diff * mIndicatorOffset);
+ mIndicatorLeft = startLeft + startOffset;
+ } else {
+ mIndicatorLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2);
+ }
+
+ canvas.save();
+ canvas.clipRect(mIndicatorLeft, height + offsetPixels, mIndicatorLeft + indicatorWidth,
+ indicatorBottom);
+ canvas.drawBitmap(mActiveIndicator, mIndicatorLeft, indicatorTop, null);
+ canvas.restore();
+ }
+ }
+ }
+
+ @Override
+ protected int getIndicatorStartPos() {
+ return mIndicatorLeft;
+ }
+
+ @Override
+ protected void initPeekScroller() {
+ final int dx = -mMenuSize / 3;
+ mPeekScroller.startScroll(0, 0, dx, 0, PEEK_DURATION);
+ }
+
+ @Override
+ protected void onOffsetPixelsChanged(int offsetPixels) {
+ if (USE_TRANSLATIONS) {
+ mContentContainer.setTranslationY(offsetPixels);
+ offsetMenu(offsetPixels);
+ invalidate();
+ } else {
+ mContentContainer.offsetTopAndBottom(offsetPixels - mContentContainer.getTop());
+ offsetMenu(offsetPixels);
+ invalidate();
+ }
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // Touch handling
+ //////////////////////////////////////////////////////////////////////
+
+ @Override
+ protected boolean isContentTouch(MotionEvent ev) {
+ return ev.getY() < getHeight() + mOffsetPixels;
+ }
+
+ @Override
+ protected boolean onDownAllowDrag(MotionEvent ev) {
+ final int height = getHeight();
+ return (!mMenuVisible && mInitialMotionY >= height - mTouchSize)
+ || (mMenuVisible && mInitialMotionY <= height + mOffsetPixels);
+ }
+
+ @Override
+ protected boolean onMoveAllowDrag(MotionEvent ev, float diff) {
+ final int height = getHeight();
+ return (!mMenuVisible && mInitialMotionY >= height - mTouchSize && (diff < 0))
+ || (mMenuVisible && mInitialMotionY <= height + mOffsetPixels);
+ }
+
+ @Override
+ protected void onMoveEvent(float dx) {
+ setOffsetPixels(Math.max(Math.min(mOffsetPixels + dx, 0), -mMenuSize));
+ }
+
+ @Override
+ protected void onUpEvent(MotionEvent ev) {
+ final int offsetPixels = (int) mOffsetPixels;
+
+ if (mIsDragging) {
+ mVelocityTracker.computeCurrentVelocity(1000, mMaxVelocity);
+ final int initialVelocity = (int) mVelocityTracker.getXVelocity();
+ mLastMotionY = ev.getY();
+ animateOffsetTo(mVelocityTracker.getYVelocity() < 0 ? -mMenuSize : 0, initialVelocity,
+ true);
+
+ // Close the menu when content is clicked while the menu is visible.
+ } else if (mMenuVisible && ev.getY() < getHeight() + offsetPixels) {
+ closeMenu();
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/BottomStaticDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/BottomStaticDrawer.java
new file mode 100644
index 0000000000..df4b5f4997
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/BottomStaticDrawer.java
@@ -0,0 +1,85 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.GradientDrawable;
+import android.util.AttributeSet;
+
+public class BottomStaticDrawer extends StaticDrawer {
+
+ private int mIndicatorLeft;
+
+ BottomStaticDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public BottomStaticDrawer(Context context) {
+ super(context);
+ }
+
+ public BottomStaticDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public BottomStaticDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void initDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super.initDrawer(context, attrs, defStyle);
+ mPosition = Position.BOTTOM;
+ }
+
+ @Override
+ public void setDropShadowColor(int color) {
+ final int endColor = color & 0x00FFFFFF;
+ mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[] {
+ color,
+ endColor,
+ });
+ invalidate();
+ }
+
+ @Override
+ protected void drawIndicator(Canvas canvas) {
+ if (mActiveView != null && isViewDescendant(mActiveView)) {
+ Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition);
+ final int pos = position == null ? 0 : position;
+
+ if (pos == mActivePosition) {
+ final int height = getHeight();
+ final int menuHeight = mMenuSize;
+ final int indicatorHeight = mActiveIndicator.getHeight();
+
+ mActiveView.getDrawingRect(mActiveRect);
+ offsetDescendantRectToMyCoords(mActiveView, mActiveRect);
+ final int indicatorWidth = mActiveIndicator.getWidth();
+
+ final int indicatorTop = height - menuHeight;
+ final int indicatorBottom = indicatorTop + indicatorHeight;
+ if (mIndicatorAnimating) {
+ final int finalLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2);
+ final int startLeft = mIndicatorStartPos;
+ final int diff = finalLeft - startLeft;
+ final int startOffset = (int) (diff * mIndicatorOffset);
+ mIndicatorLeft = startLeft + startOffset;
+ } else {
+ mIndicatorLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2);
+ }
+
+ canvas.save();
+ canvas.clipRect(mIndicatorLeft, indicatorTop, mIndicatorLeft + indicatorWidth,
+ indicatorBottom);
+ canvas.drawBitmap(mActiveIndicator, mIndicatorLeft, indicatorTop, null);
+ canvas.restore();
+ }
+ }
+ }
+
+ @Override
+ protected int getIndicatorStartPos() {
+ return mIndicatorLeft;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/BuildLayerFrameLayout.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/BuildLayerFrameLayout.java
new file mode 100644
index 0000000000..45f5aa13c5
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/BuildLayerFrameLayout.java
@@ -0,0 +1,99 @@
+package net.simonvt.menudrawer;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.util.AttributeSet;
+import android.widget.FrameLayout;
+
+/**
+ * FrameLayout which caches the hardware layer if available.
+ *
+ * If it's not posted twice the layer either wont be built on start, or it'll be built twice.
+ */
+public class BuildLayerFrameLayout extends FrameLayout {
+
+ private boolean mChanged;
+
+ private boolean mHardwareLayersEnabled = true;
+
+ private boolean mAttached;
+
+ private boolean mFirst = true;
+
+ public BuildLayerFrameLayout(Context context) {
+ super(context);
+ if (MenuDrawer.USE_TRANSLATIONS) {
+ setLayerType(LAYER_TYPE_HARDWARE, null);
+ }
+ }
+
+ public BuildLayerFrameLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ if (MenuDrawer.USE_TRANSLATIONS) {
+ setLayerType(LAYER_TYPE_HARDWARE, null);
+ }
+ }
+
+ public BuildLayerFrameLayout(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ if (MenuDrawer.USE_TRANSLATIONS) {
+ setLayerType(LAYER_TYPE_HARDWARE, null);
+ }
+ }
+
+ void setHardwareLayersEnabled(boolean enabled) {
+ mHardwareLayersEnabled = enabled;
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mAttached = true;
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mAttached = false;
+ }
+
+ @Override
+ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ super.onSizeChanged(w, h, oldw, oldh);
+
+ if (MenuDrawer.USE_TRANSLATIONS && mHardwareLayersEnabled) {
+ post(new Runnable() {
+ @Override
+ public void run() {
+ mChanged = true;
+ invalidate();
+ }
+ });
+ }
+ }
+
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ super.dispatchDraw(canvas);
+
+ if (mChanged && MenuDrawer.USE_TRANSLATIONS) {
+ post(new Runnable() {
+ @Override
+ public void run() {
+ if (mAttached) {
+ final int layerType = getLayerType();
+ // If it's already a hardware layer, it'll be built anyway.
+ if (layerType != LAYER_TYPE_HARDWARE || mFirst) {
+ mFirst = false;
+ setLayerType(LAYER_TYPE_HARDWARE, null);
+ buildLayer();
+ setLayerType(LAYER_TYPE_NONE, null);
+ }
+ }
+ }
+ });
+
+ mChanged = false;
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/ColorDrawable.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/ColorDrawable.java
new file mode 100644
index 0000000000..10a35e7fae
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/ColorDrawable.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.simonvt.menudrawer;
+
+import android.content.res.Resources;
+import android.graphics.Canvas;
+import android.graphics.ColorFilter;
+import android.graphics.Paint;
+import android.graphics.PixelFormat;
+import android.graphics.drawable.Drawable;
+
+/**
+ * A specialized Drawable that fills the Canvas with a specified color.
+ * Note that a ColorDrawable ignores the ColorFilter.
+ *
+ * It can be defined in an XML file with the <color>
element.
+ *
+ * @attr ref android.R.styleable#ColorDrawable_color
+ */
+public class ColorDrawable extends Drawable {
+
+ private ColorState mState;
+ private final Paint mPaint = new Paint();
+
+ /** Creates a new black ColorDrawable. */
+ public ColorDrawable() {
+ this(null);
+ }
+
+ /**
+ * Creates a new ColorDrawable with the specified color.
+ *
+ * @param color The color to draw.
+ */
+ public ColorDrawable(int color) {
+ this(null);
+ setColor(color);
+ }
+
+ private ColorDrawable(ColorState state) {
+ mState = new ColorState(state);
+ }
+
+ @Override
+ public int getChangingConfigurations() {
+ return super.getChangingConfigurations() | mState.mChangingConfigurations;
+ }
+
+ @Override
+ public void draw(Canvas canvas) {
+ if ((mState.mUseColor >>> 24) != 0) {
+ mPaint.setColor(mState.mUseColor);
+ canvas.drawRect(getBounds(), mPaint);
+ }
+ }
+
+ /**
+ * Gets the drawable's color value.
+ *
+ * @return int The color to draw.
+ */
+ public int getColor() {
+ return mState.mUseColor;
+ }
+
+ /**
+ * Sets the drawable's color value. This action will clobber the results of prior calls to
+ * {@link #setAlpha(int)} on this object, which side-affected the underlying color.
+ *
+ * @param color The color to draw.
+ */
+ public void setColor(int color) {
+ if (mState.mBaseColor != color || mState.mUseColor != color) {
+ invalidateSelf();
+ mState.mBaseColor = mState.mUseColor = color;
+ }
+ }
+
+ /**
+ * Returns the alpha value of this drawable's color.
+ *
+ * @return A value between 0 and 255.
+ */
+ public int getAlpha() {
+ return mState.mUseColor >>> 24;
+ }
+
+ /**
+ * Sets the color's alpha value.
+ *
+ * @param alpha The alpha value to set, between 0 and 255.
+ */
+ public void setAlpha(int alpha) {
+ alpha += alpha >> 7; // make it 0..256
+ int baseAlpha = mState.mBaseColor >>> 24;
+ int useAlpha = baseAlpha * alpha >> 8;
+ int oldUseColor = mState.mUseColor;
+ mState.mUseColor = (mState.mBaseColor << 8 >>> 8) | (useAlpha << 24);
+ if (oldUseColor != mState.mUseColor) {
+ invalidateSelf();
+ }
+ }
+
+ /**
+ * Setting a color filter on a ColorDrawable has no effect.
+ *
+ * @param colorFilter Ignore.
+ */
+ public void setColorFilter(ColorFilter colorFilter) {
+ }
+
+ public int getOpacity() {
+ switch (mState.mUseColor >>> 24) {
+ case 255:
+ return PixelFormat.OPAQUE;
+ case 0:
+ return PixelFormat.TRANSPARENT;
+ }
+ return PixelFormat.TRANSLUCENT;
+ }
+
+ @Override
+ public ConstantState getConstantState() {
+ mState.mChangingConfigurations = getChangingConfigurations();
+ return mState;
+ }
+
+ static final class ColorState extends ConstantState {
+
+ int mBaseColor; // base color, independent of setAlpha()
+ int mUseColor; // basecolor modulated by setAlpha()
+ int mChangingConfigurations;
+
+ ColorState(ColorState state) {
+ if (state != null) {
+ mBaseColor = state.mBaseColor;
+ mUseColor = state.mUseColor;
+ }
+ }
+
+ @Override
+ public Drawable newDrawable() {
+ return new ColorDrawable(this);
+ }
+
+ @Override
+ public Drawable newDrawable(Resources res) {
+ return new ColorDrawable(this);
+ }
+
+ @Override
+ public int getChangingConfigurations() {
+ return mChangingConfigurations;
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/DraggableDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/DraggableDrawer.java
new file mode 100644
index 0000000000..77fc98e5d3
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/DraggableDrawer.java
@@ -0,0 +1,672 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.VelocityTracker;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
+import android.view.animation.AccelerateInterpolator;
+import android.view.animation.Interpolator;
+
+public abstract class DraggableDrawer extends MenuDrawer {
+
+ /**
+ * Key used when saving menu visibility state.
+ */
+ private static final String STATE_MENU_VISIBLE = "net.simonvt.menudrawer.MenuDrawer.menuVisible";
+
+ /**
+ * Interpolator used for stretching/retracting the active indicator.
+ */
+ protected static final Interpolator INDICATOR_INTERPOLATOR = new AccelerateInterpolator();
+
+ /**
+ * Interpolator used for peeking at the drawer.
+ */
+ private static final Interpolator PEEK_INTERPOLATOR = new PeekInterpolator();
+
+ /**
+ * The maximum alpha of the dark menu overlay used for dimming the menu.
+ */
+ protected static final int MAX_MENU_OVERLAY_ALPHA = 185;
+
+ /**
+ * Default delay from {@link #peekDrawer()} is called until first animation is run.
+ */
+ private static final long DEFAULT_PEEK_START_DELAY = 5000;
+
+ /**
+ * Default delay between each subsequent animation, after {@link #peekDrawer()} has been called.
+ */
+ private static final long DEFAULT_PEEK_DELAY = 10000;
+
+ /**
+ * The duration of the peek animation.
+ */
+ protected static final int PEEK_DURATION = 5000;
+
+ /**
+ * Distance in dp from closed position from where the drawer is considered closed with regards to touch events.
+ */
+ private static final int CLOSE_ENOUGH = 3;
+
+ /**
+ * Slop before starting a drag.
+ */
+ protected int mTouchSlop;
+
+ /**
+ * Runnable used when the peek animation is running.
+ */
+ protected final Runnable mPeekRunnable = new Runnable() {
+ @Override
+ public void run() {
+ peekDrawerInvalidate();
+ }
+ };
+
+ /**
+ * Runnable used when animating the drawer open/closed.
+ */
+ private final Runnable mDragRunnable = new Runnable() {
+ @Override
+ public void run() {
+ postAnimationInvalidate();
+ }
+ };
+
+ /**
+ * Current left position of the content.
+ */
+ protected float mOffsetPixels;
+
+ /**
+ * Indicates whether the drawer is currently being dragged.
+ */
+ protected boolean mIsDragging;
+
+ /**
+ * The initial X position of a drag.
+ */
+ protected float mInitialMotionX;
+
+ /**
+ * The initial Y position of a drag.
+ */
+ protected float mInitialMotionY;
+
+ /**
+ * The last X position of a drag.
+ */
+ protected float mLastMotionX = -1;
+
+ /**
+ * The last Y position of a drag.
+ */
+ protected float mLastMotionY = -1;
+
+ /**
+ * Default delay between each subsequent animation, after {@link #peekDrawer()} has been called.
+ */
+ protected long mPeekDelay;
+
+ /**
+ * Scroller used for the peek drawer animation.
+ */
+ protected Scroller mPeekScroller;
+
+ /**
+ * Velocity tracker used when animating the drawer open/closed after a drag.
+ */
+ protected VelocityTracker mVelocityTracker;
+
+ /**
+ * Maximum velocity allowed when animating the drawer open/closed.
+ */
+ protected int mMaxVelocity;
+
+ /**
+ * Indicates whether the menu should be offset when dragging the drawer.
+ */
+ protected boolean mOffsetMenu = true;
+
+ /**
+ * Distance in px from closed position from where the drawer is considered closed with regards to touch events.
+ */
+ protected int mCloseEnough;
+
+ /**
+ * Runnable used for first call to {@link #startPeek()} after {@link #peekDrawer()} has been called.
+ */
+ private Runnable mPeekStartRunnable;
+
+ /**
+ * Scroller used when animating the drawer open/closed.
+ */
+ private Scroller mScroller;
+
+ /**
+ * Indicates whether the current layer type is {@link android.view.View#LAYER_TYPE_HARDWARE}.
+ */
+ private boolean mLayerTypeHardware;
+
+ DraggableDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public DraggableDrawer(Context context) {
+ super(context);
+ }
+
+ public DraggableDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public DraggableDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void initDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super.initDrawer(context, attrs, defStyle);
+
+ final ViewConfiguration configuration = ViewConfiguration.get(context);
+ mTouchSlop = configuration.getScaledTouchSlop();
+ mMaxVelocity = configuration.getScaledMaximumFlingVelocity();
+
+ mScroller = new Scroller(context, MenuDrawer.SMOOTH_INTERPOLATOR);
+ mPeekScroller = new Scroller(context, DraggableDrawer.PEEK_INTERPOLATOR);
+
+ mCloseEnough = dpToPx(DraggableDrawer.CLOSE_ENOUGH);
+ }
+
+ public void toggleMenu(boolean animate) {
+ if (mDrawerState == STATE_OPEN || mDrawerState == STATE_OPENING) {
+ closeMenu(animate);
+ } else if (mDrawerState == STATE_CLOSED || mDrawerState == STATE_CLOSING) {
+ openMenu(animate);
+ }
+ }
+
+ public boolean isMenuVisible() {
+ return mMenuVisible;
+ }
+
+ public void setMenuSize(final int size) {
+ mMenuSize = size;
+ mMenuSizeSet = true;
+ if (mDrawerState == STATE_OPEN || mDrawerState == STATE_OPENING) {
+ setOffsetPixels(mMenuSize);
+ }
+ requestLayout();
+ invalidate();
+ }
+
+ public void setOffsetMenuEnabled(boolean offsetMenu) {
+ if (offsetMenu != mOffsetMenu) {
+ mOffsetMenu = offsetMenu;
+ requestLayout();
+ invalidate();
+ }
+ }
+
+ public boolean getOffsetMenuEnabled() {
+ return mOffsetMenu;
+ }
+
+ public void peekDrawer() {
+ peekDrawer(DEFAULT_PEEK_START_DELAY, DEFAULT_PEEK_DELAY);
+ }
+
+ public void peekDrawer(long delay) {
+ peekDrawer(DEFAULT_PEEK_START_DELAY, delay);
+ }
+
+ public void peekDrawer(final long startDelay, final long delay) {
+ if (startDelay < 0) {
+ throw new IllegalArgumentException("startDelay must be zero or larger.");
+ }
+ if (delay < 0) {
+ throw new IllegalArgumentException("delay must be zero or larger");
+ }
+
+ removeCallbacks(mPeekRunnable);
+ removeCallbacks(mPeekStartRunnable);
+
+ mPeekDelay = delay;
+ mPeekStartRunnable = new Runnable() {
+ @Override
+ public void run() {
+ startPeek();
+ }
+ };
+ postDelayed(mPeekStartRunnable, startDelay);
+ }
+
+ public void setHardwareLayerEnabled(boolean enabled) {
+ if (enabled != mHardwareLayersEnabled) {
+ mHardwareLayersEnabled = enabled;
+ mMenuContainer.setHardwareLayersEnabled(enabled);
+ mContentContainer.setHardwareLayersEnabled(enabled);
+ stopLayerTranslation();
+ }
+ }
+
+ public int getTouchMode() {
+ return mTouchMode;
+ }
+
+ public void setTouchMode(int mode) {
+ if (mTouchMode != mode) {
+ mTouchMode = mode;
+ updateTouchAreaSize();
+ }
+ }
+
+ public void setTouchBezelSize(int size) {
+ mTouchBezelSize = size;
+ }
+
+ public int getTouchBezelSize() {
+ return mTouchBezelSize;
+ }
+
+ /**
+ * Sets the number of pixels the content should be offset.
+ *
+ * @param offsetPixels The number of pixels to offset the content by.
+ */
+ protected void setOffsetPixels(float offsetPixels) {
+ final int oldOffset = (int) mOffsetPixels;
+ final int newOffset = (int) offsetPixels;
+
+ mOffsetPixels = offsetPixels;
+
+ if (newOffset != oldOffset) {
+ onOffsetPixelsChanged(newOffset);
+ mMenuVisible = newOffset != 0;
+ }
+ }
+
+ /**
+ * Called when the number of pixels the content should be offset by has changed.
+ *
+ * @param offsetPixels The number of pixels to offset the content by.
+ */
+ protected abstract void onOffsetPixelsChanged(int offsetPixels);
+
+ /**
+ * If possible, set the layer type to {@link android.view.View#LAYER_TYPE_HARDWARE}.
+ */
+ protected void startLayerTranslation() {
+ if (USE_TRANSLATIONS && mHardwareLayersEnabled && !mLayerTypeHardware) {
+ mLayerTypeHardware = true;
+ mContentContainer.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ mMenuContainer.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ }
+ }
+
+ /**
+ * If the current layer type is {@link android.view.View#LAYER_TYPE_HARDWARE}, this will set it to
+ * {@link View#LAYER_TYPE_NONE}.
+ */
+ private void stopLayerTranslation() {
+ if (mLayerTypeHardware) {
+ mLayerTypeHardware = false;
+ mContentContainer.setLayerType(View.LAYER_TYPE_NONE, null);
+ mMenuContainer.setLayerType(View.LAYER_TYPE_NONE, null);
+ }
+ }
+
+ /**
+ * Compute the touch area based on the touch mode.
+ */
+ protected void updateTouchAreaSize() {
+ if (mTouchMode == TOUCH_MODE_BEZEL) {
+ mTouchSize = mTouchBezelSize;
+ } else if (mTouchMode == TOUCH_MODE_FULLSCREEN) {
+ mTouchSize = getMeasuredWidth();
+ } else {
+ mTouchSize = 0;
+ }
+ }
+
+ /**
+ * Called when a drag has been ended.
+ */
+ protected void endDrag() {
+ mIsDragging = false;
+
+ if (mVelocityTracker != null) {
+ mVelocityTracker.recycle();
+ mVelocityTracker = null;
+ }
+ }
+
+ /**
+ * Stops ongoing animation of the drawer.
+ */
+ protected void stopAnimation() {
+ removeCallbacks(mDragRunnable);
+ mScroller.abortAnimation();
+ stopLayerTranslation();
+ }
+
+ /**
+ * Called when a drawer animation has successfully completed.
+ */
+ private void completeAnimation() {
+ mScroller.abortAnimation();
+ final int finalX = mScroller.getFinalX();
+ setOffsetPixels(finalX);
+ setDrawerState(finalX == 0 ? STATE_CLOSED : STATE_OPEN);
+ stopLayerTranslation();
+ }
+
+ /**
+ * Moves the drawer to the position passed.
+ *
+ * @param position The position the content is moved to.
+ * @param velocity Optional velocity if called by releasing a drag event.
+ * @param animate Whether the move is animated.
+ */
+ protected void animateOffsetTo(int position, int velocity, boolean animate) {
+ endDrag();
+ endPeek();
+
+ final int startX = (int) mOffsetPixels;
+ final int dx = position - startX;
+ if (dx == 0 || !animate) {
+ setOffsetPixels(position);
+ setDrawerState(position == 0 ? STATE_CLOSED : STATE_OPEN);
+ stopLayerTranslation();
+ return;
+ }
+
+ int duration;
+
+ velocity = Math.abs(velocity);
+ if (velocity > 0) {
+ duration = 4 * Math.round(1000.f * Math.abs((float) dx / velocity));
+ } else {
+ duration = (int) (600.f * Math.abs((float) dx / mMenuSize));
+ }
+
+ duration = Math.min(duration, mMaxAnimationDuration);
+
+ if (dx > 0) {
+ setDrawerState(STATE_OPENING);
+ mScroller.startScroll(startX, 0, dx, 0, duration);
+ } else {
+ setDrawerState(STATE_CLOSING);
+ mScroller.startScroll(startX, 0, dx, 0, duration);
+ }
+
+ startLayerTranslation();
+
+ postAnimationInvalidate();
+ }
+
+ /**
+ * Callback when each frame in the drawer animation should be drawn.
+ */
+ private void postAnimationInvalidate() {
+ if (mScroller.computeScrollOffset()) {
+ final int oldX = (int) mOffsetPixels;
+ final int x = mScroller.getCurrX();
+
+ if (x != oldX) setOffsetPixels(x);
+ if (x != mScroller.getFinalX()) {
+ postOnAnimation(mDragRunnable);
+ return;
+ }
+ }
+
+ completeAnimation();
+ }
+
+ /**
+ * Starts peek drawer animation.
+ */
+ protected void startPeek() {
+ initPeekScroller();
+
+ startLayerTranslation();
+ peekDrawerInvalidate();
+ }
+
+ protected abstract void initPeekScroller();
+
+ /**
+ * Callback when each frame in the peek drawer animation should be drawn.
+ */
+ private void peekDrawerInvalidate() {
+ if (mPeekScroller.computeScrollOffset()) {
+ final int oldX = (int) mOffsetPixels;
+ final int x = mPeekScroller.getCurrX();
+ if (x != oldX) setOffsetPixels(x);
+
+ if (!mPeekScroller.isFinished()) {
+ postOnAnimation(mPeekRunnable);
+ return;
+
+ } else if (mPeekDelay > 0) {
+ mPeekStartRunnable = new Runnable() {
+ @Override
+ public void run() {
+ startPeek();
+ }
+ };
+ postDelayed(mPeekStartRunnable, mPeekDelay);
+ }
+ }
+
+ completePeek();
+ }
+
+ /**
+ * Called when the peek drawer animation has successfully completed.
+ */
+ private void completePeek() {
+ mPeekScroller.abortAnimation();
+
+ setOffsetPixels(0);
+
+ setDrawerState(STATE_CLOSED);
+ stopLayerTranslation();
+ }
+
+ /**
+ * Stops ongoing peek drawer animation.
+ */
+ protected void endPeek() {
+ removeCallbacks(mPeekStartRunnable);
+ removeCallbacks(mPeekRunnable);
+ stopLayerTranslation();
+ }
+
+ protected boolean isCloseEnough() {
+ return Math.abs(mOffsetPixels) <= mCloseEnough;
+ }
+
+ /**
+ * Returns true if the touch event occurs over the content.
+ *
+ * @param ev The motion event.
+ * @return True if the touch event occurred over the content, false otherwise.
+ */
+ protected abstract boolean isContentTouch(MotionEvent ev);
+
+ /**
+ * Returns true if dragging the content should be allowed.
+ *
+ * @param ev The motion event.
+ * @return True if dragging the content should be allowed, false otherwise.
+ */
+ protected abstract boolean onDownAllowDrag(MotionEvent ev);
+
+ /**
+ * Tests scrollability within child views of v given a delta of dx.
+ *
+ * @param v View to test for horizontal scrollability
+ * @param checkV Whether the view should be checked for draggability
+ * @param dx Delta scrolled in pixels
+ * @param x X coordinate of the active touch point
+ * @param y Y coordinate of the active touch point
+ * @return true if child views of v can be scrolled by delta of dx.
+ */
+ protected boolean canChildScrollHorizontally(View v, boolean checkV, int dx, int x, int y) {
+ if (v instanceof ViewGroup) {
+ final ViewGroup group = (ViewGroup) v;
+
+ final int count = group.getChildCount();
+ // Count backwards - let topmost views consume scroll distance first.
+ for (int i = count - 1; i >= 0; i--) {
+ final View child = group.getChildAt(i);
+
+ final int childLeft = child.getLeft() + supportGetTranslationX(child);
+ final int childRight = child.getRight() + supportGetTranslationX(child);
+ final int childTop = child.getTop() + supportGetTranslationY(child);
+ final int childBottom = child.getBottom() + supportGetTranslationY(child);
+
+ if (x >= childLeft && x < childRight && y >= childTop && y < childBottom
+ && canChildScrollHorizontally(child, true, dx, x - childLeft, y - childTop)) {
+ return true;
+ }
+ }
+ }
+
+ return checkV && mOnInterceptMoveEventListener.isViewDraggable(v, dx, x, y);
+ }
+
+ /**
+ * Tests scrollability within child views of v given a delta of dx.
+ *
+ * @param v View to test for horizontal scrollability
+ * @param checkV Whether the view should be checked for draggability
+ * @param dx Delta scrolled in pixels
+ * @param x X coordinate of the active touch point
+ * @param y Y coordinate of the active touch point
+ * @return true if child views of v can be scrolled by delta of dx.
+ */
+ protected boolean canChildScrollVertically(View v, boolean checkV, int dx, int x, int y) {
+ if (v instanceof ViewGroup) {
+ final ViewGroup group = (ViewGroup) v;
+
+ final int count = group.getChildCount();
+ // Count backwards - let topmost views consume scroll distance first.
+ for (int i = count - 1; i >= 0; i--) {
+ final View child = group.getChildAt(i);
+
+ final int childLeft = child.getLeft() + supportGetTranslationX(child);
+ final int childRight = child.getRight() + supportGetTranslationX(child);
+ final int childTop = child.getTop() + supportGetTranslationY(child);
+ final int childBottom = child.getBottom() + supportGetTranslationY(child);
+
+ if (x >= childLeft && x < childRight && y >= childTop && y < childBottom
+ && canChildScrollVertically(child, true, dx, x - childLeft, y - childTop)) {
+ return true;
+ }
+ }
+ }
+
+ return checkV && mOnInterceptMoveEventListener.isViewDraggable(v, dx, x, y);
+ }
+
+ private int supportGetTranslationY(View v) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ return (int) v.getTranslationY();
+ }
+
+ return 0;
+ }
+
+ private int supportGetTranslationX(View v) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ return (int) v.getTranslationX();
+ }
+
+ return 0;
+ }
+
+ /**
+ * Returns true if dragging the content should be allowed.
+ *
+ * @param ev The motion event.
+ * @return True if dragging the content should be allowed, false otherwise.
+ */
+ protected abstract boolean onMoveAllowDrag(MotionEvent ev, float dx);
+
+ /**
+ * Called when a move event has happened while dragging the content is in progress.
+ *
+ * @param dx The X difference between the last motion event and the current motion event.
+ */
+ protected abstract void onMoveEvent(float dx);
+
+ /**
+ * Called when {@link android.view.MotionEvent#ACTION_UP} of {@link android.view.MotionEvent#ACTION_CANCEL} is
+ * delivered to {@link net.simonvt.menudrawer.MenuDrawer#onTouchEvent(android.view.MotionEvent)}.
+ *
+ * @param ev The motion event.
+ */
+ protected abstract void onUpEvent(MotionEvent ev);
+
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ super.dispatchDraw(canvas);
+ final int offsetPixels = (int) mOffsetPixels;
+
+ if (offsetPixels != 0) drawMenuOverlay(canvas, offsetPixels);
+ if (mDropShadowEnabled) drawDropShadow(canvas, offsetPixels);
+ if (mActiveIndicator != null) drawIndicator(canvas, offsetPixels);
+ }
+
+ /**
+ * Called when the content drop shadow should be drawn.
+ *
+ * @param canvas The canvas on which to draw.
+ * @param offsetPixels Value in pixels indicating the offset.
+ */
+ protected abstract void drawDropShadow(Canvas canvas, int offsetPixels);
+
+ /**
+ * Called when the menu overlay should be drawn.
+ *
+ * @param canvas The canvas on which to draw.
+ * @param offsetPixels Value in pixels indicating the offset.
+ */
+ protected abstract void drawMenuOverlay(Canvas canvas, int offsetPixels);
+
+ /**
+ * Called when the active indicator should be drawn.
+ *
+ * @param canvas The canvas on which to draw.
+ * @param offsetPixels Value in pixels indicating the offset.
+ */
+ protected abstract void drawIndicator(Canvas canvas, int offsetPixels);
+
+ void saveState(Bundle state) {
+ final boolean menuVisible = mDrawerState == STATE_OPEN || mDrawerState == STATE_OPENING;
+ state.putBoolean(STATE_MENU_VISIBLE, menuVisible);
+ }
+
+ public void restoreState(Parcelable in) {
+ super.restoreState(in);
+ Bundle state = (Bundle) in;
+ final boolean menuOpen = state.getBoolean(STATE_MENU_VISIBLE);
+ if (menuOpen) {
+ openMenu(false);
+ } else {
+ setOffsetPixels(0);
+ }
+ mDrawerState = menuOpen ? STATE_OPEN : STATE_CLOSED;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/FloatScroller.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/FloatScroller.java
new file mode 100644
index 0000000000..df5b445cd7
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/FloatScroller.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.simonvt.menudrawer;
+
+import android.view.animation.AnimationUtils;
+import android.view.animation.Interpolator;
+
+/**
+ * This class encapsulates scrolling. The duration of the scroll
+ * can be passed in the constructor and specifies the maximum time that
+ * the scrolling animation should take. Past this time, the scrolling is
+ * automatically moved to its final stage and computeScrollOffset()
+ * will always return false to indicate that scrolling is over.
+ */
+public class FloatScroller {
+
+ private float mStart;
+ private float mFinal;
+
+ private float mCurr;
+ private long mStartTime;
+ private int mDuration;
+ private float mDurationReciprocal;
+ private float mDeltaX;
+ private boolean mFinished;
+ private Interpolator mInterpolator;
+
+ /**
+ * Create a Scroller with the specified interpolator. If the interpolator is
+ * null, the default (viscous) interpolator will be used. Specify whether or
+ * not to support progressive "flywheel" behavior in flinging.
+ */
+ public FloatScroller(Interpolator interpolator) {
+ mFinished = true;
+ mInterpolator = interpolator;
+ }
+
+ /**
+ * Returns whether the scroller has finished scrolling.
+ *
+ * @return True if the scroller has finished scrolling, false otherwise.
+ */
+ public final boolean isFinished() {
+ return mFinished;
+ }
+
+ /**
+ * Force the finished field to a particular value.
+ *
+ * @param finished The new finished value.
+ */
+ public final void forceFinished(boolean finished) {
+ mFinished = finished;
+ }
+
+ /**
+ * Returns how long the scroll event will take, in milliseconds.
+ *
+ * @return The duration of the scroll in milliseconds.
+ */
+ public final int getDuration() {
+ return mDuration;
+ }
+
+ /**
+ * Returns the current offset in the scroll.
+ *
+ * @return The new offset as an absolute distance from the origin.
+ */
+ public final float getCurr() {
+ return mCurr;
+ }
+
+ /**
+ * Returns the start offset in the scroll.
+ *
+ * @return The start offset as an absolute distance from the origin.
+ */
+ public final float getStart() {
+ return mStart;
+ }
+
+ /**
+ * Returns where the scroll will end. Valid only for "fling" scrolls.
+ *
+ * @return The final offset as an absolute distance from the origin.
+ */
+ public final float getFinal() {
+ return mFinal;
+ }
+
+ public boolean computeScrollOffset() {
+ if (mFinished) {
+ return false;
+ }
+
+ int timePassed = (int) (AnimationUtils.currentAnimationTimeMillis() - mStartTime);
+
+ if (timePassed < mDuration) {
+ float x = timePassed * mDurationReciprocal;
+ x = mInterpolator.getInterpolation(x);
+ mCurr = mStart + x * mDeltaX;
+
+ } else {
+ mCurr = mFinal;
+ mFinished = true;
+ }
+ return true;
+ }
+
+ public void startScroll(float start, float delta, int duration) {
+ mFinished = false;
+ mDuration = duration;
+ mStartTime = AnimationUtils.currentAnimationTimeMillis();
+ mStart = start;
+ mFinal = start + delta;
+ mDeltaX = delta;
+ mDurationReciprocal = 1.0f / (float) mDuration;
+ }
+
+ /**
+ * Stops the animation. Contrary to {@link #forceFinished(boolean)},
+ * aborting the animating cause the scroller to move to the final x and y
+ * position
+ *
+ * @see #forceFinished(boolean)
+ */
+ public void abortAnimation() {
+ mCurr = mFinal;
+ mFinished = true;
+ }
+
+ /**
+ * Extend the scroll animation. This allows a running animation to scroll
+ * further and longer, when used with {@link #setFinal(float)}.
+ *
+ * @param extend Additional time to scroll in milliseconds.
+ * @see #setFinal(float)
+ */
+ public void extendDuration(int extend) {
+ int passed = timePassed();
+ mDuration = passed + extend;
+ mDurationReciprocal = 1.0f / mDuration;
+ mFinished = false;
+ }
+
+ /**
+ * Returns the time elapsed since the beginning of the scrolling.
+ *
+ * @return The elapsed time in milliseconds.
+ */
+ public int timePassed() {
+ return (int) (AnimationUtils.currentAnimationTimeMillis() - mStartTime);
+ }
+
+ public void setFinal(float newVal) {
+ mFinal = newVal;
+ mDeltaX = mFinal - mStart;
+ mFinished = false;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/HorizontalDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/HorizontalDrawer.java
new file mode 100644
index 0000000000..6f1c8300f7
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/HorizontalDrawer.java
@@ -0,0 +1,207 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.VelocityTracker;
+
+public abstract class HorizontalDrawer extends DraggableDrawer {
+
+ private static final String TAG = "HorizontalDrawer";
+
+ HorizontalDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public HorizontalDrawer(Context context) {
+ super(context);
+ }
+
+ public HorizontalDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public HorizontalDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
+ final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
+
+ if (widthMode != MeasureSpec.EXACTLY || heightMode != MeasureSpec.EXACTLY) {
+ throw new IllegalStateException("Must measure with an exact size");
+ }
+
+ final int width = MeasureSpec.getSize(widthMeasureSpec);
+ final int height = MeasureSpec.getSize(heightMeasureSpec);
+
+ if (!mMenuSizeSet) mMenuSize = (int) (width * 0.8f);
+ if (mOffsetPixels == -1) openMenu(false);
+
+ final int menuWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, mMenuSize);
+ final int menuHeightMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, height);
+ mMenuContainer.measure(menuWidthMeasureSpec, menuHeightMeasureSpec);
+
+ final int contentWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, width);
+ final int contentHeightMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, height);
+ mContentContainer.measure(contentWidthMeasureSpec, contentHeightMeasureSpec);
+
+ setMeasuredDimension(width, height);
+
+ updateTouchAreaSize();
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ final int action = ev.getAction() & MotionEvent.ACTION_MASK;
+
+ if (action == MotionEvent.ACTION_DOWN && mMenuVisible && isCloseEnough()) {
+ setOffsetPixels(0);
+ stopAnimation();
+ endPeek();
+ setDrawerState(STATE_CLOSED);
+ }
+
+ // Always intercept events over the content while menu is visible.
+ if (mMenuVisible && isContentTouch(ev)) return true;
+
+ if (mTouchMode == TOUCH_MODE_NONE) {
+ return false;
+ }
+
+ if (action != MotionEvent.ACTION_DOWN) {
+ if (mIsDragging) return true;
+ }
+
+ switch (action) {
+ case MotionEvent.ACTION_DOWN: {
+ mLastMotionX = mInitialMotionX = ev.getX();
+ mLastMotionY = mInitialMotionY = ev.getY();
+ final boolean allowDrag = onDownAllowDrag(ev);
+
+ if (allowDrag) {
+ setDrawerState(mMenuVisible ? STATE_OPEN : STATE_CLOSED);
+ stopAnimation();
+ endPeek();
+ mIsDragging = false;
+ }
+ break;
+ }
+
+ case MotionEvent.ACTION_MOVE: {
+ final float x = ev.getX();
+ final float dx = x - mLastMotionX;
+ final float xDiff = Math.abs(dx);
+ final float y = ev.getY();
+ final float yDiff = Math.abs(y - mLastMotionY);
+
+ if (xDiff > mTouchSlop && xDiff > yDiff) {
+ if (mOnInterceptMoveEventListener != null && mTouchMode == TOUCH_MODE_FULLSCREEN
+ && canChildScrollHorizontally(mContentContainer, false, (int) dx, (int) x, (int) y)) {
+ endDrag(); // Release the velocity tracker
+ return false;
+ }
+
+ final boolean allowDrag = onMoveAllowDrag(ev, dx);
+
+ if (allowDrag) {
+ setDrawerState(STATE_DRAGGING);
+ mIsDragging = true;
+ mLastMotionX = x;
+ mLastMotionY = y;
+ }
+ }
+ break;
+ }
+
+ /**
+ * If you click really fast, an up or cancel event is delivered here.
+ * Just snap content to whatever is closest.
+ * */
+ case MotionEvent.ACTION_CANCEL:
+ case MotionEvent.ACTION_UP: {
+ if (Math.abs(mOffsetPixels) > mMenuSize / 2) {
+ openMenu();
+ } else {
+ closeMenu();
+ }
+ break;
+ }
+ }
+
+ if (mVelocityTracker == null) mVelocityTracker = VelocityTracker.obtain();
+ mVelocityTracker.addMovement(ev);
+
+ return mIsDragging;
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ if (!mMenuVisible && !mIsDragging && (mTouchMode == TOUCH_MODE_NONE)) {
+ return false;
+ }
+ final int action = ev.getAction() & MotionEvent.ACTION_MASK;
+
+ if (mVelocityTracker == null) mVelocityTracker = VelocityTracker.obtain();
+ mVelocityTracker.addMovement(ev);
+
+ switch (action) {
+ case MotionEvent.ACTION_DOWN: {
+ mLastMotionX = mInitialMotionX = ev.getX();
+ mLastMotionY = mInitialMotionY = ev.getY();
+ final boolean allowDrag = onDownAllowDrag(ev);
+
+ if (allowDrag) {
+ stopAnimation();
+ endPeek();
+ startLayerTranslation();
+ }
+ break;
+ }
+
+ case MotionEvent.ACTION_MOVE: {
+ if (!mIsDragging) {
+ final float x = ev.getX();
+ final float dx = x - mLastMotionX;
+ final float xDiff = Math.abs(dx);
+ final float y = ev.getY();
+ final float yDiff = Math.abs(y - mLastMotionY);
+
+ if (xDiff > mTouchSlop && xDiff > yDiff) {
+ final boolean allowDrag = onMoveAllowDrag(ev, dx);
+
+ if (allowDrag) {
+ setDrawerState(STATE_DRAGGING);
+ mIsDragging = true;
+ mLastMotionX = x - mInitialMotionX > 0
+ ? mInitialMotionX + mTouchSlop
+ : mInitialMotionX - mTouchSlop;
+ }
+ }
+ }
+
+ if (mIsDragging) {
+ startLayerTranslation();
+
+ final float x = ev.getX();
+ final float dx = x - mLastMotionX;
+
+ mLastMotionX = x;
+ onMoveEvent(dx);
+ }
+ break;
+ }
+
+ case MotionEvent.ACTION_CANCEL:
+ case MotionEvent.ACTION_UP: {
+ onUpEvent(ev);
+ break;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/LeftDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/LeftDrawer.java
new file mode 100644
index 0000000000..59a4fc4ce2
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/LeftDrawer.java
@@ -0,0 +1,212 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.GradientDrawable;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+public class LeftDrawer extends HorizontalDrawer {
+
+ private int mIndicatorTop;
+
+ LeftDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public LeftDrawer(Context context) {
+ super(context);
+ }
+
+ public LeftDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public LeftDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ public void openMenu(boolean animate) {
+ animateOffsetTo(mMenuSize, 0, animate);
+ }
+
+ @Override
+ public void closeMenu(boolean animate) {
+ animateOffsetTo(0, 0, animate);
+ }
+
+ @Override
+ public void setDropShadowColor(int color) {
+ final int endColor = color & 0x00FFFFFF;
+ mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.RIGHT_LEFT, new int[] {
+ color,
+ endColor,
+ });
+ invalidate();
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ final int width = r - l;
+ final int height = b - t;
+ final int offsetPixels = (int) mOffsetPixels;
+
+ mMenuContainer.layout(0, 0, mMenuSize, height);
+ offsetMenu(offsetPixels);
+
+ if (USE_TRANSLATIONS) {
+ mContentContainer.layout(0, 0, width, height);
+ } else {
+ mContentContainer.layout(offsetPixels, 0, width + offsetPixels, height);
+ }
+ }
+
+ /**
+ * Offsets the menu relative to its original position based on the position of the content.
+ *
+ * @param offsetPixels The number of pixels the content if offset.
+ */
+ private void offsetMenu(int offsetPixels) {
+ if (mOffsetMenu && mMenuSize != 0) {
+ final int menuWidth = mMenuSize;
+ final float openRatio = (menuWidth - (float) offsetPixels) / menuWidth;
+
+ if (USE_TRANSLATIONS) {
+ if (offsetPixels > 0) {
+ final int menuLeft = (int) (0.25f * (-openRatio * menuWidth));
+ mMenuContainer.setTranslationX(menuLeft);
+ } else {
+ mMenuContainer.setTranslationX(-menuWidth);
+ }
+
+ } else {
+ final int oldMenuLeft = mMenuContainer.getLeft();
+ final int offset = (int) (0.25f * (-openRatio * menuWidth)) - oldMenuLeft;
+ mMenuContainer.offsetLeftAndRight(offset);
+ mMenuContainer.setVisibility(offsetPixels == 0 ? INVISIBLE : VISIBLE);
+ }
+ }
+ }
+
+ @Override
+ protected void drawDropShadow(Canvas canvas, int offsetPixels) {
+ final int height = getHeight();
+
+ mDropShadowDrawable.setBounds(offsetPixels - mDropShadowSize, 0, offsetPixels, height);
+ mDropShadowDrawable.draw(canvas);
+ }
+
+ @Override
+ protected void drawMenuOverlay(Canvas canvas, int offsetPixels) {
+ final int height = getHeight();
+ final float openRatio = ((float) offsetPixels) / mMenuSize;
+
+ mMenuOverlay.setBounds(0, 0, offsetPixels, height);
+ mMenuOverlay.setAlpha((int) (MAX_MENU_OVERLAY_ALPHA * (1.f - openRatio)));
+ mMenuOverlay.draw(canvas);
+ }
+
+ @Override
+ protected void drawIndicator(Canvas canvas, int offsetPixels) {
+ if (mActiveView != null && isViewDescendant(mActiveView)) {
+ Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition);
+ final int pos = position == null ? 0 : position;
+
+ if (pos == mActivePosition) {
+ final float openRatio = ((float) offsetPixels) / mMenuSize;
+
+ mActiveView.getDrawingRect(mActiveRect);
+ offsetDescendantRectToMyCoords(mActiveView, mActiveRect);
+
+ final float interpolatedRatio = 1.f - INDICATOR_INTERPOLATOR.getInterpolation((1.f - openRatio));
+ final int interpolatedWidth = (int) (mActiveIndicator.getWidth() * interpolatedRatio);
+
+ if (mIndicatorAnimating) {
+ final int indicatorFinalTop = mActiveRect.top + ((mActiveRect.height()
+ - mActiveIndicator.getHeight()) / 2);
+ final int indicatorStartTop = mIndicatorStartPos;
+ final int diff = indicatorFinalTop - indicatorStartTop;
+ final int startOffset = (int) (diff * mIndicatorOffset);
+ mIndicatorTop = indicatorStartTop + startOffset;
+ } else {
+ mIndicatorTop = mActiveRect.top + ((mActiveRect.height() - mActiveIndicator.getHeight()) / 2);
+ }
+ final int right = offsetPixels;
+ final int left = right - interpolatedWidth;
+
+ canvas.save();
+ canvas.clipRect(left, 0, right, getHeight());
+ canvas.drawBitmap(mActiveIndicator, left, mIndicatorTop, null);
+ canvas.restore();
+ }
+ }
+ }
+
+ @Override
+ protected int getIndicatorStartPos() {
+ return mIndicatorTop;
+ }
+
+ @Override
+ protected void initPeekScroller() {
+ final int dx = mMenuSize / 3;
+ mPeekScroller.startScroll(0, 0, dx, 0, PEEK_DURATION);
+ }
+
+ @Override
+ protected void onOffsetPixelsChanged(int offsetPixels) {
+ if (USE_TRANSLATIONS) {
+ mContentContainer.setTranslationX(offsetPixels);
+ offsetMenu(offsetPixels);
+ invalidate();
+ } else {
+ mContentContainer.offsetLeftAndRight(offsetPixels - mContentContainer.getLeft());
+ offsetMenu(offsetPixels);
+ invalidate();
+ }
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // Touch handling
+ //////////////////////////////////////////////////////////////////////
+
+ @Override
+ protected boolean isContentTouch(MotionEvent ev) {
+ return ev.getX() > mOffsetPixels;
+ }
+
+ @Override
+ protected boolean onDownAllowDrag(MotionEvent ev) {
+ return (!mMenuVisible && mInitialMotionX <= mTouchSize)
+ || (mMenuVisible && mInitialMotionX >= mOffsetPixels);
+ }
+
+ @Override
+ protected boolean onMoveAllowDrag(MotionEvent ev, float diff) {
+ return (!mMenuVisible && mInitialMotionX <= mTouchSize && (diff > 0))
+ || (mMenuVisible && mInitialMotionX >= mOffsetPixels);
+ }
+
+ @Override
+ protected void onMoveEvent(float dx) {
+ setOffsetPixels(Math.min(Math.max(mOffsetPixels + dx, 0), mMenuSize));
+ }
+
+ @Override
+ protected void onUpEvent(MotionEvent ev) {
+ final int offsetPixels = (int) mOffsetPixels;
+
+ if (mIsDragging) {
+ mVelocityTracker.computeCurrentVelocity(1000, mMaxVelocity);
+ final int initialVelocity = (int) mVelocityTracker.getXVelocity();
+ mLastMotionX = ev.getX();
+ animateOffsetTo(mVelocityTracker.getXVelocity() > 0 ? mMenuSize : 0, initialVelocity, true);
+
+ // Close the menu when content is clicked while the menu is visible.
+ } else if (mMenuVisible && ev.getX() > offsetPixels) {
+ closeMenu();
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/LeftStaticDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/LeftStaticDrawer.java
new file mode 100644
index 0000000000..47fa75a356
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/LeftStaticDrawer.java
@@ -0,0 +1,80 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.GradientDrawable;
+import android.util.AttributeSet;
+
+public class LeftStaticDrawer extends StaticDrawer {
+
+ private int mIndicatorTop;
+
+ LeftStaticDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public LeftStaticDrawer(Context context) {
+ super(context);
+ }
+
+ public LeftStaticDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public LeftStaticDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void initDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super.initDrawer(context, attrs, defStyle);
+ mPosition = Position.LEFT;
+ }
+
+ @Override
+ public void setDropShadowColor(int color) {
+ final int endColor = color & 0x00FFFFFF;
+ mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.RIGHT_LEFT, new int[] {
+ color,
+ endColor,
+ });
+ invalidate();
+ }
+
+ @Override
+ protected void drawIndicator(Canvas canvas) {
+ if (mActiveView != null && isViewDescendant(mActiveView)) {
+ Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition);
+ final int pos = position == null ? 0 : position;
+
+ if (pos == mActivePosition) {
+ mActiveView.getDrawingRect(mActiveRect);
+ offsetDescendantRectToMyCoords(mActiveView, mActiveRect);
+
+ if (mIndicatorAnimating) {
+ final int indicatorFinalTop = mActiveRect.top + ((mActiveRect.height()
+ - mActiveIndicator.getHeight()) / 2);
+ final int indicatorStartTop = mIndicatorStartPos;
+ final int diff = indicatorFinalTop - indicatorStartTop;
+ final int startOffset = (int) (diff * mIndicatorOffset);
+ mIndicatorTop = indicatorStartTop + startOffset;
+ } else {
+ mIndicatorTop = mActiveRect.top + ((mActiveRect.height() - mActiveIndicator.getHeight()) / 2);
+ }
+ final int right = mMenuSize;
+ final int left = right - mActiveIndicator.getWidth();
+
+ canvas.save();
+ canvas.clipRect(left, 0, right, getHeight());
+ canvas.drawBitmap(mActiveIndicator, left, mIndicatorTop, null);
+ canvas.restore();
+ }
+ }
+ }
+
+ @Override
+ protected int getIndicatorStartPos() {
+ return mIndicatorTop;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/MenuDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/MenuDrawer.java
new file mode 100644
index 0000000000..7f998e44b4
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/MenuDrawer.java
@@ -0,0 +1,1151 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+import android.view.ViewTreeObserver;
+import android.view.animation.Interpolator;
+
+public abstract class MenuDrawer extends ViewGroup {
+
+ /**
+ * Callback interface for changing state of the drawer.
+ */
+ public interface OnDrawerStateChangeListener {
+
+ /**
+ * Called when the drawer state changes.
+ *
+ * @param oldState The old drawer state.
+ * @param newState The new drawer state.
+ */
+ void onDrawerStateChange(int oldState, int newState);
+ }
+
+ /**
+ * Callback that is invoked when the drawer is in the process of deciding whether it should intercept the touch
+ * event. This lets the listener decide if the pointer is on a view that would disallow dragging of the drawer.
+ * This is only called when the touch mode is {@link #TOUCH_MODE_FULLSCREEN}.
+ */
+ public interface OnInterceptMoveEventListener {
+
+ /**
+ * Called for each child the pointer i on when the drawer is deciding whether to intercept the touch event.
+ *
+ * @param v View to test for draggability
+ * @param dx Delta drag in pixels
+ * @param x X coordinate of the active touch point
+ * @param y Y coordinate of the active touch point
+ * @return true if view is draggable by delta dx.
+ */
+ boolean isViewDraggable(View v, int dx, int x, int y);
+ }
+
+ /**
+ * Tag used when logging.
+ */
+ private static final String TAG = "MenuDrawer";
+
+ /**
+ * Indicates whether debug code should be enabled.
+ */
+ private static final boolean DEBUG = false;
+
+ /**
+ * The time between each frame when animating the drawer.
+ */
+ protected static final int ANIMATION_DELAY = 1000 / 60;
+
+ /**
+ * The default touch bezel size of the drawer in dp.
+ */
+ private static final int DEFAULT_DRAG_BEZEL_DP = 24;
+
+ /**
+ * The default drop shadow size in dp.
+ */
+ private static final int DEFAULT_DROP_SHADOW_DP = 6;
+
+ /**
+ * Drag mode for sliding only the content view.
+ */
+ public static final int MENU_DRAG_CONTENT = 0;
+
+ /**
+ * Drag mode for sliding the entire window.
+ */
+ public static final int MENU_DRAG_WINDOW = 1;
+
+ /**
+ * Disallow opening the drawer by dragging the screen.
+ */
+ public static final int TOUCH_MODE_NONE = 0;
+
+ /**
+ * Allow opening drawer only by dragging on the edge of the screen.
+ */
+ public static final int TOUCH_MODE_BEZEL = 1;
+
+ /**
+ * Allow opening drawer by dragging anywhere on the screen.
+ */
+ public static final int TOUCH_MODE_FULLSCREEN = 2;
+
+ /**
+ * Indicates that the drawer is currently closed.
+ */
+ public static final int STATE_CLOSED = 0;
+
+ /**
+ * Indicates that the drawer is currently closing.
+ */
+ public static final int STATE_CLOSING = 1;
+
+ /**
+ * Indicates that the drawer is currently being dragged by the user.
+ */
+ public static final int STATE_DRAGGING = 2;
+
+ /**
+ * Indicates that the drawer is currently opening.
+ */
+ public static final int STATE_OPENING = 4;
+
+ /**
+ * Indicates that the drawer is currently open.
+ */
+ public static final int STATE_OPEN = 8;
+
+ /**
+ * Indicates whether to use {@link View#setTranslationX(float)} when positioning views.
+ */
+ static final boolean USE_TRANSLATIONS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1;
+
+ /**
+ * Time to animate the indicator to the new active view.
+ */
+ static final int INDICATOR_ANIM_DURATION = 800;
+
+ /**
+ * The maximum animation duration.
+ */
+ private static final int DEFAULT_ANIMATION_DURATION = 600;
+
+ /**
+ * Interpolator used when animating the drawer open/closed.
+ */
+ protected static final Interpolator SMOOTH_INTERPOLATOR = new SmoothInterpolator();
+
+ /**
+ * Drawable used as menu overlay.
+ */
+ protected Drawable mMenuOverlay;
+
+ /**
+ * Defines whether the drop shadow is enabled.
+ */
+ protected boolean mDropShadowEnabled;
+
+ /**
+ * Drawable used as content drop shadow onto the menu.
+ */
+ protected Drawable mDropShadowDrawable;
+
+ /**
+ * The size of the content drop shadow.
+ */
+ protected int mDropShadowSize;
+
+ /**
+ * Bitmap used to indicate the active view.
+ */
+ protected Bitmap mActiveIndicator;
+
+ /**
+ * The currently active view.
+ */
+ protected View mActiveView;
+
+ /**
+ * Position of the active view. This is compared to View#getTag(R.id.mdActiveViewPosition) when drawing the
+ * indicator.
+ */
+ protected int mActivePosition;
+
+ /**
+ * Whether the indicator should be animated between positions.
+ */
+ private boolean mAllowIndicatorAnimation;
+
+ /**
+ * Used when reading the position of the active view.
+ */
+ protected final Rect mActiveRect = new Rect();
+
+ /**
+ * Temporary {@link Rect} used for deciding whether the view should be invalidated so the indicator can be redrawn.
+ */
+ private final Rect mTempRect = new Rect();
+
+ /**
+ * The custom menu view set by the user.
+ */
+ private View mMenuView;
+
+ /**
+ * The parent of the menu view.
+ */
+ protected BuildLayerFrameLayout mMenuContainer;
+
+ /**
+ * The parent of the content view.
+ */
+ protected BuildLayerFrameLayout mContentContainer;
+
+ /**
+ * The size of the menu (width or height depending on the gravity).
+ */
+ protected int mMenuSize;
+
+ /**
+ * Indicates whether the menu size has been set explicity either via the theme or by calling
+ * {@link #setMenuSize(int)}.
+ */
+ protected boolean mMenuSizeSet;
+
+ /**
+ * Indicates whether the menu is currently visible.
+ */
+ protected boolean mMenuVisible;
+
+ /**
+ * The drag mode of the drawer. Can be either {@link #MENU_DRAG_CONTENT} or {@link #MENU_DRAG_WINDOW}.
+ */
+ private int mDragMode = MENU_DRAG_CONTENT;
+
+ /**
+ * The current drawer state.
+ *
+ * @see #STATE_CLOSED
+ * @see #STATE_CLOSING
+ * @see #STATE_DRAGGING
+ * @see #STATE_OPENING
+ * @see #STATE_OPEN
+ */
+ protected int mDrawerState = STATE_CLOSED;
+
+ /**
+ * The touch bezel size of the drawer in px.
+ */
+ protected int mTouchBezelSize;
+
+ /**
+ * The touch area size of the drawer in px.
+ */
+ protected int mTouchSize;
+
+ /**
+ * Listener used to dispatch state change events.
+ */
+ private OnDrawerStateChangeListener mOnDrawerStateChangeListener;
+
+ /**
+ * Touch mode for the Drawer.
+ * Possible values are {@link #TOUCH_MODE_NONE}, {@link #TOUCH_MODE_BEZEL} or {@link #TOUCH_MODE_FULLSCREEN}
+ * Default: {@link #TOUCH_MODE_BEZEL}
+ */
+ protected int mTouchMode = TOUCH_MODE_BEZEL;
+
+ /**
+ * Indicates whether to use {@link View#LAYER_TYPE_HARDWARE} when animating the drawer.
+ */
+ protected boolean mHardwareLayersEnabled = true;
+
+ /**
+ * The Activity the drawer is attached to.
+ */
+ private Activity mActivity;
+
+ /**
+ * Scroller used when animating the indicator to a new position.
+ */
+ private FloatScroller mIndicatorScroller;
+
+ /**
+ * Runnable used when animating the indicator to a new position.
+ */
+ private Runnable mIndicatorRunnable = new Runnable() {
+ @Override
+ public void run() {
+ animateIndicatorInvalidate();
+ }
+ };
+
+ /**
+ * The start position of the indicator when animating it to a new position.
+ */
+ protected int mIndicatorStartPos;
+
+ /**
+ * [0..1] value indicating the current progress of the animation.
+ */
+ protected float mIndicatorOffset;
+
+ /**
+ * Whether the indicator is currently animating.
+ */
+ protected boolean mIndicatorAnimating;
+
+ /**
+ * Bundle used to hold the drawers state.
+ */
+ protected Bundle mState;
+
+ /**
+ * The maximum duration of open/close animations.
+ */
+ protected int mMaxAnimationDuration = DEFAULT_ANIMATION_DURATION;
+
+ /**
+ * Callback that lets the listener override intercepting of touch events.
+ */
+ protected OnInterceptMoveEventListener mOnInterceptMoveEventListener;
+
+ /**
+ * Attaches the MenuDrawer to the Activity.
+ *
+ * @param activity The activity that the MenuDrawer will be attached to.
+ * @return The created MenuDrawer instance.
+ */
+ public static MenuDrawer attach(Activity activity) {
+ return attach(activity, MENU_DRAG_CONTENT);
+ }
+
+ /**
+ * Attaches the MenuDrawer to the Activity.
+ *
+ * @param activity The activity the menu drawer will be attached to.
+ * @param dragMode The drag mode of the drawer. Can be either {@link MenuDrawer#MENU_DRAG_CONTENT}
+ * or {@link MenuDrawer#MENU_DRAG_WINDOW}.
+ * @return The created MenuDrawer instance.
+ */
+ public static MenuDrawer attach(Activity activity, int dragMode) {
+ return attach(activity, dragMode, Position.LEFT);
+ }
+
+ /**
+ * Attaches the MenuDrawer to the Activity.
+ *
+ * @param activity The activity the menu drawer will be attached to.
+ * @param position Where to position the menu.
+ * @return The created MenuDrawer instance.
+ */
+ public static MenuDrawer attach(Activity activity, Position position) {
+ return attach(activity, MENU_DRAG_CONTENT, position);
+ }
+
+ /**
+ * Attaches the MenuDrawer to the Activity.
+ *
+ * @param activity The activity the menu drawer will be attached to.
+ * @param dragMode The drag mode of the drawer. Can be either {@link MenuDrawer#MENU_DRAG_CONTENT}
+ * or {@link MenuDrawer#MENU_DRAG_WINDOW}.
+ * @param position Where to position the menu.
+ * @return The created MenuDrawer instance.
+ */
+ public static MenuDrawer attach(Activity activity, int dragMode, Position position) {
+ return attach(activity, dragMode, position, false);
+ }
+
+ /**
+ * Attaches the MenuDrawer to the Activity.
+ *
+ * @param activity The activity the menu drawer will be attached to.
+ * @param dragMode The drag mode of the drawer. Can be either {@link MenuDrawer#MENU_DRAG_CONTENT}
+ * or {@link MenuDrawer#MENU_DRAG_WINDOW}.
+ * @param position Where to position the menu.
+ * @param attachStatic Whether a static (non-draggable, always visible) drawer should be used.
+ * @return The created MenuDrawer instance.
+ */
+ public static MenuDrawer attach(Activity activity, int dragMode, Position position, boolean attachStatic) {
+ MenuDrawer menuDrawer = createMenuDrawer(activity, dragMode, position, attachStatic);
+ menuDrawer.setId(R.id.md__drawer);
+
+ switch (dragMode) {
+ case MenuDrawer.MENU_DRAG_CONTENT:
+ attachToContent(activity, menuDrawer);
+ break;
+
+ case MenuDrawer.MENU_DRAG_WINDOW:
+ attachToDecor(activity, menuDrawer);
+ break;
+
+ default:
+ throw new RuntimeException("Unknown menu mode: " + dragMode);
+ }
+
+ return menuDrawer;
+ }
+
+ /**
+ * Constructs the appropriate MenuDrawer based on the position.
+ */
+ private static MenuDrawer createMenuDrawer(Activity activity, int dragMode, Position position,
+ boolean attachStatic) {
+ if (attachStatic) {
+ switch (position) {
+ case LEFT:
+ return new LeftStaticDrawer(activity, dragMode);
+ case RIGHT:
+ return new RightStaticDrawer(activity, dragMode);
+ case TOP:
+ return new TopStaticDrawer(activity, dragMode);
+ case BOTTOM:
+ return new BottomStaticDrawer(activity, dragMode);
+ default:
+ throw new IllegalArgumentException("position must be one of LEFT, TOP, RIGHT or BOTTOM");
+ }
+ }
+
+ switch (position) {
+ case LEFT:
+ return new LeftDrawer(activity, dragMode);
+ case RIGHT:
+ return new RightDrawer(activity, dragMode);
+ case TOP:
+ return new TopDrawer(activity, dragMode);
+ case BOTTOM:
+ return new BottomDrawer(activity, dragMode);
+ default:
+ throw new IllegalArgumentException("position must be one of LEFT, TOP, RIGHT or BOTTOM");
+ }
+ }
+
+ /**
+ * Attaches the menu drawer to the content view.
+ */
+ private static void attachToContent(Activity activity, MenuDrawer menuDrawer) {
+ /**
+ * Do not call mActivity#setContentView.
+ * E.g. if using with a ListActivity, Activity#setContentView is overridden and dispatched to
+ * MenuDrawer#setContentView, which then again would call Activity#setContentView.
+ */
+ ViewGroup content = (ViewGroup) activity.findViewById(android.R.id.content);
+ content.removeAllViews();
+ content.addView(menuDrawer, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
+ }
+
+ /**
+ * Attaches the menu drawer to the window.
+ */
+ private static void attachToDecor(Activity activity, MenuDrawer menuDrawer) {
+ ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
+ ViewGroup decorChild = (ViewGroup) decorView.getChildAt(0);
+
+ decorView.removeAllViews();
+ decorView.addView(menuDrawer, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
+
+ menuDrawer.mContentContainer.addView(decorChild, decorChild.getLayoutParams());
+ }
+
+ MenuDrawer(Activity activity, int dragMode) {
+ this(activity);
+
+ mActivity = activity;
+ mDragMode = dragMode;
+ }
+
+ public MenuDrawer(Context context) {
+ this(context, null);
+ }
+
+ public MenuDrawer(Context context, AttributeSet attrs) {
+ this(context, attrs, R.attr.menuDrawerStyle);
+ }
+
+ public MenuDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ initDrawer(context, attrs, defStyle);
+ }
+
+ protected void initDrawer(Context context, AttributeSet attrs, int defStyle) {
+ setWillNotDraw(false);
+ setFocusable(false);
+
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MenuDrawer, R.attr.menuDrawerStyle,
+ R.style.Widget_MenuDrawer);
+
+ final Drawable contentBackground = a.getDrawable(R.styleable.MenuDrawer_mdContentBackground);
+ final Drawable menuBackground = a.getDrawable(R.styleable.MenuDrawer_mdMenuBackground);
+
+ mMenuSize = a.getDimensionPixelSize(R.styleable.MenuDrawer_mdMenuSize, -1);
+ mMenuSizeSet = mMenuSize != -1;
+
+ final int indicatorResId = a.getResourceId(R.styleable.MenuDrawer_mdActiveIndicator, 0);
+ if (indicatorResId != 0) {
+ mActiveIndicator = BitmapFactory.decodeResource(getResources(), indicatorResId);
+ }
+
+ mDropShadowEnabled = a.getBoolean(R.styleable.MenuDrawer_mdDropShadowEnabled, true);
+
+ mDropShadowDrawable = a.getDrawable(R.styleable.MenuDrawer_mdDropShadow);
+
+ if (mDropShadowDrawable == null) {
+ final int dropShadowColor = a.getColor(R.styleable.MenuDrawer_mdDropShadowColor, 0xFF000000);
+ setDropShadowColor(dropShadowColor);
+ }
+
+ mDropShadowSize = a.getDimensionPixelSize(R.styleable.MenuDrawer_mdDropShadowSize,
+ dpToPx(DEFAULT_DROP_SHADOW_DP));
+
+ mTouchBezelSize = a.getDimensionPixelSize(R.styleable.MenuDrawer_mdTouchBezelSize,
+ dpToPx(DEFAULT_DRAG_BEZEL_DP));
+
+ mAllowIndicatorAnimation = a.getBoolean(R.styleable.MenuDrawer_mdAllowIndicatorAnimation, false);
+
+ mMaxAnimationDuration = a.getInt(R.styleable.MenuDrawer_mdMaxAnimationDuration, DEFAULT_ANIMATION_DURATION);
+
+ a.recycle();
+
+ mMenuContainer = new BuildLayerFrameLayout(context);
+ mMenuContainer.setId(R.id.md__menu);
+ mMenuContainer.setBackgroundDrawable(menuBackground);
+ super.addView(mMenuContainer, -1, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+
+ mContentContainer = new NoClickThroughFrameLayout(context);
+ mContentContainer.setId(R.id.md__content);
+ mContentContainer.setBackgroundDrawable(contentBackground);
+ super.addView(mContentContainer, -1, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+
+ mMenuOverlay = new ColorDrawable(0xFF000000);
+
+ mIndicatorScroller = new FloatScroller(SMOOTH_INTERPOLATOR);
+ }
+
+ @Override
+ public void addView(View child, int index, LayoutParams params) {
+ int childCount = mMenuContainer.getChildCount();
+ if (childCount == 0) {
+ mMenuContainer.addView(child, index, params);
+ return;
+ }
+
+ childCount = mContentContainer.getChildCount();
+ if (childCount == 0) {
+ mContentContainer.addView(child, index, params);
+ return;
+ }
+
+ throw new IllegalStateException("MenuDrawer can only hold two child views");
+ }
+
+ protected int dpToPx(int dp) {
+ return (int) (getResources().getDisplayMetrics().density * dp + 0.5f);
+ }
+
+ protected boolean isViewDescendant(View v) {
+ ViewParent parent = v.getParent();
+ while (parent != null) {
+ if (parent == this) {
+ return true;
+ }
+
+ parent = parent.getParent();
+ }
+
+ return false;
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ getViewTreeObserver().addOnScrollChangedListener(mScrollListener);
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ getViewTreeObserver().removeOnScrollChangedListener(mScrollListener);
+ super.onDetachedFromWindow();
+ }
+
+ /**
+ * Toggles the menu open and close with animation.
+ */
+ public void toggleMenu() {
+ toggleMenu(true);
+ }
+
+ /**
+ * Toggles the menu open and close.
+ *
+ * @param animate Whether open/close should be animated.
+ */
+ public abstract void toggleMenu(boolean animate);
+
+ /**
+ * Animates the menu open.
+ */
+ public void openMenu() {
+ openMenu(true);
+ }
+
+ /**
+ * Opens the menu.
+ *
+ * @param animate Whether open/close should be animated.
+ */
+ public abstract void openMenu(boolean animate);
+
+ /**
+ * Animates the menu closed.
+ */
+ public void closeMenu() {
+ closeMenu(true);
+ }
+
+ /**
+ * Closes the menu.
+ *
+ * @param animate Whether open/close should be animated.
+ */
+ public abstract void closeMenu(boolean animate);
+
+ /**
+ * Indicates whether the menu is currently visible.
+ *
+ * @return True if the menu is open, false otherwise.
+ */
+ public abstract boolean isMenuVisible();
+
+ /**
+ * Set the size of the menu drawer when open.
+ *
+ * @param size The size of the menu.
+ */
+ public abstract void setMenuSize(int size);
+
+ /**
+ * Returns the size of the menu.
+ *
+ * @return The size of the menu.
+ */
+ public int getMenuSize() {
+ return mMenuSize;
+ }
+
+ /**
+ * Set the active view.
+ * If the mdActiveIndicator attribute is set, this View will have the indicator drawn next to it.
+ *
+ * @param v The active view.
+ */
+ public void setActiveView(View v) {
+ setActiveView(v, 0);
+ }
+
+ /**
+ * Set the active view.
+ * If the mdActiveIndicator attribute is set, this View will have the indicator drawn next to it.
+ *
+ * @param v The active view.
+ * @param position Optional position, usually used with ListView. v.setTag(R.id.mdActiveViewPosition, position)
+ * must be called first.
+ */
+ public void setActiveView(View v, int position) {
+ final View oldView = mActiveView;
+ mActiveView = v;
+ mActivePosition = position;
+
+ if (mAllowIndicatorAnimation && oldView != null) {
+ startAnimatingIndicator();
+ }
+
+ invalidate();
+ }
+
+ /**
+ * Sets whether the indicator should be animated between active views.
+ *
+ * @param animate Whether the indicator should be animated between active views.
+ */
+ public void setAllowIndicatorAnimation(boolean animate) {
+ if (animate != mAllowIndicatorAnimation) {
+ mAllowIndicatorAnimation = animate;
+ completeAnimatingIndicator();
+ }
+ }
+
+ /**
+ * Indicates whether the indicator should be animated between active views.
+ *
+ * @return Whether the indicator should be animated between active views.
+ */
+ public boolean getAllowIndicatorAnimation() {
+ return mAllowIndicatorAnimation;
+ }
+
+ /**
+ * Scroll listener that checks whether the active view has moved before the drawer is invalidated.
+ */
+ private ViewTreeObserver.OnScrollChangedListener mScrollListener = new ViewTreeObserver.OnScrollChangedListener() {
+ @Override
+ public void onScrollChanged() {
+ if (mActiveView != null && isViewDescendant(mActiveView)) {
+ mActiveView.getDrawingRect(mTempRect);
+ offsetDescendantRectToMyCoords(mActiveView, mTempRect);
+ if (mTempRect.left != mActiveRect.left || mTempRect.top != mActiveRect.top
+ || mTempRect.right != mActiveRect.right || mTempRect.bottom != mActiveRect.bottom) {
+ invalidate();
+ }
+ }
+ }
+ };
+
+ /**
+ * Starts animating the indicator to a new position.
+ */
+ private void startAnimatingIndicator() {
+ mIndicatorStartPos = getIndicatorStartPos();
+ mIndicatorAnimating = true;
+ mIndicatorScroller.startScroll(0.0f, 1.0f, INDICATOR_ANIM_DURATION);
+
+ animateIndicatorInvalidate();
+ }
+
+ /**
+ * Returns the start position of the indicator.
+ *
+ * @return The start position of the indicator.
+ */
+ protected abstract int getIndicatorStartPos();
+
+ /**
+ * Callback when each frame in the indicator animation should be drawn.
+ */
+ private void animateIndicatorInvalidate() {
+ if (mIndicatorScroller.computeScrollOffset()) {
+ mIndicatorOffset = mIndicatorScroller.getCurr();
+ invalidate();
+
+ if (!mIndicatorScroller.isFinished()) {
+ postOnAnimation(mIndicatorRunnable);
+ return;
+ }
+ }
+
+ completeAnimatingIndicator();
+ }
+
+ /**
+ * Called when the indicator animation has completed.
+ */
+ private void completeAnimatingIndicator() {
+ mIndicatorOffset = 1.0f;
+ mIndicatorAnimating = false;
+ invalidate();
+ }
+
+ /**
+ * Enables or disables offsetting the menu when dragging the drawer.
+ *
+ * @param offsetMenu True to offset the menu, false otherwise.
+ */
+ public abstract void setOffsetMenuEnabled(boolean offsetMenu);
+
+ /**
+ * Indicates whether the menu is being offset when dragging the drawer.
+ *
+ * @return True if the menu is being offset, false otherwise.
+ */
+ public abstract boolean getOffsetMenuEnabled();
+
+ public int getDrawerState() {
+ return mDrawerState;
+ }
+
+ /**
+ * Register a callback to be invoked when the drawer state changes.
+ *
+ * @param listener The callback that will run.
+ */
+ public void setOnDrawerStateChangeListener(OnDrawerStateChangeListener listener) {
+ mOnDrawerStateChangeListener = listener;
+ }
+
+ /**
+ * Register a callback that will be invoked when the drawer is about to intercept touch events.
+ *
+ * @param listener The callback that will be invoked.
+ */
+ public void setOnInterceptMoveEventListener(OnInterceptMoveEventListener listener) {
+ mOnInterceptMoveEventListener = listener;
+ }
+
+ /**
+ * Defines whether the drop shadow is enabled.
+ *
+ * @param enabled Whether the drop shadow is enabled.
+ */
+ public void setDropShadowEnabled(boolean enabled) {
+ mDropShadowEnabled = enabled;
+ invalidate();
+ }
+
+ /**
+ * Sets the color of the drop shadow.
+ *
+ * @param color The color of the drop shadow.
+ */
+ public abstract void setDropShadowColor(int color);
+
+ /**
+ * Sets the drawable of the drop shadow.
+ *
+ * @param drawable The drawable of the drop shadow.
+ */
+ public void setDropShadow(Drawable drawable) {
+ mDropShadowDrawable = drawable;
+ invalidate();
+ }
+
+ /**
+ * Sets the drawable of the drop shadow.
+ *
+ * @param resId The resource identifier of the the drawable.
+ */
+ public void setDropShadow(int resId) {
+ setDropShadow(getResources().getDrawable(resId));
+ }
+
+ /**
+ * Returns the drawable of the drop shadow.
+ */
+ public Drawable getDropShadow() {
+ return mDropShadowDrawable;
+ }
+
+ /**
+ * Sets the size of the drop shadow.
+ *
+ * @param size The size of the drop shadow in px.
+ */
+ public void setDropShadowSize(int size) {
+ mDropShadowSize = size;
+ invalidate();
+ }
+
+ /**
+ * Animates the drawer slightly open until the user opens the drawer.
+ */
+ public abstract void peekDrawer();
+
+ /**
+ * Animates the drawer slightly open. If delay is larger than 0, this happens until the user opens the drawer.
+ *
+ * @param delay The delay (in milliseconds) between each run of the animation. If 0, this animation is only run
+ * once.
+ */
+ public abstract void peekDrawer(long delay);
+
+ /**
+ * Animates the drawer slightly open. If delay is larger than 0, this happens until the user opens the drawer.
+ *
+ * @param startDelay The delay (in milliseconds) until the animation is first run.
+ * @param delay The delay (in milliseconds) between each run of the animation. If 0, this animation is only run
+ * once.
+ */
+ public abstract void peekDrawer(long startDelay, long delay);
+
+ /**
+ * Enables or disables the user of {@link View#LAYER_TYPE_HARDWARE} when animations views.
+ *
+ * @param enabled Whether hardware layers are enabled.
+ */
+ public abstract void setHardwareLayerEnabled(boolean enabled);
+
+ /**
+ * Sets the maximum duration of open/close animations.
+ * @param duration The maximum duration in milliseconds.
+ */
+ public void setMaxAnimationDuration(int duration) {
+ mMaxAnimationDuration = duration;
+ }
+
+ /**
+ * Returns the ViewGroup used as a parent for the menu view.
+ *
+ * @return The menu view's parent.
+ */
+ public ViewGroup getMenuContainer() {
+ return mMenuContainer;
+ }
+
+ /**
+ * Returns the ViewGroup used as a parent for the content view.
+ *
+ * @return The content view's parent.
+ */
+ public ViewGroup getContentContainer() {
+ if (mDragMode == MENU_DRAG_CONTENT) {
+ return mContentContainer;
+ } else {
+ return (ViewGroup) findViewById(android.R.id.content);
+ }
+ }
+
+ /**
+ * Set the menu view from a layout resource.
+ *
+ * @param layoutResId Resource ID to be inflated.
+ */
+ public void setMenuView(int layoutResId) {
+ mMenuContainer.removeAllViews();
+ mMenuView = LayoutInflater.from(getContext()).inflate(layoutResId, mMenuContainer, false);
+ mMenuContainer.addView(mMenuView);
+ }
+
+ /**
+ * Set the menu view to an explicit view.
+ *
+ * @param view The menu view.
+ */
+ public void setMenuView(View view) {
+ setMenuView(view, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+ }
+
+ /**
+ * Set the menu view to an explicit view.
+ *
+ * @param view The menu view.
+ * @param params Layout parameters for the view.
+ */
+ public void setMenuView(View view, LayoutParams params) {
+ mMenuView = view;
+ mMenuContainer.removeAllViews();
+ mMenuContainer.addView(view, params);
+ }
+
+ /**
+ * Returns the menu view.
+ *
+ * @return The menu view.
+ */
+ public View getMenuView() {
+ return mMenuView;
+ }
+
+ /**
+ * Set the content from a layout resource.
+ *
+ * @param layoutResId Resource ID to be inflated.
+ */
+ public void setContentView(int layoutResId) {
+ switch (mDragMode) {
+ case MenuDrawer.MENU_DRAG_CONTENT:
+ mContentContainer.removeAllViews();
+ LayoutInflater.from(getContext()).inflate(layoutResId, mContentContainer, true);
+ break;
+
+ case MenuDrawer.MENU_DRAG_WINDOW:
+ mActivity.setContentView(layoutResId);
+ break;
+ }
+ }
+
+ /**
+ * Set the content to an explicit view.
+ *
+ * @param view The desired content to display.
+ */
+ public void setContentView(View view) {
+ setContentView(view, new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+ }
+
+ /**
+ * Set the content to an explicit view.
+ *
+ * @param view The desired content to display.
+ * @param params Layout parameters for the view.
+ */
+ public void setContentView(View view, LayoutParams params) {
+ switch (mDragMode) {
+ case MenuDrawer.MENU_DRAG_CONTENT:
+ mContentContainer.removeAllViews();
+ mContentContainer.addView(view, params);
+ break;
+
+ case MenuDrawer.MENU_DRAG_WINDOW:
+ mActivity.setContentView(view, params);
+ break;
+ }
+ }
+
+ protected void setDrawerState(int state) {
+ if (state != mDrawerState) {
+ final int oldState = mDrawerState;
+ mDrawerState = state;
+ if (mOnDrawerStateChangeListener != null) mOnDrawerStateChangeListener.onDrawerStateChange(oldState, state);
+ if (DEBUG) logDrawerState(state);
+ }
+ }
+
+ protected void logDrawerState(int state) {
+ switch (state) {
+ case STATE_CLOSED:
+ Log.d(TAG, "[DrawerState] STATE_CLOSED");
+ break;
+
+ case STATE_CLOSING:
+ Log.d(TAG, "[DrawerState] STATE_CLOSING");
+ break;
+
+ case STATE_DRAGGING:
+ Log.d(TAG, "[DrawerState] STATE_DRAGGING");
+ break;
+
+ case STATE_OPENING:
+ Log.d(TAG, "[DrawerState] STATE_OPENING");
+ break;
+
+ case STATE_OPEN:
+ Log.d(TAG, "[DrawerState] STATE_OPEN");
+ break;
+
+ default:
+ Log.d(TAG, "[DrawerState] Unknown: " + state);
+ }
+ }
+
+ /**
+ * Returns the touch mode.
+ */
+ public abstract int getTouchMode();
+
+ /**
+ * Sets the drawer touch mode. Possible values are {@link #TOUCH_MODE_NONE}, {@link #TOUCH_MODE_BEZEL} or
+ * {@link #TOUCH_MODE_FULLSCREEN}.
+ *
+ * @param mode The touch mode.
+ */
+ public abstract void setTouchMode(int mode);
+
+ /**
+ * Sets the size of the touch bezel.
+ *
+ * @param size The touch bezel size in px.
+ */
+ public abstract void setTouchBezelSize(int size);
+
+ /**
+ * Returns the size of the touch bezel in px.
+ */
+ public abstract int getTouchBezelSize();
+
+ @Override
+ public void postOnAnimation(Runnable action) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ super.postOnAnimation(action);
+ } else {
+ postDelayed(action, ANIMATION_DELAY);
+ }
+ }
+
+ @Override
+ protected boolean fitSystemWindows(Rect insets) {
+ if (mDragMode == MENU_DRAG_WINDOW) {
+ mMenuContainer.setPadding(0, insets.top, 0, 0);
+ }
+ return super.fitSystemWindows(insets);
+ }
+
+ /**
+ * Saves the state of the drawer.
+ *
+ * @return Returns a Parcelable containing the drawer state.
+ */
+ public final Parcelable saveState() {
+ if (mState == null) mState = new Bundle();
+ saveState(mState);
+ return mState;
+ }
+
+ void saveState(Bundle state) {
+ // State saving isn't required for subclasses.
+ }
+
+ /**
+ * Restores the state of the drawer.
+ *
+ * @param in A parcelable containing the drawer state.
+ */
+ public void restoreState(Parcelable in) {
+ mState = (Bundle) in;
+ }
+
+ @Override
+ protected Parcelable onSaveInstanceState() {
+ Parcelable superState = super.onSaveInstanceState();
+ SavedState state = new SavedState(superState);
+
+ if (mState == null) mState = new Bundle();
+ saveState(mState);
+
+ state.mState = mState;
+ return state;
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Parcelable state) {
+ SavedState savedState = (SavedState) state;
+ super.onRestoreInstanceState(savedState.getSuperState());
+
+ restoreState(savedState.mState);
+ }
+
+ static class SavedState extends BaseSavedState {
+
+ Bundle mState;
+
+ public SavedState(Parcelable superState) {
+ super(superState);
+ }
+
+ public SavedState(Parcel in) {
+ super(in);
+ mState = in.readBundle();
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ super.writeToParcel(dest, flags);
+ dest.writeBundle(mState);
+ }
+
+ @SuppressWarnings("UnusedDeclaration")
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public SavedState createFromParcel(Parcel in) {
+ return new SavedState(in);
+ }
+
+ @Override
+ public SavedState[] newArray(int size) {
+ return new SavedState[size];
+ }
+ };
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/NoClickThroughFrameLayout.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/NoClickThroughFrameLayout.java
new file mode 100644
index 0000000000..9462282cb1
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/NoClickThroughFrameLayout.java
@@ -0,0 +1,28 @@
+package net.simonvt.menudrawer;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+/**
+ * FrameLayout which doesn't let touch events propagate to views positioned behind it in the view hierarchy.
+ */
+public class NoClickThroughFrameLayout extends BuildLayerFrameLayout {
+
+ public NoClickThroughFrameLayout(Context context) {
+ super(context);
+ }
+
+ public NoClickThroughFrameLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public NoClickThroughFrameLayout(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ return true;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/PeekInterpolator.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/PeekInterpolator.java
new file mode 100644
index 0000000000..d0c7600f66
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/PeekInterpolator.java
@@ -0,0 +1,28 @@
+package net.simonvt.menudrawer;
+
+import android.view.animation.Interpolator;
+
+public class PeekInterpolator implements Interpolator {
+
+ private static final String TAG = "PeekInterpolator";
+
+ private static final SinusoidalInterpolator SINUSOIDAL_INTERPOLATOR = new SinusoidalInterpolator();
+
+ @Override
+ public float getInterpolation(float input) {
+ float result;
+
+ if (input < 1.f / 3.f) {
+ result = SINUSOIDAL_INTERPOLATOR.getInterpolation(input * 3);
+
+ } else if (input > 2.f / 3.f) {
+ final float val = ((input + 1.f / 3.f) - 1.f) * 3.f;
+ result = 1.f - SINUSOIDAL_INTERPOLATOR.getInterpolation(val);
+
+ } else {
+ result = 1.f;
+ }
+
+ return result;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/Position.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/Position.java
new file mode 100644
index 0000000000..e1a3dd3a46
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/Position.java
@@ -0,0 +1,18 @@
+package net.simonvt.menudrawer;
+
+/**
+ * Enums used for positioning the drawer.
+ */
+public enum Position {
+ // Positions the drawer to the left of the content.
+ LEFT,
+
+ // Positions the drawer above the content.
+ TOP,
+
+ // Positions the drawer to the right of the content.
+ RIGHT,
+
+ // Positions the drawer below the content.
+ BOTTOM,
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/RightDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/RightDrawer.java
new file mode 100644
index 0000000000..5d75904aac
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/RightDrawer.java
@@ -0,0 +1,234 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.GradientDrawable;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+public class RightDrawer extends HorizontalDrawer {
+
+ private int mIndicatorTop;
+
+ RightDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public RightDrawer(Context context) {
+ super(context);
+ }
+
+ public RightDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public RightDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ public void openMenu(boolean animate) {
+ animateOffsetTo(-mMenuSize, 0, animate);
+ }
+
+ @Override
+ public void closeMenu(boolean animate) {
+ animateOffsetTo(0, 0, animate);
+ }
+
+ @Override
+ public void setDropShadowColor(int color) {
+ final int endColor = color & 0x00FFFFFF;
+ mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[] {
+ color,
+ endColor,
+ });
+ invalidate();
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ final int width = r - l;
+ final int height = b - t;
+ final int offsetPixels = (int) mOffsetPixels;
+
+ mMenuContainer.layout(width - mMenuSize, 0, width, height);
+ offsetMenu(offsetPixels);
+
+ if (USE_TRANSLATIONS) {
+ mContentContainer.layout(0, 0, width, height);
+ } else {
+ mContentContainer.layout(offsetPixels, 0, width + offsetPixels, height);
+ }
+ }
+
+ /**
+ * Offsets the menu relative to its original position based on the position of the content.
+ *
+ * @param offsetPixels The number of pixels the content if offset.
+ */
+ private void offsetMenu(int offsetPixels) {
+ if (mOffsetMenu && mMenuSize != 0) {
+ final int menuWidth = mMenuSize;
+ final float openRatio = (menuWidth + (float) offsetPixels) / menuWidth;
+
+ if (USE_TRANSLATIONS) {
+ if (offsetPixels != 0) {
+ final int offset = (int) (0.25f * (openRatio * menuWidth));
+ mMenuContainer.setTranslationX(offset);
+ } else {
+ mMenuContainer.setTranslationX(-menuWidth);
+ }
+
+ } else {
+ final int width = getWidth();
+ final int oldMenuRight = mMenuContainer.getRight();
+ final int newRight = width + (int) (0.25f * (openRatio * menuWidth));
+ final int offset = newRight - oldMenuRight;
+ mMenuContainer.offsetLeftAndRight(offset);
+ mMenuContainer.setVisibility(offsetPixels == 0 ? INVISIBLE : VISIBLE);
+ }
+ }
+ }
+
+ @Override
+ protected void drawDropShadow(Canvas canvas, int offsetPixels) {
+ final int height = getHeight();
+ final int width = getWidth();
+ final int left = width + offsetPixels;
+ final int right = left + mDropShadowSize;
+
+ mDropShadowDrawable.setBounds(left, 0, right, height);
+ mDropShadowDrawable.draw(canvas);
+ }
+
+ @Override
+ protected void drawMenuOverlay(Canvas canvas, int offsetPixels) {
+ final int height = getHeight();
+ final int width = getWidth();
+ final int left = width + offsetPixels;
+ final int right = width;
+ final float openRatio = ((float) Math.abs(offsetPixels)) / mMenuSize;
+
+ mMenuOverlay.setBounds(left, 0, right, height);
+ mMenuOverlay.setAlpha((int) (MAX_MENU_OVERLAY_ALPHA * (1.f - openRatio)));
+ mMenuOverlay.draw(canvas);
+ }
+
+ @Override
+ protected void drawIndicator(Canvas canvas, int offsetPixels) {
+ if (mActiveView != null && isViewDescendant(mActiveView)) {
+ Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition);
+ final int pos = position == null ? 0 : position;
+
+ if (pos == mActivePosition) {
+ final int width = getWidth();
+ final int menuWidth = mMenuSize;
+ final int indicatorWidth = mActiveIndicator.getWidth();
+
+ final int contentRight = width + offsetPixels;
+ final float openRatio = ((float) Math.abs(offsetPixels)) / menuWidth;
+
+ mActiveView.getDrawingRect(mActiveRect);
+ offsetDescendantRectToMyCoords(mActiveView, mActiveRect);
+
+ final float interpolatedRatio = 1.f - INDICATOR_INTERPOLATOR.getInterpolation((1.f - openRatio));
+ final int interpolatedWidth = (int) (indicatorWidth * interpolatedRatio);
+
+ final int indicatorRight = contentRight + interpolatedWidth;
+ final int indicatorLeft = indicatorRight - indicatorWidth;
+
+ if (mIndicatorAnimating) {
+ final int indicatorFinalTop = mActiveRect.top + ((mActiveRect.height()
+ - mActiveIndicator.getHeight()) / 2);
+ final int indicatorStartTop = mIndicatorStartPos;
+ final int diff = indicatorFinalTop - indicatorStartTop;
+ final int startOffset = (int) (diff * mIndicatorOffset);
+ mIndicatorTop = indicatorStartTop + startOffset;
+ } else {
+ mIndicatorTop = mActiveRect.top + ((mActiveRect.height() - mActiveIndicator.getHeight()) / 2);
+ }
+
+ canvas.save();
+ canvas.clipRect(contentRight, 0, indicatorRight, getHeight());
+ canvas.drawBitmap(mActiveIndicator, indicatorLeft, mIndicatorTop, null);
+ canvas.restore();
+ }
+ }
+ }
+
+ @Override
+ protected int getIndicatorStartPos() {
+ return mIndicatorTop;
+ }
+
+ @Override
+ protected void initPeekScroller() {
+ final int dx = -mMenuSize / 3;
+ mPeekScroller.startScroll(0, 0, dx, 0, PEEK_DURATION);
+ }
+
+ @Override
+ protected void onOffsetPixelsChanged(int offsetPixels) {
+ if (USE_TRANSLATIONS) {
+ mContentContainer.setTranslationX(offsetPixels);
+ offsetMenu(offsetPixels);
+ invalidate();
+ } else {
+ mContentContainer.offsetLeftAndRight(offsetPixels - mContentContainer.getLeft());
+ offsetMenu(offsetPixels);
+ invalidate();
+ }
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // Touch handling
+ //////////////////////////////////////////////////////////////////////
+
+ @Override
+ protected boolean isContentTouch(MotionEvent ev) {
+ return ev.getX() < getWidth() + mOffsetPixels;
+ }
+
+ @Override
+ protected boolean onDownAllowDrag(MotionEvent ev) {
+ final int width = getWidth();
+ final int initialMotionX = (int) mInitialMotionX;
+
+ return (!mMenuVisible && initialMotionX >= width - mTouchSize)
+ || (mMenuVisible && initialMotionX <= width + mOffsetPixels);
+ }
+
+ @Override
+ protected boolean onMoveAllowDrag(MotionEvent ev, float diff) {
+ final int width = getWidth();
+ final int initialMotionX = (int) mInitialMotionX;
+
+ return (!mMenuVisible && initialMotionX >= width - mTouchSize && (diff < 0))
+ || (mMenuVisible && initialMotionX <= width + mOffsetPixels);
+ }
+
+ @Override
+ protected void onMoveEvent(float dx) {
+ final float newOffset = Math.max(Math.min(mOffsetPixels + dx, 0), -mMenuSize);
+ setOffsetPixels(newOffset);
+ }
+
+ @Override
+ protected void onUpEvent(MotionEvent ev) {
+ final int offsetPixels = (int) mOffsetPixels;
+ final int width = getWidth();
+
+ if (mIsDragging) {
+ mVelocityTracker.computeCurrentVelocity(1000, mMaxVelocity);
+ final int initialVelocity = (int) mVelocityTracker.getXVelocity();
+ mLastMotionX = ev.getX();
+ animateOffsetTo(mVelocityTracker.getXVelocity() > 0 ? 0 : -mMenuSize, initialVelocity, true);
+
+ // Close the menu when content is clicked while the menu is visible.
+ } else if (mMenuVisible && ev.getX() < width + offsetPixels) {
+ closeMenu();
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/RightStaticDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/RightStaticDrawer.java
new file mode 100644
index 0000000000..2027b43acc
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/RightStaticDrawer.java
@@ -0,0 +1,87 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.GradientDrawable;
+import android.util.AttributeSet;
+
+public class RightStaticDrawer extends StaticDrawer {
+
+ private int mIndicatorTop;
+
+ RightStaticDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public RightStaticDrawer(Context context) {
+ super(context);
+ }
+
+ public RightStaticDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public RightStaticDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void initDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super.initDrawer(context, attrs, defStyle);
+ mPosition = Position.RIGHT;
+ }
+
+ @Override
+ public void setDropShadowColor(int color) {
+ final int endColor = color & 0x00FFFFFF;
+ mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[] {
+ color,
+ endColor,
+ });
+ invalidate();
+ }
+
+ @Override
+ protected void drawIndicator(Canvas canvas) {
+ if (mActiveView != null && isViewDescendant(mActiveView)) {
+ Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition);
+ final int pos = position == null ? 0 : position;
+
+ if (pos == mActivePosition) {
+ final int width = getWidth();
+ final int menuWidth = mMenuSize;
+ final int indicatorWidth = mActiveIndicator.getWidth();
+
+ final int contentRight = width - menuWidth;
+
+ mActiveView.getDrawingRect(mActiveRect);
+ offsetDescendantRectToMyCoords(mActiveView, mActiveRect);
+
+ final int indicatorRight = contentRight + indicatorWidth;
+ final int indicatorLeft = contentRight;
+
+ if (mIndicatorAnimating) {
+ final int indicatorFinalTop = mActiveRect.top + ((mActiveRect.height()
+ - mActiveIndicator.getHeight()) / 2);
+ final int indicatorStartTop = mIndicatorStartPos;
+ final int diff = indicatorFinalTop - indicatorStartTop;
+ final int startOffset = (int) (diff * mIndicatorOffset);
+ mIndicatorTop = indicatorStartTop + startOffset;
+ } else {
+ mIndicatorTop = mActiveRect.top + ((mActiveRect.height() - mActiveIndicator.getHeight()) / 2);
+ }
+
+ canvas.save();
+ canvas.clipRect(contentRight, 0, indicatorRight, getHeight());
+ canvas.drawBitmap(mActiveIndicator, indicatorLeft, mIndicatorTop, null);
+ canvas.restore();
+ }
+ }
+ }
+
+ @Override
+ protected int getIndicatorStartPos() {
+ return mIndicatorTop;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/Scroller.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/Scroller.java
new file mode 100644
index 0000000000..58f0fc54e5
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/Scroller.java
@@ -0,0 +1,505 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.simonvt.menudrawer;
+
+import android.content.Context;
+import android.hardware.SensorManager;
+import android.os.Build;
+import android.util.FloatMath;
+import android.view.ViewConfiguration;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Interpolator;
+
+
+/**
+ * This class encapsulates scrolling. The duration of the scroll
+ * can be passed in the constructor and specifies the maximum time that
+ * the scrolling animation should take. Past this time, the scrolling is
+ * automatically moved to its final stage and computeScrollOffset()
+ * will always return false to indicate that scrolling is over.
+ */
+public class Scroller {
+ private int mMode;
+
+ private int mStartX;
+ private int mStartY;
+ private int mFinalX;
+ private int mFinalY;
+
+ private int mMinX;
+ private int mMaxX;
+ private int mMinY;
+ private int mMaxY;
+
+ private int mCurrX;
+ private int mCurrY;
+ private long mStartTime;
+ private int mDuration;
+ private float mDurationReciprocal;
+ private float mDeltaX;
+ private float mDeltaY;
+ private boolean mFinished;
+ private Interpolator mInterpolator;
+ private boolean mFlywheel;
+
+ private float mVelocity;
+
+ private static final int DEFAULT_DURATION = 250;
+ private static final int SCROLL_MODE = 0;
+ private static final int FLING_MODE = 1;
+
+ private static final float DECELERATION_RATE = (float) (Math.log(0.75) / Math.log(0.9));
+ private static final float ALPHA = 800; // pixels / seconds
+ private static final float START_TENSION = 0.4f; // Tension at start: (0.4 * total T, 1.0 * Distance)
+ private static final float END_TENSION = 1.0f - START_TENSION;
+ private static final int NB_SAMPLES = 100;
+ private static final float[] SPLINE = new float[NB_SAMPLES + 1];
+
+ private float mDeceleration;
+ private final float mPpi;
+
+ static {
+ float xMin = 0.0f;
+ for (int i = 0; i <= NB_SAMPLES; i++) {
+ final float t = (float) i / NB_SAMPLES;
+ float xMax = 1.0f;
+ float x, tx, coef;
+ while (true) {
+ x = xMin + (xMax - xMin) / 2.0f;
+ coef = 3.0f * x * (1.0f - x);
+ tx = coef * ((1.0f - x) * START_TENSION + x * END_TENSION) + x * x * x;
+ if (Math.abs(tx - t) < 1E-5) break;
+ if (tx > t) xMax = x;
+ else xMin = x;
+ }
+ final float d = coef + x * x * x;
+ SPLINE[i] = d;
+ }
+ SPLINE[NB_SAMPLES] = 1.0f;
+
+ // This controls the viscous fluid effect (how much of it)
+ sViscousFluidScale = 8.0f;
+ // must be set to 1.0 (used in viscousFluid())
+ sViscousFluidNormalize = 1.0f;
+ sViscousFluidNormalize = 1.0f / viscousFluid(1.0f);
+ }
+
+ private static float sViscousFluidScale;
+ private static float sViscousFluidNormalize;
+
+ /**
+ * Create a Scroller with the default duration and interpolator.
+ */
+ public Scroller(Context context) {
+ this(context, null);
+ }
+
+ /**
+ * Create a Scroller with the specified interpolator. If the interpolator is
+ * null, the default (viscous) interpolator will be used. "Flywheel" behavior will
+ * be in effect for apps targeting Honeycomb or newer.
+ */
+ public Scroller(Context context, Interpolator interpolator) {
+ this(context, interpolator,
+ context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.HONEYCOMB);
+ }
+
+ /**
+ * Create a Scroller with the specified interpolator. If the interpolator is
+ * null, the default (viscous) interpolator will be used. Specify whether or
+ * not to support progressive "flywheel" behavior in flinging.
+ */
+ public Scroller(Context context, Interpolator interpolator, boolean flywheel) {
+ mFinished = true;
+ mInterpolator = interpolator;
+ mPpi = context.getResources().getDisplayMetrics().density * 160.0f;
+ mDeceleration = computeDeceleration(ViewConfiguration.getScrollFriction());
+ mFlywheel = flywheel;
+ }
+
+ /**
+ * The amount of friction applied to flings. The default value
+ * is {@link android.view.ViewConfiguration#getScrollFriction}.
+ *
+ * @param friction A scalar dimension-less value representing the coefficient of
+ * friction.
+ */
+ public final void setFriction(float friction) {
+ mDeceleration = computeDeceleration(friction);
+ }
+
+ private float computeDeceleration(float friction) {
+ return SensorManager.GRAVITY_EARTH // g (m/s^2)
+ * 39.37f // inch/meter
+ * mPpi // pixels per inch
+ * friction;
+ }
+
+ /**
+ *
+ * Returns whether the scroller has finished scrolling.
+ *
+ * @return True if the scroller has finished scrolling, false otherwise.
+ */
+ public final boolean isFinished() {
+ return mFinished;
+ }
+
+ /**
+ * Force the finished field to a particular value.
+ *
+ * @param finished The new finished value.
+ */
+ public final void forceFinished(boolean finished) {
+ mFinished = finished;
+ }
+
+ /**
+ * Returns how long the scroll event will take, in milliseconds.
+ *
+ * @return The duration of the scroll in milliseconds.
+ */
+ public final int getDuration() {
+ return mDuration;
+ }
+
+ /**
+ * Returns the current X offset in the scroll.
+ *
+ * @return The new X offset as an absolute distance from the origin.
+ */
+ public final int getCurrX() {
+ return mCurrX;
+ }
+
+ /**
+ * Returns the current Y offset in the scroll.
+ *
+ * @return The new Y offset as an absolute distance from the origin.
+ */
+ public final int getCurrY() {
+ return mCurrY;
+ }
+
+ /**
+ * Returns the current velocity.
+ *
+ * @return The original velocity less the deceleration. Result may be
+ * negative.
+ */
+ public float getCurrVelocity() {
+ return mVelocity - mDeceleration * timePassed() / 2000.0f;
+ }
+
+ /**
+ * Returns the start X offset in the scroll.
+ *
+ * @return The start X offset as an absolute distance from the origin.
+ */
+ public final int getStartX() {
+ return mStartX;
+ }
+
+ /**
+ * Returns the start Y offset in the scroll.
+ *
+ * @return The start Y offset as an absolute distance from the origin.
+ */
+ public final int getStartY() {
+ return mStartY;
+ }
+
+ /**
+ * Returns where the scroll will end. Valid only for "fling" scrolls.
+ *
+ * @return The final X offset as an absolute distance from the origin.
+ */
+ public final int getFinalX() {
+ return mFinalX;
+ }
+
+ /**
+ * Returns where the scroll will end. Valid only for "fling" scrolls.
+ *
+ * @return The final Y offset as an absolute distance from the origin.
+ */
+ public final int getFinalY() {
+ return mFinalY;
+ }
+
+ /**
+ * Call this when you want to know the new location. If it returns true,
+ * the animation is not yet finished. loc will be altered to provide the
+ * new location.
+ */
+ public boolean computeScrollOffset() {
+ if (mFinished) {
+ return false;
+ }
+
+ int timePassed = (int) (AnimationUtils.currentAnimationTimeMillis() - mStartTime);
+
+ if (timePassed < mDuration) {
+ switch (mMode) {
+ case SCROLL_MODE:
+ float x = timePassed * mDurationReciprocal;
+
+ if (mInterpolator == null)
+ x = viscousFluid(x);
+ else
+ x = mInterpolator.getInterpolation(x);
+
+ mCurrX = mStartX + Math.round(x * mDeltaX);
+ mCurrY = mStartY + Math.round(x * mDeltaY);
+ break;
+ case FLING_MODE:
+ final float t = (float) timePassed / mDuration;
+ final int index = (int) (NB_SAMPLES * t);
+ final float tInf = (float) index / NB_SAMPLES;
+ final float tSup = (float) (index + 1) / NB_SAMPLES;
+ final float dInf = SPLINE[index];
+ final float dSup = SPLINE[index + 1];
+ final float distanceCoef = dInf + (t - tInf) / (tSup - tInf) * (dSup - dInf);
+
+ mCurrX = mStartX + Math.round(distanceCoef * (mFinalX - mStartX));
+ // Pin to mMinX <= mCurrX <= mMaxX
+ mCurrX = Math.min(mCurrX, mMaxX);
+ mCurrX = Math.max(mCurrX, mMinX);
+
+ mCurrY = mStartY + Math.round(distanceCoef * (mFinalY - mStartY));
+ // Pin to mMinY <= mCurrY <= mMaxY
+ mCurrY = Math.min(mCurrY, mMaxY);
+ mCurrY = Math.max(mCurrY, mMinY);
+
+ if (mCurrX == mFinalX && mCurrY == mFinalY) {
+ mFinished = true;
+ }
+
+ break;
+ }
+ } else {
+ mCurrX = mFinalX;
+ mCurrY = mFinalY;
+ mFinished = true;
+ }
+ return true;
+ }
+
+ /**
+ * Start scrolling by providing a starting point and the distance to travel.
+ * The scroll will use the default value of 250 milliseconds for the
+ * duration.
+ *
+ * @param startX Starting horizontal scroll offset in pixels. Positive
+ * numbers will scroll the content to the left.
+ * @param startY Starting vertical scroll offset in pixels. Positive numbers
+ * will scroll the content up.
+ * @param dx Horizontal distance to travel. Positive numbers will scroll the
+ * content to the left.
+ * @param dy Vertical distance to travel. Positive numbers will scroll the
+ * content up.
+ */
+ public void startScroll(int startX, int startY, int dx, int dy) {
+ startScroll(startX, startY, dx, dy, DEFAULT_DURATION);
+ }
+
+ /**
+ * Start scrolling by providing a starting point and the distance to travel.
+ *
+ * @param startX Starting horizontal scroll offset in pixels. Positive
+ * numbers will scroll the content to the left.
+ * @param startY Starting vertical scroll offset in pixels. Positive numbers
+ * will scroll the content up.
+ * @param dx Horizontal distance to travel. Positive numbers will scroll the
+ * content to the left.
+ * @param dy Vertical distance to travel. Positive numbers will scroll the
+ * content up.
+ * @param duration Duration of the scroll in milliseconds.
+ */
+ public void startScroll(int startX, int startY, int dx, int dy, int duration) {
+ mMode = SCROLL_MODE;
+ mFinished = false;
+ mDuration = duration;
+ mStartTime = AnimationUtils.currentAnimationTimeMillis();
+ mStartX = startX;
+ mStartY = startY;
+ mFinalX = startX + dx;
+ mFinalY = startY + dy;
+ mDeltaX = dx;
+ mDeltaY = dy;
+ mDurationReciprocal = 1.0f / (float) mDuration;
+ }
+
+ /**
+ * Start scrolling based on a fling gesture. The distance travelled will
+ * depend on the initial velocity of the fling.
+ *
+ * @param startX Starting point of the scroll (X)
+ * @param startY Starting point of the scroll (Y)
+ * @param velocityX Initial velocity of the fling (X) measured in pixels per
+ * second.
+ * @param velocityY Initial velocity of the fling (Y) measured in pixels per
+ * second
+ * @param minX Minimum X value. The scroller will not scroll past this
+ * point.
+ * @param maxX Maximum X value. The scroller will not scroll past this
+ * point.
+ * @param minY Minimum Y value. The scroller will not scroll past this
+ * point.
+ * @param maxY Maximum Y value. The scroller will not scroll past this
+ * point.
+ */
+ public void fling(int startX, int startY, int velocityX, int velocityY,
+ int minX, int maxX, int minY, int maxY) {
+ // Continue a scroll or fling in progress
+ if (mFlywheel && !mFinished) {
+ float oldVel = getCurrVelocity();
+
+ float dx = (float) (mFinalX - mStartX);
+ float dy = (float) (mFinalY - mStartY);
+ float hyp = FloatMath.sqrt(dx * dx + dy * dy);
+
+ float ndx = dx / hyp;
+ float ndy = dy / hyp;
+
+ float oldVelocityX = ndx * oldVel;
+ float oldVelocityY = ndy * oldVel;
+ if (Math.signum(velocityX) == Math.signum(oldVelocityX)
+ && Math.signum(velocityY) == Math.signum(oldVelocityY)) {
+ velocityX += oldVelocityX;
+ velocityY += oldVelocityY;
+ }
+ }
+
+ mMode = FLING_MODE;
+ mFinished = false;
+
+ float velocity = FloatMath.sqrt(velocityX * velocityX + velocityY * velocityY);
+
+ mVelocity = velocity;
+ final double l = Math.log(START_TENSION * velocity / ALPHA);
+ mDuration = (int) (1000.0 * Math.exp(l / (DECELERATION_RATE - 1.0)));
+ mStartTime = AnimationUtils.currentAnimationTimeMillis();
+ mStartX = startX;
+ mStartY = startY;
+
+ float coeffX = velocity == 0 ? 1.0f : velocityX / velocity;
+ float coeffY = velocity == 0 ? 1.0f : velocityY / velocity;
+
+ int totalDistance =
+ (int) (ALPHA * Math.exp(DECELERATION_RATE / (DECELERATION_RATE - 1.0) * l));
+
+ mMinX = minX;
+ mMaxX = maxX;
+ mMinY = minY;
+ mMaxY = maxY;
+
+ mFinalX = startX + Math.round(totalDistance * coeffX);
+ // Pin to mMinX <= mFinalX <= mMaxX
+ mFinalX = Math.min(mFinalX, mMaxX);
+ mFinalX = Math.max(mFinalX, mMinX);
+
+ mFinalY = startY + Math.round(totalDistance * coeffY);
+ // Pin to mMinY <= mFinalY <= mMaxY
+ mFinalY = Math.min(mFinalY, mMaxY);
+ mFinalY = Math.max(mFinalY, mMinY);
+ }
+
+ static float viscousFluid(float x) {
+ x *= sViscousFluidScale;
+ if (x < 1.0f) {
+ x -= (1.0f - (float) Math.exp(-x));
+ } else {
+ float start = 0.36787944117f; // 1/e == exp(-1)
+ x = 1.0f - (float) Math.exp(1.0f - x);
+ x = start + x * (1.0f - start);
+ }
+ x *= sViscousFluidNormalize;
+ return x;
+ }
+
+ /**
+ * Stops the animation. Contrary to {@link #forceFinished(boolean)},
+ * aborting the animating cause the scroller to move to the final x and y
+ * position
+ *
+ * @see #forceFinished(boolean)
+ */
+ public void abortAnimation() {
+ mCurrX = mFinalX;
+ mCurrY = mFinalY;
+ mFinished = true;
+ }
+
+ /**
+ * Extend the scroll animation. This allows a running animation to scroll
+ * further and longer, when used with {@link #setFinalX(int)} or {@link #setFinalY(int)}.
+ *
+ * @param extend Additional time to scroll in milliseconds.
+ * @see #setFinalX(int)
+ * @see #setFinalY(int)
+ */
+ public void extendDuration(int extend) {
+ int passed = timePassed();
+ mDuration = passed + extend;
+ mDurationReciprocal = 1.0f / mDuration;
+ mFinished = false;
+ }
+
+ /**
+ * Returns the time elapsed since the beginning of the scrolling.
+ *
+ * @return The elapsed time in milliseconds.
+ */
+ public int timePassed() {
+ return (int) (AnimationUtils.currentAnimationTimeMillis() - mStartTime);
+ }
+
+ /**
+ * Sets the final position (X) for this scroller.
+ *
+ * @param newX The new X offset as an absolute distance from the origin.
+ * @see #extendDuration(int)
+ * @see #setFinalY(int)
+ */
+ public void setFinalX(int newX) {
+ mFinalX = newX;
+ mDeltaX = mFinalX - mStartX;
+ mFinished = false;
+ }
+
+ /**
+ * Sets the final position (Y) for this scroller.
+ *
+ * @param newY The new Y offset as an absolute distance from the origin.
+ * @see #extendDuration(int)
+ * @see #setFinalX(int)
+ */
+ public void setFinalY(int newY) {
+ mFinalY = newY;
+ mDeltaY = mFinalY - mStartY;
+ mFinished = false;
+ }
+
+ /**
+ * @hide
+ */
+ public boolean isScrollingInDirection(float xvel, float yvel) {
+ return !mFinished && Math.signum(xvel) == Math.signum(mFinalX - mStartX)
+ && Math.signum(yvel) == Math.signum(mFinalY - mStartY);
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/SinusoidalInterpolator.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/SinusoidalInterpolator.java
new file mode 100644
index 0000000000..e79051a06b
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/SinusoidalInterpolator.java
@@ -0,0 +1,15 @@
+package net.simonvt.menudrawer;
+
+import android.view.animation.Interpolator;
+
+/**
+ * Interpolator which, when drawn from 0 to 1, looks like half a sine-wave. Used for smoother opening/closing when
+ * peeking at the drawer.
+ */
+public class SinusoidalInterpolator implements Interpolator {
+
+ @Override
+ public float getInterpolation(float input) {
+ return (float) (0.5f + 0.5f * Math.sin(input * Math.PI - Math.PI / 2.f));
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/SmoothInterpolator.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/SmoothInterpolator.java
new file mode 100644
index 0000000000..cfdcb69bf3
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/SmoothInterpolator.java
@@ -0,0 +1,12 @@
+package net.simonvt.menudrawer;
+
+import android.view.animation.Interpolator;
+
+public class SmoothInterpolator implements Interpolator {
+
+ @Override
+ public float getInterpolation(float t) {
+ t -= 1.0f;
+ return t * t * t * t * t + 1.0f;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/StaticDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/StaticDrawer.java
new file mode 100644
index 0000000000..879f2c9504
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/StaticDrawer.java
@@ -0,0 +1,208 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.util.AttributeSet;
+
+public abstract class StaticDrawer extends MenuDrawer {
+
+ protected Position mPosition;
+
+ StaticDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public StaticDrawer(Context context) {
+ super(context);
+ }
+
+ public StaticDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public StaticDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ super.dispatchDraw(canvas);
+ if (mDropShadowEnabled) drawDropShadow(canvas);
+ if (mActiveIndicator != null) drawIndicator(canvas);
+ }
+
+ private void drawDropShadow(Canvas canvas) {
+ final int width = getWidth();
+ final int height = getHeight();
+ final int menuSize = mMenuSize;
+ final int dropShadowSize = mDropShadowSize;
+
+ switch (mPosition) {
+ case LEFT:
+ mDropShadowDrawable.setBounds(menuSize - dropShadowSize, 0, menuSize, height);
+ break;
+
+ case TOP:
+ mDropShadowDrawable.setBounds(0, menuSize - dropShadowSize, width, menuSize);
+ break;
+
+ case RIGHT:
+ mDropShadowDrawable.setBounds(width - menuSize, 0, width - menuSize + dropShadowSize, height);
+ break;
+
+ case BOTTOM:
+ mDropShadowDrawable.setBounds(0, height - menuSize, width, height - menuSize + dropShadowSize);
+ break;
+ }
+
+ mDropShadowDrawable.draw(canvas);
+ }
+
+ protected abstract void drawIndicator(Canvas canvas);
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ final int width = r - l;
+ final int height = b - t;
+
+ switch (mPosition) {
+ case LEFT:
+ mMenuContainer.layout(0, 0, mMenuSize, height);
+ mContentContainer.layout(mMenuSize, 0, width, height);
+ break;
+
+ case RIGHT:
+ mMenuContainer.layout(width - mMenuSize, 0, width, height);
+ mContentContainer.layout(0, 0, width - mMenuSize, height);
+ break;
+
+ case TOP:
+ mMenuContainer.layout(0, 0, width, mMenuSize);
+ mContentContainer.layout(0, mMenuSize, width, height);
+ break;
+
+ case BOTTOM:
+ mMenuContainer.layout(0, height - mMenuSize, width, height);
+ mContentContainer.layout(0, 0, width, height - mMenuSize);
+ break;
+ }
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
+ final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
+
+ if (widthMode != MeasureSpec.EXACTLY || heightMode != MeasureSpec.EXACTLY) {
+ throw new IllegalStateException("Must measure with an exact size");
+ }
+
+ final int width = MeasureSpec.getSize(widthMeasureSpec);
+ final int height = MeasureSpec.getSize(heightMeasureSpec);
+
+ if (!mMenuSizeSet) mMenuSize = (int) (height * 0.25f);
+
+ switch (mPosition) {
+ case LEFT:
+ case RIGHT: {
+ final int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
+
+ final int menuWidth = mMenuSize;
+ final int menuWidthMeasureSpec = MeasureSpec.makeMeasureSpec(menuWidth, MeasureSpec.EXACTLY);
+
+ final int contentWidth = width - menuWidth;
+ final int contentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(contentWidth, MeasureSpec.EXACTLY);
+
+ mContentContainer.measure(contentWidthMeasureSpec, childHeightMeasureSpec);
+ mMenuContainer.measure(menuWidthMeasureSpec, childHeightMeasureSpec);
+ break;
+ }
+
+ case TOP:
+ case BOTTOM: {
+ final int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY);
+
+ final int menuHeight = mMenuSize;
+ final int menuHeightMeasureSpec = MeasureSpec.makeMeasureSpec(menuHeight, MeasureSpec.EXACTLY);
+
+ final int contentHeight = height - menuHeight;
+ final int contentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(contentHeight, MeasureSpec.EXACTLY);
+
+ mContentContainer.measure(childWidthMeasureSpec, contentHeightMeasureSpec);
+ mMenuContainer.measure(childWidthMeasureSpec, menuHeightMeasureSpec);
+ break;
+ }
+ }
+
+ setMeasuredDimension(width, height);
+ }
+
+ @Override
+ public void toggleMenu(boolean animate) {
+ }
+
+ @Override
+ public void openMenu(boolean animate) {
+ }
+
+ @Override
+ public void closeMenu(boolean animate) {
+ }
+
+ @Override
+ public boolean isMenuVisible() {
+ return true;
+ }
+
+ @Override
+ public void setMenuSize(int size) {
+ mMenuSize = size;
+ mMenuSizeSet = true;
+ requestLayout();
+ invalidate();
+ }
+
+ @Override
+ public void setOffsetMenuEnabled(boolean offsetMenu) {
+ }
+
+ @Override
+ public boolean getOffsetMenuEnabled() {
+ return false;
+ }
+
+ @Override
+ public void peekDrawer() {
+ }
+
+ @Override
+ public void peekDrawer(long delay) {
+ }
+
+ @Override
+ public void peekDrawer(long startDelay, long delay) {
+ }
+
+ @Override
+ public void setHardwareLayerEnabled(boolean enabled) {
+ }
+
+ @Override
+ public int getTouchMode() {
+ return TOUCH_MODE_NONE;
+ }
+
+ @Override
+ public void setTouchMode(int mode) {
+ }
+
+ @Override
+ public void setTouchBezelSize(int size) {
+ }
+
+ @Override
+ public int getTouchBezelSize() {
+ return 0;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/TopDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/TopDrawer.java
new file mode 100644
index 0000000000..0af2c6bad8
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/TopDrawer.java
@@ -0,0 +1,216 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.GradientDrawable;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+public class TopDrawer extends VerticalDrawer {
+
+ private int mIndicatorLeft;
+
+ TopDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public TopDrawer(Context context) {
+ super(context);
+ }
+
+ public TopDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public TopDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ public void openMenu(boolean animate) {
+ animateOffsetTo(mMenuSize, 0, animate);
+ }
+
+ @Override
+ public void closeMenu(boolean animate) {
+ animateOffsetTo(0, 0, animate);
+ }
+
+ @Override
+ public void setDropShadowColor(int color) {
+ final int endColor = color & 0x00FFFFFF;
+ mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP,
+ new int[] {
+ color,
+ endColor,
+ });
+ invalidate();
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ final int width = r - l;
+ final int height = b - t;
+ final int offsetPixels = (int) mOffsetPixels;
+
+ mMenuContainer.layout(0, 0, width, mMenuSize);
+ offsetMenu(offsetPixels);
+
+ if (USE_TRANSLATIONS) {
+ mContentContainer.layout(0, 0, width, height);
+ } else {
+ mContentContainer.layout(0, offsetPixels, width, height + offsetPixels);
+ }
+ }
+
+ /**
+ * Offsets the menu relative to its original position based on the position of the content.
+ *
+ * @param offsetPixels The number of pixels the content if offset.
+ */
+ private void offsetMenu(int offsetPixels) {
+ if (mOffsetMenu && mMenuSize != 0) {
+ final int menuSize = mMenuSize;
+ final float openRatio = (menuSize - (float) offsetPixels) / menuSize;
+
+ if (USE_TRANSLATIONS) {
+ if (offsetPixels > 0) {
+ final int offset = (int) (0.25f * (-openRatio * menuSize));
+ mMenuContainer.setTranslationY(offset);
+ } else {
+ mMenuContainer.setTranslationY(-menuSize);
+ }
+
+ } else {
+ final int oldMenuTop = mMenuContainer.getTop();
+ final int offset = (int) (0.25f * (-openRatio * menuSize)) - oldMenuTop;
+ mMenuContainer.offsetTopAndBottom(offset);
+ mMenuContainer.setVisibility(offsetPixels == 0 ? INVISIBLE : VISIBLE);
+ }
+ }
+ }
+
+ @Override
+ protected void drawDropShadow(Canvas canvas, int offsetPixels) {
+ final int width = getWidth();
+
+ mDropShadowDrawable.setBounds(0, offsetPixels - mDropShadowSize, width, offsetPixels);
+ mDropShadowDrawable.draw(canvas);
+ }
+
+ @Override
+ protected void drawMenuOverlay(Canvas canvas, int offsetPixels) {
+ final int width = getWidth();
+ final float openRatio = ((float) offsetPixels) / mMenuSize;
+
+ mMenuOverlay.setBounds(0, 0, width, offsetPixels);
+ mMenuOverlay.setAlpha((int) (MAX_MENU_OVERLAY_ALPHA * (1.f - openRatio)));
+ mMenuOverlay.draw(canvas);
+ }
+
+ @Override
+ protected void drawIndicator(Canvas canvas, int offsetPixels) {
+ if (mActiveView != null && isViewDescendant(mActiveView)) {
+ Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition);
+ final int pos = position == null ? 0 : position;
+
+ if (pos == mActivePosition) {
+ final int menuHeight = mMenuSize;
+ final int indicatorHeight = mActiveIndicator.getHeight();
+
+ final float openRatio = ((float) offsetPixels) / menuHeight;
+
+ mActiveView.getDrawingRect(mActiveRect);
+ offsetDescendantRectToMyCoords(mActiveView, mActiveRect);
+ final int indicatorWidth = mActiveIndicator.getWidth();
+
+ final float interpolatedRatio = 1.f - INDICATOR_INTERPOLATOR.getInterpolation((1.f - openRatio));
+ final int interpolatedHeight = (int) (indicatorHeight * interpolatedRatio);
+
+ final int indicatorTop = offsetPixels - interpolatedHeight;
+ if (mIndicatorAnimating) {
+ final int finalLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2);
+ final int startLeft = mIndicatorStartPos;
+ final int diff = finalLeft - startLeft;
+ final int startOffset = (int) (diff * mIndicatorOffset);
+ mIndicatorLeft = startLeft + startOffset;
+ } else {
+ mIndicatorLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2);
+ }
+
+ canvas.save();
+ canvas.clipRect(mIndicatorLeft, indicatorTop, mIndicatorLeft + indicatorWidth, offsetPixels);
+ canvas.drawBitmap(mActiveIndicator, mIndicatorLeft, indicatorTop, null);
+ canvas.restore();
+ }
+ }
+ }
+
+ @Override
+ protected int getIndicatorStartPos() {
+ return mIndicatorLeft;
+ }
+
+ @Override
+ protected void initPeekScroller() {
+ final int dx = mMenuSize / 3;
+ mPeekScroller.startScroll(0, 0, dx, 0, PEEK_DURATION);
+ }
+
+ @Override
+ protected void onOffsetPixelsChanged(int offsetPixels) {
+ if (USE_TRANSLATIONS) {
+ mContentContainer.setTranslationY(offsetPixels);
+ offsetMenu(offsetPixels);
+ invalidate();
+ } else {
+ mContentContainer.offsetTopAndBottom(offsetPixels - mContentContainer.getTop());
+ offsetMenu(offsetPixels);
+ invalidate();
+ }
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // Touch handling
+ //////////////////////////////////////////////////////////////////////
+
+ @Override
+ protected boolean isContentTouch(MotionEvent ev) {
+ return ev.getY() > mOffsetPixels;
+ }
+
+ @Override
+ protected boolean onDownAllowDrag(MotionEvent ev) {
+ return (!mMenuVisible && mInitialMotionY <= mTouchSize)
+ || (mMenuVisible && mInitialMotionY >= mOffsetPixels);
+ }
+
+ @Override
+ protected boolean onMoveAllowDrag(MotionEvent ev, float diff) {
+ return (!mMenuVisible && mInitialMotionY <= mTouchSize && (diff > 0))
+ || (mMenuVisible && mInitialMotionY >= mOffsetPixels);
+ }
+
+ @Override
+ protected void onMoveEvent(float dx) {
+ setOffsetPixels(Math.min(Math.max(mOffsetPixels + dx, 0), mMenuSize));
+ }
+
+ @Override
+ protected void onUpEvent(MotionEvent ev) {
+ final int offsetPixels = (int) mOffsetPixels;
+
+ if (mIsDragging) {
+ mVelocityTracker.computeCurrentVelocity(1000, mMaxVelocity);
+ final int initialVelocity = (int) mVelocityTracker.getXVelocity();
+ mLastMotionY = ev.getY();
+ animateOffsetTo(mVelocityTracker.getYVelocity() > 0 ? mMenuSize : 0, initialVelocity,
+ true);
+
+ // Close the menu when content is clicked while the menu is visible.
+ } else if (mMenuVisible && ev.getY() > offsetPixels) {
+ closeMenu();
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/TopStaticDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/TopStaticDrawer.java
new file mode 100644
index 0000000000..ac846148b1
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/TopStaticDrawer.java
@@ -0,0 +1,82 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.GradientDrawable;
+import android.util.AttributeSet;
+
+public class TopStaticDrawer extends StaticDrawer {
+
+ private int mIndicatorLeft;
+
+ TopStaticDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public TopStaticDrawer(Context context) {
+ super(context);
+ }
+
+ public TopStaticDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public TopStaticDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void initDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super.initDrawer(context, attrs, defStyle);
+ mPosition = Position.TOP;
+ }
+
+ @Override
+ public void setDropShadowColor(int color) {
+ final int endColor = color & 0x00FFFFFF;
+ mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, new int[] {
+ color,
+ endColor,
+ });
+ invalidate();
+ }
+
+ @Override
+ protected void drawIndicator(Canvas canvas) {
+ if (mActiveView != null && isViewDescendant(mActiveView)) {
+ Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition);
+ final int pos = position == null ? 0 : position;
+
+ if (pos == mActivePosition) {
+ final int menuHeight = mMenuSize;
+ final int indicatorHeight = mActiveIndicator.getHeight();
+
+ mActiveView.getDrawingRect(mActiveRect);
+ offsetDescendantRectToMyCoords(mActiveView, mActiveRect);
+ final int indicatorWidth = mActiveIndicator.getWidth();
+
+ final int indicatorTop = menuHeight - indicatorHeight;
+ if (mIndicatorAnimating) {
+ final int finalLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2);
+ final int startLeft = mIndicatorStartPos;
+ final int diff = finalLeft - startLeft;
+ final int startOffset = (int) (diff * mIndicatorOffset);
+ mIndicatorLeft = startLeft + startOffset;
+ } else {
+ mIndicatorLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2);
+ }
+
+ canvas.save();
+ canvas.clipRect(mIndicatorLeft, indicatorTop, mIndicatorLeft + indicatorWidth, menuHeight);
+ canvas.drawBitmap(mActiveIndicator, mIndicatorLeft, indicatorTop, null);
+ canvas.restore();
+ }
+ }
+ }
+
+ @Override
+ protected int getIndicatorStartPos() {
+ return mIndicatorLeft;
+ }
+}
diff --git a/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/VerticalDrawer.java b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/VerticalDrawer.java
new file mode 100644
index 0000000000..415d49896e
--- /dev/null
+++ b/Externals/android-menudrawer/library/src/net/simonvt/menudrawer/VerticalDrawer.java
@@ -0,0 +1,216 @@
+package net.simonvt.menudrawer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.VelocityTracker;
+
+public abstract class VerticalDrawer extends DraggableDrawer {
+
+ VerticalDrawer(Activity activity, int dragMode) {
+ super(activity, dragMode);
+ }
+
+ public VerticalDrawer(Context context) {
+ super(context);
+ }
+
+ public VerticalDrawer(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public VerticalDrawer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
+ final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
+
+ if (widthMode != MeasureSpec.EXACTLY || heightMode != MeasureSpec.EXACTLY) {
+ throw new IllegalStateException("Must measure with an exact size");
+ }
+
+ final int width = MeasureSpec.getSize(widthMeasureSpec);
+ final int height = MeasureSpec.getSize(heightMeasureSpec);
+
+ if (!mMenuSizeSet) mMenuSize = (int) (height * 0.25f);
+ if (mOffsetPixels == -1) openMenu(false);
+
+ final int menuWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, width);
+ final int menuHeightMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, mMenuSize);
+ mMenuContainer.measure(menuWidthMeasureSpec, menuHeightMeasureSpec);
+
+ final int contentWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, width);
+ final int contentHeightMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, height);
+ mContentContainer.measure(contentWidthMeasureSpec, contentHeightMeasureSpec);
+
+ setMeasuredDimension(width, height);
+
+ updateTouchAreaSize();
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ final int action = ev.getAction() & MotionEvent.ACTION_MASK;
+
+ if (action == MotionEvent.ACTION_DOWN && mMenuVisible && isCloseEnough()) {
+ setOffsetPixels(0);
+ stopAnimation();
+ endPeek();
+ setDrawerState(STATE_CLOSED);
+ }
+
+ // Always intercept events over the content while menu is visible.
+ if (mMenuVisible && isContentTouch(ev)) {
+ return true;
+ }
+
+ if (mTouchMode == TOUCH_MODE_NONE) {
+ return false;
+ }
+
+ if (action != MotionEvent.ACTION_DOWN) {
+ if (mIsDragging) {
+ return true;
+ }
+ }
+
+ switch (action) {
+ case MotionEvent.ACTION_DOWN: {
+ mLastMotionX = mInitialMotionX = ev.getX();
+ mLastMotionY = mInitialMotionY = ev.getY();
+ final boolean allowDrag = onDownAllowDrag(ev);
+
+ if (allowDrag) {
+ setDrawerState(mMenuVisible ? STATE_OPEN : STATE_CLOSED);
+ stopAnimation();
+ endPeek();
+ mIsDragging = false;
+ }
+ break;
+ }
+
+ case MotionEvent.ACTION_MOVE: {
+ final float x = ev.getX();
+ final float dx = x - mLastMotionX;
+ final float xDiff = Math.abs(dx);
+ final float y = ev.getY();
+ final float dy = y - mLastMotionY;
+ final float yDiff = Math.abs(dy);
+
+ if (yDiff > mTouchSlop && yDiff > xDiff) {
+ if (mOnInterceptMoveEventListener != null && mTouchMode == TOUCH_MODE_FULLSCREEN
+ && canChildScrollVertically(mContentContainer, false, (int) dx, (int) x, (int) y)) {
+ endDrag(); // Release the velocity tracker
+ return false;
+ }
+
+ final boolean allowDrag = onMoveAllowDrag(ev, dy);
+
+ if (allowDrag) {
+ setDrawerState(STATE_DRAGGING);
+ mIsDragging = true;
+ mLastMotionX = x;
+ mLastMotionY = y;
+ }
+ }
+ break;
+ }
+
+ /**
+ * If you click really fast, an up or cancel event is delivered here. Just snap content to
+ * whatever is closest.
+ */
+ case MotionEvent.ACTION_CANCEL:
+ case MotionEvent.ACTION_UP: {
+ if (Math.abs(mOffsetPixels) > mMenuSize / 2) {
+ openMenu();
+ } else {
+ closeMenu();
+ }
+ break;
+ }
+ }
+
+ if (mVelocityTracker == null) {
+ mVelocityTracker = VelocityTracker.obtain();
+ }
+ mVelocityTracker.addMovement(ev);
+
+ return mIsDragging;
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ if (!mMenuVisible && !mIsDragging && (mTouchMode == TOUCH_MODE_NONE)) {
+ return false;
+ }
+ final int action = ev.getAction() & MotionEvent.ACTION_MASK;
+
+ if (mVelocityTracker == null) {
+ mVelocityTracker = VelocityTracker.obtain();
+ }
+ mVelocityTracker.addMovement(ev);
+
+ switch (action) {
+ case MotionEvent.ACTION_DOWN: {
+ mLastMotionX = mInitialMotionX = ev.getX();
+ mLastMotionY = mInitialMotionY = ev.getY();
+ final boolean allowDrag = onDownAllowDrag(ev);
+
+ if (allowDrag) {
+ stopAnimation();
+ endPeek();
+ startLayerTranslation();
+ }
+ break;
+ }
+
+ case MotionEvent.ACTION_MOVE: {
+ if (!mIsDragging) {
+ final float x = ev.getX();
+ final float dx = x - mLastMotionX;
+ final float xDiff = Math.abs(dx);
+ final float y = ev.getY();
+ final float dy = y - mLastMotionY;
+ final float yDiff = Math.abs(dy);
+
+ if (yDiff > mTouchSlop && yDiff > xDiff) {
+ final boolean allowDrag = onMoveAllowDrag(ev, dy);
+
+ if (allowDrag) {
+ setDrawerState(STATE_DRAGGING);
+ mIsDragging = true;
+ mLastMotionY = y - mInitialMotionY > 0
+ ? mInitialMotionY + mTouchSlop
+ : mInitialMotionY - mTouchSlop;
+ }
+ }
+ }
+
+ if (mIsDragging) {
+ startLayerTranslation();
+
+ final float y = ev.getY();
+ final float dy = y - mLastMotionY;
+
+ mLastMotionY = y;
+ onMoveEvent(dy);
+ }
+ break;
+ }
+
+ case MotionEvent.ACTION_CANCEL:
+ case MotionEvent.ACTION_UP: {
+ onUpEvent(ev);
+ break;
+ }
+ }
+
+ return true;
+ }
+
+}
diff --git a/Externals/android-menudrawer/pom.xml b/Externals/android-menudrawer/pom.xml
new file mode 100644
index 0000000000..eda6dd9125
--- /dev/null
+++ b/Externals/android-menudrawer/pom.xml
@@ -0,0 +1,126 @@
+
+
+
+ 4.0.0
+
+
+ org.sonatype.oss
+ oss-parent
+ 7
+
+
+ net.simonvt
+ android-menudrawer-parent
+ pom
+ 2.0.3-SNAPSHOT
+
+ Android MenuDrawer (Parent)
+ A menu drawer implementation which allows dragging of both the content, and the entire window.
+ https://github.com/SimonVT/android-menudrawer
+ 2012
+
+
+ library
+ samples
+
+
+
+ http://github.com/SimonVT/android-menudrawer/
+ scm:git:git://github.com/SimonVT/android-menudrawer.git
+ scm:git:git@github.com:SimonVT/android-menudrawer.git
+ HEAD
+
+
+
+
+ Apache License Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ GitHub Issues
+ https://github.com/SimonVT/android-menudrawer/issues
+
+
+
+ UTF-8
+ UTF-8
+
+ 1.6
+ 4.1.1.4
+ 16
+
+ r7
+
+
+
+
+
+ com.google.android
+ android
+ ${android.version}
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.0
+
+ ${java.version}
+ ${java.version}
+
+
+
+
+ com.jayway.maven.plugins.android.generation2
+ android-maven-plugin
+ 3.5.1
+
+
+ ${android.platform}
+
+
+ true
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-release-plugin
+ 2.4
+
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ 2.9.1
+
+ true
+
+ ../checkstyle.xml
+ true
+
+
+
+ verify
+
+ checkstyle
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/AndroidManifest.xml b/Externals/android-menudrawer/samples/AndroidManifest.xml
new file mode 100644
index 0000000000..7323fa61b3
--- /dev/null
+++ b/Externals/android-menudrawer/samples/AndroidManifest.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/build.xml b/Externals/android-menudrawer/samples/build.xml
new file mode 100644
index 0000000000..9eb8fb98ea
--- /dev/null
+++ b/Externals/android-menudrawer/samples/build.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/libs/android-support-v4-r10.jar b/Externals/android-menudrawer/samples/libs/android-support-v4-r10.jar
new file mode 100644
index 0000000000..feaf44f801
Binary files /dev/null and b/Externals/android-menudrawer/samples/libs/android-support-v4-r10.jar differ
diff --git a/Externals/android-menudrawer/samples/pom.xml b/Externals/android-menudrawer/samples/pom.xml
new file mode 100644
index 0000000000..5baaac769b
--- /dev/null
+++ b/Externals/android-menudrawer/samples/pom.xml
@@ -0,0 +1,47 @@
+
+
+
+ 4.0.0
+
+
+ net.simonvt
+ android-menudrawer-parent
+ 2.0.3-SNAPSHOT
+ ../pom.xml
+
+
+ android-menudrawer-sample
+ Android MenuDrawer Sample
+ apk
+
+
+
+ com.google.android
+ android
+ provided
+
+
+ net.simonvt
+ android-menudrawer
+ ${project.version}
+ apklib
+
+
+ com.google.android
+ support-v4
+ ${android-support.version}
+
+
+
+
+ src
+
+
+
+ com.jayway.maven.plugins.android.generation2
+ android-maven-plugin
+ true
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/project.properties b/Externals/android-menudrawer/samples/project.properties
new file mode 100644
index 0000000000..1561d7a9a1
--- /dev/null
+++ b/Externals/android-menudrawer/samples/project.properties
@@ -0,0 +1,15 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-17
+android.library.reference.1=../library
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow.png b/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow.png
new file mode 100644
index 0000000000..add3b36186
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow_bottom.png b/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow_bottom.png
new file mode 100644
index 0000000000..47e9c9045c
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow_bottom.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow_right.png b/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow_right.png
new file mode 100644
index 0000000000..4ae9df9b78
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow_right.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow_top.png b/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow_top.png
new file mode 100644
index 0000000000..ab4ed80eea
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi-v14/menu_arrow_top.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_action_refresh_dark.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_action_refresh_dark.png
new file mode 100644
index 0000000000..bb9d855f77
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_action_refresh_dark.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_action_select_all_dark.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_action_select_all_dark.png
new file mode 100644
index 0000000000..c87c3f8370
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_action_select_all_dark.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_launcher.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000000..96a442e5b8
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_launcher.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_menu_moreoverflow_normal_holo_light.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_menu_moreoverflow_normal_holo_light.png
new file mode 100644
index 0000000000..bb6aef1d06
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/ic_menu_moreoverflow_normal_holo_light.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/md__category_background.9.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/md__category_background.9.png
new file mode 100644
index 0000000000..43a20adcb1
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/md__category_background.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_focused_holo.9.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_focused_holo.9.png
new file mode 100644
index 0000000000..555270842a
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_focused_holo.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_longpressed_holo.9.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_longpressed_holo.9.png
new file mode 100644
index 0000000000..4ea7afa00e
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_longpressed_holo.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_pressed_holo_dark.9.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_pressed_holo_dark.9.png
new file mode 100644
index 0000000000..5654cd6942
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_pressed_holo_dark.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_selector_disabled_holo_dark.9.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_selector_disabled_holo_dark.9.png
new file mode 100644
index 0000000000..f6fd30dcdc
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/md__list_selector_disabled_holo_dark.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow.png
new file mode 100644
index 0000000000..c28d98f3bb
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow_bottom.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow_bottom.png
new file mode 100644
index 0000000000..4cbe8cbed4
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow_bottom.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow_right.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow_right.png
new file mode 100644
index 0000000000..2fb6a937e6
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow_right.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow_top.png b/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow_top.png
new file mode 100644
index 0000000000..41f6c6a859
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-hdpi/menu_arrow_top.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow.png b/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow.png
new file mode 100644
index 0000000000..26d7759516
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow_bottom.png b/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow_bottom.png
new file mode 100644
index 0000000000..af8e7b909d
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow_bottom.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow_right.png b/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow_right.png
new file mode 100644
index 0000000000..21deedfcac
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow_right.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow_top.png b/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow_top.png
new file mode 100644
index 0000000000..1f5d61a278
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi-v14/menu_arrow_top.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_action_refresh_dark.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_action_refresh_dark.png
new file mode 100644
index 0000000000..bd611e8e24
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_action_refresh_dark.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_action_select_all_dark.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_action_select_all_dark.png
new file mode 100644
index 0000000000..252ecbb0ed
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_action_select_all_dark.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_launcher.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000000..359047dfa4
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_launcher.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_menu_moreoverflow_normal_holo_light.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_menu_moreoverflow_normal_holo_light.png
new file mode 100644
index 0000000000..01d681697f
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/ic_menu_moreoverflow_normal_holo_light.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/md__category_background.9.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/md__category_background.9.png
new file mode 100644
index 0000000000..af0bc168d5
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/md__category_background.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_focused_holo.9.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_focused_holo.9.png
new file mode 100644
index 0000000000..00f05d8c97
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_focused_holo.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_longpressed_holo.9.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_longpressed_holo.9.png
new file mode 100644
index 0000000000..3bf8e03623
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_longpressed_holo.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_pressed_holo_dark.9.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_pressed_holo_dark.9.png
new file mode 100644
index 0000000000..6e77525d2d
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_pressed_holo_dark.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_selector_disabled_holo_dark.9.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_selector_disabled_holo_dark.9.png
new file mode 100644
index 0000000000..92da2f0dd3
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/md__list_selector_disabled_holo_dark.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow.png
new file mode 100644
index 0000000000..ecacda7113
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow_bottom.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow_bottom.png
new file mode 100644
index 0000000000..3dce461a3d
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow_bottom.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow_right.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow_right.png
new file mode 100644
index 0000000000..3222d034e9
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow_right.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow_top.png b/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow_top.png
new file mode 100644
index 0000000000..cde43fd2b1
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-mdpi/menu_arrow_top.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow.png
new file mode 100644
index 0000000000..6bdcc62e1a
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow_bottom.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow_bottom.png
new file mode 100644
index 0000000000..aba9001f33
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow_bottom.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow_right.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow_right.png
new file mode 100644
index 0000000000..85591b81d5
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow_right.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow_top.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow_top.png
new file mode 100644
index 0000000000..b81c74749d
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi-v14/menu_arrow_top.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_action_refresh_dark.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_action_refresh_dark.png
new file mode 100644
index 0000000000..a7fdc0dfcb
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_action_refresh_dark.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_action_select_all_dark.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_action_select_all_dark.png
new file mode 100644
index 0000000000..f193a8bb31
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_action_select_all_dark.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_launcher.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000000..71c6d760f0
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_launcher.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_menu_moreoverflow_normal_holo_light.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_menu_moreoverflow_normal_holo_light.png
new file mode 100644
index 0000000000..930ca8d95e
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/ic_menu_moreoverflow_normal_holo_light.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__category_background.9.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__category_background.9.png
new file mode 100644
index 0000000000..942d72e65b
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__category_background.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_focused_holo.9.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_focused_holo.9.png
new file mode 100644
index 0000000000..b545f8e578
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_focused_holo.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_longpressed_holo.9.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_longpressed_holo.9.png
new file mode 100644
index 0000000000..eda10e6123
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_longpressed_holo.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_pressed_holo_dark.9.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_pressed_holo_dark.9.png
new file mode 100644
index 0000000000..e4b33935a3
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_pressed_holo_dark.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png
new file mode 100644
index 0000000000..88726b6916
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow.png
new file mode 100644
index 0000000000..b159937237
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow_bottom.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow_bottom.png
new file mode 100644
index 0000000000..77a088fdce
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow_bottom.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow_right.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow_right.png
new file mode 100644
index 0000000000..17b5250d1d
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow_right.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow_top.png b/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow_top.png
new file mode 100644
index 0000000000..2c2f749008
Binary files /dev/null and b/Externals/android-menudrawer/samples/res/drawable-xhdpi/menu_arrow_top.png differ
diff --git a/Externals/android-menudrawer/samples/res/drawable/md__list_selector_background_transition_holo_dark.xml b/Externals/android-menudrawer/samples/res/drawable/md__list_selector_background_transition_holo_dark.xml
new file mode 100644
index 0000000000..1d43396d8a
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/drawable/md__list_selector_background_transition_holo_dark.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/drawable/md__list_selector_holo_dark.xml b/Externals/android-menudrawer/samples/res/drawable/md__list_selector_holo_dark.xml
new file mode 100644
index 0000000000..bd71aa8b6e
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/drawable/md__list_selector_holo_dark.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/activity_bottommenu.xml b/Externals/android-menudrawer/samples/res/layout/activity_bottommenu.xml
new file mode 100644
index 0000000000..ee576195e2
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/activity_bottommenu.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/activity_contentsample.xml b/Externals/android-menudrawer/samples/res/layout/activity_contentsample.xml
new file mode 100644
index 0000000000..54140e71e7
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/activity_contentsample.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/activity_layoutsample.xml b/Externals/android-menudrawer/samples/res/layout/activity_layoutsample.xml
new file mode 100644
index 0000000000..83684116b4
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/activity_layoutsample.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/activity_rightmenu.xml b/Externals/android-menudrawer/samples/res/layout/activity_rightmenu.xml
new file mode 100644
index 0000000000..ad1a6b7601
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/activity_rightmenu.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/activity_staticsample.xml b/Externals/android-menudrawer/samples/res/layout/activity_staticsample.xml
new file mode 100644
index 0000000000..e6cb5622c7
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/activity_staticsample.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/activity_topmenu.xml b/Externals/android-menudrawer/samples/res/layout/activity_topmenu.xml
new file mode 100644
index 0000000000..d288cfa5aa
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/activity_topmenu.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Externals/android-menudrawer/samples/res/layout/activity_viewpagersample.xml b/Externals/android-menudrawer/samples/res/layout/activity_viewpagersample.xml
new file mode 100644
index 0000000000..6efa747ebe
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/activity_viewpagersample.xml
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/Externals/android-menudrawer/samples/res/layout/activity_windowsample.xml b/Externals/android-menudrawer/samples/res/layout/activity_windowsample.xml
new file mode 100644
index 0000000000..a23003f22b
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/activity_windowsample.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/list_row_sample.xml b/Externals/android-menudrawer/samples/res/layout/list_row_sample.xml
new file mode 100644
index 0000000000..edd6d1f67a
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/list_row_sample.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/main.xml b/Externals/android-menudrawer/samples/res/layout/main.xml
new file mode 100644
index 0000000000..6dd71bd26a
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/main.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/menu_bottom.xml b/Externals/android-menudrawer/samples/res/layout/menu_bottom.xml
new file mode 100644
index 0000000000..4ec6a6b993
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/menu_bottom.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Externals/android-menudrawer/samples/res/layout/menu_row_category.xml b/Externals/android-menudrawer/samples/res/layout/menu_row_category.xml
new file mode 100644
index 0000000000..36ffd58bac
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/menu_row_category.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/menu_row_item.xml b/Externals/android-menudrawer/samples/res/layout/menu_row_item.xml
new file mode 100644
index 0000000000..b13619d08c
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/menu_row_item.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/menu_scrollview.xml b/Externals/android-menudrawer/samples/res/layout/menu_scrollview.xml
new file mode 100644
index 0000000000..5cb1ad9350
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/menu_scrollview.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/layout/menu_top.xml b/Externals/android-menudrawer/samples/res/layout/menu_top.xml
new file mode 100644
index 0000000000..4ec6a6b993
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/layout/menu_top.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Externals/android-menudrawer/samples/res/values-v14/colors.xml b/Externals/android-menudrawer/samples/res/values-v14/colors.xml
new file mode 100644
index 0000000000..0c1ed99453
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/values-v14/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #FFE8E8E8
+
diff --git a/Externals/android-menudrawer/samples/res/values-v14/themes.xml b/Externals/android-menudrawer/samples/res/values-v14/themes.xml
new file mode 100644
index 0000000000..bc74b6d378
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/values-v14/themes.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/values/colors.xml b/Externals/android-menudrawer/samples/res/values/colors.xml
new file mode 100644
index 0000000000..b98e21355e
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #00000000
+
+ #FF555555
+
diff --git a/Externals/android-menudrawer/samples/res/values/strings.xml b/Externals/android-menudrawer/samples/res/values/strings.xml
new file mode 100644
index 0000000000..90f33a30a9
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/values/strings.xml
@@ -0,0 +1,34 @@
+
+
+
+ MenuDrawerSamples
+
+ Sample of dragging the content.\nThe menu consists of a ListView, for which the
+ active position is saved through configuration changes.\nAdditionally, if the menu is open, a back press will
+ close it.
+
+
+ Sample of dragging the entire window.\nThe menu is a simple ScrollView, with a click
+ listener set on each item.\nThe drawer will animate slightly open, to make it more discoverable.\nAdditionally,
+ if the menu is open, a back press will close it.
+
+
+ Sample of how to use the drawer with ListActivity.\nWhen running on ICS or
+ greater, the ActionBar up button will blink until clicked by the user. This is done to make the menu more
+ discoverable.\nAdditionally, if the menu is open, a back press will close it.
+
+
+ This sample shows how to position the menu to the right of the content.\nRun on
+ an API14+ device to see how it interacts with the overflow button.
+
+
+ This sample shows how to position the menu above the content.
+
+ This sample shows how to position the menu below the content.
+
+ This sample shows how to use the drawer in a layout file.
+ \nThe top drawer is used in this sample.
+
+
+ This sample shows how to attach a drawer that is always visible.
+
diff --git a/Externals/android-menudrawer/samples/res/values/styles.xml b/Externals/android-menudrawer/samples/res/values/styles.xml
new file mode 100644
index 0000000000..04b6f5f355
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/values/styles.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/res/values/themes.xml b/Externals/android-menudrawer/samples/res/values/themes.xml
new file mode 100644
index 0000000000..653c78f39b
--- /dev/null
+++ b/Externals/android-menudrawer/samples/res/values/themes.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ActionBarOverlaySample.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ActionBarOverlaySample.java
new file mode 100644
index 0000000000..e703a9506e
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ActionBarOverlaySample.java
@@ -0,0 +1,13 @@
+package net.simonvt.menudrawer.samples;
+
+import android.os.Bundle;
+import android.view.Window;
+
+public class ActionBarOverlaySample extends WindowSample {
+
+ @Override
+ public void onCreate(Bundle inState) {
+ requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
+ super.onCreate(inState);
+ }
+}
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/BottomMenuSample.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/BottomMenuSample.java
new file mode 100644
index 0000000000..66cd73d671
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/BottomMenuSample.java
@@ -0,0 +1,43 @@
+package net.simonvt.menudrawer.samples;
+
+import net.simonvt.menudrawer.MenuDrawer;
+import net.simonvt.menudrawer.Position;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.TextView;
+
+/**
+ * Sample class illustrating how to add a menu drawer above the content area.
+ */
+public class BottomMenuSample extends Activity implements OnClickListener {
+
+ private MenuDrawer mMenuDrawer;
+ private TextView mContentTextView;
+
+ @Override
+ protected void onCreate(Bundle inState) {
+ super.onCreate(inState);
+
+ mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_CONTENT, Position.BOTTOM);
+ mMenuDrawer.setTouchMode(MenuDrawer.TOUCH_MODE_FULLSCREEN);
+ mMenuDrawer.setContentView(R.layout.activity_bottommenu);
+ mMenuDrawer.setMenuView(R.layout.menu_bottom);
+
+ mContentTextView = (TextView) findViewById(R.id.contentText);
+ findViewById(R.id.item1).setOnClickListener(this);
+ findViewById(R.id.item2).setOnClickListener(this);
+ }
+
+ /**
+ * Click handler for bottom drawer items.
+ */
+ @Override
+ public void onClick(View v) {
+ String tag = (String) v.getTag();
+ mContentTextView.setText(String.format("%s clicked.", tag));
+ mMenuDrawer.setActiveView(v);
+ }
+}
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ContentSample.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ContentSample.java
new file mode 100644
index 0000000000..b07019ce67
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ContentSample.java
@@ -0,0 +1,218 @@
+package net.simonvt.menudrawer.samples;
+
+import net.simonvt.menudrawer.MenuDrawer;
+
+import android.app.Activity;
+import android.os.Build;
+import android.os.Bundle;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ContentSample extends Activity {
+
+ private static final String STATE_ACTIVE_POSITION = "net.simonvt.menudrawer.samples.ContentSample.activePosition";
+ private static final String STATE_CONTENT_TEXT = "net.simonvt.menudrawer.samples.ContentSample.contentText";
+
+ private MenuDrawer mMenuDrawer;
+
+ private MenuAdapter mAdapter;
+ private ListView mList;
+
+ private int mActivePosition = -1;
+ private String mContentText;
+ private TextView mContentTextView;
+
+ @Override
+ protected void onCreate(Bundle inState) {
+ super.onCreate(inState);
+
+ if (inState != null) {
+ mActivePosition = inState.getInt(STATE_ACTIVE_POSITION);
+ mContentText = inState.getString(STATE_CONTENT_TEXT);
+ }
+
+ mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_CONTENT);
+ mMenuDrawer.setContentView(R.layout.activity_contentsample);
+ mMenuDrawer.setTouchMode(MenuDrawer.TOUCH_MODE_FULLSCREEN);
+
+ List items = new ArrayList();
+ items.add(new Item("Item 1", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 2", R.drawable.ic_action_select_all_dark));
+ items.add(new Category("Cat 1"));
+ items.add(new Item("Item 3", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 4", R.drawable.ic_action_select_all_dark));
+ items.add(new Category("Cat 2"));
+ items.add(new Item("Item 5", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 6", R.drawable.ic_action_select_all_dark));
+ items.add(new Category("Cat 3"));
+ items.add(new Item("Item 7", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 8", R.drawable.ic_action_select_all_dark));
+ items.add(new Category("Cat 4"));
+ items.add(new Item("Item 9", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 10", R.drawable.ic_action_select_all_dark));
+
+ mList = new ListView(this);
+ mAdapter = new MenuAdapter(items);
+ mList.setAdapter(mAdapter);
+ mList.setOnItemClickListener(mItemClickListener);
+
+ mMenuDrawer.setMenuView(mList);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+
+ mContentTextView = (TextView) findViewById(R.id.contentText);
+ mContentTextView.setText(mContentText);
+
+ mMenuDrawer.setOnInterceptMoveEventListener(new MenuDrawer.OnInterceptMoveEventListener() {
+ @Override
+ public boolean isViewDraggable(View v, int dx, int x, int y) {
+ return v instanceof SeekBar;
+ }
+ });
+ }
+
+ private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ mActivePosition = position;
+ mMenuDrawer.setActiveView(view, position);
+ mContentTextView.setText(((TextView) view).getText());
+ mMenuDrawer.closeMenu();
+ }
+ };
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putInt(STATE_ACTIVE_POSITION, mActivePosition);
+ outState.putString(STATE_CONTENT_TEXT, mContentText);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ mMenuDrawer.toggleMenu();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onBackPressed() {
+ final int drawerState = mMenuDrawer.getDrawerState();
+ if (drawerState == MenuDrawer.STATE_OPEN || drawerState == MenuDrawer.STATE_OPENING) {
+ mMenuDrawer.closeMenu();
+ return;
+ }
+
+ super.onBackPressed();
+ }
+
+ private static class Item {
+
+ String mTitle;
+ int mIconRes;
+
+ Item(String title, int iconRes) {
+ mTitle = title;
+ mIconRes = iconRes;
+ }
+ }
+
+ private static class Category {
+
+ String mTitle;
+
+ Category(String title) {
+ mTitle = title;
+ }
+ }
+
+ private class MenuAdapter extends BaseAdapter {
+
+ private List mItems;
+
+ MenuAdapter(List items) {
+ mItems = items;
+ }
+
+ @Override
+ public int getCount() {
+ return mItems.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mItems.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return getItem(position) instanceof Item ? 0 : 1;
+ }
+
+ @Override
+ public int getViewTypeCount() {
+ return 2;
+ }
+
+ @Override
+ public boolean isEnabled(int position) {
+ return getItem(position) instanceof Item;
+ }
+
+ @Override
+ public boolean areAllItemsEnabled() {
+ return false;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View v = convertView;
+ Object item = getItem(position);
+
+ if (item instanceof Category) {
+ if (v == null) {
+ v = getLayoutInflater().inflate(R.layout.menu_row_category, parent, false);
+ }
+
+ ((TextView) v).setText(((Category) item).mTitle);
+
+ } else {
+ if (v == null) {
+ v = getLayoutInflater().inflate(R.layout.menu_row_item, parent, false);
+ }
+
+ TextView tv = (TextView) v;
+ tv.setText(((Item) item).mTitle);
+ tv.setCompoundDrawablesWithIntrinsicBounds(((Item) item).mIconRes, 0, 0, 0);
+ }
+
+ v.setTag(R.id.mdActiveViewPosition, position);
+
+ if (position == mActivePosition) {
+ mMenuDrawer.setActiveView(v, position);
+ }
+
+ return v;
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/LayoutSample.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/LayoutSample.java
new file mode 100644
index 0000000000..bb219960d1
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/LayoutSample.java
@@ -0,0 +1,36 @@
+package net.simonvt.menudrawer.samples;
+
+import net.simonvt.menudrawer.MenuDrawer;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
+
+public class LayoutSample extends Activity implements View.OnClickListener {
+
+ private MenuDrawer mDrawer;
+ private TextView mContentTextView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_layoutsample);
+ mDrawer = (MenuDrawer) findViewById(R.id.drawer);
+ mDrawer.setTouchMode(MenuDrawer.TOUCH_MODE_FULLSCREEN);
+
+ mContentTextView = (TextView) findViewById(R.id.contentText);
+ findViewById(R.id.item1).setOnClickListener(this);
+ findViewById(R.id.item2).setOnClickListener(this);
+ }
+
+ /**
+ * Click handler for top drawer items.
+ */
+ @Override
+ public void onClick(View v) {
+ String tag = (String) v.getTag();
+ mContentTextView.setText(String.format("%s clicked.", tag));
+ mDrawer.setActiveView(v);
+ }
+}
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ListActivitySample.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ListActivitySample.java
new file mode 100644
index 0000000000..fb7e74925a
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ListActivitySample.java
@@ -0,0 +1,91 @@
+package net.simonvt.menudrawer.samples;
+
+import net.simonvt.menudrawer.MenuDrawer;
+
+import android.app.ListActivity;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Gravity;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ListActivitySample extends ListActivity {
+
+ private static final String STATE_MENUDRAWER = "net.simonvt.menudrawer.samples.ListActivitySample.menuDrawer";
+
+ private MenuDrawer mMenuDrawer;
+
+ private Handler mHandler;
+ private Runnable mToggleUpRunnable;
+ private boolean mDisplayUp = true;
+
+ @Override
+ public void onCreate(Bundle inState) {
+ super.onCreate(inState);
+
+ mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_CONTENT);
+
+ TextView menuView = new TextView(this);
+ menuView.setGravity(Gravity.CENTER);
+ menuView.setTextColor(0xFFFFFFFF);
+ final int padding = dpToPx(16);
+ menuView.setPadding(padding, padding, padding, padding);
+ menuView.setText(R.string.sample_listactivity);
+ mMenuDrawer.setMenuView(menuView);
+ mMenuDrawer.setOffsetMenuEnabled(false);
+
+ List items = new ArrayList();
+ for (int i = 1; i <= 20; i++) {
+ items.add("Item " + i);
+ }
+
+ setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, items));
+ }
+
+ private int dpToPx(int dp) {
+ return (int) (getResources().getDisplayMetrics().density * dp + 0.5f);
+ }
+
+ @Override
+ public void setContentView(int layoutResID) {
+ // This override is only needed when using MENU_DRAG_CONTENT.
+ mMenuDrawer.setContentView(layoutResID);
+ onContentChanged();
+ }
+
+ @Override
+ protected void onListItemClick(ListView l, View v, int position, long id) {
+ String str = (String) getListAdapter().getItem(position);
+ Toast.makeText(this, "Clicked: " + str, Toast.LENGTH_SHORT).show();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ mMenuDrawer.toggleMenu();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onBackPressed() {
+ final int drawerState = mMenuDrawer.getDrawerState();
+ if (drawerState == MenuDrawer.STATE_OPEN || drawerState == MenuDrawer.STATE_OPENING) {
+ mMenuDrawer.closeMenu();
+ return;
+ }
+
+ super.onBackPressed();
+ }
+}
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/RightMenuSample.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/RightMenuSample.java
new file mode 100644
index 0000000000..fda93d973e
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/RightMenuSample.java
@@ -0,0 +1,215 @@
+package net.simonvt.menudrawer.samples;
+
+import net.simonvt.menudrawer.MenuDrawer;
+import net.simonvt.menudrawer.Position;
+
+import android.app.Activity;
+import android.os.Build;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class RightMenuSample extends Activity {
+
+ private static final String STATE_ACTIVE_POSITION = "net.simonvt.menudrawer.samples.RightMenuSample.activePosition";
+ private static final String STATE_CONTENT_TEXT = "net.simonvt.menudrawer.samples.RightMenuSample.contentText";
+
+ private static final int MENU_OVERFLOW = 1;
+
+ private MenuDrawer mMenuDrawer;
+
+ private MenuAdapter mAdapter;
+ private ListView mList;
+
+ private int mActivePosition = -1;
+ private String mContentText;
+ private TextView mContentTextView;
+
+ @Override
+ protected void onCreate(Bundle inState) {
+ super.onCreate(inState);
+
+ if (inState != null) {
+ mActivePosition = inState.getInt(STATE_ACTIVE_POSITION);
+ mContentText = inState.getString(STATE_CONTENT_TEXT);
+ }
+
+ mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_CONTENT, Position.RIGHT);
+ mMenuDrawer.setContentView(R.layout.activity_rightmenu);
+
+ List items = new ArrayList();
+ items.add(new Item("Item 1", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 2", R.drawable.ic_action_select_all_dark));
+ items.add(new Category("Cat 1"));
+ items.add(new Item("Item 3", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 4", R.drawable.ic_action_select_all_dark));
+ items.add(new Category("Cat 2"));
+ items.add(new Item("Item 5", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 6", R.drawable.ic_action_select_all_dark));
+
+ // A custom ListView is needed so the drawer can be notified when it's scrolled. This is to update the position
+ // of the arrow indicator.
+ mList = new ListView(this);
+ mAdapter = new MenuAdapter(items);
+ mList.setAdapter(mAdapter);
+ mList.setOnItemClickListener(mItemClickListener);
+
+ mMenuDrawer.setMenuView(mList);
+
+ mContentTextView = (TextView) findViewById(R.id.contentText);
+ mContentTextView.setText(mContentText);
+ }
+
+ private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ mActivePosition = position;
+ mMenuDrawer.setActiveView(view, position);
+ mContentTextView.setText(((TextView) view).getText());
+ mMenuDrawer.closeMenu();
+ }
+ };
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putInt(STATE_ACTIVE_POSITION, mActivePosition);
+ outState.putString(STATE_CONTENT_TEXT, mContentText);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuItem overflowItem = menu.add(0, MENU_OVERFLOW, 0, null);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+ overflowItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+ }
+ overflowItem.setIcon(R.drawable.ic_menu_moreoverflow_normal_holo_light);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case MENU_OVERFLOW:
+ mMenuDrawer.toggleMenu();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onBackPressed() {
+ final int drawerState = mMenuDrawer.getDrawerState();
+ if (drawerState == MenuDrawer.STATE_OPEN || drawerState == MenuDrawer.STATE_OPENING) {
+ mMenuDrawer.closeMenu();
+ return;
+ }
+
+ super.onBackPressed();
+ }
+
+ private static class Item {
+
+ String mTitle;
+ int mIconRes;
+
+ Item(String title, int iconRes) {
+ mTitle = title;
+ mIconRes = iconRes;
+ }
+ }
+
+ private static class Category {
+
+ String mTitle;
+
+ Category(String title) {
+ mTitle = title;
+ }
+ }
+
+ private class MenuAdapter extends BaseAdapter {
+
+ private List mItems;
+
+ MenuAdapter(List items) {
+ mItems = items;
+ }
+
+ @Override
+ public int getCount() {
+ return mItems.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mItems.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return getItem(position) instanceof Item ? 0 : 1;
+ }
+
+ @Override
+ public int getViewTypeCount() {
+ return 2;
+ }
+
+ @Override
+ public boolean isEnabled(int position) {
+ return getItem(position) instanceof Item;
+ }
+
+ @Override
+ public boolean areAllItemsEnabled() {
+ return false;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View v = convertView;
+ Object item = getItem(position);
+
+ if (item instanceof Category) {
+ if (v == null) {
+ v = getLayoutInflater().inflate(R.layout.menu_row_category, parent, false);
+ }
+
+ ((TextView) v).setText(((Category) item).mTitle);
+
+ } else {
+ if (v == null) {
+ v = getLayoutInflater().inflate(R.layout.menu_row_item, parent, false);
+ }
+
+ TextView tv = (TextView) v;
+ tv.setText(((Item) item).mTitle);
+ tv.setCompoundDrawablesWithIntrinsicBounds(((Item) item).mIconRes, 0, 0, 0);
+ }
+
+ v.setTag(R.id.mdActiveViewPosition, position);
+
+ if (position == mActivePosition) {
+ mMenuDrawer.setActiveView(v, position);
+ }
+
+ return v;
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/SamplesActivity.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/SamplesActivity.java
new file mode 100644
index 0000000000..32aa28fac1
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/SamplesActivity.java
@@ -0,0 +1,99 @@
+package net.simonvt.menudrawer.samples;
+
+import android.app.ListActivity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SamplesActivity extends ListActivity {
+
+ private SamplesAdapter mAdapter;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mAdapter = new SamplesAdapter();
+
+ mAdapter.addSample("Content sample", "Only the content area is dragged.", ContentSample.class);
+ mAdapter.addSample("ListActivity sample", "Shows how to use the drawer with a ListActivity.",
+ ListActivitySample.class);
+ mAdapter.addSample("Window sample", "The entire window is dragged.", WindowSample.class);
+ mAdapter.addSample("ActionBar overlay sample", "A window sample, where the ActionBar is an overlay",
+ ActionBarOverlaySample.class);
+ mAdapter.addSample("Right menu", "The menu is positioned to the right of the content", RightMenuSample.class);
+ mAdapter.addSample("Top menu", "The menu is positioned above the content", TopMenuSample.class);
+ mAdapter.addSample("Bottom menu", "The menu is positioned below the content", BottomMenuSample.class);
+ mAdapter.addSample("Touch Mode", "The menu touch behavior change according to different"
+ + " content view state (Ex: View Pager)", ViewPagerSample.class);
+ mAdapter.addSample("Layout xml", "The drawer and its menu and content is defined in XML", LayoutSample.class);
+ mAdapter.addSample("Static drawer", "The drawer is always visible", StaticDrawerSample.class);
+
+ setListAdapter(mAdapter);
+ }
+
+ @Override
+ protected void onListItemClick(ListView l, View v, int position, long id) {
+ SampleItem sample = (SampleItem) mAdapter.getItem(position);
+ Intent i = new Intent(this, sample.mClazz);
+ startActivity(i);
+ }
+
+ private static class SampleItem {
+
+ String mTitle;
+ String mSummary;
+ Class mClazz;
+
+ public SampleItem(String title, String summary, Class clazz) {
+ mTitle = title;
+ mSummary = summary;
+ mClazz = clazz;
+ }
+ }
+
+ public class SamplesAdapter extends BaseAdapter {
+
+ private List mSamples = new ArrayList();
+
+ public void addSample(String title, String summary, Class clazz) {
+ mSamples.add(new SampleItem(title, summary, clazz));
+ }
+
+ @Override
+ public int getCount() {
+ return mSamples.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mSamples.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ SampleItem sample = (SampleItem) getItem(position);
+
+ View v = convertView;
+ if (v == null) {
+ v = getLayoutInflater().inflate(R.layout.list_row_sample, parent, false);
+ }
+
+ ((TextView) v.findViewById(R.id.title)).setText(sample.mTitle);
+ ((TextView) v.findViewById(R.id.summary)).setText(sample.mSummary);
+
+ return v;
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/StaticDrawerSample.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/StaticDrawerSample.java
new file mode 100644
index 0000000000..5a4c52dc5f
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/StaticDrawerSample.java
@@ -0,0 +1,175 @@
+package net.simonvt.menudrawer.samples;
+
+import net.simonvt.menudrawer.MenuDrawer;
+import net.simonvt.menudrawer.Position;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StaticDrawerSample extends Activity {
+
+ private static final String STATE_ACTIVE_POSITION = "net.simonvt.menudrawer.samples.ContentSample.activePosition";
+ private static final String STATE_CONTENT_TEXT = "net.simonvt.menudrawer.samples.ContentSample.contentText";
+
+ private MenuDrawer mMenuDrawer;
+
+ private MenuAdapter mAdapter;
+ private ListView mList;
+
+ private int mActivePosition = -1;
+ private String mContentText;
+ private TextView mContentTextView;
+
+ @Override
+ protected void onCreate(Bundle inState) {
+ super.onCreate(inState);
+
+ if (inState != null) {
+ mActivePosition = inState.getInt(STATE_ACTIVE_POSITION);
+ mContentText = inState.getString(STATE_CONTENT_TEXT);
+ }
+
+ mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_CONTENT, Position.LEFT, true);
+ mMenuDrawer.setContentView(R.layout.activity_contentsample);
+
+ List items = new ArrayList();
+ items.add(new Item("Item 1", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 2", R.drawable.ic_action_select_all_dark));
+ items.add(new Category("Cat 1"));
+ items.add(new Item("Item 3", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 4", R.drawable.ic_action_select_all_dark));
+ items.add(new Category("Cat 2"));
+ items.add(new Item("Item 5", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 6", R.drawable.ic_action_select_all_dark));
+
+ mList = new ListView(this);
+ mAdapter = new MenuAdapter(items);
+ mList.setAdapter(mAdapter);
+ mList.setOnItemClickListener(mItemClickListener);
+
+ mMenuDrawer.setMenuView(mList);
+
+ mContentTextView = (TextView) findViewById(R.id.contentText);
+ mContentTextView.setText(mContentText);
+ }
+
+ private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ mActivePosition = position;
+ mMenuDrawer.setActiveView(view, position);
+ mContentTextView.setText(((TextView) view).getText());
+ }
+ };
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putInt(STATE_ACTIVE_POSITION, mActivePosition);
+ outState.putString(STATE_CONTENT_TEXT, mContentText);
+ }
+
+ private static class Item {
+
+ String mTitle;
+ int mIconRes;
+
+ Item(String title, int iconRes) {
+ mTitle = title;
+ mIconRes = iconRes;
+ }
+ }
+
+ private static class Category {
+
+ String mTitle;
+
+ Category(String title) {
+ mTitle = title;
+ }
+ }
+
+ private class MenuAdapter extends BaseAdapter {
+
+ private List mItems;
+
+ MenuAdapter(List items) {
+ mItems = items;
+ }
+
+ @Override
+ public int getCount() {
+ return mItems.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mItems.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return getItem(position) instanceof Item ? 0 : 1;
+ }
+
+ @Override
+ public int getViewTypeCount() {
+ return 2;
+ }
+
+ @Override
+ public boolean isEnabled(int position) {
+ return getItem(position) instanceof Item;
+ }
+
+ @Override
+ public boolean areAllItemsEnabled() {
+ return false;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View v = convertView;
+ Object item = getItem(position);
+
+ if (item instanceof Category) {
+ if (v == null) {
+ v = getLayoutInflater().inflate(R.layout.menu_row_category, parent, false);
+ }
+
+ ((TextView) v).setText(((Category) item).mTitle);
+
+ } else {
+ if (v == null) {
+ v = getLayoutInflater().inflate(R.layout.menu_row_item, parent, false);
+ }
+
+ TextView tv = (TextView) v;
+ tv.setText(((Item) item).mTitle);
+ tv.setCompoundDrawablesWithIntrinsicBounds(((Item) item).mIconRes, 0, 0, 0);
+ }
+
+ v.setTag(R.id.mdActiveViewPosition, position);
+
+ if (position == mActivePosition) {
+ mMenuDrawer.setActiveView(v, position);
+ }
+
+ return v;
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/TopMenuSample.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/TopMenuSample.java
new file mode 100644
index 0000000000..1c87f888c2
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/TopMenuSample.java
@@ -0,0 +1,75 @@
+package net.simonvt.menudrawer.samples;
+
+import net.simonvt.menudrawer.MenuDrawer;
+import net.simonvt.menudrawer.Position;
+
+import android.app.Activity;
+import android.os.Build;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.support.v4.view.MenuItemCompat;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.TextView;
+
+/**
+ * Sample class illustrating how to add a menu drawer above the content area.
+ */
+public class TopMenuSample extends Activity implements OnClickListener {
+
+ private static final int MENU_OVERFLOW = 1;
+
+ private MenuDrawer mMenuDrawer;
+ private TextView mContentTextView;
+
+ @Override
+ protected void onCreate(Bundle inState) {
+ super.onCreate(inState);
+
+ mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_CONTENT, Position.TOP);
+ mMenuDrawer.setTouchMode(MenuDrawer.TOUCH_MODE_FULLSCREEN);
+ mMenuDrawer.setContentView(R.layout.activity_topmenu);
+ mMenuDrawer.setMenuView(R.layout.menu_top);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+
+ mContentTextView = (TextView) findViewById(R.id.contentText);
+ findViewById(R.id.item1).setOnClickListener(this);
+ findViewById(R.id.item2).setOnClickListener(this);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuItem overflowItem = menu.add(0, MENU_OVERFLOW, 0, null);
+ MenuItemCompat.setShowAsAction(overflowItem, MenuItem.SHOW_AS_ACTION_ALWAYS);
+
+ overflowItem.setIcon(R.drawable.ic_menu_moreoverflow_normal_holo_light);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ NavUtils.navigateUpFromSameTask(this);
+ return true;
+ case MENU_OVERFLOW:
+ mMenuDrawer.toggleMenu();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ /**
+ * Click handler for top drawer items.
+ */
+ @Override
+ public void onClick(View v) {
+ String tag = (String) v.getTag();
+ mContentTextView.setText(String.format("%s clicked.", tag));
+ mMenuDrawer.setActiveView(v);
+ }
+}
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ViewPagerSample.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ViewPagerSample.java
new file mode 100644
index 0000000000..41f17c97d9
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/ViewPagerSample.java
@@ -0,0 +1,300 @@
+package net.simonvt.menudrawer.samples;
+
+import net.simonvt.menudrawer.MenuDrawer;
+
+import android.content.Context;
+import android.os.Build;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentActivity;
+import android.support.v4.app.FragmentPagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ViewPagerSample extends FragmentActivity {
+
+ private static final String STATE_ACTIVE_POSITION = "net.simonvt.menudrawer.samples.ContentSample.activePosition";
+
+ private MenuDrawer mMenuDrawer;
+
+ private MenuAdapter mAdapter;
+ private ListView mList;
+
+ private int mActivePosition = -1;
+ private PagerAdapter mPagerAdapter;
+ private ViewPager mViewPager;
+
+ @Override
+ protected void onCreate(Bundle inState) {
+ super.onCreate(inState);
+
+ if (inState != null) {
+ mActivePosition = inState.getInt(STATE_ACTIVE_POSITION);
+ }
+
+ mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_CONTENT);
+ mMenuDrawer.setContentView(R.layout.activity_viewpagersample);
+
+ List items = new ArrayList();
+ items.add(new Item("Item 1", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 2", R.drawable.ic_action_select_all_dark));
+ items.add(new Category("Cat 1"));
+ items.add(new Item("Item 3", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 4", R.drawable.ic_action_select_all_dark));
+ items.add(new Category("Cat 2"));
+ items.add(new Item("Item 5", R.drawable.ic_action_refresh_dark));
+ items.add(new Item("Item 6", R.drawable.ic_action_select_all_dark));
+
+ // A custom ListView is needed so the drawer can be notified when it's
+ // scrolled. This is to update the position
+ // of the arrow indicator.
+ mList = new ListView(this);
+ mAdapter = new MenuAdapter(items);
+ mList.setAdapter(mAdapter);
+ mList.setOnItemClickListener(mItemClickListener);
+
+ mMenuDrawer.setMenuView(mList);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+
+ mMenuDrawer.setTouchMode(MenuDrawer.TOUCH_MODE_FULLSCREEN);
+
+ mViewPager = (ViewPager) findViewById(R.id.view_pager);
+ mViewPager
+ .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
+ @Override
+ public void onPageSelected(final int position) {
+ mMenuDrawer.setTouchMode(position == 0
+ ? MenuDrawer.TOUCH_MODE_FULLSCREEN
+ : MenuDrawer.TOUCH_MODE_NONE);
+ }
+ });
+
+ mPagerAdapter = new PagerAdapter(this);
+ mPagerAdapter.addTab(TextViewFragment.class, null);
+ mPagerAdapter.addTab(TextViewFragment.class, null);
+ mPagerAdapter.addTab(TextViewFragment.class, null);
+
+ mViewPager.setAdapter(mPagerAdapter);
+ }
+
+ private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position,
+ long id) {
+ mActivePosition = position;
+ mMenuDrawer.setActiveView(view, position);
+ mMenuDrawer.closeMenu();
+ }
+ };
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putInt(STATE_ACTIVE_POSITION, mActivePosition);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ mMenuDrawer.toggleMenu();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onBackPressed() {
+ final int drawerState = mMenuDrawer.getDrawerState();
+ if (drawerState == MenuDrawer.STATE_OPEN
+ || drawerState == MenuDrawer.STATE_OPENING) {
+ mMenuDrawer.closeMenu();
+ return;
+ }
+
+ super.onBackPressed();
+ }
+
+ private static final class Item {
+
+ String mTitle;
+ int mIconRes;
+
+ Item(String title, int iconRes) {
+ mTitle = title;
+ mIconRes = iconRes;
+ }
+ }
+
+ private static final class Category {
+
+ String mTitle;
+
+ Category(String title) {
+ mTitle = title;
+ }
+ }
+
+ private class MenuAdapter extends BaseAdapter {
+
+ private List mItems;
+
+ MenuAdapter(List items) {
+ mItems = items;
+ }
+
+ @Override
+ public int getCount() {
+ return mItems.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mItems.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return getItem(position) instanceof Item ? 0 : 1;
+ }
+
+ @Override
+ public int getViewTypeCount() {
+ return 2;
+ }
+
+ @Override
+ public boolean isEnabled(int position) {
+ return getItem(position) instanceof Item;
+ }
+
+ @Override
+ public boolean areAllItemsEnabled() {
+ return false;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View v = convertView;
+ Object item = getItem(position);
+
+ if (item instanceof Category) {
+ if (v == null) {
+ v = getLayoutInflater().inflate(R.layout.menu_row_category,
+ parent, false);
+ }
+
+ ((TextView) v).setText(((Category) item).mTitle);
+
+ } else {
+ if (v == null) {
+ v = getLayoutInflater().inflate(R.layout.menu_row_item,
+ parent, false);
+ }
+
+ TextView tv = (TextView) v;
+ tv.setText(((Item) item).mTitle);
+ tv.setCompoundDrawablesWithIntrinsicBounds(
+ ((Item) item).mIconRes, 0, 0, 0);
+ }
+
+ v.setTag(R.id.mdActiveViewPosition, position);
+
+ if (position == mActivePosition) {
+ mMenuDrawer.setActiveView(v, position);
+ }
+
+ return v;
+ }
+ }
+
+ /**
+ * This is a helper class that implements the management of tabs and all
+ * details of connecting a ViewPager with associated TabHost. It relies on a
+ * trick. Normally a tab host has a simple API for supplying a View or
+ * Intent that each tab will show. This is not sufficient for switching
+ * between pages. So instead we make the content part of the tab host 0dp
+ * high (it is not shown) and the TabsAdapter supplies its own dummy view to
+ * show as the tab content. It listens to changes in tabs, and takes care of
+ * switch to the correct paged in the ViewPager whenever the selected tab
+ * changes.
+ */
+ public static class PagerAdapter extends FragmentPagerAdapter {
+
+ private final Context mContext;
+ private final ArrayList mTabs = new ArrayList();
+
+ static final class TabInfo {
+
+ private final Class> mClss;
+ private final Bundle mArgs;
+
+ TabInfo(Class> aClass, Bundle args) {
+ mClss = aClass;
+ mArgs = args;
+ }
+ }
+
+ public PagerAdapter(FragmentActivity activity) {
+ super(activity.getSupportFragmentManager());
+ mContext = activity;
+ }
+
+ @Override
+ public int getCount() {
+ return mTabs.size();
+ }
+
+ @Override
+ public Fragment getItem(int position) {
+ TabInfo info = mTabs.get(position);
+ return Fragment.instantiate(mContext, info.mClss.getName(),
+ info.mArgs);
+ }
+
+ public void addTab(Class> clss, Bundle args) {
+ TabInfo info = new TabInfo(clss, args);
+ mTabs.add(info);
+ notifyDataSetChanged();
+ }
+
+ }
+
+ public static class TextViewFragment extends Fragment {
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ FrameLayout frameLayout = new FrameLayout(getActivity());
+ frameLayout.setLayoutParams(new FrameLayout.LayoutParams(
+ FrameLayout.LayoutParams.MATCH_PARENT,
+ FrameLayout.LayoutParams.MATCH_PARENT, Gravity.CENTER));
+
+ TextView tv = new TextView(getActivity());
+ tv.setText("This is an example of a Fragment in a View Pager");
+ frameLayout.addView(tv);
+ return frameLayout;
+ }
+ }
+}
diff --git a/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/WindowSample.java b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/WindowSample.java
new file mode 100644
index 0000000000..cc433b77d5
--- /dev/null
+++ b/Externals/android-menudrawer/samples/src/net/simonvt/menudrawer/samples/WindowSample.java
@@ -0,0 +1,99 @@
+package net.simonvt.menudrawer.samples;
+
+import net.simonvt.menudrawer.MenuDrawer;
+
+import android.app.Activity;
+import android.os.Build;
+import android.os.Bundle;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.TextView;
+
+public class WindowSample extends Activity implements View.OnClickListener {
+
+ private static final String STATE_MENUDRAWER = "net.simonvt.menudrawer.samples.WindowSample.menuDrawer";
+ private static final String STATE_ACTIVE_VIEW_ID = "net.simonvt.menudrawer.samples.WindowSample.activeViewId";
+
+ private MenuDrawer mMenuDrawer;
+ private TextView mContentTextView;
+
+ private int mActiveViewId;
+
+ @Override
+ public void onCreate(Bundle inState) {
+ super.onCreate(inState);
+ if (inState != null) {
+ mActiveViewId = inState.getInt(STATE_ACTIVE_VIEW_ID);
+ }
+
+ mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_WINDOW);
+ mMenuDrawer.setContentView(R.layout.activity_windowsample);
+ mMenuDrawer.setMenuView(R.layout.menu_scrollview);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+
+ mContentTextView = (TextView) findViewById(R.id.contentText);
+
+ findViewById(R.id.item1).setOnClickListener(this);
+ findViewById(R.id.item2).setOnClickListener(this);
+ findViewById(R.id.item3).setOnClickListener(this);
+ findViewById(R.id.item4).setOnClickListener(this);
+ findViewById(R.id.item5).setOnClickListener(this);
+ findViewById(R.id.item6).setOnClickListener(this);
+
+ TextView activeView = (TextView) findViewById(mActiveViewId);
+ if (activeView != null) {
+ mMenuDrawer.setActiveView(activeView);
+ mContentTextView.setText("Active item: " + activeView.getText());
+ }
+
+ // This will animate the drawer open and closed until the user manually drags it. Usually this would only be
+ // called on first launch.
+ mMenuDrawer.peekDrawer();
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Bundle inState) {
+ super.onRestoreInstanceState(inState);
+ mMenuDrawer.restoreState(inState.getParcelable(STATE_MENUDRAWER));
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putParcelable(STATE_MENUDRAWER, mMenuDrawer.saveState());
+ outState.putInt(STATE_ACTIVE_VIEW_ID, mActiveViewId);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ mMenuDrawer.toggleMenu();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onBackPressed() {
+ final int drawerState = mMenuDrawer.getDrawerState();
+ if (drawerState == MenuDrawer.STATE_OPEN || drawerState == MenuDrawer.STATE_OPENING) {
+ mMenuDrawer.closeMenu();
+ return;
+ }
+
+ super.onBackPressed();
+ }
+
+ @Override
+ public void onClick(View v) {
+ mMenuDrawer.setActiveView(v);
+ mContentTextView.setText("Active item: " + ((TextView) v).getText());
+ mMenuDrawer.closeMenu();
+ mActiveViewId = v.getId();
+ }
+}
diff --git a/Externals/libpng/CMakeLists.txt b/Externals/libpng/CMakeLists.txt
index 52d34af6a7..b30749ee86 100644
--- a/Externals/libpng/CMakeLists.txt
+++ b/Externals/libpng/CMakeLists.txt
@@ -1,19 +1,21 @@
-set(SRCS
- "png.c"
- "pngerror.c"
- "pngget.c"
- "pngmem.c"
- "pngpread.c"
- "pngread.c"
- "pngrio.c"
- "pngrtran.c"
- "pngrutil.c"
- "pngset.c"
- "pngtrans.c"
- "pngwio.c"
- "pngwrite.c"
- "pngwtran.c"
- "pngwutil.c"
- )
-
-add_library(png STATIC ${SRCS})
+# OUR SOURCES
+set(SRCS
+ png.h
+ pngconf.h
+ png.c
+ pngerror.c
+ pngget.c
+ pngmem.c
+ pngpread.c
+ pngread.c
+ pngrio.c
+ pngrtran.c
+ pngrutil.c
+ pngset.c
+ pngtrans.c
+ pngwio.c
+ pngwrite.c
+ pngwtran.c
+ pngwutil.c
+)
+add_library(png STATIC ${SRCS})
diff --git a/Externals/libpng/png.c b/Externals/libpng/png.c
index 764f47c20c..2672820474 100644
--- a/Externals/libpng/png.c
+++ b/Externals/libpng/png.c
@@ -1,2362 +1,1100 @@
-
-/* png.c - location for general purpose libpng functions
- *
- * Last changed in libpng 1.5.1 [February 3, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- */
-
-#include "pngpriv.h"
-
-/* Generate a compiler error if there is an old png.h in the search path. */
-typedef png_libpng_version_1_5_1 Your_png_h_is_not_version_1_5_1;
-
-/* Tells libpng that we have already handled the first "num_bytes" bytes
- * of the PNG file signature. If the PNG data is embedded into another
- * stream we can set num_bytes = 8 so that libpng will not attempt to read
- * or write any of the magic bytes before it starts on the IHDR.
- */
-
-#ifdef PNG_READ_SUPPORTED
-void PNGAPI
-png_set_sig_bytes(png_structp png_ptr, int num_bytes)
-{
- png_debug(1, "in png_set_sig_bytes");
-
- if (png_ptr == NULL)
- return;
-
- if (num_bytes > 8)
- png_error(png_ptr, "Too many bytes for PNG signature");
-
- png_ptr->sig_bytes = (png_byte)(num_bytes < 0 ? 0 : num_bytes);
-}
-
-/* Checks whether the supplied bytes match the PNG signature. We allow
- * checking less than the full 8-byte signature so that those apps that
- * already read the first few bytes of a file to determine the file type
- * can simply check the remaining bytes for extra assurance. Returns
- * an integer less than, equal to, or greater than zero if sig is found,
- * respectively, to be less than, to match, or be greater than the correct
- * PNG signature (this is the same behaviour as strcmp, memcmp, etc).
- */
-int PNGAPI
-png_sig_cmp(png_const_bytep sig, png_size_t start, png_size_t num_to_check)
-{
- png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
-
- if (num_to_check > 8)
- num_to_check = 8;
-
- else if (num_to_check < 1)
- return (-1);
-
- if (start > 7)
- return (-1);
-
- if (start + num_to_check > 8)
- num_to_check = 8 - start;
-
- return ((int)(png_memcmp(&sig[start], &png_signature[start], num_to_check)));
-}
-
-#endif /* PNG_READ_SUPPORTED */
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-/* Function to allocate memory for zlib */
-PNG_FUNCTION(voidpf /* PRIVATE */,
-png_zalloc,(voidpf png_ptr, uInt items, uInt size),PNG_ALLOCATED)
-{
- png_voidp ptr;
- png_structp p=(png_structp)png_ptr;
- png_uint_32 save_flags=p->flags;
- png_alloc_size_t num_bytes;
-
- if (png_ptr == NULL)
- return (NULL);
-
- if (items > PNG_UINT_32_MAX/size)
- {
- png_warning (p, "Potential overflow in png_zalloc()");
- return (NULL);
- }
- num_bytes = (png_alloc_size_t)items * size;
-
- p->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
- ptr = (png_voidp)png_malloc((png_structp)png_ptr, num_bytes);
- p->flags=save_flags;
-
- return ((voidpf)ptr);
-}
-
-/* Function to free memory for zlib */
-void /* PRIVATE */
-png_zfree(voidpf png_ptr, voidpf ptr)
-{
- png_free((png_structp)png_ptr, (png_voidp)ptr);
-}
-
-/* Reset the CRC variable to 32 bits of 1's. Care must be taken
- * in case CRC is > 32 bits to leave the top bits 0.
- */
-void /* PRIVATE */
-png_reset_crc(png_structp png_ptr)
-{
- png_ptr->crc = crc32(0, Z_NULL, 0);
-}
-
-/* Calculate the CRC over a section of data. We can only pass as
- * much data to this routine as the largest single buffer size. We
- * also check that this data will actually be used before going to the
- * trouble of calculating it.
- */
-void /* PRIVATE */
-png_calculate_crc(png_structp png_ptr, png_const_bytep ptr, png_size_t length)
-{
- int need_crc = 1;
-
- if (png_ptr->chunk_name[0] & 0x20) /* ancillary */
- {
- if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) ==
- (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN))
- need_crc = 0;
- }
-
- else /* critical */
- {
- if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE)
- need_crc = 0;
- }
-
- if (need_crc)
- png_ptr->crc = crc32(png_ptr->crc, ptr, (uInt)length);
-}
-
-/* Allocate the memory for an info_struct for the application. We don't
- * really need the png_ptr, but it could potentially be useful in the
- * future. This should be used in favour of malloc(png_sizeof(png_info))
- * and png_info_init() so that applications that want to use a shared
- * libpng don't have to be recompiled if png_info changes size.
- */
-PNG_FUNCTION(png_infop,PNGAPI
-png_create_info_struct,(png_structp png_ptr),PNG_ALLOCATED)
-{
- png_infop info_ptr;
-
- png_debug(1, "in png_create_info_struct");
-
- if (png_ptr == NULL)
- return (NULL);
-
-#ifdef PNG_USER_MEM_SUPPORTED
- info_ptr = (png_infop)png_create_struct_2(PNG_STRUCT_INFO,
- png_ptr->malloc_fn, png_ptr->mem_ptr);
-#else
- info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
-#endif
- if (info_ptr != NULL)
- png_info_init_3(&info_ptr, png_sizeof(png_info));
-
- return (info_ptr);
-}
-
-/* This function frees the memory associated with a single info struct.
- * Normally, one would use either png_destroy_read_struct() or
- * png_destroy_write_struct() to free an info struct, but this may be
- * useful for some applications.
- */
-void PNGAPI
-png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr)
-{
- png_infop info_ptr = NULL;
-
- png_debug(1, "in png_destroy_info_struct");
-
- if (png_ptr == NULL)
- return;
-
- if (info_ptr_ptr != NULL)
- info_ptr = *info_ptr_ptr;
-
- if (info_ptr != NULL)
- {
- png_info_destroy(png_ptr, info_ptr);
-
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)info_ptr, png_ptr->free_fn,
- png_ptr->mem_ptr);
-#else
- png_destroy_struct((png_voidp)info_ptr);
-#endif
- *info_ptr_ptr = NULL;
- }
-}
-
-/* Initialize the info structure. This is now an internal function (0.89)
- * and applications using it are urged to use png_create_info_struct()
- * instead.
- */
-
-void PNGAPI
-png_info_init_3(png_infopp ptr_ptr, png_size_t png_info_struct_size)
-{
- png_infop info_ptr = *ptr_ptr;
-
- png_debug(1, "in png_info_init_3");
-
- if (info_ptr == NULL)
- return;
-
- if (png_sizeof(png_info) > png_info_struct_size)
- {
- png_destroy_struct(info_ptr);
- info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
- *ptr_ptr = info_ptr;
- }
-
- /* Set everything to 0 */
- png_memset(info_ptr, 0, png_sizeof(png_info));
-}
-
-void PNGAPI
-png_data_freer(png_structp png_ptr, png_infop info_ptr,
- int freer, png_uint_32 mask)
-{
- png_debug(1, "in png_data_freer");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- if (freer == PNG_DESTROY_WILL_FREE_DATA)
- info_ptr->free_me |= mask;
-
- else if (freer == PNG_USER_WILL_FREE_DATA)
- info_ptr->free_me &= ~mask;
-
- else
- png_warning(png_ptr,
- "Unknown freer parameter in png_data_freer");
-}
-
-void PNGAPI
-png_free_data(png_structp png_ptr, png_infop info_ptr, png_uint_32 mask,
- int num)
-{
- png_debug(1, "in png_free_data");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
-#ifdef PNG_TEXT_SUPPORTED
- /* Free text item num or (if num == -1) all text items */
- if ((mask & PNG_FREE_TEXT) & info_ptr->free_me)
- {
- if (num != -1)
- {
- if (info_ptr->text && info_ptr->text[num].key)
- {
- png_free(png_ptr, info_ptr->text[num].key);
- info_ptr->text[num].key = NULL;
- }
- }
-
- else
- {
- int i;
- for (i = 0; i < info_ptr->num_text; i++)
- png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, i);
- png_free(png_ptr, info_ptr->text);
- info_ptr->text = NULL;
- info_ptr->num_text=0;
- }
- }
-#endif
-
-#ifdef PNG_tRNS_SUPPORTED
- /* Free any tRNS entry */
- if ((mask & PNG_FREE_TRNS) & info_ptr->free_me)
- {
- png_free(png_ptr, info_ptr->trans_alpha);
- info_ptr->trans_alpha = NULL;
- info_ptr->valid &= ~PNG_INFO_tRNS;
- }
-#endif
-
-#ifdef PNG_sCAL_SUPPORTED
- /* Free any sCAL entry */
- if ((mask & PNG_FREE_SCAL) & info_ptr->free_me)
- {
-#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
- png_free(png_ptr, info_ptr->scal_s_width);
- png_free(png_ptr, info_ptr->scal_s_height);
- info_ptr->scal_s_width = NULL;
- info_ptr->scal_s_height = NULL;
-#endif
- info_ptr->valid &= ~PNG_INFO_sCAL;
- }
-#endif
-
-#ifdef PNG_pCAL_SUPPORTED
- /* Free any pCAL entry */
- if ((mask & PNG_FREE_PCAL) & info_ptr->free_me)
- {
- png_free(png_ptr, info_ptr->pcal_purpose);
- png_free(png_ptr, info_ptr->pcal_units);
- info_ptr->pcal_purpose = NULL;
- info_ptr->pcal_units = NULL;
- if (info_ptr->pcal_params != NULL)
- {
- int i;
- for (i = 0; i < (int)info_ptr->pcal_nparams; i++)
- {
- png_free(png_ptr, info_ptr->pcal_params[i]);
- info_ptr->pcal_params[i] = NULL;
- }
- png_free(png_ptr, info_ptr->pcal_params);
- info_ptr->pcal_params = NULL;
- }
- info_ptr->valid &= ~PNG_INFO_pCAL;
- }
-#endif
-
-#ifdef PNG_iCCP_SUPPORTED
- /* Free any iCCP entry */
- if ((mask & PNG_FREE_ICCP) & info_ptr->free_me)
- {
- png_free(png_ptr, info_ptr->iccp_name);
- png_free(png_ptr, info_ptr->iccp_profile);
- info_ptr->iccp_name = NULL;
- info_ptr->iccp_profile = NULL;
- info_ptr->valid &= ~PNG_INFO_iCCP;
- }
-#endif
-
-#ifdef PNG_sPLT_SUPPORTED
- /* Free a given sPLT entry, or (if num == -1) all sPLT entries */
- if ((mask & PNG_FREE_SPLT) & info_ptr->free_me)
- {
- if (num != -1)
- {
- if (info_ptr->splt_palettes)
- {
- png_free(png_ptr, info_ptr->splt_palettes[num].name);
- png_free(png_ptr, info_ptr->splt_palettes[num].entries);
- info_ptr->splt_palettes[num].name = NULL;
- info_ptr->splt_palettes[num].entries = NULL;
- }
- }
-
- else
- {
- if (info_ptr->splt_palettes_num)
- {
- int i;
- for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
- png_free_data(png_ptr, info_ptr, PNG_FREE_SPLT, i);
-
- png_free(png_ptr, info_ptr->splt_palettes);
- info_ptr->splt_palettes = NULL;
- info_ptr->splt_palettes_num = 0;
- }
- info_ptr->valid &= ~PNG_INFO_sPLT;
- }
- }
-#endif
-
-#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
- if (png_ptr->unknown_chunk.data)
- {
- png_free(png_ptr, png_ptr->unknown_chunk.data);
- png_ptr->unknown_chunk.data = NULL;
- }
-
- if ((mask & PNG_FREE_UNKN) & info_ptr->free_me)
- {
- if (num != -1)
- {
- if (info_ptr->unknown_chunks)
- {
- png_free(png_ptr, info_ptr->unknown_chunks[num].data);
- info_ptr->unknown_chunks[num].data = NULL;
- }
- }
-
- else
- {
- int i;
-
- if (info_ptr->unknown_chunks_num)
- {
- for (i = 0; i < info_ptr->unknown_chunks_num; i++)
- png_free_data(png_ptr, info_ptr, PNG_FREE_UNKN, i);
-
- png_free(png_ptr, info_ptr->unknown_chunks);
- info_ptr->unknown_chunks = NULL;
- info_ptr->unknown_chunks_num = 0;
- }
- }
- }
-#endif
-
-#ifdef PNG_hIST_SUPPORTED
- /* Free any hIST entry */
- if ((mask & PNG_FREE_HIST) & info_ptr->free_me)
- {
- png_free(png_ptr, info_ptr->hist);
- info_ptr->hist = NULL;
- info_ptr->valid &= ~PNG_INFO_hIST;
- }
-#endif
-
- /* Free any PLTE entry that was internally allocated */
- if ((mask & PNG_FREE_PLTE) & info_ptr->free_me)
- {
- png_zfree(png_ptr, info_ptr->palette);
- info_ptr->palette = NULL;
- info_ptr->valid &= ~PNG_INFO_PLTE;
- info_ptr->num_palette = 0;
- }
-
-#ifdef PNG_INFO_IMAGE_SUPPORTED
- /* Free any image bits attached to the info structure */
- if ((mask & PNG_FREE_ROWS) & info_ptr->free_me)
- {
- if (info_ptr->row_pointers)
- {
- int row;
- for (row = 0; row < (int)info_ptr->height; row++)
- {
- png_free(png_ptr, info_ptr->row_pointers[row]);
- info_ptr->row_pointers[row] = NULL;
- }
- png_free(png_ptr, info_ptr->row_pointers);
- info_ptr->row_pointers = NULL;
- }
- info_ptr->valid &= ~PNG_INFO_IDAT;
- }
-#endif
-
- if (num != -1)
- mask &= ~PNG_FREE_MUL;
-
- info_ptr->free_me &= ~mask;
-}
-
-/* This is an internal routine to free any memory that the info struct is
- * pointing to before re-using it or freeing the struct itself. Recall
- * that png_free() checks for NULL pointers for us.
- */
-void /* PRIVATE */
-png_info_destroy(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_info_destroy");
-
- png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1);
-
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
- if (png_ptr->num_chunk_list)
- {
- png_free(png_ptr, png_ptr->chunk_list);
- png_ptr->chunk_list = NULL;
- png_ptr->num_chunk_list = 0;
- }
-#endif
-
- png_info_init_3(&info_ptr, png_sizeof(png_info));
-}
-#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
-
-/* This function returns a pointer to the io_ptr associated with the user
- * functions. The application should free any memory associated with this
- * pointer before png_write_destroy() or png_read_destroy() are called.
- */
-png_voidp PNGAPI
-png_get_io_ptr(png_structp png_ptr)
-{
- if (png_ptr == NULL)
- return (NULL);
-
- return (png_ptr->io_ptr);
-}
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-# ifdef PNG_STDIO_SUPPORTED
-/* Initialize the default input/output functions for the PNG file. If you
- * use your own read or write routines, you can call either png_set_read_fn()
- * or png_set_write_fn() instead of png_init_io(). If you have defined
- * PNG_NO_STDIO, you must use a function of your own because "FILE *" isn't
- * necessarily available.
- */
-void PNGAPI
-png_init_io(png_structp png_ptr, png_FILE_p fp)
-{
- png_debug(1, "in png_init_io");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->io_ptr = (png_voidp)fp;
-}
-# endif
-
-# ifdef PNG_TIME_RFC1123_SUPPORTED
-/* Convert the supplied time into an RFC 1123 string suitable for use in
- * a "Creation Time" or other text-based time string.
- */
-png_const_charp PNGAPI
-png_convert_to_rfc1123(png_structp png_ptr, png_const_timep ptime)
-{
- static PNG_CONST char short_months[12][4] =
- {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
-
- if (png_ptr == NULL)
- return (NULL);
-
- if (png_ptr->time_buffer == NULL)
- {
- png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29*
- png_sizeof(char)));
- }
-
-# ifdef USE_FAR_KEYWORD
- {
- char near_time_buf[29];
- png_snprintf6(near_time_buf, 29, "%d %s %d %02d:%02d:%02d +0000",
- ptime->day % 32, short_months[(ptime->month - 1) % 12],
- ptime->year, ptime->hour % 24, ptime->minute % 60,
- ptime->second % 61);
- png_memcpy(png_ptr->time_buffer, near_time_buf,
- 29*png_sizeof(char));
- }
-# else
- png_snprintf6(png_ptr->time_buffer, 29, "%d %s %d %02d:%02d:%02d +0000",
- ptime->day % 32, short_months[(ptime->month - 1) % 12],
- ptime->year, ptime->hour % 24, ptime->minute % 60,
- ptime->second % 61);
-# endif
- return png_ptr->time_buffer;
-}
-# endif /* PNG_TIME_RFC1123_SUPPORTED */
-
-#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
-
-png_const_charp PNGAPI
-png_get_copyright(png_const_structp png_ptr)
-{
- PNG_UNUSED(png_ptr) /* Silence compiler warning about unused png_ptr */
-#ifdef PNG_STRING_COPYRIGHT
- return PNG_STRING_COPYRIGHT
-#else
-# ifdef __STDC__
- return PNG_STRING_NEWLINE \
- "libpng version 1.5.1 - February 3, 2011" PNG_STRING_NEWLINE \
- "Copyright (c) 1998-2011 Glenn Randers-Pehrson" PNG_STRING_NEWLINE \
- "Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
- "Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
- PNG_STRING_NEWLINE;
-# else
- return "libpng version 1.5.1 - February 3, 2011\
- Copyright (c) 1998-2011 Glenn Randers-Pehrson\
- Copyright (c) 1996-1997 Andreas Dilger\
- Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.";
-# endif
-#endif
-}
-
-/* The following return the library version as a short string in the
- * format 1.0.0 through 99.99.99zz. To get the version of *.h files
- * used with your application, print out PNG_LIBPNG_VER_STRING, which
- * is defined in png.h.
- * Note: now there is no difference between png_get_libpng_ver() and
- * png_get_header_ver(). Due to the version_nn_nn_nn typedef guard,
- * it is guaranteed that png.c uses the correct version of png.h.
- */
-png_const_charp PNGAPI
-png_get_libpng_ver(png_const_structp png_ptr)
-{
- /* Version of *.c files used when building libpng */
- return png_get_header_ver(png_ptr);
-}
-
-png_const_charp PNGAPI
-png_get_header_ver(png_const_structp png_ptr)
-{
- /* Version of *.h files used when building libpng */
- PNG_UNUSED(png_ptr) /* Silence compiler warning about unused png_ptr */
- return PNG_LIBPNG_VER_STRING;
-}
-
-png_const_charp PNGAPI
-png_get_header_version(png_const_structp png_ptr)
-{
- /* Returns longer string containing both version and date */
- PNG_UNUSED(png_ptr) /* Silence compiler warning about unused png_ptr */
-#ifdef __STDC__
- return PNG_HEADER_VERSION_STRING
-# ifndef PNG_READ_SUPPORTED
- " (NO READ SUPPORT)"
-# endif
- PNG_STRING_NEWLINE;
-#else
- return PNG_HEADER_VERSION_STRING;
-#endif
-}
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-# ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-int PNGAPI
-png_handle_as_unknown(png_structp png_ptr, png_const_bytep chunk_name)
-{
- /* Check chunk_name and return "keep" value if it's on the list, else 0 */
- int i;
- png_bytep p;
- if (png_ptr == NULL || chunk_name == NULL || png_ptr->num_chunk_list<=0)
- return 0;
-
- p = png_ptr->chunk_list + png_ptr->num_chunk_list*5 - 5;
- for (i = png_ptr->num_chunk_list; i; i--, p -= 5)
- if (!png_memcmp(chunk_name, p, 4))
- return ((int)*(p + 4));
- return 0;
-}
-# endif
-#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
-
-#ifdef PNG_READ_SUPPORTED
-/* This function, added to libpng-1.0.6g, is untested. */
-int PNGAPI
-png_reset_zstream(png_structp png_ptr)
-{
- if (png_ptr == NULL)
- return Z_STREAM_ERROR;
-
- return (inflateReset(&png_ptr->zstream));
-}
-#endif /* PNG_READ_SUPPORTED */
-
-/* This function was added to libpng-1.0.7 */
-png_uint_32 PNGAPI
-png_access_version_number(void)
-{
- /* Version of *.c files used when building libpng */
- return((png_uint_32)PNG_LIBPNG_VER);
-}
-
-
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-# ifdef PNG_SIZE_T
-/* Added at libpng version 1.2.6 */
- PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size));
-png_size_t PNGAPI
-png_convert_size(size_t size)
-{
- if (size > (png_size_t)-1)
- PNG_ABORT(); /* We haven't got access to png_ptr, so no png_error() */
-
- return ((png_size_t)size);
-}
-# endif /* PNG_SIZE_T */
-
-/* Added at libpng version 1.2.34 and 1.4.0 (moved from pngset.c) */
-# ifdef PNG_CHECK_cHRM_SUPPORTED
-
-int /* PRIVATE */
-png_check_cHRM_fixed(png_structp png_ptr,
- png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x,
- png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y,
- png_fixed_point blue_x, png_fixed_point blue_y)
-{
- int ret = 1;
- unsigned long xy_hi,xy_lo,yx_hi,yx_lo;
-
- png_debug(1, "in function png_check_cHRM_fixed");
-
- if (png_ptr == NULL)
- return 0;
-
- if (white_x < 0 || white_y <= 0 ||
- red_x < 0 || red_y < 0 ||
- green_x < 0 || green_y < 0 ||
- blue_x < 0 || blue_y < 0)
- {
- png_warning(png_ptr,
- "Ignoring attempt to set negative chromaticity value");
- ret = 0;
- }
- if (white_x > (png_fixed_point)PNG_UINT_31_MAX ||
- white_y > (png_fixed_point)PNG_UINT_31_MAX ||
- red_x > (png_fixed_point)PNG_UINT_31_MAX ||
- red_y > (png_fixed_point)PNG_UINT_31_MAX ||
- green_x > (png_fixed_point)PNG_UINT_31_MAX ||
- green_y > (png_fixed_point)PNG_UINT_31_MAX ||
- blue_x > (png_fixed_point)PNG_UINT_31_MAX ||
- blue_y > (png_fixed_point)PNG_UINT_31_MAX )
- {
- png_warning(png_ptr,
- "Ignoring attempt to set chromaticity value exceeding 21474.83");
- ret = 0;
- }
- if (white_x > 100000L - white_y)
- {
- png_warning(png_ptr, "Invalid cHRM white point");
- ret = 0;
- }
-
- if (red_x > 100000L - red_y)
- {
- png_warning(png_ptr, "Invalid cHRM red point");
- ret = 0;
- }
-
- if (green_x > 100000L - green_y)
- {
- png_warning(png_ptr, "Invalid cHRM green point");
- ret = 0;
- }
-
- if (blue_x > 100000L - blue_y)
- {
- png_warning(png_ptr, "Invalid cHRM blue point");
- ret = 0;
- }
-
- png_64bit_product(green_x - red_x, blue_y - red_y, &xy_hi, &xy_lo);
- png_64bit_product(green_y - red_y, blue_x - red_x, &yx_hi, &yx_lo);
-
- if (xy_hi == yx_hi && xy_lo == yx_lo)
- {
- png_warning(png_ptr,
- "Ignoring attempt to set cHRM RGB triangle with zero area");
- ret = 0;
- }
-
- return ret;
-}
-# endif /* PNG_CHECK_cHRM_SUPPORTED */
-
-void /* PRIVATE */
-png_check_IHDR(png_structp png_ptr,
- png_uint_32 width, png_uint_32 height, int bit_depth,
- int color_type, int interlace_type, int compression_type,
- int filter_type)
-{
- int error = 0;
-
- /* Check for width and height valid values */
- if (width == 0)
- {
- png_warning(png_ptr, "Image width is zero in IHDR");
- error = 1;
- }
-
- if (height == 0)
- {
- png_warning(png_ptr, "Image height is zero in IHDR");
- error = 1;
- }
-
-# ifdef PNG_SET_USER_LIMITS_SUPPORTED
- if (width > png_ptr->user_width_max || width > PNG_USER_WIDTH_MAX)
-
-# else
- if (width > PNG_USER_WIDTH_MAX)
-# endif
- {
- png_warning(png_ptr, "Image width exceeds user limit in IHDR");
- error = 1;
- }
-
-# ifdef PNG_SET_USER_LIMITS_SUPPORTED
- if (height > png_ptr->user_height_max || height > PNG_USER_HEIGHT_MAX)
-# else
- if (height > PNG_USER_HEIGHT_MAX)
-# endif
- {
- png_warning(png_ptr, "Image height exceeds user limit in IHDR");
- error = 1;
- }
-
- if (width > PNG_UINT_31_MAX)
- {
- png_warning(png_ptr, "Invalid image width in IHDR");
- error = 1;
- }
-
- if (height > PNG_UINT_31_MAX)
- {
- png_warning(png_ptr, "Invalid image height in IHDR");
- error = 1;
- }
-
- if (width > (PNG_UINT_32_MAX
- >> 3) /* 8-byte RGBA pixels */
- - 48 /* bigrowbuf hack */
- - 1 /* filter byte */
- - 7*8 /* rounding of width to multiple of 8 pixels */
- - 8) /* extra max_pixel_depth pad */
- png_warning(png_ptr, "Width is too large for libpng to process pixels");
-
- /* Check other values */
- if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 &&
- bit_depth != 8 && bit_depth != 16)
- {
- png_warning(png_ptr, "Invalid bit depth in IHDR");
- error = 1;
- }
-
- if (color_type < 0 || color_type == 1 ||
- color_type == 5 || color_type > 6)
- {
- png_warning(png_ptr, "Invalid color type in IHDR");
- error = 1;
- }
-
- if (((color_type == PNG_COLOR_TYPE_PALETTE) && bit_depth > 8) ||
- ((color_type == PNG_COLOR_TYPE_RGB ||
- color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
- color_type == PNG_COLOR_TYPE_RGB_ALPHA) && bit_depth < 8))
- {
- png_warning(png_ptr, "Invalid color type/bit depth combination in IHDR");
- error = 1;
- }
-
- if (interlace_type >= PNG_INTERLACE_LAST)
- {
- png_warning(png_ptr, "Unknown interlace method in IHDR");
- error = 1;
- }
-
- if (compression_type != PNG_COMPRESSION_TYPE_BASE)
- {
- png_warning(png_ptr, "Unknown compression method in IHDR");
- error = 1;
- }
-
-# ifdef PNG_MNG_FEATURES_SUPPORTED
- /* Accept filter_method 64 (intrapixel differencing) only if
- * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and
- * 2. Libpng did not read a PNG signature (this filter_method is only
- * used in PNG datastreams that are embedded in MNG datastreams) and
- * 3. The application called png_permit_mng_features with a mask that
- * included PNG_FLAG_MNG_FILTER_64 and
- * 4. The filter_method is 64 and
- * 5. The color_type is RGB or RGBA
- */
- if ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) &&
- png_ptr->mng_features_permitted)
- png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
-
- if (filter_type != PNG_FILTER_TYPE_BASE)
- {
- if (!((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
- (filter_type == PNG_INTRAPIXEL_DIFFERENCING) &&
- ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) == 0) &&
- (color_type == PNG_COLOR_TYPE_RGB ||
- color_type == PNG_COLOR_TYPE_RGB_ALPHA)))
- {
- png_warning(png_ptr, "Unknown filter method in IHDR");
- error = 1;
- }
-
- if (png_ptr->mode & PNG_HAVE_PNG_SIGNATURE)
- {
- png_warning(png_ptr, "Invalid filter method in IHDR");
- error = 1;
- }
- }
-
-# else
- if (filter_type != PNG_FILTER_TYPE_BASE)
- {
- png_warning(png_ptr, "Unknown filter method in IHDR");
- error = 1;
- }
-# endif
-
- if (error == 1)
- png_error(png_ptr, "Invalid IHDR data");
-}
-
-#if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED)
-/* ASCII to fp functions */
-/* Check an ASCII formated floating point value, see the more detailed
- * comments in pngpriv.h
- */
-/* The following is used internally to preserve the 'valid' flag */
-#define png_fp_add(state, flags) ((state) |= (flags))
-#define png_fp_set(state, value)\
- ((state) = (value) | ((state) & PNG_FP_WAS_VALID))
-
-/* Internal type codes: bits above the base state! */
-#define PNG_FP_SIGN 0 /* [+-] */
-#define PNG_FP_DOT 4 /* . */
-#define PNG_FP_DIGIT 8 /* [0123456789] */
-#define PNG_FP_E 12 /* [Ee] */
-
-int /* PRIVATE */
-png_check_fp_number(png_const_charp string, png_size_t size, int *statep,
- png_size_tp whereami)
-{
- int state = *statep;
- png_size_t i = *whereami;
-
- while (i < size)
- {
- int type;
- /* First find the type of the next character */
- {
- char ch = string[i];
-
- if (ch >= 48 && ch <= 57)
- type = PNG_FP_DIGIT;
-
- else switch (ch)
- {
- case 43: case 45: type = PNG_FP_SIGN; break;
- case 46: type = PNG_FP_DOT; break;
- case 69: case 101: type = PNG_FP_E; break;
- default: goto PNG_FP_End;
- }
- }
-
- /* Now deal with this type according to the current
- * state, the type is arranged to not overlap the
- * bits of the PNG_FP_STATE.
- */
- switch ((state & PNG_FP_STATE) + type)
- {
- case PNG_FP_INTEGER + PNG_FP_SIGN:
- if (state & PNG_FP_SAW_ANY)
- goto PNG_FP_End; /* not a part of the number */
-
- png_fp_add(state, PNG_FP_SAW_SIGN);
- break;
-
- case PNG_FP_INTEGER + PNG_FP_DOT:
- /* Ok as trailer, ok as lead of fraction. */
- if (state & PNG_FP_SAW_DOT) /* two dots */
- goto PNG_FP_End;
-
- else if (state & PNG_FP_SAW_DIGIT) /* trailing dot? */
- png_fp_add(state, PNG_FP_SAW_DOT);
-
- else
- png_fp_set(state, PNG_FP_FRACTION | PNG_FP_SAW_DOT);
-
- break;
-
- case PNG_FP_INTEGER + PNG_FP_DIGIT:
- if (state & PNG_FP_SAW_DOT) /* delayed fraction */
- png_fp_set(state, PNG_FP_FRACTION | PNG_FP_SAW_DOT);
-
- png_fp_add(state, PNG_FP_SAW_DIGIT + PNG_FP_WAS_VALID);
-
- break;
- case PNG_FP_INTEGER + PNG_FP_E:
- if ((state & PNG_FP_SAW_DIGIT) == 0)
- goto PNG_FP_End;
-
- png_fp_set(state, PNG_FP_EXPONENT);
-
- break;
-
- /* case PNG_FP_FRACTION + PNG_FP_SIGN:
- goto PNG_FP_End; ** no sign in exponent */
-
- /* case PNG_FP_FRACTION + PNG_FP_DOT:
- goto PNG_FP_End; ** Because SAW_DOT is always set */
-
- case PNG_FP_FRACTION + PNG_FP_DIGIT:
- png_fp_add(state, PNG_FP_SAW_DIGIT + PNG_FP_WAS_VALID);
- break;
-
- case PNG_FP_FRACTION + PNG_FP_E:
- /* This is correct because the trailing '.' on an
- * integer is handled above - so we can only get here
- * with the sequence ".E" (with no preceding digits).
- */
- if ((state & PNG_FP_SAW_DIGIT) == 0)
- goto PNG_FP_End;
-
- png_fp_set(state, PNG_FP_EXPONENT);
-
- break;
-
- case PNG_FP_EXPONENT + PNG_FP_SIGN:
- if (state & PNG_FP_SAW_ANY)
- goto PNG_FP_End; /* not a part of the number */
-
- png_fp_add(state, PNG_FP_SAW_SIGN);
-
- break;
-
- /* case PNG_FP_EXPONENT + PNG_FP_DOT:
- goto PNG_FP_End; */
-
- case PNG_FP_EXPONENT + PNG_FP_DIGIT:
- png_fp_add(state, PNG_FP_SAW_DIGIT + PNG_FP_WAS_VALID);
-
- break;
-
- /* case PNG_FP_EXPONEXT + PNG_FP_E:
- goto PNG_FP_End; */
-
- default: goto PNG_FP_End; /* I.e. break 2 */
- }
-
- /* The character seems ok, continue. */
- ++i;
- }
-
-PNG_FP_End:
- /* Here at the end, update the state and return the correct
- * return code.
- */
- *statep = state;
- *whereami = i;
-
- return (state & PNG_FP_SAW_DIGIT) != 0;
-}
-
-
-/* The same but for a complete string. */
-int
-png_check_fp_string(png_const_charp string, png_size_t size)
-{
- int state=0;
- png_size_t char_index=0;
-
- return png_check_fp_number(string, size, &state, &char_index) &&
- (char_index == size || string[char_index] == 0);
-}
-#endif /* pCAL or sCAL */
-
-#ifdef PNG_READ_sCAL_SUPPORTED
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-/* Utility used below - a simple accurate power of ten from an integral
- * exponent.
- */
-static double
-png_pow10(int power)
-{
- int recip = 0;
- double d = 1;
-
- /* Handle negative exponent with a reciprocal at the end because
- * 10 is exact whereas .1 is inexact in base 2
- */
- if (power < 0)
- {
- if (power < DBL_MIN_10_EXP) return 0;
- recip = 1, power = -power;
- }
-
- if (power > 0)
- {
- /* Decompose power bitwise. */
- double mult = 10;
- do
- {
- if (power & 1) d *= mult;
- mult *= mult;
- power >>= 1;
- }
- while (power > 0);
-
- if (recip) d = 1/d;
- }
- /* else power is 0 and d is 1 */
-
- return d;
-}
-
-/* Function to format a floating point value in ASCII with a given
- * precision.
- */
-void /* PRIVATE */
-png_ascii_from_fp(png_structp png_ptr, png_charp ascii, png_size_t size,
- double fp, unsigned int precision)
-{
- /* We use standard functions from math.h, but not printf because
- * that would require stdio. The caller must supply a buffer of
- * sufficient size or we will png_error. The tests on size and
- * the space in ascii[] consumed are indicated below.
- */
- if (precision < 1)
- precision = DBL_DIG;
-
- /* Enforce the limit of the implementation precision too. */
- if (precision > DBL_DIG+1)
- precision = DBL_DIG+1;
-
- /* Basic sanity checks */
- if (size >= precision+5) /* See the requirements below. */
- {
- if (fp < 0)
- {
- fp = -fp;
- *ascii++ = 45; /* '-' PLUS 1 TOTAL 1*/
- --size;
- }
-
- if (fp >= DBL_MIN && fp <= DBL_MAX)
- {
- int exp_b10; /* A base 10 exponent */
- double base; /* 10^exp_b10 */
-
- /* First extract a base 10 exponent of the number,
- * the calculation below rounds down when converting
- * from base 2 to base 10 (multiply by log10(2) -
- * 0.3010, but 77/256 is 0.3008, so exp_b10 needs to
- * be increased. Note that the arithmetic shift
- * performs a floor() unlike C arithmetic - using a
- * C multiply would break the following for negative
- * exponents.
- */
- (void)frexp(fp, &exp_b10); /* exponent to base 2 */
-
- exp_b10 = (exp_b10 * 77) >> 8; /* <= exponent to base 10 */
-
- /* Avoid underflow here. */
- base = png_pow10(exp_b10); /* May underflow */
-
- while (base < DBL_MIN || base < fp)
- {
- /* And this may overflow. */
- double test = png_pow10(exp_b10+1);
-
- if (test <= DBL_MAX)
- ++exp_b10, base = test;
-
- else
- break;
- }
-
- /* Normalize fp and correct exp_b10, after this fp is in the
- * range [.1,1) and exp_b10 is both the exponent and the digit
- * *before* which the decimal point should be inserted
- * (starting with 0 for the first digit). Note that this
- * works even if 10^exp_b10 is out of range because of the
- * test on DBL_MAX above.
- */
- fp /= base;
- while (fp >= 1) fp /= 10, ++exp_b10;
-
- /* Because of the code above fp may, at this point, be
- * less than .1, this is ok because the code below can
- * handle the leading zeros this generates, so no attempt
- * is made to correct that here.
- */
-
- {
- int czero, clead, cdigits;
- char exponent[10];
-
- /* Allow up to two leading zeros - this will not lengthen
- * the number compared to using E-n.
- */
- if (exp_b10 < 0 && exp_b10 > -3) /* PLUS 3 TOTAL 4 */
- {
- czero = -exp_b10; /* PLUS 2 digits: TOTAL 3 */
- exp_b10 = 0; /* Dot added below before first output. */
- }
- else
- czero = 0; /* No zeros to add */
-
- /* Generate the digit list, stripping trailing zeros and
- * inserting a '.' before a digit if the exponent is 0.
- */
- clead = czero; /* Count of leading zeros */
- cdigits = 0; /* Count of digits in list. */
-
- do
- {
- double d;
-
- fp *= 10;
- /* Use modf here, not floor and subtract, so that
- * the separation is done in one step. At the end
- * of the loop don't break the number into parts so
- * that the final digit is rounded.
- */
- if (cdigits+czero-clead+1 < (int)precision)
- fp = modf(fp, &d);
-
- else
- {
- d = floor(fp + .5);
-
- if (d > 9)
- {
- /* Rounding up to 10, handle that here. */
- if (czero > 0)
- {
- --czero, d = 1;
- if (cdigits == 0) --clead;
- }
- else
- {
- while (cdigits > 0 && d > 9)
- {
- int ch = *--ascii;
-
- if (exp_b10 != (-1))
- ++exp_b10;
-
- else if (ch == 46)
- {
- ch = *--ascii, ++size;
- /* Advance exp_b10 to '1', so that the
- * decimal point happens after the
- * previous digit.
- */
- exp_b10 = 1;
- }
-
- --cdigits;
- d = ch - 47; /* I.e. 1+(ch-48) */
- }
-
- /* Did we reach the beginning? If so adjust the
- * exponent but take into account the leading
- * decimal point.
- */
- if (d > 9) /* cdigits == 0 */
- {
- if (exp_b10 == (-1))
- {
- /* Leading decimal point (plus zeros?), if
- * we lose the decimal point here it must
- * be reentered below.
- */
- int ch = *--ascii;
-
- if (ch == 46)
- ++size, exp_b10 = 1;
-
- /* Else lost a leading zero, so 'exp_b10' is
- * still ok at (-1)
- */
- }
- else
- ++exp_b10;
-
- /* In all cases we output a '1' */
- d = 1;
- }
- }
- }
- fp = 0; /* Guarantees termination below. */
- }
-
- if (d == 0)
- {
- ++czero;
- if (cdigits == 0) ++clead;
- }
- else
- {
- /* Included embedded zeros in the digit count. */
- cdigits += czero - clead;
- clead = 0;
-
- while (czero > 0)
- {
- /* exp_b10 == (-1) means we just output the decimal
- * place - after the DP don't adjust 'exp_b10' any
- * more!
- */
- if (exp_b10 != (-1))
- {
- if (exp_b10 == 0) *ascii++ = 46, --size;
- /* PLUS 1: TOTAL 4 */
- --exp_b10;
- }
- *ascii++ = 48, --czero;
- }
-
- if (exp_b10 != (-1))
- {
- if (exp_b10 == 0) *ascii++ = 46, --size; /* counted
- above */
- --exp_b10;
- }
- *ascii++ = (char)(48 + (int)d), ++cdigits;
- }
- }
- while (cdigits+czero-clead < (int)precision && fp > DBL_MIN);
-
- /* The total output count (max) is now 4+precision */
-
- /* Check for an exponent, if we don't need one we are
- * done and just need to terminate the string. At
- * this point exp_b10==(-1) is effectively if flag - it got
- * to '-1' because of the decrement after outputing
- * the decimal point above (the exponent required is
- * *not* -1!)
- */
- if (exp_b10 >= (-1) && exp_b10 <= 2)
- {
- /* The following only happens if we didn't output the
- * leading zeros above for negative exponent, so this
- * doest add to the digit requirement. Note that the
- * two zeros here can only be output if the two leading
- * zeros were *not* output, so this doesn't increase
- * the output count.
- */
- while (--exp_b10 >= 0) *ascii++ = 48;
-
- *ascii = 0;
-
- /* Total buffer requirement (including the '\0') is
- * 5+precision - see check at the start.
- */
- return;
- }
-
- /* Here if an exponent is required, adjust size for
- * the digits we output but did not count. The total
- * digit output here so far is at most 1+precision - no
- * decimal point and no leading or trailing zeros have
- * been output.
- */
- size -= cdigits;
-
- *ascii++ = 69, --size; /* 'E': PLUS 1 TOTAL 2+precision*/
- if (exp_b10 < 0)
- {
- *ascii++ = 45, --size; /* '-': PLUS 1 TOTAL 3+precision */
- exp_b10 = -exp_b10;
- }
-
- cdigits = 0;
-
- while (exp_b10 > 0)
- {
- exponent[cdigits++] = (char)(48 + exp_b10 % 10);
- exp_b10 /= 10;
- }
-
- /* Need another size check here for the exponent digits, so
- * this need not be considered above.
- */
- if ((int)size > cdigits)
- {
- while (cdigits > 0) *ascii++ = exponent[--cdigits];
-
- *ascii = 0;
-
- return;
- }
- }
- }
- else if (!(fp >= DBL_MIN))
- {
- *ascii++ = 48; /* '0' */
- *ascii = 0;
- return;
- }
- else
- {
- *ascii++ = 105; /* 'i' */
- *ascii++ = 110; /* 'n' */
- *ascii++ = 102; /* 'f' */
- *ascii = 0;
- return;
- }
- }
-
- /* Here on buffer too small. */
- png_error(png_ptr, "ASCII conversion buffer too small");
-}
-
-# endif /* FLOATING_POINT */
-
-# ifdef PNG_FIXED_POINT_SUPPORTED
-/* Function to format a fixed point value in ASCII.
- */
-void /* PRIVATE */
-png_ascii_from_fixed(png_structp png_ptr, png_charp ascii, png_size_t size,
- png_fixed_point fp)
-{
- /* Require space for 10 decimal digits, a decimal point, a minus sign and a
- * trailing \0, 13 characters:
- */
- if (size > 12)
- {
- png_uint_32 num;
-
- /* Avoid overflow here on the minimum integer. */
- if (fp < 0)
- *ascii++ = 45, --size, num = -fp;
- else
- num = fp;
-
- if (num <= 0x80000000U) /* else overflowed */
- {
- unsigned int ndigits = 0, first = 16/*flag value*/;
- char digits[10];
-
- while (num)
- {
- /* Split the low digit off num: */
- unsigned int tmp = num/10;
- num -= tmp*10;
- digits[ndigits++] = (char)(48 + num);
- /* Record the first non-zero digit, note that this is a number
- * starting at 1, it's not actually the array index.
- */
- if (first == 16 && num > 0)
- first = ndigits;
- num = tmp;
- }
-
- if (ndigits > 0)
- {
- while (ndigits > 5) *ascii++ = digits[--ndigits];
- /* The remaining digits are fractional digits, ndigits is '5' or
- * smaller at this point. It is certainly not zero. Check for a
- * non-zero fractional digit:
- */
- if (first <= 5)
- {
- unsigned int i;
- *ascii++ = 46; /* decimal point */
- /* ndigits may be <5 for small numbers, output leading zeros
- * then ndigits digits to first:
- */
- i = 5;
- while (ndigits < i) *ascii++ = 48, --i;
- while (ndigits >= first) *ascii++ = digits[--ndigits];
- /* Don't output the trailing zeros! */
- }
- }
- else
- *ascii++ = 48;
-
- /* And null terminate the string: */
- *ascii = 0;
- return;
- }
- }
-
- /* Here on buffer too small. */
- png_error(png_ptr, "ASCII conversion buffer too small");
-}
-# endif /* FIXED_POINT */
-#endif /* READ_SCAL */
-
-#if defined(PNG_FLOATING_POINT_SUPPORTED) && \
- !defined(PNG_FIXED_POINT_MACRO_SUPPORTED)
-png_fixed_point
-png_fixed(png_structp png_ptr, double fp, png_const_charp text)
-{
- double r = floor(100000 * fp + .5);
-
- if (r > 2147483647. || r < -2147483648.)
- png_fixed_error(png_ptr, text);
-
- return (png_fixed_point)r;
-}
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED) || \
- defined(PNG_INCH_CONVERSIONS_SUPPORTED) || defined(PNG__READ_pHYs_SUPPORTED)
-/* muldiv functions */
-/* This API takes signed arguments and rounds the result to the nearest
- * integer (or, for a fixed point number - the standard argument - to
- * the nearest .00001). Overflow and divide by zero are signalled in
- * the result, a boolean - true on success, false on overflow.
- */
-int
-png_muldiv(png_fixed_point_p res, png_fixed_point a, png_int_32 times,
- png_int_32 divisor)
-{
- /* Return a * times / divisor, rounded. */
- if (divisor != 0)
- {
- if (a == 0 || times == 0)
- {
- *res = 0;
- return 1;
- }
- else
- {
-#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
- double r = a;
- r *= times;
- r /= divisor;
- r = floor(r+.5);
-
- /* A png_fixed_point is a 32 bit integer. */
- if (r <= 2147483647. && r >= -2147483648.)
- {
- *res = (png_fixed_point)r;
- return 1;
- }
-#else
- int negative = 0;
- png_uint_32 A, T, D;
- png_uint_32 s16, s32, s00;
-
- if (a < 0)
- negative = 1, A = -a;
- else
- A = a;
-
- if (times < 0)
- negative = !negative, T = -times;
- else
- T = times;
-
- if (divisor < 0)
- negative = !negative, D = -divisor;
- else
- D = divisor;
-
- /* Following can't overflow because the arguments only
- * have 31 bits each, however the result may be 32 bits.
- */
- s16 = (A >> 16) * (T & 0xffff) +
- (A & 0xffff) * (T >> 16);
- /* Can't overflow because the a*times bit is only 30
- * bits at most.
- */
- s32 = (A >> 16) * (T >> 16) + (s16 >> 16);
- s00 = (A & 0xffff) * (T & 0xffff);
-
- s16 = (s16 & 0xffff) << 16;
- s00 += s16;
-
- if (s00 < s16)
- ++s32; /* carry */
-
- if (s32 < D) /* else overflow */
- {
- /* s32.s00 is now the 64 bit product, do a standard
- * division, we know that s32 < D, so the maximum
- * required shift is 31.
- */
- int bitshift = 32;
- png_fixed_point result = 0; /* NOTE: signed */
-
- while (--bitshift >= 0)
- {
- png_uint_32 d32, d00;
-
- if (bitshift > 0)
- d32 = D >> (32-bitshift), d00 = D << bitshift;
-
- else
- d32 = 0, d00 = D;
-
- if (s32 > d32)
- {
- if (s00 < d00) --s32; /* carry */
- s32 -= d32, s00 -= d00, result += 1<= d00)
- s32 = 0, s00 -= d00, result += 1<= (D >> 1))
- ++result;
-
- if (negative)
- result = -result;
-
- /* Check for overflow. */
- if ((negative && result <= 0) || (!negative && result >= 0))
- {
- *res = result;
- return 1;
- }
- }
-#endif
- }
- }
-
- return 0;
-}
-#endif /* READ_GAMMA || INCH_CONVERSIONS */
-
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_INCH_CONVERSIONS_SUPPORTED)
-/* The following is for when the caller doesn't much care about the
- * result.
- */
-png_fixed_point
-png_muldiv_warn(png_structp png_ptr, png_fixed_point a, png_int_32 times,
- png_int_32 divisor)
-{
- png_fixed_point result;
-
- if (png_muldiv(&result, a, times, divisor))
- return result;
-
- png_warning(png_ptr, "fixed point overflow ignored");
- return 0;
-}
-#endif
-
-#ifdef PNG_READ_GAMMA_SUPPORTED /* more fixed point functions for gammma */
-/* Calculate a reciprocal, return 0 on div-by-zero or overflow. */
-png_fixed_point
-png_reciprocal(png_fixed_point a)
-{
-#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
- double r = floor(1E10/a+.5);
-
- if (r <= 2147483647. && r >= -2147483648.)
- return (png_fixed_point)r;
-#else
- png_fixed_point res;
-
- if (png_muldiv(&res, 100000, 100000, a))
- return res;
-#endif
-
- return 0; /* error/overflow */
-}
-
-/* A local convenience routine. */
-static png_fixed_point
-png_product2(png_fixed_point a, png_fixed_point b)
-{
- /* The required result is 1/a * 1/b; the following preserves accuracy. */
-#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
- double r = a * 1E-5;
- r *= b;
- r = floor(r+.5);
-
- if (r <= 2147483647. && r >= -2147483648.)
- return (png_fixed_point)r;
-#else
- png_fixed_point res;
-
- if (png_muldiv(&res, a, b, 100000))
- return res;
-#endif
-
- return 0; /* overflow */
-}
-
-/* The inverse of the above. */
-png_fixed_point
-png_reciprocal2(png_fixed_point a, png_fixed_point b)
-{
- /* The required result is 1/a * 1/b; the following preserves accuracy. */
-#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
- double r = 1E15/a;
- r /= b;
- r = floor(r+.5);
-
- if (r <= 2147483647. && r >= -2147483648.)
- return (png_fixed_point)r;
-#else
- /* This may overflow because the range of png_fixed_point isn't symmetric,
- * but this API is only used for the product of file and screen gamma so it
- * doesn't matter that the smallest number it can produce is 1/21474, not
- * 1/100000
- */
- png_fixed_point res = png_product2(a, b);
-
- if (res != 0)
- return png_reciprocal(res);
-#endif
-
- return 0; /* overflow */
-}
-#endif /* READ_GAMMA */
-
-#ifdef PNG_CHECK_cHRM_SUPPORTED
-/* Added at libpng version 1.2.34 (Dec 8, 2008) and 1.4.0 (Jan 2,
- * 2010: moved from pngset.c) */
-/*
- * Multiply two 32-bit numbers, V1 and V2, using 32-bit
- * arithmetic, to produce a 64 bit result in the HI/LO words.
- *
- * A B
- * x C D
- * ------
- * AD || BD
- * AC || CB || 0
- *
- * where A and B are the high and low 16-bit words of V1,
- * C and D are the 16-bit words of V2, AD is the product of
- * A and D, and X || Y is (X << 16) + Y.
-*/
-
-void /* PRIVATE */
-png_64bit_product (long v1, long v2, unsigned long *hi_product,
- unsigned long *lo_product)
-{
- int a, b, c, d;
- long lo, hi, x, y;
-
- a = (v1 >> 16) & 0xffff;
- b = v1 & 0xffff;
- c = (v2 >> 16) & 0xffff;
- d = v2 & 0xffff;
-
- lo = b * d; /* BD */
- x = a * d + c * b; /* AD + CB */
- y = ((lo >> 16) & 0xffff) + x;
-
- lo = (lo & 0xffff) | ((y & 0xffff) << 16);
- hi = (y >> 16) & 0xffff;
-
- hi += a * c; /* AC */
-
- *hi_product = (unsigned long)hi;
- *lo_product = (unsigned long)lo;
-}
-#endif /* CHECK_cHRM */
-
-#ifdef PNG_READ_GAMMA_SUPPORTED /* gamma table code */
-#ifndef PNG_FLOATING_ARITHMETIC_SUPPORTED
-/* Fixed point gamma.
- *
- * To calculate gamma this code implements fast log() and exp() calls using only
- * fixed point arithmetic. This code has sufficient precision for either 8 or
- * 16 bit sample values.
- *
- * The tables used here were calculated using simple 'bc' programs, but C double
- * precision floating point arithmetic would work fine. The programs are given
- * at the head of each table.
- *
- * 8 bit log table
- * This is a table of -log(value/255)/log(2) for 'value' in the range 128 to
- * 255, so it's the base 2 logarithm of a normalized 8 bit floating point
- * mantissa. The numbers are 32 bit fractions.
- */
-static png_uint_32
-png_8bit_l2[128] =
-{
-# if PNG_DO_BC
- for (i=128;i<256;++i) { .5 - l(i/255)/l(2)*65536*65536; }
-# endif
- 4270715492U, 4222494797U, 4174646467U, 4127164793U, 4080044201U, 4033279239U,
- 3986864580U, 3940795015U, 3895065449U, 3849670902U, 3804606499U, 3759867474U,
- 3715449162U, 3671346997U, 3627556511U, 3584073329U, 3540893168U, 3498011834U,
- 3455425220U, 3413129301U, 3371120137U, 3329393864U, 3287946700U, 3246774933U,
- 3205874930U, 3165243125U, 3124876025U, 3084770202U, 3044922296U, 3005329011U,
- 2965987113U, 2926893432U, 2888044853U, 2849438323U, 2811070844U, 2772939474U,
- 2735041326U, 2697373562U, 2659933400U, 2622718104U, 2585724991U, 2548951424U,
- 2512394810U, 2476052606U, 2439922311U, 2404001468U, 2368287663U, 2332778523U,
- 2297471715U, 2262364947U, 2227455964U, 2192742551U, 2158222529U, 2123893754U,
- 2089754119U, 2055801552U, 2022034013U, 1988449497U, 1955046031U, 1921821672U,
- 1888774511U, 1855902668U, 1823204291U, 1790677560U, 1758320682U, 1726131893U,
- 1694109454U, 1662251657U, 1630556815U, 1599023271U, 1567649391U, 1536433567U,
- 1505374214U, 1474469770U, 1443718700U, 1413119487U, 1382670639U, 1352370686U,
- 1322218179U, 1292211689U, 1262349810U, 1232631153U, 1203054352U, 1173618059U,
- 1144320946U, 1115161701U, 1086139034U, 1057251672U, 1028498358U, 999877854U,
- 971388940U, 943030410U, 914801076U, 886699767U, 858725327U, 830876614U,
- 803152505U, 775551890U, 748073672U, 720716771U, 693480120U, 666362667U,
- 639363374U, 612481215U, 585715177U, 559064263U, 532527486U, 506103872U,
- 479792461U, 453592303U, 427502463U, 401522014U, 375650043U, 349885648U,
- 324227938U, 298676034U, 273229066U, 247886176U, 222646516U, 197509248U,
- 172473545U, 147538590U, 122703574U, 97967701U, 73330182U, 48790236U,
- 24347096U, 0U
-#if 0
- /* The following are the values for 16 bit tables - these work fine for the 8
- * bit conversions but produce very slightly larger errors in the 16 bit log
- * (about 1.2 as opposed to 0.7 absolute error in the final value). To use
- * these all the shifts below must be adjusted appropriately.
- */
- 65166, 64430, 63700, 62976, 62257, 61543, 60835, 60132, 59434, 58741, 58054,
- 57371, 56693, 56020, 55352, 54689, 54030, 53375, 52726, 52080, 51439, 50803,
- 50170, 49542, 48918, 48298, 47682, 47070, 46462, 45858, 45257, 44661, 44068,
- 43479, 42894, 42312, 41733, 41159, 40587, 40020, 39455, 38894, 38336, 37782,
- 37230, 36682, 36137, 35595, 35057, 34521, 33988, 33459, 32932, 32408, 31887,
- 31369, 30854, 30341, 29832, 29325, 28820, 28319, 27820, 27324, 26830, 26339,
- 25850, 25364, 24880, 24399, 23920, 23444, 22970, 22499, 22029, 21562, 21098,
- 20636, 20175, 19718, 19262, 18808, 18357, 17908, 17461, 17016, 16573, 16132,
- 15694, 15257, 14822, 14390, 13959, 13530, 13103, 12678, 12255, 11834, 11415,
- 10997, 10582, 10168, 9756, 9346, 8937, 8531, 8126, 7723, 7321, 6921, 6523,
- 6127, 5732, 5339, 4947, 4557, 4169, 3782, 3397, 3014, 2632, 2251, 1872, 1495,
- 1119, 744, 372
-#endif
-};
-
-static png_int_32
-png_log8bit(unsigned int x)
-{
- unsigned int lg2 = 0;
- /* Each time 'x' is multiplied by 2, 1 must be subtracted off the final log,
- * because the log is actually negate that means adding 1. The final
- * returned value thus has the range 0 (for 255 input) to 7.994 (for 1
- * input), return 7.99998 for the overflow (log 0) case - so the result is
- * always at most 19 bits.
- */
- if ((x &= 0xff) == 0)
- return 0xffffffff;
-
- if ((x & 0xf0) == 0)
- lg2 = 4, x <<= 4;
-
- if ((x & 0xc0) == 0)
- lg2 += 2, x <<= 2;
-
- if ((x & 0x80) == 0)
- lg2 += 1, x <<= 1;
-
- /* result is at most 19 bits, so this cast is safe: */
- return (png_int_32)((lg2 << 16) + ((png_8bit_l2[x-128]+32768)>>16));
-}
-
-/* The above gives exact (to 16 binary places) log2 values for 8 bit images,
- * for 16 bit images we use the most significant 8 bits of the 16 bit value to
- * get an approximation then multiply the approximation by a correction factor
- * determined by the remaining up to 8 bits. This requires an additional step
- * in the 16 bit case.
- *
- * We want log2(value/65535), we have log2(v'/255), where:
- *
- * value = v' * 256 + v''
- * = v' * f
- *
- * So f is value/v', which is equal to (256+v''/v') since v' is in the range 128
- * to 255 and v'' is in the range 0 to 255 f will be in the range 256 to less
- * than 258. The final factor also needs to correct for the fact that our 8 bit
- * value is scaled by 255, whereas the 16 bit values must be scaled by 65535.
- *
- * This gives a final formula using a calculated value 'x' which is value/v' and
- * scaling by 65536 to match the above table:
- *
- * log2(x/257) * 65536
- *
- * Since these numbers are so close to '1' we can use simple linear
- * interpolation between the two end values 256/257 (result -368.61) and 258/257
- * (result 367.179). The values used below are scaled by a further 64 to give
- * 16 bit precision in the interpolation:
- *
- * Start (256): -23591
- * Zero (257): 0
- * End (258): 23499
- */
-static png_int_32
-png_log16bit(png_uint_32 x)
-{
- unsigned int lg2 = 0;
-
- /* As above, but now the input has 16 bits. */
- if ((x &= 0xffff) == 0)
- return 0xffffffff;
-
- if ((x & 0xff00) == 0)
- lg2 = 8, x <<= 8;
-
- if ((x & 0xf000) == 0)
- lg2 += 4, x <<= 4;
-
- if ((x & 0xc000) == 0)
- lg2 += 2, x <<= 2;
-
- if ((x & 0x8000) == 0)
- lg2 += 1, x <<= 1;
-
- /* Calculate the base logarithm from the top 8 bits as a 28 bit fractional
- * value.
- */
- lg2 <<= 28;
- lg2 += (png_8bit_l2[(x>>8)-128]+8) >> 4;
-
- /* Now we need to interpolate the factor, this requires a division by the top
- * 8 bits. Do this with maximum precision.
- */
- x = ((x << 16) + (x >> 9)) / (x >> 8);
-
- /* Since we divided by the top 8 bits of 'x' there will be a '1' at 1<<24,
- * the value at 1<<16 (ignoring this) will be 0 or 1; this gives us exactly
- * 16 bits to interpolate to get the low bits of the result. Round the
- * answer. Note that the end point values are scaled by 64 to retain overall
- * precision and that 'lg2' is current scaled by an extra 12 bits, so adjust
- * the overall scaling by 6-12. Round at every step.
- */
- x -= 1U << 24;
-
- if (x <= 65536U) /* <= '257' */
- lg2 += ((23591U * (65536U-x)) + (1U << (16+6-12-1))) >> (16+6-12);
-
- else
- lg2 -= ((23499U * (x-65536U)) + (1U << (16+6-12-1))) >> (16+6-12);
-
- /* Safe, because the result can't have more than 20 bits: */
- return (png_int_32)((lg2 + 2048) >> 12);
-}
-
-/* The 'exp()' case must invert the above, taking a 20 bit fixed point
- * logarithmic value and returning a 16 or 8 bit number as appropriate. In
- * each case only the low 16 bits are relevant - the fraction - since the
- * integer bits (the top 4) simply determine a shift.
- *
- * The worst case is the 16 bit distinction between 65535 and 65534, this
- * requires perhaps spurious accuracty in the decoding of the logarithm to
- * distinguish log2(65535/65534.5) - 10^-5 or 17 bits. There is little chance
- * of getting this accuracy in practice.
- *
- * To deal with this the following exp() function works out the exponent of the
- * frational part of the logarithm by using an accurate 32 bit value from the
- * top four fractional bits then multiplying in the remaining bits.
- */
-static png_uint_32
-png_32bit_exp[16] =
-{
-# if PNG_DO_BC
- for (i=0;i<16;++i) { .5 + e(-i/16*l(2))*2^32; }
-# endif
- /* NOTE: the first entry is deliberately set to the maximum 32 bit value. */
- 4294967295U, 4112874773U, 3938502376U, 3771522796U, 3611622603U, 3458501653U,
- 3311872529U, 3171459999U, 3037000500U, 2908241642U, 2784941738U, 2666869345U,
- 2553802834U, 2445529972U, 2341847524U, 2242560872U
-};
-
-/* Adjustment table; provided to explain the numbers in the code below. */
-#if PNG_DO_BC
-for (i=11;i>=0;--i){ print i, " ", (1 - e(-(2^i)/65536*l(2))) * 2^(32-i), "\n"}
- 11 44937.64284865548751208448
- 10 45180.98734845585101160448
- 9 45303.31936980687359311872
- 8 45364.65110595323018870784
- 7 45395.35850361789624614912
- 6 45410.72259715102037508096
- 5 45418.40724413220722311168
- 4 45422.25021786898173001728
- 3 45424.17186732298419044352
- 2 45425.13273269940811464704
- 1 45425.61317555035558641664
- 0 45425.85339951654943850496
-#endif
-
-static png_uint_32
-png_exp(png_fixed_point x)
-{
- if (x > 0 && x <= 0xfffff) /* Else overflow or zero (underflow) */
- {
- /* Obtain a 4 bit approximation */
- png_uint_32 e = png_32bit_exp[(x >> 12) & 0xf];
-
- /* Incorporate the low 12 bits - these decrease the returned value by
- * multiplying by a number less than 1 if the bit is set. The multiplier
- * is determined by the above table and the shift. Notice that the values
- * converge on 45426 and this is used to allow linear interpolation of the
- * low bits.
- */
- if (x & 0x800)
- e -= (((e >> 16) * 44938U) + 16U) >> 5;
-
- if (x & 0x400)
- e -= (((e >> 16) * 45181U) + 32U) >> 6;
-
- if (x & 0x200)
- e -= (((e >> 16) * 45303U) + 64U) >> 7;
-
- if (x & 0x100)
- e -= (((e >> 16) * 45365U) + 128U) >> 8;
-
- if (x & 0x080)
- e -= (((e >> 16) * 45395U) + 256U) >> 9;
-
- if (x & 0x040)
- e -= (((e >> 16) * 45410U) + 512U) >> 10;
-
- /* And handle the low 6 bits in a single block. */
- e -= (((e >> 16) * 355U * (x & 0x3fU)) + 256U) >> 9;
-
- /* Handle the upper bits of x. */
- e >>= x >> 16;
- return e;
- }
-
- /* Check for overflow */
- if (x <= 0)
- return png_32bit_exp[0];
-
- /* Else underflow */
- return 0;
-}
-
-static png_byte
-png_exp8bit(png_fixed_point lg2)
-{
- /* Get a 32 bit value: */
- png_uint_32 x = png_exp(lg2);
-
- /* Convert the 32 bit value to 0..255 by multiplying by 256-1, note that the
- * second, rounding, step can't overflow because of the first, subtraction,
- * step.
- */
- x -= x >> 8;
- return (png_byte)((x + 0x7fffffU) >> 24);
-}
-
-static png_uint_16
-png_exp16bit(png_fixed_point lg2)
-{
- /* Get a 32 bit value: */
- png_uint_32 x = png_exp(lg2);
-
- /* Convert the 32 bit value to 0..65535 by multiplying by 65536-1: */
- x -= x >> 16;
- return (png_uint_16)((x + 32767U) >> 16);
-}
-#endif /* FLOATING_ARITHMETIC */
-
-png_byte
-png_gamma_8bit_correct(unsigned int value, png_fixed_point gamma_val)
-{
- if (value > 0 && value < 255)
- {
-# ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
- double r = floor(255*pow(value/255.,gamma_val*.00001)+.5);
- return (png_byte)r;
-# else
- png_int_32 lg2 = png_log8bit(value);
- png_fixed_point res;
-
- if (png_muldiv(&res, gamma_val, lg2, PNG_FP_1))
- return png_exp8bit(res);
-
- /* Overflow. */
- value = 0;
-# endif
- }
-
- return (png_byte)value;
-}
-
-png_uint_16
-png_gamma_16bit_correct(unsigned int value, png_fixed_point gamma_val)
-{
- if (value > 0 && value < 65535)
- {
-# ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
- double r = floor(65535*pow(value/65535.,gamma_val*.00001)+.5);
- return (png_uint_16)r;
-# else
- png_int_32 lg2 = png_log16bit(value);
- png_fixed_point res;
-
- if (png_muldiv(&res, gamma_val, lg2, PNG_FP_1))
- return png_exp16bit(res);
-
- /* Overflow. */
- value = 0;
-# endif
- }
-
- return (png_uint_16)value;
-}
-
-/* This does the right thing based on the bit_depth field of the
- * png_struct, interpreting values as 8 or 16 bit. While the result
- * is nominally a 16 bit value if bit depth is 8 then the result is
- * 8 bit (as are the arguments.)
- */
-png_uint_16 /* PRIVATE */
-png_gamma_correct(png_structp png_ptr, unsigned int value,
- png_fixed_point gamma_val)
-{
- if (png_ptr->bit_depth == 8)
- return png_gamma_8bit_correct(value, gamma_val);
-
- else
- return png_gamma_16bit_correct(value, gamma_val);
-}
-
-/* This is the shared test on whether a gamma value is 'significant' - whether
- * it is worth doing gamma correction.
- */
-int /* PRIVATE */
-png_gamma_significant(png_fixed_point gamma_val)
-{
- return gamma_val < PNG_FP_1 - PNG_GAMMA_THRESHOLD_FIXED ||
- gamma_val > PNG_FP_1 + PNG_GAMMA_THRESHOLD_FIXED;
-}
-
-/* Internal function to build a single 16 bit table - the table consists of
- * 'num' 256 entry subtables, where 'num' is determined by 'shift' - the amount
- * to shift the input values right (or 16-number_of_signifiant_bits).
- *
- * The caller is responsible for ensuring that the table gets cleaned up on
- * png_error (i.e. if one of the mallocs below fails) - i.e. the *table argument
- * should be somewhere that will be cleaned.
- */
-static void
-png_build_16bit_table(png_structp png_ptr, png_uint_16pp *ptable,
- PNG_CONST unsigned int shift, PNG_CONST png_fixed_point gamma_val)
-{
- /* Various values derived from 'shift': */
- PNG_CONST unsigned int num = 1U << (8U - shift);
- PNG_CONST unsigned int max = (1U << (16U - shift))-1U;
- PNG_CONST unsigned int max_by_2 = 1U << (15U-shift);
- unsigned int i;
-
- png_uint_16pp table = *ptable =
- (png_uint_16pp)png_calloc(png_ptr, num * png_sizeof(png_uint_16p));
-
- for (i = 0; i < num; i++)
- {
- png_uint_16p sub_table = table[i] =
- (png_uint_16p)png_malloc(png_ptr, 256 * png_sizeof(png_uint_16));
-
- /* The 'threshold' test is repeated here because it can arise for one of
- * the 16 bit tables even if the others don't hit it.
- */
- if (png_gamma_significant(gamma_val))
- {
- /* The old code would overflow at the end and this would cause the
- * 'pow' function to return a result >1, resulting in an
- * arithmetic error. This code follows the spec exactly; ig is
- * the recovered input sample, it always has 8-16 bits.
- *
- * We want input * 65535/max, rounded, the arithmetic fits in 32
- * bits (unsigned) so long as max <= 32767.
- */
- unsigned int j;
- for (j = 0; j < 256; j++)
- {
- png_uint_32 ig = (j << (8-shift)) + i;
-# ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
- /* Inline the 'max' scaling operation: */
- double d = floor(65535*pow(ig/(double)max, gamma_val*.00001)+.5);
- sub_table[j] = (png_uint_16)d;
-# else
- if (shift)
- ig = (ig * 65535U + max_by_2)/max;
-
- sub_table[j] = png_gamma_16bit_correct(ig, gamma_val);
-# endif
- }
- }
- else
- {
- /* We must still build a table, but do it the fast way. */
- unsigned int j;
-
- for (j = 0; j < 256; j++)
- {
- png_uint_32 ig = (j << (8-shift)) + i;
-
- if (shift)
- ig = (ig * 65535U + max_by_2)/max;
-
- sub_table[j] = (png_uint_16)ig;
- }
- }
- }
-}
-
-/* NOTE: this function expects the *inverse* of the overall gamma transformation
- * required.
- */
-static void
-png_build_16to8_table(png_structp png_ptr, png_uint_16pp *ptable,
- PNG_CONST unsigned int shift, PNG_CONST png_fixed_point gamma_val)
-{
- PNG_CONST unsigned int num = 1U << (8U - shift);
- PNG_CONST unsigned int max = (1U << (16U - shift))-1U;
- unsigned int i;
- png_uint_32 last;
-
- png_uint_16pp table = *ptable =
- (png_uint_16pp)png_calloc(png_ptr, num * png_sizeof(png_uint_16p));
-
- /* 'num' is the number of tables and also the number of low bits of low
- * bits of the input 16 bit value used to select a table. Each table is
- * itself index by the high 8 bits of the value.
- */
- for (i = 0; i < num; i++)
- table[i] = (png_uint_16p)png_malloc(png_ptr,
- 256 * png_sizeof(png_uint_16));
-
- /* 'gamma_val' is set to the reciprocal of the value calculated above, so
- * pow(out,g) is an *input* value. 'last' is the last input value set.
- *
- * In the loop 'i' is used to find output values. Since the output is 8
- * bit there are only 256 possible values. The tables are set up to
- * select the closest possible output value for each input by finding
- * the input value at the boundary between each pair of output values
- * and filling the table up to that boundary with the lower output
- * value.
- *
- * The boundary values are 0.5,1.5..253.5,254.5. Since these are 9 bit
- * values the code below uses a 16 bit value in i; the values start at
- * 128.5 (for 0.5) and step by 257, for a total of 254 values (the last
- * entries are filled with 255). Start i at 128 and fill all 'last'
- * table entries <= 'max'
- */
- last = 0;
- for (i = 0; i < 255; ++i) /* 8 bit output value */
- {
- /* Find the corresponding maximum input value */
- png_uint_16 out = (png_uint_16)(i * 257U); /* 16 bit output value */
-
- /* Find the boundary value in 16 bits: */
- png_uint_32 bound = png_gamma_16bit_correct(out+128U, gamma_val);
-
- /* Adjust (round) to (16-shift) bits: */
- bound = (bound * max + 32768U)/65535U + 1U;
-
- while (last < bound)
- {
- table[last & (0xffU >> shift)][last >> (8U - shift)] = out;
- last++;
- }
- }
-
- /* And fill in the final entries. */
- while (last < (num << 8))
- {
- table[last & (0xff >> shift)][last >> (8U - shift)] = 65535U;
- last++;
- }
-}
-
-/* Build a single 8 bit table: same as the 16 bit case but much simpler (and
- * typically much faster). Note that libpng currently does no sBIT processing
- * (apparently contrary to the spec) so a 256 entry table is always generated.
- */
-static void
-png_build_8bit_table(png_structp png_ptr, png_bytepp ptable,
- PNG_CONST png_fixed_point gamma_val)
-{
- unsigned int i;
- png_bytep table = *ptable = (png_bytep)png_malloc(png_ptr, 256);
-
- if (png_gamma_significant(gamma_val)) for (i=0; i<256; i++)
- table[i] = png_gamma_8bit_correct(i, gamma_val);
-
- else for (i=0; i<256; ++i)
- table[i] = (png_byte)i;
-}
-
-/* We build the 8- or 16-bit gamma tables here. Note that for 16-bit
- * tables, we don't make a full table if we are reducing to 8-bit in
- * the future. Note also how the gamma_16 tables are segmented so that
- * we don't need to allocate > 64K chunks for a full 16-bit table.
- */
-void /* PRIVATE */
-png_build_gamma_table(png_structp png_ptr, int bit_depth)
-{
- png_debug(1, "in png_build_gamma_table");
-
- if (bit_depth <= 8)
- {
- png_build_8bit_table(png_ptr, &png_ptr->gamma_table,
- png_ptr->screen_gamma > 0 ? png_reciprocal2(png_ptr->gamma,
- png_ptr->screen_gamma) : PNG_FP_1);
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
- defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
- if (png_ptr->transformations & ((PNG_BACKGROUND) | PNG_RGB_TO_GRAY))
- {
- png_build_8bit_table(png_ptr, &png_ptr->gamma_to_1,
- png_reciprocal(png_ptr->gamma));
-
- png_build_8bit_table(png_ptr, &png_ptr->gamma_from_1,
- png_ptr->screen_gamma > 0 ? png_reciprocal(png_ptr->screen_gamma) :
- png_ptr->gamma/* Probably doing rgb_to_gray */);
- }
-#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_RGB_TO_GRAY_SUPPORTED */
- }
- else
- {
- png_byte shift, sig_bit;
-
- if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
- {
- sig_bit = png_ptr->sig_bit.red;
-
- if (png_ptr->sig_bit.green > sig_bit)
- sig_bit = png_ptr->sig_bit.green;
-
- if (png_ptr->sig_bit.blue > sig_bit)
- sig_bit = png_ptr->sig_bit.blue;
- }
- else
- sig_bit = png_ptr->sig_bit.gray;
-
- /* 16 bit gamma code uses this equation:
- *
- * ov = table[(iv & 0xff) >> gamma_shift][iv >> 8]
- *
- * Where 'iv' is the input color value and 'ov' is the output value -
- * pow(iv, gamma).
- *
- * Thus the gamma table consists of up to 256 256 entry tables. The table
- * is selected by the (8-gamma_shift) most significant of the low 8 bits of
- * the color value then indexed by the upper 8 bits:
- *
- * table[low bits][high 8 bits]
- *
- * So the table 'n' corresponds to all those 'iv' of:
- *
- * ..<(n+1 << gamma_shift)-1>
- *
- */
- if (sig_bit > 0 && sig_bit < 16U)
- shift = (png_byte)(16U - sig_bit); /* shift == insignificant bits */
-
- else
- shift = 0; /* keep all 16 bits */
-
- if (png_ptr->transformations & PNG_16_TO_8)
- {
- /* PNG_MAX_GAMMA_8 is the number of bits to keep - effectively
- * the significant bits in the *input* when the output will
- * eventually be 8 bits. By default it is 11.
- */
- if (shift < (16U - PNG_MAX_GAMMA_8))
- shift = (16U - PNG_MAX_GAMMA_8);
- }
-
- if (shift > 8U)
- shift = 8U; /* Guarantees at least one table! */
-
- png_ptr->gamma_shift = shift;
-
-#ifdef PNG_16BIT_SUPPORTED
- if (png_ptr->transformations & (PNG_16_TO_8 | PNG_BACKGROUND))
-#endif
- png_build_16to8_table(png_ptr, &png_ptr->gamma_16_table, shift,
- png_ptr->screen_gamma > 0 ? png_product2(png_ptr->gamma,
- png_ptr->screen_gamma) : PNG_FP_1);
-
-#ifdef PNG_16BIT_SUPPORTED
- else
- png_build_16bit_table(png_ptr, &png_ptr->gamma_16_table, shift,
- png_ptr->screen_gamma > 0 ? png_reciprocal2(png_ptr->gamma,
- png_ptr->screen_gamma) : PNG_FP_1);
-#endif
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
- defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
- if (png_ptr->transformations & (PNG_BACKGROUND | PNG_RGB_TO_GRAY))
- {
- png_build_16bit_table(png_ptr, &png_ptr->gamma_16_to_1, shift,
- png_reciprocal(png_ptr->gamma));
-
- /* Notice that the '16 from 1' table should be full precision, however
- * the lookup on this table still uses gamma_shift, so it can't be.
- * TODO: fix this.
- */
- png_build_16bit_table(png_ptr, &png_ptr->gamma_16_from_1, shift,
- png_ptr->screen_gamma > 0 ? png_reciprocal(png_ptr->screen_gamma) :
- png_ptr->gamma/* Probably doing rgb_to_gray */);
- }
-#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_RGB_TO_GRAY_SUPPORTED */
- }
-}
-#endif /* READ_GAMMA */
-#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
+
+/* png.c - location for general purpose libpng functions
+ *
+ * Last changed in libpng 1.2.46 [February 25, 2011]
+ * Copyright (c) 1998-2011 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_EXTERN
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+
+/* Generate a compiler error if there is an old png.h in the search path. */
+typedef version_1_2_50 Your_png_h_is_not_version_1_2_50;
+
+/* Version information for C files. This had better match the version
+ * string defined in png.h.
+ */
+
+#ifdef PNG_USE_GLOBAL_ARRAYS
+/* png_libpng_ver was changed to a function in version 1.0.5c */
+PNG_CONST char png_libpng_ver[18] = PNG_LIBPNG_VER_STRING;
+
+#ifdef PNG_READ_SUPPORTED
+
+/* png_sig was changed to a function in version 1.0.5c */
+/* Place to hold the signature string for a PNG file. */
+PNG_CONST png_byte FARDATA png_sig[8] = {137, 80, 78, 71, 13, 10, 26, 10};
+#endif /* PNG_READ_SUPPORTED */
+
+/* Invoke global declarations for constant strings for known chunk types */
+PNG_IHDR;
+PNG_IDAT;
+PNG_IEND;
+PNG_PLTE;
+PNG_bKGD;
+PNG_cHRM;
+PNG_gAMA;
+PNG_hIST;
+PNG_iCCP;
+PNG_iTXt;
+PNG_oFFs;
+PNG_pCAL;
+PNG_sCAL;
+PNG_pHYs;
+PNG_sBIT;
+PNG_sPLT;
+PNG_sRGB;
+PNG_tEXt;
+PNG_tIME;
+PNG_tRNS;
+PNG_zTXt;
+
+#ifdef PNG_READ_SUPPORTED
+/* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
+
+/* Start of interlace block */
+PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};
+
+/* Offset to next interlace block */
+PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
+
+/* Start of interlace block in the y direction */
+PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
+
+/* Offset to next interlace block in the y direction */
+PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
+
+/* Height of interlace block. This is not currently used - if you need
+ * it, uncomment it here and in png.h
+PNG_CONST int FARDATA png_pass_height[] = {8, 8, 4, 4, 2, 2, 1};
+*/
+
+/* Mask to determine which pixels are valid in a pass */
+PNG_CONST int FARDATA png_pass_mask[] =
+ {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
+
+/* Mask to determine which pixels to overwrite while displaying */
+PNG_CONST int FARDATA png_pass_dsp_mask[]
+ = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};
+
+#endif /* PNG_READ_SUPPORTED */
+#endif /* PNG_USE_GLOBAL_ARRAYS */
+
+/* Tells libpng that we have already handled the first "num_bytes" bytes
+ * of the PNG file signature. If the PNG data is embedded into another
+ * stream we can set num_bytes = 8 so that libpng will not attempt to read
+ * or write any of the magic bytes before it starts on the IHDR.
+ */
+
+#ifdef PNG_READ_SUPPORTED
+void PNGAPI
+png_set_sig_bytes(png_structp png_ptr, int num_bytes)
+{
+ png_debug(1, "in png_set_sig_bytes");
+
+ if (png_ptr == NULL)
+ return;
+
+ if (num_bytes > 8)
+ png_error(png_ptr, "Too many bytes for PNG signature.");
+
+ png_ptr->sig_bytes = (png_byte)(num_bytes < 0 ? 0 : num_bytes);
+}
+
+/* Checks whether the supplied bytes match the PNG signature. We allow
+ * checking less than the full 8-byte signature so that those apps that
+ * already read the first few bytes of a file to determine the file type
+ * can simply check the remaining bytes for extra assurance. Returns
+ * an integer less than, equal to, or greater than zero if sig is found,
+ * respectively, to be less than, to match, or be greater than the correct
+ * PNG signature (this is the same behaviour as strcmp, memcmp, etc).
+ */
+int PNGAPI
+png_sig_cmp(png_bytep sig, png_size_t start, png_size_t num_to_check)
+{
+ png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
+ if (num_to_check > 8)
+ num_to_check = 8;
+ else if (num_to_check < 1)
+ return (-1);
+
+ if (start > 7)
+ return (-1);
+
+ if (start + num_to_check > 8)
+ num_to_check = 8 - start;
+
+ return ((int)(png_memcmp(&sig[start], &png_signature[start], num_to_check)));
+}
+
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
+/* (Obsolete) function to check signature bytes. It does not allow one
+ * to check a partial signature. This function might be removed in the
+ * future - use png_sig_cmp(). Returns true (nonzero) if the file is PNG.
+ */
+int PNGAPI
+png_check_sig(png_bytep sig, int num)
+{
+ return ((int)!png_sig_cmp(sig, (png_size_t)0, (png_size_t)num));
+}
+#endif
+#endif /* PNG_READ_SUPPORTED */
+
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+/* Function to allocate memory for zlib and clear it to 0. */
+#ifdef PNG_1_0_X
+voidpf PNGAPI
+#else
+voidpf /* PRIVATE */
+#endif
+png_zalloc(voidpf png_ptr, uInt items, uInt size)
+{
+ png_voidp ptr;
+ png_structp p=(png_structp)png_ptr;
+ png_uint_32 save_flags=p->flags;
+ png_uint_32 num_bytes;
+
+ if (png_ptr == NULL)
+ return (NULL);
+ if (items > PNG_UINT_32_MAX/size)
+ {
+ png_warning (p, "Potential overflow in png_zalloc()");
+ return (NULL);
+ }
+ num_bytes = (png_uint_32)items * size;
+
+ p->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
+ ptr = (png_voidp)png_malloc((png_structp)png_ptr, num_bytes);
+ p->flags=save_flags;
+
+#if defined(PNG_1_0_X) && !defined(PNG_NO_ZALLOC_ZERO)
+ if (ptr == NULL)
+ return ((voidpf)ptr);
+
+ if (num_bytes > (png_uint_32)0x8000L)
+ {
+ png_memset(ptr, 0, (png_size_t)0x8000L);
+ png_memset((png_bytep)ptr + (png_size_t)0x8000L, 0,
+ (png_size_t)(num_bytes - (png_uint_32)0x8000L));
+ }
+ else
+ {
+ png_memset(ptr, 0, (png_size_t)num_bytes);
+ }
+#endif
+ return ((voidpf)ptr);
+}
+
+/* Function to free memory for zlib */
+#ifdef PNG_1_0_X
+void PNGAPI
+#else
+void /* PRIVATE */
+#endif
+png_zfree(voidpf png_ptr, voidpf ptr)
+{
+ png_free((png_structp)png_ptr, (png_voidp)ptr);
+}
+
+/* Reset the CRC variable to 32 bits of 1's. Care must be taken
+ * in case CRC is > 32 bits to leave the top bits 0.
+ */
+void /* PRIVATE */
+png_reset_crc(png_structp png_ptr)
+{
+ png_ptr->crc = crc32(0, Z_NULL, 0);
+}
+
+/* Calculate the CRC over a section of data. We can only pass as
+ * much data to this routine as the largest single buffer size. We
+ * also check that this data will actually be used before going to the
+ * trouble of calculating it.
+ */
+void /* PRIVATE */
+png_calculate_crc(png_structp png_ptr, png_bytep ptr, png_size_t length)
+{
+ int need_crc = 1;
+
+ if (png_ptr->chunk_name[0] & 0x20) /* ancillary */
+ {
+ if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) ==
+ (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN))
+ need_crc = 0;
+ }
+ else /* critical */
+ {
+ if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE)
+ need_crc = 0;
+ }
+
+ if (need_crc)
+ png_ptr->crc = crc32(png_ptr->crc, ptr, (uInt)length);
+}
+
+/* Allocate the memory for an info_struct for the application. We don't
+ * really need the png_ptr, but it could potentially be useful in the
+ * future. This should be used in favour of malloc(png_sizeof(png_info))
+ * and png_info_init() so that applications that want to use a shared
+ * libpng don't have to be recompiled if png_info changes size.
+ */
+png_infop PNGAPI
+png_create_info_struct(png_structp png_ptr)
+{
+ png_infop info_ptr;
+
+ png_debug(1, "in png_create_info_struct");
+
+ if (png_ptr == NULL)
+ return (NULL);
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ info_ptr = (png_infop)png_create_struct_2(PNG_STRUCT_INFO,
+ png_ptr->malloc_fn, png_ptr->mem_ptr);
+#else
+ info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
+#endif
+ if (info_ptr != NULL)
+ png_info_init_3(&info_ptr, png_sizeof(png_info));
+
+ return (info_ptr);
+}
+
+/* This function frees the memory associated with a single info struct.
+ * Normally, one would use either png_destroy_read_struct() or
+ * png_destroy_write_struct() to free an info struct, but this may be
+ * useful for some applications.
+ */
+void PNGAPI
+png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr)
+{
+ png_infop info_ptr = NULL;
+
+ png_debug(1, "in png_destroy_info_struct");
+
+ if (png_ptr == NULL)
+ return;
+
+ if (info_ptr_ptr != NULL)
+ info_ptr = *info_ptr_ptr;
+
+ if (info_ptr != NULL)
+ {
+ png_info_destroy(png_ptr, info_ptr);
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_destroy_struct_2((png_voidp)info_ptr, png_ptr->free_fn,
+ png_ptr->mem_ptr);
+#else
+ png_destroy_struct((png_voidp)info_ptr);
+#endif
+ *info_ptr_ptr = NULL;
+ }
+}
+
+/* Initialize the info structure. This is now an internal function (0.89)
+ * and applications using it are urged to use png_create_info_struct()
+ * instead.
+ */
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
+#undef png_info_init
+void PNGAPI
+png_info_init(png_infop info_ptr)
+{
+ /* We only come here via pre-1.0.12-compiled applications */
+ png_info_init_3(&info_ptr, 0);
+}
+#endif
+
+void PNGAPI
+png_info_init_3(png_infopp ptr_ptr, png_size_t png_info_struct_size)
+{
+ png_infop info_ptr = *ptr_ptr;
+
+ png_debug(1, "in png_info_init_3");
+
+ if (info_ptr == NULL)
+ return;
+
+ if (png_sizeof(png_info) > png_info_struct_size)
+ {
+ png_destroy_struct(info_ptr);
+ info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
+ *ptr_ptr = info_ptr;
+ }
+
+ /* Set everything to 0 */
+ png_memset(info_ptr, 0, png_sizeof(png_info));
+}
+
+#ifdef PNG_FREE_ME_SUPPORTED
+void PNGAPI
+png_data_freer(png_structp png_ptr, png_infop info_ptr,
+ int freer, png_uint_32 mask)
+{
+ png_debug(1, "in png_data_freer");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ if (freer == PNG_DESTROY_WILL_FREE_DATA)
+ info_ptr->free_me |= mask;
+ else if (freer == PNG_USER_WILL_FREE_DATA)
+ info_ptr->free_me &= ~mask;
+ else
+ png_warning(png_ptr,
+ "Unknown freer parameter in png_data_freer.");
+}
+#endif
+
+void PNGAPI
+png_free_data(png_structp png_ptr, png_infop info_ptr, png_uint_32 mask,
+ int num)
+{
+ png_debug(1, "in png_free_data");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+#ifdef PNG_TEXT_SUPPORTED
+ /* Free text item num or (if num == -1) all text items */
+#ifdef PNG_FREE_ME_SUPPORTED
+ if ((mask & PNG_FREE_TEXT) & info_ptr->free_me)
+#else
+ if (mask & PNG_FREE_TEXT)
+#endif
+ {
+ if (num != -1)
+ {
+ if (info_ptr->text && info_ptr->text[num].key)
+ {
+ png_free(png_ptr, info_ptr->text[num].key);
+ info_ptr->text[num].key = NULL;
+ }
+ }
+ else
+ {
+ int i;
+ for (i = 0; i < info_ptr->num_text; i++)
+ png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, i);
+ png_free(png_ptr, info_ptr->text);
+ info_ptr->text = NULL;
+ info_ptr->num_text=0;
+ }
+ }
+#endif
+
+#ifdef PNG_tRNS_SUPPORTED
+ /* Free any tRNS entry */
+#ifdef PNG_FREE_ME_SUPPORTED
+ if ((mask & PNG_FREE_TRNS) & info_ptr->free_me)
+#else
+ if ((mask & PNG_FREE_TRNS) && (png_ptr->flags & PNG_FLAG_FREE_TRNS))
+#endif
+ {
+ png_free(png_ptr, info_ptr->trans);
+ info_ptr->trans = NULL;
+ info_ptr->valid &= ~PNG_INFO_tRNS;
+#ifndef PNG_FREE_ME_SUPPORTED
+ png_ptr->flags &= ~PNG_FLAG_FREE_TRNS;
+#endif
+ }
+#endif
+
+#ifdef PNG_sCAL_SUPPORTED
+ /* Free any sCAL entry */
+#ifdef PNG_FREE_ME_SUPPORTED
+ if ((mask & PNG_FREE_SCAL) & info_ptr->free_me)
+#else
+ if (mask & PNG_FREE_SCAL)
+#endif
+ {
+#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
+ png_free(png_ptr, info_ptr->scal_s_width);
+ png_free(png_ptr, info_ptr->scal_s_height);
+ info_ptr->scal_s_width = NULL;
+ info_ptr->scal_s_height = NULL;
+#endif
+ info_ptr->valid &= ~PNG_INFO_sCAL;
+ }
+#endif
+
+#ifdef PNG_pCAL_SUPPORTED
+ /* Free any pCAL entry */
+#ifdef PNG_FREE_ME_SUPPORTED
+ if ((mask & PNG_FREE_PCAL) & info_ptr->free_me)
+#else
+ if (mask & PNG_FREE_PCAL)
+#endif
+ {
+ png_free(png_ptr, info_ptr->pcal_purpose);
+ png_free(png_ptr, info_ptr->pcal_units);
+ info_ptr->pcal_purpose = NULL;
+ info_ptr->pcal_units = NULL;
+ if (info_ptr->pcal_params != NULL)
+ {
+ int i;
+ for (i = 0; i < (int)info_ptr->pcal_nparams; i++)
+ {
+ png_free(png_ptr, info_ptr->pcal_params[i]);
+ info_ptr->pcal_params[i] = NULL;
+ }
+ png_free(png_ptr, info_ptr->pcal_params);
+ info_ptr->pcal_params = NULL;
+ }
+ info_ptr->valid &= ~PNG_INFO_pCAL;
+ }
+#endif
+
+#ifdef PNG_iCCP_SUPPORTED
+ /* Free any iCCP entry */
+#ifdef PNG_FREE_ME_SUPPORTED
+ if ((mask & PNG_FREE_ICCP) & info_ptr->free_me)
+#else
+ if (mask & PNG_FREE_ICCP)
+#endif
+ {
+ png_free(png_ptr, info_ptr->iccp_name);
+ png_free(png_ptr, info_ptr->iccp_profile);
+ info_ptr->iccp_name = NULL;
+ info_ptr->iccp_profile = NULL;
+ info_ptr->valid &= ~PNG_INFO_iCCP;
+ }
+#endif
+
+#ifdef PNG_sPLT_SUPPORTED
+ /* Free a given sPLT entry, or (if num == -1) all sPLT entries */
+#ifdef PNG_FREE_ME_SUPPORTED
+ if ((mask & PNG_FREE_SPLT) & info_ptr->free_me)
+#else
+ if (mask & PNG_FREE_SPLT)
+#endif
+ {
+ if (num != -1)
+ {
+ if (info_ptr->splt_palettes)
+ {
+ png_free(png_ptr, info_ptr->splt_palettes[num].name);
+ png_free(png_ptr, info_ptr->splt_palettes[num].entries);
+ info_ptr->splt_palettes[num].name = NULL;
+ info_ptr->splt_palettes[num].entries = NULL;
+ }
+ }
+ else
+ {
+ if (info_ptr->splt_palettes_num)
+ {
+ int i;
+ for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
+ png_free_data(png_ptr, info_ptr, PNG_FREE_SPLT, i);
+
+ png_free(png_ptr, info_ptr->splt_palettes);
+ info_ptr->splt_palettes = NULL;
+ info_ptr->splt_palettes_num = 0;
+ }
+ info_ptr->valid &= ~PNG_INFO_sPLT;
+ }
+ }
+#endif
+
+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
+ if (png_ptr->unknown_chunk.data)
+ {
+ png_free(png_ptr, png_ptr->unknown_chunk.data);
+ png_ptr->unknown_chunk.data = NULL;
+ }
+
+#ifdef PNG_FREE_ME_SUPPORTED
+ if ((mask & PNG_FREE_UNKN) & info_ptr->free_me)
+#else
+ if (mask & PNG_FREE_UNKN)
+#endif
+ {
+ if (num != -1)
+ {
+ if (info_ptr->unknown_chunks)
+ {
+ png_free(png_ptr, info_ptr->unknown_chunks[num].data);
+ info_ptr->unknown_chunks[num].data = NULL;
+ }
+ }
+ else
+ {
+ int i;
+
+ if (info_ptr->unknown_chunks_num)
+ {
+ for (i = 0; i < (int)info_ptr->unknown_chunks_num; i++)
+ png_free_data(png_ptr, info_ptr, PNG_FREE_UNKN, i);
+
+ png_free(png_ptr, info_ptr->unknown_chunks);
+ info_ptr->unknown_chunks = NULL;
+ info_ptr->unknown_chunks_num = 0;
+ }
+ }
+ }
+#endif
+
+#ifdef PNG_hIST_SUPPORTED
+ /* Free any hIST entry */
+#ifdef PNG_FREE_ME_SUPPORTED
+ if ((mask & PNG_FREE_HIST) & info_ptr->free_me)
+#else
+ if ((mask & PNG_FREE_HIST) && (png_ptr->flags & PNG_FLAG_FREE_HIST))
+#endif
+ {
+ png_free(png_ptr, info_ptr->hist);
+ info_ptr->hist = NULL;
+ info_ptr->valid &= ~PNG_INFO_hIST;
+#ifndef PNG_FREE_ME_SUPPORTED
+ png_ptr->flags &= ~PNG_FLAG_FREE_HIST;
+#endif
+ }
+#endif
+
+ /* Free any PLTE entry that was internally allocated */
+#ifdef PNG_FREE_ME_SUPPORTED
+ if ((mask & PNG_FREE_PLTE) & info_ptr->free_me)
+#else
+ if ((mask & PNG_FREE_PLTE) && (png_ptr->flags & PNG_FLAG_FREE_PLTE))
+#endif
+ {
+ png_zfree(png_ptr, info_ptr->palette);
+ info_ptr->palette = NULL;
+ info_ptr->valid &= ~PNG_INFO_PLTE;
+#ifndef PNG_FREE_ME_SUPPORTED
+ png_ptr->flags &= ~PNG_FLAG_FREE_PLTE;
+#endif
+ info_ptr->num_palette = 0;
+ }
+
+#ifdef PNG_INFO_IMAGE_SUPPORTED
+ /* Free any image bits attached to the info structure */
+#ifdef PNG_FREE_ME_SUPPORTED
+ if ((mask & PNG_FREE_ROWS) & info_ptr->free_me)
+#else
+ if (mask & PNG_FREE_ROWS)
+#endif
+ {
+ if (info_ptr->row_pointers)
+ {
+ int row;
+ for (row = 0; row < (int)info_ptr->height; row++)
+ {
+ png_free(png_ptr, info_ptr->row_pointers[row]);
+ info_ptr->row_pointers[row] = NULL;
+ }
+ png_free(png_ptr, info_ptr->row_pointers);
+ info_ptr->row_pointers = NULL;
+ }
+ info_ptr->valid &= ~PNG_INFO_IDAT;
+ }
+#endif
+
+#ifdef PNG_FREE_ME_SUPPORTED
+ if (num == -1)
+ info_ptr->free_me &= ~mask;
+ else
+ info_ptr->free_me &= ~(mask & ~PNG_FREE_MUL);
+#endif
+}
+
+/* This is an internal routine to free any memory that the info struct is
+ * pointing to before re-using it or freeing the struct itself. Recall
+ * that png_free() checks for NULL pointers for us.
+ */
+void /* PRIVATE */
+png_info_destroy(png_structp png_ptr, png_infop info_ptr)
+{
+ png_debug(1, "in png_info_destroy");
+
+ png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1);
+
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+ if (png_ptr->num_chunk_list)
+ {
+ png_free(png_ptr, png_ptr->chunk_list);
+ png_ptr->chunk_list = NULL;
+ png_ptr->num_chunk_list = 0;
+ }
+#endif
+
+ png_info_init_3(&info_ptr, png_sizeof(png_info));
+}
+#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
+
+/* This function returns a pointer to the io_ptr associated with the user
+ * functions. The application should free any memory associated with this
+ * pointer before png_write_destroy() or png_read_destroy() are called.
+ */
+png_voidp PNGAPI
+png_get_io_ptr(png_structp png_ptr)
+{
+ if (png_ptr == NULL)
+ return (NULL);
+ return (png_ptr->io_ptr);
+}
+
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+#ifdef PNG_STDIO_SUPPORTED
+/* Initialize the default input/output functions for the PNG file. If you
+ * use your own read or write routines, you can call either png_set_read_fn()
+ * or png_set_write_fn() instead of png_init_io(). If you have defined
+ * PNG_NO_STDIO, you must use a function of your own because "FILE *" isn't
+ * necessarily available.
+ */
+void PNGAPI
+png_init_io(png_structp png_ptr, png_FILE_p fp)
+{
+ png_debug(1, "in png_init_io");
+
+ if (png_ptr == NULL)
+ return;
+
+ png_ptr->io_ptr = (png_voidp)fp;
+}
+#endif
+
+#ifdef PNG_TIME_RFC1123_SUPPORTED
+/* Convert the supplied time into an RFC 1123 string suitable for use in
+ * a "Creation Time" or other text-based time string.
+ */
+png_charp PNGAPI
+png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
+{
+ static PNG_CONST char short_months[12][4] =
+ {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
+
+ if (png_ptr == NULL)
+ return (NULL);
+ if (png_ptr->time_buffer == NULL)
+ {
+ png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29*
+ png_sizeof(char)));
+ }
+
+#ifdef _WIN32_WCE
+ {
+ wchar_t time_buf[29];
+ wsprintf(time_buf, TEXT("%d %S %d %02d:%02d:%02d +0000"),
+ ptime->day % 32, short_months[(ptime->month - 1) % 12],
+ ptime->year, ptime->hour % 24, ptime->minute % 60,
+ ptime->second % 61);
+ WideCharToMultiByte(CP_ACP, 0, time_buf, -1, png_ptr->time_buffer,
+ 29, NULL, NULL);
+ }
+#else
+#ifdef USE_FAR_KEYWORD
+ {
+ char near_time_buf[29];
+ png_snprintf6(near_time_buf, 29, "%d %s %d %02d:%02d:%02d +0000",
+ ptime->day % 32, short_months[(ptime->month - 1) % 12],
+ ptime->year, ptime->hour % 24, ptime->minute % 60,
+ ptime->second % 61);
+ png_memcpy(png_ptr->time_buffer, near_time_buf,
+ 29*png_sizeof(char));
+ }
+#else
+ png_snprintf6(png_ptr->time_buffer, 29, "%d %s %d %02d:%02d:%02d +0000",
+ ptime->day % 32, short_months[(ptime->month - 1) % 12],
+ ptime->year, ptime->hour % 24, ptime->minute % 60,
+ ptime->second % 61);
+#endif
+#endif /* _WIN32_WCE */
+ return ((png_charp)png_ptr->time_buffer);
+}
+#endif /* PNG_TIME_RFC1123_SUPPORTED */
+
+#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
+
+png_charp PNGAPI
+png_get_copyright(png_structp png_ptr)
+{
+ png_ptr = png_ptr; /* Silence compiler warning about unused png_ptr */
+#ifdef PNG_STRING_COPYRIGHT
+ return PNG_STRING_COPYRIGHT
+#else
+#ifdef __STDC__
+ return ((png_charp) PNG_STRING_NEWLINE \
+ "libpng version 1.2.50 - July 10, 2012" PNG_STRING_NEWLINE \
+ "Copyright (c) 1998-2011 Glenn Randers-Pehrson" PNG_STRING_NEWLINE \
+ "Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
+ "Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
+ PNG_STRING_NEWLINE);
+#else
+ return ((png_charp) "libpng version 1.2.50 - July 10, 2012\
+ Copyright (c) 1998-2011 Glenn Randers-Pehrson\
+ Copyright (c) 1996-1997 Andreas Dilger\
+ Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.");
+#endif
+#endif
+}
+
+/* The following return the library version as a short string in the
+ * format 1.0.0 through 99.99.99zz. To get the version of *.h files
+ * used with your application, print out PNG_LIBPNG_VER_STRING, which
+ * is defined in png.h.
+ * Note: now there is no difference between png_get_libpng_ver() and
+ * png_get_header_ver(). Due to the version_nn_nn_nn typedef guard,
+ * it is guaranteed that png.c uses the correct version of png.h.
+ */
+png_charp PNGAPI
+png_get_libpng_ver(png_structp png_ptr)
+{
+ /* Version of *.c files used when building libpng */
+ png_ptr = png_ptr; /* Silence compiler warning about unused png_ptr */
+ return ((png_charp) PNG_LIBPNG_VER_STRING);
+}
+
+png_charp PNGAPI
+png_get_header_ver(png_structp png_ptr)
+{
+ /* Version of *.h files used when building libpng */
+ png_ptr = png_ptr; /* Silence compiler warning about unused png_ptr */
+ return ((png_charp) PNG_LIBPNG_VER_STRING);
+}
+
+png_charp PNGAPI
+png_get_header_version(png_structp png_ptr)
+{
+ /* Returns longer string containing both version and date */
+ png_ptr = png_ptr; /* Silence compiler warning about unused png_ptr */
+#ifdef __STDC__
+ return ((png_charp) PNG_HEADER_VERSION_STRING
+#ifndef PNG_READ_SUPPORTED
+ " (NO READ SUPPORT)"
+#endif
+ PNG_STRING_NEWLINE);
+#else
+ return ((png_charp) PNG_HEADER_VERSION_STRING);
+#endif
+}
+
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+int PNGAPI
+png_handle_as_unknown(png_structp png_ptr, png_bytep chunk_name)
+{
+ /* Check chunk_name and return "keep" value if it's on the list, else 0 */
+ int i;
+ png_bytep p;
+ if (png_ptr == NULL || chunk_name == NULL || png_ptr->num_chunk_list<=0)
+ return 0;
+ p = png_ptr->chunk_list + png_ptr->num_chunk_list*5 - 5;
+ for (i = png_ptr->num_chunk_list; i; i--, p -= 5)
+ if (!png_memcmp(chunk_name, p, 4))
+ return ((int)*(p + 4));
+ return 0;
+}
+#endif
+
+/* This function, added to libpng-1.0.6g, is untested. */
+int PNGAPI
+png_reset_zstream(png_structp png_ptr)
+{
+ if (png_ptr == NULL)
+ return Z_STREAM_ERROR;
+ return (inflateReset(&png_ptr->zstream));
+}
+#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
+
+/* This function was added to libpng-1.0.7 */
+png_uint_32 PNGAPI
+png_access_version_number(void)
+{
+ /* Version of *.c files used when building libpng */
+ return((png_uint_32) PNG_LIBPNG_VER);
+}
+
+
+#if defined(PNG_READ_SUPPORTED) && defined(PNG_ASSEMBLER_CODE_SUPPORTED)
+#ifndef PNG_1_0_X
+/* This function was added to libpng 1.2.0 */
+int PNGAPI
+png_mmx_support(void)
+{
+ /* Obsolete, to be removed from libpng-1.4.0 */
+ return -1;
+}
+#endif /* PNG_1_0_X */
+#endif /* PNG_READ_SUPPORTED && PNG_ASSEMBLER_CODE_SUPPORTED */
+
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+#ifdef PNG_SIZE_T
+/* Added at libpng version 1.2.6 */
+ PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size));
+png_size_t PNGAPI
+png_convert_size(size_t size)
+{
+ if (size > (png_size_t)-1)
+ PNG_ABORT(); /* We haven't got access to png_ptr, so no png_error() */
+ return ((png_size_t)size);
+}
+#endif /* PNG_SIZE_T */
+
+/* Added at libpng version 1.2.34 and 1.4.0 (moved from pngset.c) */
+#ifdef PNG_cHRM_SUPPORTED
+#ifdef PNG_CHECK_cHRM_SUPPORTED
+
+/*
+ * Multiply two 32-bit numbers, V1 and V2, using 32-bit
+ * arithmetic, to produce a 64 bit result in the HI/LO words.
+ *
+ * A B
+ * x C D
+ * ------
+ * AD || BD
+ * AC || CB || 0
+ *
+ * where A and B are the high and low 16-bit words of V1,
+ * C and D are the 16-bit words of V2, AD is the product of
+ * A and D, and X || Y is (X << 16) + Y.
+*/
+
+void /* PRIVATE */
+png_64bit_product (long v1, long v2, unsigned long *hi_product,
+ unsigned long *lo_product)
+{
+ int a, b, c, d;
+ long lo, hi, x, y;
+
+ a = (v1 >> 16) & 0xffff;
+ b = v1 & 0xffff;
+ c = (v2 >> 16) & 0xffff;
+ d = v2 & 0xffff;
+
+ lo = b * d; /* BD */
+ x = a * d + c * b; /* AD + CB */
+ y = ((lo >> 16) & 0xffff) + x;
+
+ lo = (lo & 0xffff) | ((y & 0xffff) << 16);
+ hi = (y >> 16) & 0xffff;
+
+ hi += a * c; /* AC */
+
+ *hi_product = (unsigned long)hi;
+ *lo_product = (unsigned long)lo;
+}
+
+int /* PRIVATE */
+png_check_cHRM_fixed(png_structp png_ptr,
+ png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x,
+ png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y,
+ png_fixed_point blue_x, png_fixed_point blue_y)
+{
+ int ret = 1;
+ unsigned long xy_hi,xy_lo,yx_hi,yx_lo;
+
+ png_debug(1, "in function png_check_cHRM_fixed");
+
+ if (png_ptr == NULL)
+ return 0;
+
+ if (white_x < 0 || white_y <= 0 ||
+ red_x < 0 || red_y < 0 ||
+ green_x < 0 || green_y < 0 ||
+ blue_x < 0 || blue_y < 0)
+ {
+ png_warning(png_ptr,
+ "Ignoring attempt to set negative chromaticity value");
+ ret = 0;
+ }
+ if (white_x > (png_fixed_point) PNG_UINT_31_MAX ||
+ white_y > (png_fixed_point) PNG_UINT_31_MAX ||
+ red_x > (png_fixed_point) PNG_UINT_31_MAX ||
+ red_y > (png_fixed_point) PNG_UINT_31_MAX ||
+ green_x > (png_fixed_point) PNG_UINT_31_MAX ||
+ green_y > (png_fixed_point) PNG_UINT_31_MAX ||
+ blue_x > (png_fixed_point) PNG_UINT_31_MAX ||
+ blue_y > (png_fixed_point) PNG_UINT_31_MAX )
+ {
+ png_warning(png_ptr,
+ "Ignoring attempt to set chromaticity value exceeding 21474.83");
+ ret = 0;
+ }
+ if (white_x > 100000L - white_y)
+ {
+ png_warning(png_ptr, "Invalid cHRM white point");
+ ret = 0;
+ }
+ if (red_x > 100000L - red_y)
+ {
+ png_warning(png_ptr, "Invalid cHRM red point");
+ ret = 0;
+ }
+ if (green_x > 100000L - green_y)
+ {
+ png_warning(png_ptr, "Invalid cHRM green point");
+ ret = 0;
+ }
+ if (blue_x > 100000L - blue_y)
+ {
+ png_warning(png_ptr, "Invalid cHRM blue point");
+ ret = 0;
+ }
+
+ png_64bit_product(green_x - red_x, blue_y - red_y, &xy_hi, &xy_lo);
+ png_64bit_product(green_y - red_y, blue_x - red_x, &yx_hi, &yx_lo);
+
+ if (xy_hi == yx_hi && xy_lo == yx_lo)
+ {
+ png_warning(png_ptr,
+ "Ignoring attempt to set cHRM RGB triangle with zero area");
+ ret = 0;
+ }
+
+ return ret;
+}
+#endif /* PNG_CHECK_cHRM_SUPPORTED */
+#endif /* PNG_cHRM_SUPPORTED */
+
+void /* PRIVATE */
+png_check_IHDR(png_structp png_ptr,
+ png_uint_32 width, png_uint_32 height, int bit_depth,
+ int color_type, int interlace_type, int compression_type,
+ int filter_type)
+{
+ int error = 0;
+
+ /* Check for width and height valid values */
+ if (width == 0)
+ {
+ png_warning(png_ptr, "Image width is zero in IHDR");
+ error = 1;
+ }
+
+ if (height == 0)
+ {
+ png_warning(png_ptr, "Image height is zero in IHDR");
+ error = 1;
+ }
+
+#ifdef PNG_SET_USER_LIMITS_SUPPORTED
+ if (width > png_ptr->user_width_max || width > PNG_USER_WIDTH_MAX)
+#else
+ if (width > PNG_USER_WIDTH_MAX)
+#endif
+ {
+ png_warning(png_ptr, "Image width exceeds user limit in IHDR");
+ error = 1;
+ }
+
+#ifdef PNG_SET_USER_LIMITS_SUPPORTED
+ if (height > png_ptr->user_height_max || height > PNG_USER_HEIGHT_MAX)
+#else
+ if (height > PNG_USER_HEIGHT_MAX)
+#endif
+ {
+ png_warning(png_ptr, "Image height exceeds user limit in IHDR");
+ error = 1;
+ }
+
+ if (width > PNG_UINT_31_MAX)
+ {
+ png_warning(png_ptr, "Invalid image width in IHDR");
+ error = 1;
+ }
+
+ if ( height > PNG_UINT_31_MAX)
+ {
+ png_warning(png_ptr, "Invalid image height in IHDR");
+ error = 1;
+ }
+
+ if ( width > (PNG_UINT_32_MAX
+ >> 3) /* 8-byte RGBA pixels */
+ - 64 /* bigrowbuf hack */
+ - 1 /* filter byte */
+ - 7*8 /* rounding of width to multiple of 8 pixels */
+ - 8) /* extra max_pixel_depth pad */
+ png_warning(png_ptr, "Width is too large for libpng to process pixels");
+
+ /* Check other values */
+ if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 &&
+ bit_depth != 8 && bit_depth != 16)
+ {
+ png_warning(png_ptr, "Invalid bit depth in IHDR");
+ error = 1;
+ }
+
+ if (color_type < 0 || color_type == 1 ||
+ color_type == 5 || color_type > 6)
+ {
+ png_warning(png_ptr, "Invalid color type in IHDR");
+ error = 1;
+ }
+
+ if (((color_type == PNG_COLOR_TYPE_PALETTE) && bit_depth > 8) ||
+ ((color_type == PNG_COLOR_TYPE_RGB ||
+ color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
+ color_type == PNG_COLOR_TYPE_RGB_ALPHA) && bit_depth < 8))
+ {
+ png_warning(png_ptr, "Invalid color type/bit depth combination in IHDR");
+ error = 1;
+ }
+
+ if (interlace_type >= PNG_INTERLACE_LAST)
+ {
+ png_warning(png_ptr, "Unknown interlace method in IHDR");
+ error = 1;
+ }
+
+ if (compression_type != PNG_COMPRESSION_TYPE_BASE)
+ {
+ png_warning(png_ptr, "Unknown compression method in IHDR");
+ error = 1;
+ }
+
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ /* Accept filter_method 64 (intrapixel differencing) only if
+ * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and
+ * 2. Libpng did not read a PNG signature (this filter_method is only
+ * used in PNG datastreams that are embedded in MNG datastreams) and
+ * 3. The application called png_permit_mng_features with a mask that
+ * included PNG_FLAG_MNG_FILTER_64 and
+ * 4. The filter_method is 64 and
+ * 5. The color_type is RGB or RGBA
+ */
+ if ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) &&
+ png_ptr->mng_features_permitted)
+ png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
+
+ if (filter_type != PNG_FILTER_TYPE_BASE)
+ {
+ if (!((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
+ (filter_type == PNG_INTRAPIXEL_DIFFERENCING) &&
+ ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) == 0) &&
+ (color_type == PNG_COLOR_TYPE_RGB ||
+ color_type == PNG_COLOR_TYPE_RGB_ALPHA)))
+ {
+ png_warning(png_ptr, "Unknown filter method in IHDR");
+ error = 1;
+ }
+
+ if (png_ptr->mode & PNG_HAVE_PNG_SIGNATURE)
+ {
+ png_warning(png_ptr, "Invalid filter method in IHDR");
+ error = 1;
+ }
+ }
+
+#else
+ if (filter_type != PNG_FILTER_TYPE_BASE)
+ {
+ png_warning(png_ptr, "Unknown filter method in IHDR");
+ error = 1;
+ }
+#endif
+
+ if (error == 1)
+ png_error(png_ptr, "Invalid IHDR data");
+}
+#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
diff --git a/Externals/libpng/png.h b/Externals/libpng/png.h
index 100f56dba2..ffa6c1c4e2 100644
--- a/Externals/libpng/png.h
+++ b/Externals/libpng/png.h
@@ -1,2280 +1,3810 @@
-
-/* png.h - header file for PNG reference library
- *
- * libpng version 1.5.1 - February 3, 2011
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license (See LICENSE, below)
- *
- * Authors and maintainers:
- * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
- * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
- * libpng versions 0.97, January 1998, through 1.5.1 - February 3, 2011: Glenn
- * See also "Contributing Authors", below.
- *
- * Note about libpng version numbers:
- *
- * Due to various miscommunications, unforeseen code incompatibilities
- * and occasional factors outside the authors' control, version numbering
- * on the library has not always been consistent and straightforward.
- * The following table summarizes matters since version 0.89c, which was
- * the first widely used release:
- *
- * source png.h png.h shared-lib
- * version string int version
- * ------- ------ ----- ----------
- * 0.89c "1.0 beta 3" 0.89 89 1.0.89
- * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90]
- * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95]
- * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96]
- * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97]
- * 0.97c 0.97 97 2.0.97
- * 0.98 0.98 98 2.0.98
- * 0.99 0.99 98 2.0.99
- * 0.99a-m 0.99 99 2.0.99
- * 1.00 1.00 100 2.1.0 [100 should be 10000]
- * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000]
- * 1.0.1 png.h string is 10001 2.1.0
- * 1.0.1a-e identical to the 10002 from here on, the shared library
- * 1.0.2 source version) 10002 is 2.V where V is the source code
- * 1.0.2a-b 10003 version, except as noted.
- * 1.0.3 10003
- * 1.0.3a-d 10004
- * 1.0.4 10004
- * 1.0.4a-f 10005
- * 1.0.5 (+ 2 patches) 10005
- * 1.0.5a-d 10006
- * 1.0.5e-r 10100 (not source compatible)
- * 1.0.5s-v 10006 (not binary compatible)
- * 1.0.6 (+ 3 patches) 10006 (still binary incompatible)
- * 1.0.6d-f 10007 (still binary incompatible)
- * 1.0.6g 10007
- * 1.0.6h 10007 10.6h (testing xy.z so-numbering)
- * 1.0.6i 10007 10.6i
- * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0)
- * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible)
- * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible)
- * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible)
- * 1.0.7 1 10007 (still compatible)
- * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4
- * 1.0.8rc1 1 10008 2.1.0.8rc1
- * 1.0.8 1 10008 2.1.0.8
- * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6
- * 1.0.9rc1 1 10009 2.1.0.9rc1
- * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10
- * 1.0.9rc2 1 10009 2.1.0.9rc2
- * 1.0.9 1 10009 2.1.0.9
- * 1.0.10beta1 1 10010 2.1.0.10beta1
- * 1.0.10rc1 1 10010 2.1.0.10rc1
- * 1.0.10 1 10010 2.1.0.10
- * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3
- * 1.0.11rc1 1 10011 2.1.0.11rc1
- * 1.0.11 1 10011 2.1.0.11
- * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2
- * 1.0.12rc1 2 10012 2.1.0.12rc1
- * 1.0.12 2 10012 2.1.0.12
- * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned)
- * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2
- * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5
- * 1.2.0rc1 3 10200 3.1.2.0rc1
- * 1.2.0 3 10200 3.1.2.0
- * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4
- * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2
- * 1.2.1 3 10201 3.1.2.1
- * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6
- * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1
- * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1
- * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1
- * 1.0.13 10 10013 10.so.0.1.0.13
- * 1.2.2 12 10202 12.so.0.1.2.2
- * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6
- * 1.2.3 12 10203 12.so.0.1.2.3
- * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3
- * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1
- * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1
- * 1.0.14 10 10014 10.so.0.1.0.14
- * 1.2.4 13 10204 12.so.0.1.2.4
- * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2
- * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3
- * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3
- * 1.0.15 10 10015 10.so.0.1.0.15
- * 1.2.5 13 10205 12.so.0.1.2.5
- * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4
- * 1.0.16 10 10016 10.so.0.1.0.16
- * 1.2.6 13 10206 12.so.0.1.2.6
- * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2
- * 1.0.17rc1 10 10017 12.so.0.1.0.17rc1
- * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1
- * 1.0.17 10 10017 12.so.0.1.0.17
- * 1.2.7 13 10207 12.so.0.1.2.7
- * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5
- * 1.0.18rc1-5 10 10018 12.so.0.1.0.18rc1-5
- * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5
- * 1.0.18 10 10018 12.so.0.1.0.18
- * 1.2.8 13 10208 12.so.0.1.2.8
- * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3
- * 1.2.9beta4-11 13 10209 12.so.0.9[.0]
- * 1.2.9rc1 13 10209 12.so.0.9[.0]
- * 1.2.9 13 10209 12.so.0.9[.0]
- * 1.2.10beta1-7 13 10210 12.so.0.10[.0]
- * 1.2.10rc1-2 13 10210 12.so.0.10[.0]
- * 1.2.10 13 10210 12.so.0.10[.0]
- * 1.4.0beta1-5 14 10400 14.so.0.0[.0]
- * 1.2.11beta1-4 13 10211 12.so.0.11[.0]
- * 1.4.0beta7-8 14 10400 14.so.0.0[.0]
- * 1.2.11 13 10211 12.so.0.11[.0]
- * 1.2.12 13 10212 12.so.0.12[.0]
- * 1.4.0beta9-14 14 10400 14.so.0.0[.0]
- * 1.2.13 13 10213 12.so.0.13[.0]
- * 1.4.0beta15-36 14 10400 14.so.0.0[.0]
- * 1.4.0beta37-87 14 10400 14.so.14.0[.0]
- * 1.4.0rc01 14 10400 14.so.14.0[.0]
- * 1.4.0beta88-109 14 10400 14.so.14.0[.0]
- * 1.4.0rc02-08 14 10400 14.so.14.0[.0]
- * 1.4.0 14 10400 14.so.14.0[.0]
- * 1.4.1beta01-03 14 10401 14.so.14.1[.0]
- * 1.4.1rc01 14 10401 14.so.14.1[.0]
- * 1.4.1beta04-12 14 10401 14.so.14.1[.0]
- * 1.4.1 14 10401 14.so.14.1[.0]
- * 1.4.2 14 10402 14.so.14.2[.0]
- * 1.4.3 14 10403 14.so.14.3[.0]
- * 1.4.4 14 10404 14.so.14.4[.0]
- * 1.5.0beta01-58 15 10500 15.so.15.0[.0]
- * 1.5.0rc01-07 15 10500 15.so.15.0[.0]
- * 1.5.0 15 10500 15.so.15.0[.0]
- * 1.5.1beta01-11 15 10501 15.so.15.1[.0]
- * 1.5.1rc01-02 15 10501 15.so.15.1[.0]
- * 1.5.1 15 10501 15.so.15.1[.0]
- *
- * Henceforth the source version will match the shared-library major
- * and minor numbers; the shared-library major version number will be
- * used for changes in backward compatibility, as it is intended. The
- * PNG_LIBPNG_VER macro, which is not used within libpng but is available
- * for applications, is an unsigned integer of the form xyyzz corresponding
- * to the source version x.y.z (leading zeros in y and z). Beta versions
- * were given the previous public release number plus a letter, until
- * version 1.0.6j; from then on they were given the upcoming public
- * release number plus "betaNN" or "rcN".
- *
- * Binary incompatibility exists only when applications make direct access
- * to the info_ptr or png_ptr members through png.h, and the compiled
- * application is loaded with a different version of the library.
- *
- * DLLNUM will change each time there are forward or backward changes
- * in binary compatibility (e.g., when a new feature is added).
- *
- * See libpng-manual.txt or libpng.3 for more information. The PNG
- * specification is available as a W3C Recommendation and as an ISO
- * Specification,
-# endif
-
-/* Need the time information for converting tIME chunks, it
- * defines struct tm:
- */
-#ifdef PNG_CONVERT_tIME_SUPPORTED
- /* "time.h" functions are not supported on all operating systems */
-# include
-#endif
-
-/* Machine specific configuration. */
-# include "pngconf.h"
-#endif
-
-/*
- * Added at libpng-1.2.8
- *
- * Ref MSDN: Private as priority over Special
- * VS_FF_PRIVATEBUILD File *was not* built using standard release
- * procedures. If this value is given, the StringFileInfo block must
- * contain a PrivateBuild string.
- *
- * VS_FF_SPECIALBUILD File *was* built by the original company using
- * standard release procedures but is a variation of the standard
- * file of the same version number. If this value is given, the
- * StringFileInfo block must contain a SpecialBuild string.
- */
-
-#ifdef PNG_USER_PRIVATEBUILD /* From pnglibconf.h */
-# define PNG_LIBPNG_BUILD_TYPE \
- (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE)
-#else
-# ifdef PNG_LIBPNG_SPECIALBUILD
-# define PNG_LIBPNG_BUILD_TYPE \
- (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL)
-# else
-# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE)
-# endif
-#endif
-
-#ifndef PNG_VERSION_INFO_ONLY
-
-/* Inhibit C++ name-mangling for libpng functions but not for system calls. */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* Version information for C files, stored in png.c. This had better match
- * the version above.
- */
-#define png_libpng_ver png_get_header_ver(NULL)
-
-/* This file is arranged in several sections:
- *
- * 1. Any configuration options that can be specified by for the application
- * code when it is built. (Build time configuration is in pnglibconf.h)
- * 2. Type definitions (base types are defined in pngconf.h), structure
- * definitions.
- * 3. Exported library functions.
- *
- * The library source code has additional files (principally pngpriv.h) that
- * allow configuration of the library.
- */
-/* Section 1: run time configuration
- * See pnglibconf.h for build time configuration
- *
- * Run time configuration allows the application to choose between
- * implementations of certain arithmetic APIs. The default is set
- * at build time and recorded in pnglibconf.h, but it is safe to
- * override these (and only these) settings. Note that this won't
- * change what the library does, only application code, and the
- * settings can (and probably should) be made on a per-file basis
- * by setting the #defines before including png.h
- *
- * Use macros to read integers from PNG data or use the exported
- * functions?
- * PNG_USE_READ_MACROS: use the macros (see below) Note that
- * the macros evaluate their argument multiple times.
- * PNG_NO_USE_READ_MACROS: call the relevant library function.
- *
- * Use the alternative algorithm for compositing alpha samples that
- * does not use division?
- * PNG_READ_COMPOSITE_NODIV_SUPPORTED: use the 'no division'
- * algorithm.
- * PNG_NO_READ_COMPOSITE_NODIV: use the 'division' algorithm.
- *
- * How to handle benign errors if PNG_ALLOW_BENIGN_ERRORS is
- * false?
- * PNG_ALLOW_BENIGN_ERRORS: map calls to the benign error
- * APIs to png_warning.
- * Otherwise the calls are mapped to png_error.
- */
-
-/* Section 2: type definitions, including structures and compile time
- * constants.
- * See pngconf.h for base types that vary by machine/system
- */
-
-/* This triggers a compiler error in png.c, if png.c and png.h
- * do not agree upon the version number.
- */
-typedef char* png_libpng_version_1_5_1;
-
-/* Three color definitions. The order of the red, green, and blue, (and the
- * exact size) is not important, although the size of the fields need to
- * be png_byte or png_uint_16 (as defined below).
- */
-typedef struct png_color_struct
-{
- png_byte red;
- png_byte green;
- png_byte blue;
-} png_color;
-typedef png_color FAR * png_colorp;
-typedef PNG_CONST png_color FAR * png_const_colorp;
-typedef png_color FAR * FAR * png_colorpp;
-
-typedef struct png_color_16_struct
-{
- png_byte index; /* used for palette files */
- png_uint_16 red; /* for use in red green blue files */
- png_uint_16 green;
- png_uint_16 blue;
- png_uint_16 gray; /* for use in grayscale files */
-} png_color_16;
-typedef png_color_16 FAR * png_color_16p;
-typedef PNG_CONST png_color_16 FAR * png_const_color_16p;
-typedef png_color_16 FAR * FAR * png_color_16pp;
-
-typedef struct png_color_8_struct
-{
- png_byte red; /* for use in red green blue files */
- png_byte green;
- png_byte blue;
- png_byte gray; /* for use in grayscale files */
- png_byte alpha; /* for alpha channel files */
-} png_color_8;
-typedef png_color_8 FAR * png_color_8p;
-typedef PNG_CONST png_color_8 FAR * png_const_color_8p;
-typedef png_color_8 FAR * FAR * png_color_8pp;
-
-/*
- * The following two structures are used for the in-core representation
- * of sPLT chunks.
- */
-typedef struct png_sPLT_entry_struct
-{
- png_uint_16 red;
- png_uint_16 green;
- png_uint_16 blue;
- png_uint_16 alpha;
- png_uint_16 frequency;
-} png_sPLT_entry;
-typedef png_sPLT_entry FAR * png_sPLT_entryp;
-typedef PNG_CONST png_sPLT_entry FAR * png_const_sPLT_entryp;
-typedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp;
-
-/* When the depth of the sPLT palette is 8 bits, the color and alpha samples
- * occupy the LSB of their respective members, and the MSB of each member
- * is zero-filled. The frequency member always occupies the full 16 bits.
- */
-
-typedef struct png_sPLT_struct
-{
- png_charp name; /* palette name */
- png_byte depth; /* depth of palette samples */
- png_sPLT_entryp entries; /* palette entries */
- png_int_32 nentries; /* number of palette entries */
-} png_sPLT_t;
-typedef png_sPLT_t FAR * png_sPLT_tp;
-typedef PNG_CONST png_sPLT_t FAR * png_const_sPLT_tp;
-typedef png_sPLT_t FAR * FAR * png_sPLT_tpp;
-
-#ifdef PNG_TEXT_SUPPORTED
-/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file,
- * and whether that contents is compressed or not. The "key" field
- * points to a regular zero-terminated C string. The "text", "lang", and
- * "lang_key" fields can be regular C strings, empty strings, or NULL pointers.
- * However, the * structure returned by png_get_text() will always contain
- * regular zero-terminated C strings (possibly empty), never NULL pointers,
- * so they can be safely used in printf() and other string-handling functions.
- */
-typedef struct png_text_struct
-{
- int compression; /* compression value:
- -1: tEXt, none
- 0: zTXt, deflate
- 1: iTXt, none
- 2: iTXt, deflate */
- png_charp key; /* keyword, 1-79 character description of "text" */
- png_charp text; /* comment, may be an empty string (ie "")
- or a NULL pointer */
- png_size_t text_length; /* length of the text string */
- png_size_t itxt_length; /* length of the itxt string */
- png_charp lang; /* language code, 0-79 characters
- or a NULL pointer */
- png_charp lang_key; /* keyword translated UTF-8 string, 0 or more
- chars or a NULL pointer */
-} png_text;
-typedef png_text FAR * png_textp;
-typedef PNG_CONST png_text FAR * png_const_textp;
-typedef png_text FAR * FAR * png_textpp;
-#endif
-
-/* Supported compression types for text in PNG files (tEXt, and zTXt).
- * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */
-#define PNG_TEXT_COMPRESSION_NONE_WR -3
-#define PNG_TEXT_COMPRESSION_zTXt_WR -2
-#define PNG_TEXT_COMPRESSION_NONE -1
-#define PNG_TEXT_COMPRESSION_zTXt 0
-#define PNG_ITXT_COMPRESSION_NONE 1
-#define PNG_ITXT_COMPRESSION_zTXt 2
-#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */
-
-/* png_time is a way to hold the time in an machine independent way.
- * Two conversions are provided, both from time_t and struct tm. There
- * is no portable way to convert to either of these structures, as far
- * as I know. If you know of a portable way, send it to me. As a side
- * note - PNG has always been Year 2000 compliant!
- */
-typedef struct png_time_struct
-{
- png_uint_16 year; /* full year, as in, 1995 */
- png_byte month; /* month of year, 1 - 12 */
- png_byte day; /* day of month, 1 - 31 */
- png_byte hour; /* hour of day, 0 - 23 */
- png_byte minute; /* minute of hour, 0 - 59 */
- png_byte second; /* second of minute, 0 - 60 (for leap seconds) */
-} png_time;
-typedef png_time FAR * png_timep;
-typedef PNG_CONST png_time FAR * png_const_timep;
-typedef png_time FAR * FAR * png_timepp;
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \
- defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED)
-/* png_unknown_chunk is a structure to hold queued chunks for which there is
- * no specific support. The idea is that we can use this to queue
- * up private chunks for output even though the library doesn't actually
- * know about their semantics.
- */
-typedef struct png_unknown_chunk_t
-{
- png_byte name[5];
- png_byte *data;
- png_size_t size;
-
- /* libpng-using applications should NOT directly modify this byte. */
- png_byte location; /* mode of operation at read time */
-}
-png_unknown_chunk;
-typedef png_unknown_chunk FAR * png_unknown_chunkp;
-typedef PNG_CONST png_unknown_chunk FAR * png_const_unknown_chunkp;
-typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp;
-#endif
-
-typedef struct png_info_def png_info;
-typedef png_info FAR * png_infop;
-typedef PNG_CONST png_info FAR * png_const_infop;
-typedef png_info FAR * FAR * png_infopp;
-
-/* Maximum positive integer used in PNG is (2^31)-1 */
-#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL)
-#define PNG_UINT_32_MAX ((png_uint_32)(-1))
-#define PNG_SIZE_MAX ((png_size_t)(-1))
-
-/* These are constants for fixed point values encoded in the
- * PNG specification manner (x100000)
- */
-#define PNG_FP_1 100000
-#define PNG_FP_HALF 50000
-
-/* These describe the color_type field in png_info. */
-/* color type masks */
-#define PNG_COLOR_MASK_PALETTE 1
-#define PNG_COLOR_MASK_COLOR 2
-#define PNG_COLOR_MASK_ALPHA 4
-
-/* color types. Note that not all combinations are legal */
-#define PNG_COLOR_TYPE_GRAY 0
-#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE)
-#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR)
-#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA)
-#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA)
-/* aliases */
-#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA
-#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA
-
-/* This is for compression type. PNG 1.0-1.2 only define the single type. */
-#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */
-#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE
-
-/* This is for filter type. PNG 1.0-1.2 only define the single type. */
-#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */
-#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */
-#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE
-
-/* These are for the interlacing type. These values should NOT be changed. */
-#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */
-#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */
-#define PNG_INTERLACE_LAST 2 /* Not a valid value */
-
-/* These are for the oFFs chunk. These values should NOT be changed. */
-#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */
-#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */
-#define PNG_OFFSET_LAST 2 /* Not a valid value */
-
-/* These are for the pCAL chunk. These values should NOT be changed. */
-#define PNG_EQUATION_LINEAR 0 /* Linear transformation */
-#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */
-#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */
-#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */
-#define PNG_EQUATION_LAST 4 /* Not a valid value */
-
-/* These are for the sCAL chunk. These values should NOT be changed. */
-#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */
-#define PNG_SCALE_METER 1 /* meters per pixel */
-#define PNG_SCALE_RADIAN 2 /* radians per pixel */
-#define PNG_SCALE_LAST 3 /* Not a valid value */
-
-/* These are for the pHYs chunk. These values should NOT be changed. */
-#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */
-#define PNG_RESOLUTION_METER 1 /* pixels/meter */
-#define PNG_RESOLUTION_LAST 2 /* Not a valid value */
-
-/* These are for the sRGB chunk. These values should NOT be changed. */
-#define PNG_sRGB_INTENT_PERCEPTUAL 0
-#define PNG_sRGB_INTENT_RELATIVE 1
-#define PNG_sRGB_INTENT_SATURATION 2
-#define PNG_sRGB_INTENT_ABSOLUTE 3
-#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */
-
-/* This is for text chunks */
-#define PNG_KEYWORD_MAX_LENGTH 79
-
-/* Maximum number of entries in PLTE/sPLT/tRNS arrays */
-#define PNG_MAX_PALETTE_LENGTH 256
-
-/* These determine if an ancillary chunk's data has been successfully read
- * from the PNG header, or if the application has filled in the corresponding
- * data in the info_struct to be written into the output file. The values
- * of the PNG_INFO_ defines should NOT be changed.
- */
-#define PNG_INFO_gAMA 0x0001
-#define PNG_INFO_sBIT 0x0002
-#define PNG_INFO_cHRM 0x0004
-#define PNG_INFO_PLTE 0x0008
-#define PNG_INFO_tRNS 0x0010
-#define PNG_INFO_bKGD 0x0020
-#define PNG_INFO_hIST 0x0040
-#define PNG_INFO_pHYs 0x0080
-#define PNG_INFO_oFFs 0x0100
-#define PNG_INFO_tIME 0x0200
-#define PNG_INFO_pCAL 0x0400
-#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */
-#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */
-#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */
-#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */
-#define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */
-
-/* This is used for the transformation routines, as some of them
- * change these values for the row. It also should enable using
- * the routines for other purposes.
- */
-typedef struct png_row_info_struct
-{
- png_uint_32 width; /* width of row */
- png_size_t rowbytes; /* number of bytes in row */
- png_byte color_type; /* color type of row */
- png_byte bit_depth; /* bit depth of row */
- png_byte channels; /* number of channels (1, 2, 3, or 4) */
- png_byte pixel_depth; /* bits per pixel (depth * channels) */
-} png_row_info;
-
-typedef png_row_info FAR * png_row_infop;
-typedef png_row_info FAR * FAR * png_row_infopp;
-
-/* These are the function types for the I/O functions and for the functions
- * that allow the user to override the default I/O functions with his or her
- * own. The png_error_ptr type should match that of user-supplied warning
- * and error functions, while the png_rw_ptr type should match that of the
- * user read/write data functions. Note that the 'write' function must not
- * modify the buffer it is passed. The 'read' function, on the other hand, is
- * expected to return the read data in the buffer.
- */
-typedef struct png_struct_def png_struct;
-typedef PNG_CONST png_struct FAR * png_const_structp;
-typedef png_struct FAR * png_structp;
-
-typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp), );
-typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t), );
-typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp), );
-typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32,
- int), );
-typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32,
- int), );
-
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-typedef PNG_CALLBACK(void, *png_progressive_info_ptr,
- (png_structp, png_infop), );
-typedef PNG_CALLBACK(void, *png_progressive_end_ptr,
- (png_structp, png_infop), );
-typedef PNG_CALLBACK(void, *png_progressive_row_ptr,
- (png_structp, png_bytep, png_uint_32, int), );
-#endif
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
-typedef PNG_CALLBACK(void, *png_user_transform_ptr,
- (png_structp, png_row_infop, png_bytep), );
-#endif
-
-#ifdef PNG_USER_CHUNKS_SUPPORTED
-typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp,
- png_unknown_chunkp), );
-#endif
-#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
-typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp), );
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
-/* This must match the function definition in , and the
- * application must include this before png.h to obtain the definition
- * of jmp_buf. The function is required to be PNG_NORETURN. (Note that
- * PNG_PTR_NORETURN is used here because current versions of the Microsoft
- * C compiler do not support the PNG_NORETURN attribute on a pointer.)
- *
- * If you get a type warning from the compiler when linking against this line
- * then your compiler has 'longjmp' that does not match the requirements of the
- * compiler that built libpng. You will have to write a wrapper function for
- * your compiler's longjmp and call png_set_longjmp_fn directly (not via the
- * png_jmpbuf macro.)
- *
- * If you get a warning here while building the library you will need to make
- * changes to ensure that pnglibconf.h records the calling convention used by
- * your compiler. This may be very difficult - try using a different compiler
- * to build the library!
- */
-typedef PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)),
- PNG_PTR_NORETURN);
-#endif
-
-/* Transform masks for the high-level interface */
-#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */
-#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */
-#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */
-#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */
-#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */
-#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */
-#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */
-#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */
-#define PNG_TRANSFORM_BGR 0x0080 /* read and write */
-#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */
-#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */
-#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */
-#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */
-/* Added to libpng-1.2.34 */
-#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER
-#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */
-/* Added to libpng-1.4.0 */
-#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */
-
-/* Flags for MNG supported features */
-#define PNG_FLAG_MNG_EMPTY_PLTE 0x01
-#define PNG_FLAG_MNG_FILTER_64 0x04
-#define PNG_ALL_MNG_FEATURES 0x05
-
-/* NOTE: prior to 1.5 these functions had no 'API' style declaration,
- * this allowed the zlib default functions to be used on Windows
- * platforms. In 1.5 the zlib default malloc (which just calls malloc and
- * ignores the first argument) should be completely compatible with the
- * following.
- */
-typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp,
- png_alloc_size_t), );
-typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp), );
-
-typedef png_struct FAR * FAR * png_structpp;
-
-/* Section 3: exported functions
- * Here are the function definitions most commonly used. This is not
- * the place to find out how to use libpng. See libpng-manual.txt for the
- * full explanation, see example.c for the summary. This just provides
- * a simple one line description of the use of each function.
- *
- * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in
- * pngconf.h and in the *.dfn files in the scripts directory.
- *
- * PNG_EXPORT(ordinal, type, name, (args));
- *
- * ordinal: ordinal that is used while building
- * *.def files. The ordinal value is only
- * relevant when preprocessing png.h with
- * the *.dfn files for building symbol table
- * entries, and are removed by pngconf.h.
- * type: return type of the function
- * name: function name
- * args: function arguments, with types
- *
- * When we wish to append attributes to a function prototype we use
- * the PNG_EXPORTA() macro instead.
- *
- * PNG_EXPORTA(ordinal, type, name, (args), attributes);
- *
- * ordinal, type, name, and args: same as in PNG_EXPORT().
- * attributes: function attributes
- */
-
-/* Returns the version number of the library */
-PNG_EXPORT(1, png_uint_32, png_access_version_number, (void));
-
-/* Tell lib we have already handled the first magic bytes.
- * Handling more than 8 bytes from the beginning of the file is an error.
- */
-PNG_EXPORT(2, void, png_set_sig_bytes, (png_structp png_ptr, int num_bytes));
-
-/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a
- * PNG file. Returns zero if the supplied bytes match the 8-byte PNG
- * signature, and non-zero otherwise. Having num_to_check == 0 or
- * start > 7 will always fail (ie return non-zero).
- */
-PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start,
- png_size_t num_to_check));
-
-/* Simple signature checking function. This is the same as calling
- * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n).
- */
-#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n))
-
-/* Allocate and initialize png_ptr struct for reading, and any other memory. */
-PNG_EXPORTA(4, png_structp, png_create_read_struct,
- (png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn),
- PNG_ALLOCATED);
-
-/* Allocate and initialize png_ptr struct for writing, and any other memory */
-PNG_EXPORTA(5, png_structp, png_create_write_struct,
- (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
- png_error_ptr warn_fn),
- PNG_ALLOCATED);
-
-PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size,
- (png_const_structp png_ptr));
-
-PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structp png_ptr,
- png_size_t size));
-
-/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp
- * match up.
- */
-#ifdef PNG_SETJMP_SUPPORTED
-/* This function returns the jmp_buf built in to *png_ptr. It must be
- * supplied with an appropriate 'longjmp' function to use on that jmp_buf
- * unless the default error function is overridden in which case NULL is
- * acceptable. The size of the jmp_buf is checked against the actual size
- * allocated by the library - the call will return NULL on a mismatch
- * indicating an ABI mismatch.
- */
-PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structp png_ptr,
- png_longjmp_ptr longjmp_fn, size_t jmp_buf_size));
-# define png_jmpbuf(png_ptr) \
- (*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf)))
-#else
-# define png_jmpbuf(png_ptr) \
- (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP)
-#endif
-/* This function should be used by libpng applications in place of
- * longjmp(png_ptr->jmpbuf, val). If longjmp_fn() has been set, it
- * will use it; otherwise it will call PNG_ABORT(). This function was
- * added in libpng-1.5.0.
- */
-PNG_EXPORTA(9, void, png_longjmp, (png_structp png_ptr, int val),
- PNG_NORETURN);
-
-#ifdef PNG_READ_SUPPORTED
-/* Reset the compression stream */
-PNG_EXPORT(10, int, png_reset_zstream, (png_structp png_ptr));
-#endif
-
-/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */
-#ifdef PNG_USER_MEM_SUPPORTED
-PNG_EXPORTA(11, png_structp, png_create_read_struct_2,
- (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
- png_error_ptr warn_fn,
- png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn),
- PNG_ALLOCATED);
-PNG_EXPORTA(12, png_structp, png_create_write_struct_2,
- (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
- png_error_ptr warn_fn,
- png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn),
- PNG_ALLOCATED);
-#endif
-
-/* Write the PNG file signature. */
-PNG_EXPORT(13, void, png_write_sig, (png_structp png_ptr));
-
-/* Write a PNG chunk - size, type, (optional) data, CRC. */
-PNG_EXPORT(14, void, png_write_chunk, (png_structp png_ptr, png_const_bytep
- chunk_name, png_const_bytep data, png_size_t length));
-
-/* Write the start of a PNG chunk - length and chunk name. */
-PNG_EXPORT(15, void, png_write_chunk_start, (png_structp png_ptr,
- png_const_bytep chunk_name, png_uint_32 length));
-
-/* Write the data of a PNG chunk started with png_write_chunk_start(). */
-PNG_EXPORT(16, void, png_write_chunk_data, (png_structp png_ptr,
- png_const_bytep data, png_size_t length));
-
-/* Finish a chunk started with png_write_chunk_start() (includes CRC). */
-PNG_EXPORT(17, void, png_write_chunk_end, (png_structp png_ptr));
-
-/* Allocate and initialize the info structure */
-PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_structp png_ptr),
- PNG_ALLOCATED);
-
-PNG_EXPORT(19, void, png_info_init_3, (png_infopp info_ptr,
- png_size_t png_info_struct_size));
-
-/* Writes all the PNG information before the image. */
-PNG_EXPORT(20, void, png_write_info_before_PLTE,
- (png_structp png_ptr, png_infop info_ptr));
-PNG_EXPORT(21, void, png_write_info,
- (png_structp png_ptr, png_infop info_ptr));
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-/* Read the information before the actual image data. */
-PNG_EXPORT(22, void, png_read_info,
- (png_structp png_ptr, png_infop info_ptr));
-#endif
-
-#ifdef PNG_TIME_RFC1123_SUPPORTED
-PNG_EXPORT(23, png_const_charp, png_convert_to_rfc1123,
- (png_structp png_ptr,
- png_const_timep ptime));
-#endif
-
-#ifdef PNG_CONVERT_tIME_SUPPORTED
-/* Convert from a struct tm to png_time */
-PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime,
- PNG_CONST struct tm FAR * ttime));
-
-/* Convert from time_t to png_time. Uses gmtime() */
-PNG_EXPORT(25, void, png_convert_from_time_t,
- (png_timep ptime, time_t ttime));
-#endif /* PNG_CONVERT_tIME_SUPPORTED */
-
-#ifdef PNG_READ_EXPAND_SUPPORTED
-/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */
-PNG_EXPORT(26, void, png_set_expand, (png_structp png_ptr));
-PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structp png_ptr));
-PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structp png_ptr));
-PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
-/* Use blue, green, red order for pixels. */
-PNG_EXPORT(30, void, png_set_bgr, (png_structp png_ptr));
-#endif
-
-#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
-/* Expand the grayscale to 24-bit RGB if necessary. */
-PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structp png_ptr));
-#endif
-
-#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
-/* Reduce RGB to grayscale. */
-PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structp png_ptr,
- int error_action, double red, double green));
-PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structp png_ptr,
- int error_action, png_fixed_point red, png_fixed_point green));
-
-PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structp
- png_ptr));
-#endif
-
-PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth,
- png_colorp palette));
-
-#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
-PNG_EXPORT(36, void, png_set_strip_alpha, (png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
- defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
-PNG_EXPORT(37, void, png_set_swap_alpha, (png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
- defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
-PNG_EXPORT(38, void, png_set_invert_alpha, (png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
-/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */
-PNG_EXPORT(39, void, png_set_filler, (png_structp png_ptr, png_uint_32 filler,
- int flags));
-/* The values of the PNG_FILLER_ defines should NOT be changed */
-# define PNG_FILLER_BEFORE 0
-# define PNG_FILLER_AFTER 1
-/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */
-PNG_EXPORT(40, void, png_set_add_alpha,
- (png_structp png_ptr, png_uint_32 filler,
- int flags));
-#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */
-
-#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
-/* Swap bytes in 16-bit depth files. */
-PNG_EXPORT(41, void, png_set_swap, (png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
-/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */
-PNG_EXPORT(42, void, png_set_packing, (png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \
- defined(PNG_WRITE_PACKSWAP_SUPPORTED)
-/* Swap packing order of pixels in bytes. */
-PNG_EXPORT(43, void, png_set_packswap, (png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
-/* Converts files to legal bit depths. */
-PNG_EXPORT(44, void, png_set_shift, (png_structp png_ptr, png_const_color_8p
- true_bits));
-#endif
-
-#if defined(PNG_READ_INTERLACING_SUPPORTED) || \
- defined(PNG_WRITE_INTERLACING_SUPPORTED)
-/* Have the code handle the interlacing. Returns the number of passes.
- * MUST be called before png_read_update_info or png_start_read_image,
- * otherwise it will not have the desired effect. Note that it is still
- * necessary to call png_read_row or png_read_rows png_get_image_height
- * times for each pass.
-*/
-PNG_EXPORT(45, int, png_set_interlace_handling, (png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
-/* Invert monochrome files */
-PNG_EXPORT(46, void, png_set_invert_mono, (png_structp png_ptr));
-#endif
-
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
-/* Handle alpha and tRNS by replacing with a background color. */
-PNG_FP_EXPORT(47, void, png_set_background, (png_structp png_ptr,
- png_const_color_16p background_color, int background_gamma_code,
- int need_expand, double background_gamma));
-PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structp png_ptr,
- png_const_color_16p background_color, int background_gamma_code,
- int need_expand, png_fixed_point background_gamma));
-#endif
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
-# define PNG_BACKGROUND_GAMMA_UNKNOWN 0
-# define PNG_BACKGROUND_GAMMA_SCREEN 1
-# define PNG_BACKGROUND_GAMMA_FILE 2
-# define PNG_BACKGROUND_GAMMA_UNIQUE 3
-#endif
-
-#ifdef PNG_READ_16_TO_8_SUPPORTED
-/* Strip the second byte of information from a 16-bit depth file. */
-PNG_EXPORT(48, void, png_set_strip_16, (png_structp png_ptr));
-#endif
-
-#ifdef PNG_READ_QUANTIZE_SUPPORTED
-/* Turn on quantizing, and reduce the palette to the number of colors
- * available.
- */
-PNG_EXPORT(49, void, png_set_quantize,
- (png_structp png_ptr, png_colorp palette,
- int num_palette, int maximum_colors, png_const_uint_16p histogram,
- int full_quantize));
-#endif
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
-/* The threshold on gamma processing is configurable but hard-wired into the
- * library. The following is the floating point variant.
- */
-#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001)
-
-/* Handle gamma correction. Screen_gamma=(display_exponent) */
-PNG_FP_EXPORT(50, void, png_set_gamma,
- (png_structp png_ptr, double screen_gamma,
- double default_file_gamma));
-PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structp png_ptr,
- png_fixed_point screen_gamma, png_fixed_point default_file_gamma));
-#endif
-
-#ifdef PNG_WRITE_FLUSH_SUPPORTED
-/* Set how many lines between output flushes - 0 for no flushing */
-PNG_EXPORT(51, void, png_set_flush, (png_structp png_ptr, int nrows));
-/* Flush the current PNG output buffer */
-PNG_EXPORT(52, void, png_write_flush, (png_structp png_ptr));
-#endif
-
-/* Optional update palette with requested transformations */
-PNG_EXPORT(53, void, png_start_read_image, (png_structp png_ptr));
-
-/* Optional call to update the users info structure */
-PNG_EXPORT(54, void, png_read_update_info,
- (png_structp png_ptr, png_infop info_ptr));
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-/* Read one or more rows of image data. */
-PNG_EXPORT(55, void, png_read_rows, (png_structp png_ptr, png_bytepp row,
- png_bytepp display_row, png_uint_32 num_rows));
-#endif
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-/* Read a row of data. */
-PNG_EXPORT(56, void, png_read_row, (png_structp png_ptr, png_bytep row,
- png_bytep display_row));
-#endif
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-/* Read the whole image into memory at once. */
-PNG_EXPORT(57, void, png_read_image, (png_structp png_ptr, png_bytepp image));
-#endif
-
-/* Write a row of image data */
-PNG_EXPORT(58, void, png_write_row,
- (png_structp png_ptr, png_const_bytep row));
-
-/* Write a few rows of image data: (*row) is not written; however, the type
- * is declared as writeable to maintain compatibility with previous versions
- * of libpng and to allow the 'display_row' array from read_rows to be passed
- * unchanged to write_rows.
- */
-PNG_EXPORT(59, void, png_write_rows, (png_structp png_ptr, png_bytepp row,
- png_uint_32 num_rows));
-
-/* Write the image data */
-PNG_EXPORT(60, void, png_write_image,
- (png_structp png_ptr, png_bytepp image));
-
-/* Write the end of the PNG file. */
-PNG_EXPORT(61, void, png_write_end,
- (png_structp png_ptr, png_infop info_ptr));
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-/* Read the end of the PNG file. */
-PNG_EXPORT(62, void, png_read_end, (png_structp png_ptr, png_infop info_ptr));
-#endif
-
-/* Free any memory associated with the png_info_struct */
-PNG_EXPORT(63, void, png_destroy_info_struct, (png_structp png_ptr,
- png_infopp info_ptr_ptr));
-
-/* Free any memory associated with the png_struct and the png_info_structs */
-PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr,
- png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr));
-
-/* Free any memory associated with the png_struct and the png_info_structs */
-PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr,
- png_infopp info_ptr_ptr));
-
-/* Set the libpng method of handling chunk CRC errors */
-PNG_EXPORT(66, void, png_set_crc_action,
- (png_structp png_ptr, int crit_action, int ancil_action));
-
-/* Values for png_set_crc_action() say how to handle CRC errors in
- * ancillary and critical chunks, and whether to use the data contained
- * therein. Note that it is impossible to "discard" data in a critical
- * chunk. For versions prior to 0.90, the action was always error/quit,
- * whereas in version 0.90 and later, the action for CRC errors in ancillary
- * chunks is warn/discard. These values should NOT be changed.
- *
- * value action:critical action:ancillary
- */
-#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */
-#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */
-#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */
-#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */
-#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */
-#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */
-
-/* These functions give the user control over the scan-line filtering in
- * libpng and the compression methods used by zlib. These functions are
- * mainly useful for testing, as the defaults should work with most users.
- * Those users who are tight on memory or want faster performance at the
- * expense of compression can modify them. See the compression library
- * header file (zlib.h) for an explination of the compression functions.
- */
-
-/* Set the filtering method(s) used by libpng. Currently, the only valid
- * value for "method" is 0.
- */
-PNG_EXPORT(67, void, png_set_filter,
- (png_structp png_ptr, int method, int filters));
-
-/* Flags for png_set_filter() to say which filters to use. The flags
- * are chosen so that they don't conflict with real filter types
- * below, in case they are supplied instead of the #defined constants.
- * These values should NOT be changed.
- */
-#define PNG_NO_FILTERS 0x00
-#define PNG_FILTER_NONE 0x08
-#define PNG_FILTER_SUB 0x10
-#define PNG_FILTER_UP 0x20
-#define PNG_FILTER_AVG 0x40
-#define PNG_FILTER_PAETH 0x80
-#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \
- PNG_FILTER_AVG | PNG_FILTER_PAETH)
-
-/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now.
- * These defines should NOT be changed.
- */
-#define PNG_FILTER_VALUE_NONE 0
-#define PNG_FILTER_VALUE_SUB 1
-#define PNG_FILTER_VALUE_UP 2
-#define PNG_FILTER_VALUE_AVG 3
-#define PNG_FILTER_VALUE_PAETH 4
-#define PNG_FILTER_VALUE_LAST 5
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* EXPERIMENTAL */
-/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_
- * defines, either the default (minimum-sum-of-absolute-differences), or
- * the experimental method (weighted-minimum-sum-of-absolute-differences).
- *
- * Weights are factors >= 1.0, indicating how important it is to keep the
- * filter type consistent between rows. Larger numbers mean the current
- * filter is that many times as likely to be the same as the "num_weights"
- * previous filters. This is cumulative for each previous row with a weight.
- * There needs to be "num_weights" values in "filter_weights", or it can be
- * NULL if the weights aren't being specified. Weights have no influence on
- * the selection of the first row filter. Well chosen weights can (in theory)
- * improve the compression for a given image.
- *
- * Costs are factors >= 1.0 indicating the relative decoding costs of a
- * filter type. Higher costs indicate more decoding expense, and are
- * therefore less likely to be selected over a filter with lower computational
- * costs. There needs to be a value in "filter_costs" for each valid filter
- * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't
- * setting the costs. Costs try to improve the speed of decompression without
- * unduly increasing the compressed image size.
- *
- * A negative weight or cost indicates the default value is to be used, and
- * values in the range [0.0, 1.0) indicate the value is to remain unchanged.
- * The default values for both weights and costs are currently 1.0, but may
- * change if good general weighting/cost heuristics can be found. If both
- * the weights and costs are set to 1.0, this degenerates the WEIGHTED method
- * to the UNWEIGHTED method, but with added encoding time/computation.
- */
-PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structp png_ptr,
- int heuristic_method, int num_weights, png_const_doublep filter_weights,
- png_const_doublep filter_costs));
-PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed,
- (png_structp png_ptr,
- int heuristic_method, int num_weights, png_const_fixed_point_p
- filter_weights, png_const_fixed_point_p filter_costs));
-#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */
-
-/* Heuristic used for row filter selection. These defines should NOT be
- * changed.
- */
-#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */
-#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */
-#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */
-#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */
-
-/* Set the library compression level. Currently, valid values range from
- * 0 - 9, corresponding directly to the zlib compression levels 0 - 9
- * (0 - no compression, 9 - "maximal" compression). Note that tests have
- * shown that zlib compression levels 3-6 usually perform as well as level 9
- * for PNG images, and do considerably fewer caclulations. In the future,
- * these values may not correspond directly to the zlib compression levels.
- */
-PNG_EXPORT(69, void, png_set_compression_level,
- (png_structp png_ptr, int level));
-
-PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structp png_ptr,
- int mem_level));
-
-PNG_EXPORT(71, void, png_set_compression_strategy, (png_structp png_ptr,
- int strategy));
-
-PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structp png_ptr,
- int window_bits));
-
-PNG_EXPORT(73, void, png_set_compression_method, (png_structp png_ptr,
- int method));
-
-/* These next functions are called for input/output, memory, and error
- * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c,
- * and call standard C I/O routines such as fread(), fwrite(), and
- * fprintf(). These functions can be made to use other I/O routines
- * at run time for those applications that need to handle I/O in a
- * different manner by calling png_set_???_fn(). See libpng-manual.txt for
- * more information.
- */
-
-#ifdef PNG_STDIO_SUPPORTED
-/* Initialize the input/output for the PNG file to the default functions. */
-PNG_EXPORT(74, void, png_init_io, (png_structp png_ptr, png_FILE_p fp));
-#endif
-
-/* Replace the (error and abort), and warning functions with user
- * supplied functions. If no messages are to be printed you must still
- * write and use replacement functions. The replacement error_fn should
- * still do a longjmp to the last setjmp location if you are using this
- * method of error handling. If error_fn or warning_fn is NULL, the
- * default function will be used.
- */
-
-PNG_EXPORT(75, void, png_set_error_fn,
- (png_structp png_ptr, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warning_fn));
-
-/* Return the user pointer associated with the error functions */
-PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structp png_ptr));
-
-/* Replace the default data output functions with a user supplied one(s).
- * If buffered output is not used, then output_flush_fn can be set to NULL.
- * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time
- * output_flush_fn will be ignored (and thus can be NULL).
- * It is probably a mistake to use NULL for output_flush_fn if
- * write_data_fn is not also NULL unless you have built libpng with
- * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's
- * default flush function, which uses the standard *FILE structure, will
- * be used.
- */
-PNG_EXPORT(77, void, png_set_write_fn, (png_structp png_ptr, png_voidp io_ptr,
- png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn));
-
-/* Replace the default data input function with a user supplied one. */
-PNG_EXPORT(78, void, png_set_read_fn, (png_structp png_ptr, png_voidp io_ptr,
- png_rw_ptr read_data_fn));
-
-/* Return the user pointer associated with the I/O functions */
-PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_structp png_ptr));
-
-PNG_EXPORT(80, void, png_set_read_status_fn, (png_structp png_ptr,
- png_read_status_ptr read_row_fn));
-
-PNG_EXPORT(81, void, png_set_write_status_fn, (png_structp png_ptr,
- png_write_status_ptr write_row_fn));
-
-#ifdef PNG_USER_MEM_SUPPORTED
-/* Replace the default memory allocation functions with user supplied one(s). */
-PNG_EXPORT(82, void, png_set_mem_fn, (png_structp png_ptr, png_voidp mem_ptr,
- png_malloc_ptr malloc_fn, png_free_ptr free_fn));
-/* Return the user pointer associated with the memory functions */
-PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structp png_ptr));
-#endif
-
-#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
-PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structp png_ptr,
- png_user_transform_ptr read_user_transform_fn));
-#endif
-
-#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
-PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structp png_ptr,
- png_user_transform_ptr write_user_transform_fn));
-#endif
-
-#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
-PNG_EXPORT(86, void, png_set_user_transform_info, (png_structp png_ptr,
- png_voidp user_transform_ptr, int user_transform_depth,
- int user_transform_channels));
-/* Return the user pointer associated with the user transform functions */
-PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr,
- (png_const_structp png_ptr));
-#endif
-
-#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED
-/* Return information about the row currently being processed. Note that these
- * APIs do not fail but will return unexpected results if called outside a user
- * transform callback. Also note that when transforming an interlaced image the
- * row number is still the row in the final, de-interlaced, image but the row
- * only contains the data of the current pass - consult png_row_info for the
- * actual width of the row!
- */
-PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structp));
-PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structp));
-#endif
-
-#ifdef PNG_USER_CHUNKS_SUPPORTED
-PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structp png_ptr,
- png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn));
-PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structp png_ptr));
-#endif
-
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-/* Sets the function callbacks for the push reader, and a pointer to a
- * user-defined structure available to the callback functions.
- */
-PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structp png_ptr,
- png_voidp progressive_ptr, png_progressive_info_ptr info_fn,
- png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn));
-
-/* Returns the user pointer associated with the push read functions */
-PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, (png_const_structp png_ptr));
-
-/* Function to be called when data becomes available */
-PNG_EXPORT(92, void, png_process_data,
- (png_structp png_ptr, png_infop info_ptr,
- png_bytep buffer, png_size_t buffer_size));
-
-/* A function which may be called *only* within png_process_data to stop the
- * processing of any more data. The function returns the number of bytes
- * remaining, excluding any that libpng has cached internally. A subsequent
- * call to png_process_data must supply these bytes again. If the argument
- * 'save' is set to true the routine will first save all the pending data and
- * will always return 0.
- */
-PNG_EXPORT(219, png_size_t, png_process_data_pause, (png_structp, int save));
-
-/* A function which may be called *only* outside (after) a call to
- * png_process_data. It returns the number of bytes of data to skip in the
- * input. Normally it will return 0, but if it returns a non-zero value the
- * application must skip than number of bytes of input data and pass the
- * following data to the next call to png_process_data.
- */
-PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structp));
-
-/* Function that combines rows. 'new_row' is a flag that should come from
- * the callback and be non-NULL if anything needs to be done; the library
- * stores its own version of the new data internally and ignores the passed
- * in value.
- */
-PNG_EXPORT(93, void, png_progressive_combine_row, (png_structp png_ptr,
- png_bytep old_row, png_const_bytep new_row));
-#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
-
-PNG_EXPORTA(94, png_voidp, png_malloc,
- (png_structp png_ptr, png_alloc_size_t size),
- PNG_ALLOCATED);
-/* Added at libpng version 1.4.0 */
-PNG_EXPORTA(95, png_voidp, png_calloc,
- (png_structp png_ptr, png_alloc_size_t size),
- PNG_ALLOCATED);
-
-/* Added at libpng version 1.2.4 */
-PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_structp png_ptr,
- png_alloc_size_t size), PNG_ALLOCATED);
-
-/* Frees a pointer allocated by png_malloc() */
-PNG_EXPORT(97, void, png_free, (png_structp png_ptr, png_voidp ptr));
-
-/* Free data that was allocated internally */
-PNG_EXPORT(98, void, png_free_data,
- (png_structp png_ptr, png_infop info_ptr, png_uint_32 free_me, int num));
-
-/* Reassign responsibility for freeing existing data, whether allocated
- * by libpng or by the application */
-PNG_EXPORT(99, void, png_data_freer,
- (png_structp png_ptr, png_infop info_ptr, int freer, png_uint_32 mask));
-
-/* Assignments for png_data_freer */
-#define PNG_DESTROY_WILL_FREE_DATA 1
-#define PNG_SET_WILL_FREE_DATA 1
-#define PNG_USER_WILL_FREE_DATA 2
-/* Flags for png_ptr->free_me and info_ptr->free_me */
-#define PNG_FREE_HIST 0x0008
-#define PNG_FREE_ICCP 0x0010
-#define PNG_FREE_SPLT 0x0020
-#define PNG_FREE_ROWS 0x0040
-#define PNG_FREE_PCAL 0x0080
-#define PNG_FREE_SCAL 0x0100
-#define PNG_FREE_UNKN 0x0200
-#define PNG_FREE_LIST 0x0400
-#define PNG_FREE_PLTE 0x1000
-#define PNG_FREE_TRNS 0x2000
-#define PNG_FREE_TEXT 0x4000
-#define PNG_FREE_ALL 0x7fff
-#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */
-
-#ifdef PNG_USER_MEM_SUPPORTED
-PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_structp png_ptr,
- png_alloc_size_t size), PNG_ALLOCATED);
-PNG_EXPORT(101, void, png_free_default, (png_structp png_ptr, png_voidp ptr));
-#endif
-
-#ifdef PNG_ERROR_TEXT_SUPPORTED
-/* Fatal error in PNG image of libpng - can't continue */
-PNG_EXPORTA(102, void, png_error,
- (png_structp png_ptr, png_const_charp error_message),
- PNG_NORETURN);
-
-/* The same, but the chunk name is prepended to the error string. */
-PNG_EXPORTA(103, void, png_chunk_error, (png_structp png_ptr,
- png_const_charp error_message), PNG_NORETURN);
-
-#else
-/* Fatal error in PNG image of libpng - can't continue */
-PNG_EXPORTA(104, void, png_err, (png_structp png_ptr), PNG_NORETURN);
-#endif
-
-/* Non-fatal error in libpng. Can continue, but may have a problem. */
-PNG_EXPORT(105, void, png_warning, (png_structp png_ptr,
- png_const_charp warning_message));
-
-/* Non-fatal error in libpng, chunk name is prepended to message. */
-PNG_EXPORT(106, void, png_chunk_warning, (png_structp png_ptr,
- png_const_charp warning_message));
-
-#ifdef PNG_BENIGN_ERRORS_SUPPORTED
-/* Benign error in libpng. Can continue, but may have a problem.
- * User can choose whether to handle as a fatal error or as a warning. */
-# undef png_benign_error
-PNG_EXPORT(107, void, png_benign_error, (png_structp png_ptr,
- png_const_charp warning_message));
-
-/* Same, chunk name is prepended to message. */
-# undef png_chunk_benign_error
-PNG_EXPORT(108, void, png_chunk_benign_error, (png_structp png_ptr,
- png_const_charp warning_message));
-
-PNG_EXPORT(109, void, png_set_benign_errors,
- (png_structp png_ptr, int allowed));
-#else
-# ifdef PNG_ALLOW_BENIGN_ERRORS
-# define png_benign_error png_warning
-# define png_chunk_benign_error png_chunk_warning
-# else
-# define png_benign_error png_error
-# define png_chunk_benign_error png_chunk_error
-# endif
-#endif
-
-/* The png_set_ functions are for storing values in the png_info_struct.
- * Similarly, the png_get_ calls are used to read values from the
- * png_info_struct, either storing the parameters in the passed variables, or
- * setting pointers into the png_info_struct where the data is stored. The
- * png_get_ functions return a non-zero value if the data was available
- * in info_ptr, or return zero and do not change any of the parameters if the
- * data was not available.
- *
- * These functions should be used instead of directly accessing png_info
- * to avoid problems with future changes in the size and internal layout of
- * png_info_struct.
- */
-/* Returns "flag" if chunk data is valid in info_ptr. */
-PNG_EXPORT(110, png_uint_32, png_get_valid,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- png_uint_32 flag));
-
-/* Returns number of bytes needed to hold a transformed row. */
-PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_const_structp png_ptr,
- png_const_infop info_ptr));
-
-#ifdef PNG_INFO_IMAGE_SUPPORTED
-/* Returns row_pointers, which is an array of pointers to scanlines that was
- * returned from png_read_png().
- */
-PNG_EXPORT(112, png_bytepp, png_get_rows,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-/* Set row_pointers, which is an array of pointers to scanlines for use
- * by png_write_png().
- */
-PNG_EXPORT(113, void, png_set_rows, (png_structp png_ptr,
- png_infop info_ptr, png_bytepp row_pointers));
-#endif
-
-/* Returns number of color channels in image. */
-PNG_EXPORT(114, png_byte, png_get_channels,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-
-#ifdef PNG_EASY_ACCESS_SUPPORTED
-/* Returns image width in pixels. */
-PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structp png_ptr,
- png_const_infop info_ptr));
-
-/* Returns image height in pixels. */
-PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structp png_ptr,
- png_const_infop info_ptr));
-
-/* Returns image bit_depth. */
-PNG_EXPORT(117, png_byte, png_get_bit_depth,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-
-/* Returns image color_type. */
-PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structp png_ptr,
- png_const_infop info_ptr));
-
-/* Returns image filter_type. */
-PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structp png_ptr,
- png_const_infop info_ptr));
-
-/* Returns image interlace_type. */
-PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structp png_ptr,
- png_const_infop info_ptr));
-
-/* Returns image compression_type. */
-PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structp png_ptr,
- png_const_infop info_ptr));
-
-/* Returns image resolution in pixels per meter, from pHYs chunk data. */
-PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-
-/* Returns pixel aspect ratio, computed from pHYs chunk data. */
-PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-
-/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */
-PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-PNG_EXPORT(128, png_int_32, png_get_x_offset_microns,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-PNG_EXPORT(129, png_int_32, png_get_y_offset_microns,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-
-#endif /* PNG_EASY_ACCESS_SUPPORTED */
-
-/* Returns pointer to signature string read from PNG header */
-PNG_EXPORT(130, png_const_bytep, png_get_signature,
- (png_const_structp png_ptr, png_infop info_ptr));
-
-#ifdef PNG_bKGD_SUPPORTED
-PNG_EXPORT(131, png_uint_32, png_get_bKGD,
- (png_const_structp png_ptr, png_infop info_ptr,
- png_color_16p *background));
-#endif
-
-#ifdef PNG_bKGD_SUPPORTED
-PNG_EXPORT(132, void, png_set_bKGD, (png_structp png_ptr, png_infop info_ptr,
- png_const_color_16p background));
-#endif
-
-#ifdef PNG_cHRM_SUPPORTED
-PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structp png_ptr,
- png_const_infop info_ptr, double *white_x, double *white_y, double *red_x,
- double *red_y, double *green_x, double *green_y, double *blue_x,
- double *blue_y));
-#ifdef PNG_FIXED_POINT_SUPPORTED /* Otherwise not implemented */
-PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed,
- (png_const_structp png_ptr,
- png_const_infop info_ptr, png_fixed_point *int_white_x,
- png_fixed_point *int_white_y, png_fixed_point *int_red_x,
- png_fixed_point *int_red_y, png_fixed_point *int_green_x,
- png_fixed_point *int_green_y, png_fixed_point *int_blue_x,
- png_fixed_point *int_blue_y));
-#endif
-#endif
-
-#ifdef PNG_cHRM_SUPPORTED
-PNG_FP_EXPORT(135, void, png_set_cHRM,
- (png_structp png_ptr, png_infop info_ptr,
- double white_x, double white_y, double red_x, double red_y, double green_x,
- double green_y, double blue_x, double blue_y));
-PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_structp png_ptr,
- png_infop info_ptr, png_fixed_point int_white_x,
- png_fixed_point int_white_y, png_fixed_point int_red_x,
- png_fixed_point int_red_y, png_fixed_point int_green_x,
- png_fixed_point int_green_y, png_fixed_point int_blue_x,
- png_fixed_point int_blue_y));
-#endif
-
-#ifdef PNG_gAMA_SUPPORTED
-PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- double *file_gamma));
-PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- png_fixed_point *int_file_gamma));
-#endif
-
-#ifdef PNG_gAMA_SUPPORTED
-PNG_FP_EXPORT(139, void, png_set_gAMA, (png_structp png_ptr,
- png_infop info_ptr, double file_gamma));
-PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_structp png_ptr,
- png_infop info_ptr, png_fixed_point int_file_gamma));
-#endif
-
-#ifdef PNG_hIST_SUPPORTED
-PNG_EXPORT(141, png_uint_32, png_get_hIST,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- png_uint_16p *hist));
-#endif
-
-#ifdef PNG_hIST_SUPPORTED
-PNG_EXPORT(142, void, png_set_hIST, (png_structp png_ptr,
- png_infop info_ptr, png_const_uint_16p hist));
-#endif
-
-PNG_EXPORT(143, png_uint_32, png_get_IHDR,
- (png_structp png_ptr, png_infop info_ptr,
- png_uint_32 *width, png_uint_32 *height, int *bit_depth, int *color_type,
- int *interlace_method, int *compression_method, int *filter_method));
-
-PNG_EXPORT(144, void, png_set_IHDR,
- (png_structp png_ptr, png_infop info_ptr,
- png_uint_32 width, png_uint_32 height, int bit_depth, int color_type,
- int interlace_method, int compression_method, int filter_method));
-
-#ifdef PNG_oFFs_SUPPORTED
-PNG_EXPORT(145, png_uint_32, png_get_oFFs,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type));
-#endif
-
-#ifdef PNG_oFFs_SUPPORTED
-PNG_EXPORT(146, void, png_set_oFFs,
- (png_structp png_ptr, png_infop info_ptr,
- png_int_32 offset_x, png_int_32 offset_y, int unit_type));
-#endif
-
-#ifdef PNG_pCAL_SUPPORTED
-PNG_EXPORT(147, png_uint_32, png_get_pCAL,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type,
- int *nparams,
- png_charp *units, png_charpp *params));
-#endif
-
-#ifdef PNG_pCAL_SUPPORTED
-PNG_EXPORT(148, void, png_set_pCAL, (png_structp png_ptr,
- png_infop info_ptr,
- png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type,
- int nparams, png_const_charp units, png_charpp params));
-#endif
-
-#ifdef PNG_pHYs_SUPPORTED
-PNG_EXPORT(149, png_uint_32, png_get_pHYs,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
-#endif
-
-#ifdef PNG_pHYs_SUPPORTED
-PNG_EXPORT(150, void, png_set_pHYs,
- (png_structp png_ptr, png_infop info_ptr,
- png_uint_32 res_x, png_uint_32 res_y, int unit_type));
-#endif
-
-PNG_EXPORT(151, png_uint_32, png_get_PLTE,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- png_colorp *palette, int *num_palette));
-
-PNG_EXPORT(152, void, png_set_PLTE,
- (png_structp png_ptr, png_infop info_ptr,
- png_const_colorp palette, int num_palette));
-
-#ifdef PNG_sBIT_SUPPORTED
-PNG_EXPORT(153, png_uint_32, png_get_sBIT,
- (png_const_structp png_ptr, png_infop info_ptr,
- png_color_8p *sig_bit));
-#endif
-
-#ifdef PNG_sBIT_SUPPORTED
-PNG_EXPORT(154, void, png_set_sBIT,
- (png_structp png_ptr, png_infop info_ptr, png_const_color_8p sig_bit));
-#endif
-
-#ifdef PNG_sRGB_SUPPORTED
-PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structp png_ptr,
- png_const_infop info_ptr, int *file_srgb_intent));
-#endif
-
-#ifdef PNG_sRGB_SUPPORTED
-PNG_EXPORT(156, void, png_set_sRGB,
- (png_structp png_ptr, png_infop info_ptr, int srgb_intent));
-PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_structp png_ptr,
- png_infop info_ptr, int srgb_intent));
-#endif
-
-#ifdef PNG_iCCP_SUPPORTED
-PNG_EXPORT(158, png_uint_32, png_get_iCCP,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- png_charpp name, int *compression_type, png_bytepp profile,
- png_uint_32 *proflen));
-#endif
-
-#ifdef PNG_iCCP_SUPPORTED
-PNG_EXPORT(159, void, png_set_iCCP,
- (png_structp png_ptr, png_infop info_ptr,
- png_const_charp name, int compression_type, png_const_bytep profile,
- png_uint_32 proflen));
-#endif
-
-#ifdef PNG_sPLT_SUPPORTED
-PNG_EXPORT(160, png_uint_32, png_get_sPLT,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- png_sPLT_tpp entries));
-#endif
-
-#ifdef PNG_sPLT_SUPPORTED
-PNG_EXPORT(161, void, png_set_sPLT,
- (png_structp png_ptr, png_infop info_ptr,
- png_const_sPLT_tp entries, int nentries));
-#endif
-
-#ifdef PNG_TEXT_SUPPORTED
-/* png_get_text also returns the number of text chunks in *num_text */
-PNG_EXPORT(162, png_uint_32, png_get_text,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- png_textp *text_ptr, int *num_text));
-#endif
-
-/* Note while png_set_text() will accept a structure whose text,
- * language, and translated keywords are NULL pointers, the structure
- * returned by png_get_text will always contain regular
- * zero-terminated C strings. They might be empty strings but
- * they will never be NULL pointers.
- */
-
-#ifdef PNG_TEXT_SUPPORTED
-PNG_EXPORT(163, void, png_set_text,
- (png_structp png_ptr, png_infop info_ptr,
- png_const_textp text_ptr, int num_text));
-#endif
-
-#ifdef PNG_tIME_SUPPORTED
-PNG_EXPORT(164, png_uint_32, png_get_tIME,
- (png_const_structp png_ptr, png_infop info_ptr, png_timep *mod_time));
-#endif
-
-#ifdef PNG_tIME_SUPPORTED
-PNG_EXPORT(165, void, png_set_tIME,
- (png_structp png_ptr, png_infop info_ptr, png_const_timep mod_time));
-#endif
-
-#ifdef PNG_tRNS_SUPPORTED
-PNG_EXPORT(166, png_uint_32, png_get_tRNS,
- (png_const_structp png_ptr, png_infop info_ptr,
- png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color));
-#endif
-
-#ifdef PNG_tRNS_SUPPORTED
-PNG_EXPORT(167, void, png_set_tRNS,
- (png_structp png_ptr, png_infop info_ptr,
- png_const_bytep trans_alpha, int num_trans,
- png_const_color_16p trans_color));
-#endif
-
-#ifdef PNG_sCAL_SUPPORTED
-PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- int *unit, double *width, double *height));
-#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
-/* NOTE: this API is currently implemented using floating point arithmetic,
- * consequently it can only be used on systems with floating point support.
- * In any case the range of values supported by png_fixed_point is small and it
- * is highly recommended that png_get_sCAL_s be used instead.
- */
-PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed,
- (png_structp png_ptr, png_const_infop info_ptr, int *unit,
- png_fixed_point *width,
- png_fixed_point *height));
-#endif
-PNG_EXPORT(169, png_uint_32, png_get_sCAL_s,
- (png_const_structp png_ptr, png_const_infop info_ptr,
- int *unit, png_charpp swidth, png_charpp sheight));
-
-PNG_FP_EXPORT(170, void, png_set_sCAL,
- (png_structp png_ptr, png_infop info_ptr,
- int unit, double width, double height));
-PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_structp png_ptr,
- png_infop info_ptr, int unit, png_fixed_point width,
- png_fixed_point height));
-PNG_EXPORT(171, void, png_set_sCAL_s,
- (png_structp png_ptr, png_infop info_ptr,
- int unit, png_const_charp swidth, png_const_charp sheight));
-#endif /* PNG_sCAL_SUPPORTED */
-
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-/* Provide a list of chunks and how they are to be handled, if the built-in
- handling or default unknown chunk handling is not desired. Any chunks not
- listed will be handled in the default manner. The IHDR and IEND chunks
- must not be listed.
- keep = 0: follow default behaviour
- = 1: do not keep
- = 2: keep only if safe-to-copy
- = 3: keep even if unsafe-to-copy
-*/
-PNG_EXPORT(172, void, png_set_keep_unknown_chunks,
- (png_structp png_ptr, int keep,
- png_const_bytep chunk_list, int num_chunks));
-PNG_EXPORT(173, int, png_handle_as_unknown, (png_structp png_ptr,
- png_const_bytep chunk_name));
-#endif
-#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
-PNG_EXPORT(174, void, png_set_unknown_chunks, (png_structp png_ptr,
- png_infop info_ptr, png_const_unknown_chunkp unknowns,
- int num_unknowns));
-PNG_EXPORT(175, void, png_set_unknown_chunk_location,
- (png_structp png_ptr, png_infop info_ptr, int chunk, int location));
-PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structp png_ptr,
- png_const_infop info_ptr, png_unknown_chunkpp entries));
-#endif
-
-/* Png_free_data() will turn off the "valid" flag for anything it frees.
- * If you need to turn it off for a chunk that your application has freed,
- * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK);
- */
-PNG_EXPORT(177, void, png_set_invalid,
- (png_structp png_ptr, png_infop info_ptr, int mask));
-
-#ifdef PNG_INFO_IMAGE_SUPPORTED
-/* The "params" pointer is currently not used and is for future expansion. */
-PNG_EXPORT(178, void, png_read_png, (png_structp png_ptr, png_infop info_ptr,
- int transforms, png_voidp params));
-PNG_EXPORT(179, void, png_write_png, (png_structp png_ptr, png_infop info_ptr,
- int transforms, png_voidp params));
-#endif
-
-PNG_EXPORT(180, png_const_charp, png_get_copyright,
- (png_const_structp png_ptr));
-PNG_EXPORT(181, png_const_charp, png_get_header_ver,
- (png_const_structp png_ptr));
-PNG_EXPORT(182, png_const_charp, png_get_header_version,
- (png_const_structp png_ptr));
-PNG_EXPORT(183, png_const_charp, png_get_libpng_ver,
- (png_const_structp png_ptr));
-
-#ifdef PNG_MNG_FEATURES_SUPPORTED
-PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structp png_ptr,
- png_uint_32 mng_features_permitted));
-#endif
-
-/* For use in png_set_keep_unknown, added to version 1.2.6 */
-#define PNG_HANDLE_CHUNK_AS_DEFAULT 0
-#define PNG_HANDLE_CHUNK_NEVER 1
-#define PNG_HANDLE_CHUNK_IF_SAFE 2
-#define PNG_HANDLE_CHUNK_ALWAYS 3
-
-/* Strip the prepended error numbers ("#nnn ") from error and warning
- * messages before passing them to the error or warning handler.
- */
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
-PNG_EXPORT(185, void, png_set_strip_error_numbers,
- (png_structp png_ptr,
- png_uint_32 strip_mode));
-#endif
-
-/* Added in libpng-1.2.6 */
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
-PNG_EXPORT(186, void, png_set_user_limits, (png_structp png_ptr,
- png_uint_32 user_width_max, png_uint_32 user_height_max));
-PNG_EXPORT(187, png_uint_32, png_get_user_width_max,
- (png_const_structp png_ptr));
-PNG_EXPORT(188, png_uint_32, png_get_user_height_max,
- (png_const_structp png_ptr));
-/* Added in libpng-1.4.0 */
-PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structp png_ptr,
- png_uint_32 user_chunk_cache_max));
-PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max,
- (png_const_structp png_ptr));
-/* Added in libpng-1.4.1 */
-PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structp png_ptr,
- png_alloc_size_t user_chunk_cache_max));
-PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max,
- (png_const_structp png_ptr));
-#endif
-
-#if defined(PNG_INCH_CONVERSIONS_SUPPORTED)
-PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-
-PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-
-PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-
-PNG_FP_EXPORT(196, float, png_get_x_offset_inches,
- (png_const_structp png_ptr, png_const_infop info_ptr));
-#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */
-PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed,
- (png_structp png_ptr, png_const_infop info_ptr));
-#endif
-
-PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structp png_ptr,
- png_const_infop info_ptr));
-#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */
-PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed,
- (png_structp png_ptr, png_const_infop info_ptr));
-#endif
-
-# ifdef PNG_pHYs_SUPPORTED
-PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structp png_ptr,
- png_const_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y,
- int *unit_type));
-# endif /* PNG_pHYs_SUPPORTED */
-#endif /* PNG_INCH_CONVERSIONS_SUPPORTED */
-
-/* Added in libpng-1.4.0 */
-#ifdef PNG_IO_STATE_SUPPORTED
-PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_structp png_ptr));
-
-PNG_EXPORTA(200, png_const_bytep, png_get_io_chunk_name,
- (png_structp png_ptr), PNG_DEPRECATED);
-PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type,
- (png_const_structp png_ptr));
-
-/* The flags returned by png_get_io_state() are the following: */
-# define PNG_IO_NONE 0x0000 /* no I/O at this moment */
-# define PNG_IO_READING 0x0001 /* currently reading */
-# define PNG_IO_WRITING 0x0002 /* currently writing */
-# define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */
-# define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */
-# define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */
-# define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */
-# define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */
-# define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */
-#endif /* ?PNG_IO_STATE_SUPPORTED */
-
-/* Interlace support. The following macros are always defined so that if
- * libpng interlace handling is turned off the macros may be used to handle
- * interlaced images within the application.
- */
-#define PNG_INTERLACE_ADAM7_PASSES 7
-
-/* Two macros to return the first row and first column of the original,
- * full, image which appears in a given pass. 'pass' is in the range 0
- * to 6 and the result is in the range 0 to 7.
- */
-#define PNG_PASS_START_ROW(pass) (((1U&~(pass))<<(3-((pass)>>1)))&7)
-#define PNG_PASS_START_COL(pass) (((1U& (pass))<<(3-(((pass)+1)>>1)))&7)
-
-/* Two macros to help evaluate the number of rows or columns in each
- * pass. This is expressed as a shift - effectively log2 of the number or
- * rows or columns in each 8x8 tile of the original image.
- */
-#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3)
-#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3)
-
-/* Hence two macros to determine the number of rows or columns in a given
- * pass of an image given its height or width. In fact these macros may
- * return non-zero even though the sub-image is empty, because the other
- * dimension may be empty for a small image.
- */
-#define PNG_PASS_ROWS(height, pass) (((height)+(((1<>PNG_PASS_ROW_SHIFT(pass))
-#define PNG_PASS_COLS(width, pass) (((width)+(((1<>PNG_PASS_COL_SHIFT(pass))
-
-/* For the progressive reader it is necessary to find the row in the output
- * image given a row in an interlaced image, so two more macros:
- */
-#define PNG_ROW_FROM_PASS_ROW(yIn, pass) \
- (((yIn)<>(((7-(off))-(pass))<<2)) & 0xFU) | \
- ((0x01145AF0U>>(((7-(off))-(pass))<<2)) & 0xF0U))
-
-#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \
- ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1)
-#define PNG_COL_IN_INTERLACE_PASS(x, pass) \
- ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1)
-
-#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
-/* With these routines we avoid an integer divide, which will be slower on
- * most machines. However, it does take more operations than the corresponding
- * divide method, so it may be slower on a few RISC systems. There are two
- * shifts (by 8 or 16 bits) and an addition, versus a single integer divide.
- *
- * Note that the rounding factors are NOT supposed to be the same! 128 and
- * 32768 are correct for the NODIV code; 127 and 32767 are correct for the
- * standard method.
- *
- * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ]
- */
-
- /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */
-
-# define png_composite(composite, fg, alpha, bg) \
- { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \
- * (png_uint_16)(alpha) \
- + (png_uint_16)(bg)*(png_uint_16)(255 \
- - (png_uint_16)(alpha)) + (png_uint_16)128); \
- (composite) = (png_byte)((temp + (temp >> 8)) >> 8); }
-
-# define png_composite_16(composite, fg, alpha, bg) \
- { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \
- * (png_uint_32)(alpha) \
- + (png_uint_32)(bg)*(png_uint_32)(65535L \
- - (png_uint_32)(alpha)) + (png_uint_32)32768L); \
- (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); }
-
-#else /* Standard method using integer division */
-
-# define png_composite(composite, fg, alpha, bg) \
- (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \
- (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \
- (png_uint_16)127) / 255)
-
-# define png_composite_16(composite, fg, alpha, bg) \
- (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \
- (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \
- (png_uint_32)32767) / (png_uint_32)65535L)
-#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */
-
-#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED
-PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf));
-PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf));
-PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf));
-#endif
-
-PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_structp png_ptr,
- png_const_bytep buf));
-/* No png_get_int_16 -- may be added if there's a real need for it. */
-
-/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */
-#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED
-PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i));
-#endif
-#ifdef PNG_SAVE_INT_32_SUPPORTED
-PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i));
-#endif
-
-/* Place a 16-bit number into a buffer in PNG byte order.
- * The parameter is declared unsigned int, not png_uint_16,
- * just to avoid potential problems on pre-ANSI C compilers.
- */
-#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED
-PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i));
-/* No png_save_int_16 -- may be added if there's a real need for it. */
-#endif
-
-#ifdef PNG_USE_READ_MACROS
-/* Inline macros to do direct reads of bytes from the input buffer.
- * The png_get_int_32() routine assumes we are using two's complement
- * format for negative values, which is almost certainly true.
- */
-# define png_get_uint_32(buf) \
- (((png_uint_32)(*(buf)) << 24) + \
- ((png_uint_32)(*((buf) + 1)) << 16) + \
- ((png_uint_32)(*((buf) + 2)) << 8) + \
- ((png_uint_32)(*((buf) + 3))))
-
- /* From libpng-1.4.0 until 1.4.4, the png_get_uint_16 macro (but not the
- * function) incorrectly returned a value of type png_uint_32.
- */
-# define png_get_uint_16(buf) \
- ((png_uint_16) \
- (((unsigned int)(*(buf)) << 8) + \
- ((unsigned int)(*((buf) + 1)))))
-
-# define png_get_int_32(buf) \
- ((png_int_32)((*(buf) & 0x80) \
- ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffffL) + 1)) \
- : (png_int_32)png_get_uint_32(buf)))
-#endif
-
-/* Maintainer: Put new public prototypes here ^, in libpng.3, and project
- * defs
- */
-
-/* The last ordinal number (this is the *last* one already used; the next
- * one to use is one more than this.) Maintainer, remember to add an entry to
- * scripts/symbols.def as well.
- */
-#ifdef PNG_EXPORT_LAST_ORDINAL
- PNG_EXPORT_LAST_ORDINAL(220);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* PNG_VERSION_INFO_ONLY */
-/* Do not put anything past this line */
-#endif /* PNG_H */
+/* png.h - header file for PNG reference library
+ *
+ * libpng version 1.2.50 - July 10, 2012
+ * Copyright (c) 1998-2012 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license (See LICENSE, below)
+ *
+ * Authors and maintainers:
+ * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
+ * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
+ * libpng versions 0.97, January 1998, through 1.2.50 - July 10, 2012: Glenn
+ * See also "Contributing Authors", below.
+ *
+ * Note about libpng version numbers:
+ *
+ * Due to various miscommunications, unforeseen code incompatibilities
+ * and occasional factors outside the authors' control, version numbering
+ * on the library has not always been consistent and straightforward.
+ * The following table summarizes matters since version 0.89c, which was
+ * the first widely used release:
+ *
+ * source png.h png.h shared-lib
+ * version string int version
+ * ------- ------ ----- ----------
+ * 0.89c "1.0 beta 3" 0.89 89 1.0.89
+ * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90]
+ * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95]
+ * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96]
+ * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97]
+ * 0.97c 0.97 97 2.0.97
+ * 0.98 0.98 98 2.0.98
+ * 0.99 0.99 98 2.0.99
+ * 0.99a-m 0.99 99 2.0.99
+ * 1.00 1.00 100 2.1.0 [100 should be 10000]
+ * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000]
+ * 1.0.1 png.h string is 10001 2.1.0
+ * 1.0.1a-e identical to the 10002 from here on, the shared library
+ * 1.0.2 source version) 10002 is 2.V where V is the source code
+ * 1.0.2a-b 10003 version, except as noted.
+ * 1.0.3 10003
+ * 1.0.3a-d 10004
+ * 1.0.4 10004
+ * 1.0.4a-f 10005
+ * 1.0.5 (+ 2 patches) 10005
+ * 1.0.5a-d 10006
+ * 1.0.5e-r 10100 (not source compatible)
+ * 1.0.5s-v 10006 (not binary compatible)
+ * 1.0.6 (+ 3 patches) 10006 (still binary incompatible)
+ * 1.0.6d-f 10007 (still binary incompatible)
+ * 1.0.6g 10007
+ * 1.0.6h 10007 10.6h (testing xy.z so-numbering)
+ * 1.0.6i 10007 10.6i
+ * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0)
+ * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible)
+ * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible)
+ * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible)
+ * 1.0.7 1 10007 (still compatible)
+ * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4
+ * 1.0.8rc1 1 10008 2.1.0.8rc1
+ * 1.0.8 1 10008 2.1.0.8
+ * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6
+ * 1.0.9rc1 1 10009 2.1.0.9rc1
+ * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10
+ * 1.0.9rc2 1 10009 2.1.0.9rc2
+ * 1.0.9 1 10009 2.1.0.9
+ * 1.0.10beta1 1 10010 2.1.0.10beta1
+ * 1.0.10rc1 1 10010 2.1.0.10rc1
+ * 1.0.10 1 10010 2.1.0.10
+ * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3
+ * 1.0.11rc1 1 10011 2.1.0.11rc1
+ * 1.0.11 1 10011 2.1.0.11
+ * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2
+ * 1.0.12rc1 2 10012 2.1.0.12rc1
+ * 1.0.12 2 10012 2.1.0.12
+ * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned)
+ * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2
+ * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5
+ * 1.2.0rc1 3 10200 3.1.2.0rc1
+ * 1.2.0 3 10200 3.1.2.0
+ * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4
+ * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2
+ * 1.2.1 3 10201 3.1.2.1
+ * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6
+ * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1
+ * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1
+ * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1
+ * 1.0.13 10 10013 10.so.0.1.0.13
+ * 1.2.2 12 10202 12.so.0.1.2.2
+ * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6
+ * 1.2.3 12 10203 12.so.0.1.2.3
+ * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3
+ * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1
+ * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1
+ * 1.0.14 10 10014 10.so.0.1.0.14
+ * 1.2.4 13 10204 12.so.0.1.2.4
+ * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2
+ * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3
+ * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3
+ * 1.0.15 10 10015 10.so.0.1.0.15
+ * 1.2.5 13 10205 12.so.0.1.2.5
+ * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4
+ * 1.0.16 10 10016 10.so.0.1.0.16
+ * 1.2.6 13 10206 12.so.0.1.2.6
+ * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2
+ * 1.0.17rc1 10 10017 10.so.0.1.0.17rc1
+ * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1
+ * 1.0.17 10 10017 10.so.0.1.0.17
+ * 1.2.7 13 10207 12.so.0.1.2.7
+ * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5
+ * 1.0.18rc1-5 10 10018 10.so.0.1.0.18rc1-5
+ * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5
+ * 1.0.18 10 10018 10.so.0.1.0.18
+ * 1.2.8 13 10208 12.so.0.1.2.8
+ * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3
+ * 1.2.9beta4-11 13 10209 12.so.0.9[.0]
+ * 1.2.9rc1 13 10209 12.so.0.9[.0]
+ * 1.2.9 13 10209 12.so.0.9[.0]
+ * 1.2.10beta1-8 13 10210 12.so.0.10[.0]
+ * 1.2.10rc1-3 13 10210 12.so.0.10[.0]
+ * 1.2.10 13 10210 12.so.0.10[.0]
+ * 1.2.11beta1-4 13 10211 12.so.0.11[.0]
+ * 1.0.19rc1-5 10 10019 10.so.0.19[.0]
+ * 1.2.11rc1-5 13 10211 12.so.0.11[.0]
+ * 1.0.19 10 10019 10.so.0.19[.0]
+ * 1.2.11 13 10211 12.so.0.11[.0]
+ * 1.0.20 10 10020 10.so.0.20[.0]
+ * 1.2.12 13 10212 12.so.0.12[.0]
+ * 1.2.13beta1 13 10213 12.so.0.13[.0]
+ * 1.0.21 10 10021 10.so.0.21[.0]
+ * 1.2.13 13 10213 12.so.0.13[.0]
+ * 1.2.14beta1-2 13 10214 12.so.0.14[.0]
+ * 1.0.22rc1 10 10022 10.so.0.22[.0]
+ * 1.2.14rc1 13 10214 12.so.0.14[.0]
+ * 1.0.22 10 10022 10.so.0.22[.0]
+ * 1.2.14 13 10214 12.so.0.14[.0]
+ * 1.2.15beta1-6 13 10215 12.so.0.15[.0]
+ * 1.0.23rc1-5 10 10023 10.so.0.23[.0]
+ * 1.2.15rc1-5 13 10215 12.so.0.15[.0]
+ * 1.0.23 10 10023 10.so.0.23[.0]
+ * 1.2.15 13 10215 12.so.0.15[.0]
+ * 1.2.16beta1-2 13 10216 12.so.0.16[.0]
+ * 1.2.16rc1 13 10216 12.so.0.16[.0]
+ * 1.0.24 10 10024 10.so.0.24[.0]
+ * 1.2.16 13 10216 12.so.0.16[.0]
+ * 1.2.17beta1-2 13 10217 12.so.0.17[.0]
+ * 1.0.25rc1 10 10025 10.so.0.25[.0]
+ * 1.2.17rc1-3 13 10217 12.so.0.17[.0]
+ * 1.0.25 10 10025 10.so.0.25[.0]
+ * 1.2.17 13 10217 12.so.0.17[.0]
+ * 1.0.26 10 10026 10.so.0.26[.0]
+ * 1.2.18 13 10218 12.so.0.18[.0]
+ * 1.2.19beta1-31 13 10219 12.so.0.19[.0]
+ * 1.0.27rc1-6 10 10027 10.so.0.27[.0]
+ * 1.2.19rc1-6 13 10219 12.so.0.19[.0]
+ * 1.0.27 10 10027 10.so.0.27[.0]
+ * 1.2.19 13 10219 12.so.0.19[.0]
+ * 1.2.20beta01-04 13 10220 12.so.0.20[.0]
+ * 1.0.28rc1-6 10 10028 10.so.0.28[.0]
+ * 1.2.20rc1-6 13 10220 12.so.0.20[.0]
+ * 1.0.28 10 10028 10.so.0.28[.0]
+ * 1.2.20 13 10220 12.so.0.20[.0]
+ * 1.2.21beta1-2 13 10221 12.so.0.21[.0]
+ * 1.2.21rc1-3 13 10221 12.so.0.21[.0]
+ * 1.0.29 10 10029 10.so.0.29[.0]
+ * 1.2.21 13 10221 12.so.0.21[.0]
+ * 1.2.22beta1-4 13 10222 12.so.0.22[.0]
+ * 1.0.30rc1 10 10030 10.so.0.30[.0]
+ * 1.2.22rc1 13 10222 12.so.0.22[.0]
+ * 1.0.30 10 10030 10.so.0.30[.0]
+ * 1.2.22 13 10222 12.so.0.22[.0]
+ * 1.2.23beta01-05 13 10223 12.so.0.23[.0]
+ * 1.2.23rc01 13 10223 12.so.0.23[.0]
+ * 1.2.23 13 10223 12.so.0.23[.0]
+ * 1.2.24beta01-02 13 10224 12.so.0.24[.0]
+ * 1.2.24rc01 13 10224 12.so.0.24[.0]
+ * 1.2.24 13 10224 12.so.0.24[.0]
+ * 1.2.25beta01-06 13 10225 12.so.0.25[.0]
+ * 1.2.25rc01-02 13 10225 12.so.0.25[.0]
+ * 1.0.31 10 10031 10.so.0.31[.0]
+ * 1.2.25 13 10225 12.so.0.25[.0]
+ * 1.2.26beta01-06 13 10226 12.so.0.26[.0]
+ * 1.2.26rc01 13 10226 12.so.0.26[.0]
+ * 1.2.26 13 10226 12.so.0.26[.0]
+ * 1.0.32 10 10032 10.so.0.32[.0]
+ * 1.2.27beta01-06 13 10227 12.so.0.27[.0]
+ * 1.2.27rc01 13 10227 12.so.0.27[.0]
+ * 1.0.33 10 10033 10.so.0.33[.0]
+ * 1.2.27 13 10227 12.so.0.27[.0]
+ * 1.0.34 10 10034 10.so.0.34[.0]
+ * 1.2.28 13 10228 12.so.0.28[.0]
+ * 1.2.29beta01-03 13 10229 12.so.0.29[.0]
+ * 1.2.29rc01 13 10229 12.so.0.29[.0]
+ * 1.0.35 10 10035 10.so.0.35[.0]
+ * 1.2.29 13 10229 12.so.0.29[.0]
+ * 1.0.37 10 10037 10.so.0.37[.0]
+ * 1.2.30beta01-04 13 10230 12.so.0.30[.0]
+ * 1.0.38rc01-08 10 10038 10.so.0.38[.0]
+ * 1.2.30rc01-08 13 10230 12.so.0.30[.0]
+ * 1.0.38 10 10038 10.so.0.38[.0]
+ * 1.2.30 13 10230 12.so.0.30[.0]
+ * 1.0.39rc01-03 10 10039 10.so.0.39[.0]
+ * 1.2.31rc01-03 13 10231 12.so.0.31[.0]
+ * 1.0.39 10 10039 10.so.0.39[.0]
+ * 1.2.31 13 10231 12.so.0.31[.0]
+ * 1.2.32beta01-02 13 10232 12.so.0.32[.0]
+ * 1.0.40rc01 10 10040 10.so.0.40[.0]
+ * 1.2.32rc01 13 10232 12.so.0.32[.0]
+ * 1.0.40 10 10040 10.so.0.40[.0]
+ * 1.2.32 13 10232 12.so.0.32[.0]
+ * 1.2.33beta01-02 13 10233 12.so.0.33[.0]
+ * 1.2.33rc01-02 13 10233 12.so.0.33[.0]
+ * 1.0.41rc01 10 10041 10.so.0.41[.0]
+ * 1.2.33 13 10233 12.so.0.33[.0]
+ * 1.0.41 10 10041 10.so.0.41[.0]
+ * 1.2.34beta01-07 13 10234 12.so.0.34[.0]
+ * 1.0.42rc01 10 10042 10.so.0.42[.0]
+ * 1.2.34rc01 13 10234 12.so.0.34[.0]
+ * 1.0.42 10 10042 10.so.0.42[.0]
+ * 1.2.34 13 10234 12.so.0.34[.0]
+ * 1.2.35beta01-03 13 10235 12.so.0.35[.0]
+ * 1.0.43rc01-02 10 10043 10.so.0.43[.0]
+ * 1.2.35rc01-02 13 10235 12.so.0.35[.0]
+ * 1.0.43 10 10043 10.so.0.43[.0]
+ * 1.2.35 13 10235 12.so.0.35[.0]
+ * 1.2.36beta01-05 13 10236 12.so.0.36[.0]
+ * 1.2.36rc01 13 10236 12.so.0.36[.0]
+ * 1.0.44 10 10044 10.so.0.44[.0]
+ * 1.2.36 13 10236 12.so.0.36[.0]
+ * 1.2.37beta01-03 13 10237 12.so.0.37[.0]
+ * 1.2.37rc01 13 10237 12.so.0.37[.0]
+ * 1.2.37 13 10237 12.so.0.37[.0]
+ * 1.0.45 10 10045 12.so.0.45[.0]
+ * 1.0.46 10 10046 10.so.0.46[.0]
+ * 1.2.38beta01 13 10238 12.so.0.38[.0]
+ * 1.2.38rc01-03 13 10238 12.so.0.38[.0]
+ * 1.0.47 10 10047 10.so.0.47[.0]
+ * 1.2.38 13 10238 12.so.0.38[.0]
+ * 1.2.39beta01-05 13 10239 12.so.0.39[.0]
+ * 1.2.39rc01 13 10239 12.so.0.39[.0]
+ * 1.0.48 10 10048 10.so.0.48[.0]
+ * 1.2.39 13 10239 12.so.0.39[.0]
+ * 1.2.40beta01 13 10240 12.so.0.40[.0]
+ * 1.2.40rc01 13 10240 12.so.0.40[.0]
+ * 1.0.49 10 10049 10.so.0.49[.0]
+ * 1.2.40 13 10240 12.so.0.40[.0]
+ * 1.2.41beta01-18 13 10241 12.so.0.41[.0]
+ * 1.0.51rc01 10 10051 10.so.0.51[.0]
+ * 1.2.41rc01-03 13 10241 12.so.0.41[.0]
+ * 1.0.51 10 10051 10.so.0.51[.0]
+ * 1.2.41 13 10241 12.so.0.41[.0]
+ * 1.2.42beta01-02 13 10242 12.so.0.42[.0]
+ * 1.2.42rc01-05 13 10242 12.so.0.42[.0]
+ * 1.0.52 10 10052 10.so.0.52[.0]
+ * 1.2.42 13 10242 12.so.0.42[.0]
+ * 1.2.43beta01-05 13 10243 12.so.0.43[.0]
+ * 1.0.53rc01-02 10 10053 10.so.0.53[.0]
+ * 1.2.43rc01-02 13 10243 12.so.0.43[.0]
+ * 1.0.53 10 10053 10.so.0.53[.0]
+ * 1.2.43 13 10243 12.so.0.43[.0]
+ * 1.2.44beta01-03 13 10244 12.so.0.44[.0]
+ * 1.2.44rc01-03 13 10244 12.so.0.44[.0]
+ * 1.2.44 13 10244 12.so.0.44[.0]
+ * 1.2.45beta01-03 13 10245 12.so.0.45[.0]
+ * 1.0.55rc01 10 10055 10.so.0.55[.0]
+ * 1.2.45rc01 13 10245 12.so.0.45[.0]
+ * 1.0.55 10 10055 10.so.0.55[.0]
+ * 1.2.45 13 10245 12.so.0.45[.0]
+ * 1.2.46rc01-02 13 10246 12.so.0.46[.0]
+ * 1.0.56 10 10056 10.so.0.56[.0]
+ * 1.2.46 13 10246 12.so.0.46[.0]
+ * 1.2.47beta01 13 10247 12.so.0.47[.0]
+ * 1.2.47rc01 13 10247 12.so.0.47[.0]
+ * 1.0.57rc01 10 10057 10.so.0.57[.0]
+ * 1.2.47 13 10247 12.so.0.47[.0]
+ * 1.0.57 10 10057 10.so.0.57[.0]
+ * 1.2.48beta01 13 10248 12.so.0.48[.0]
+ * 1.2.48rc01-02 13 10248 12.so.0.48[.0]
+ * 1.0.58 10 10058 10.so.0.58[.0]
+ * 1.2.48 13 10248 12.so.0.48[.0]
+ * 1.2.49rc01 13 10249 12.so.0.49[.0]
+ * 1.0.59 10 10059 10.so.0.59[.0]
+ * 1.2.49 13 10249 12.so.0.49[.0]
+ * 1.0.60 10 10060 10.so.0.60[.0]
+ * 1.2.50 13 10250 12.so.0.50[.0]
+ *
+ * Henceforth the source version will match the shared-library major
+ * and minor numbers; the shared-library major version number will be
+ * used for changes in backward compatibility, as it is intended. The
+ * PNG_LIBPNG_VER macro, which is not used within libpng but is available
+ * for applications, is an unsigned integer of the form xyyzz corresponding
+ * to the source version x.y.z (leading zeros in y and z). Beta versions
+ * were given the previous public release number plus a letter, until
+ * version 1.0.6j; from then on they were given the upcoming public
+ * release number plus "betaNN" or "rcNN".
+ *
+ * Binary incompatibility exists only when applications make direct access
+ * to the info_ptr or png_ptr members through png.h, and the compiled
+ * application is loaded with a different version of the library.
+ *
+ * DLLNUM will change each time there are forward or backward changes
+ * in binary compatibility (e.g., when a new feature is added).
+ *
+ * See libpng.txt or libpng.3 for more information. The PNG specification
+ * is available as a W3C Recommendation and as an ISO Specification,
+ * defines should NOT be changed.
+ */
+#define PNG_INFO_gAMA 0x0001
+#define PNG_INFO_sBIT 0x0002
+#define PNG_INFO_cHRM 0x0004
+#define PNG_INFO_PLTE 0x0008
+#define PNG_INFO_tRNS 0x0010
+#define PNG_INFO_bKGD 0x0020
+#define PNG_INFO_hIST 0x0040
+#define PNG_INFO_pHYs 0x0080
+#define PNG_INFO_oFFs 0x0100
+#define PNG_INFO_tIME 0x0200
+#define PNG_INFO_pCAL 0x0400
+#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */
+#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */
+#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */
+#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */
+#define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */
+
+/* This is used for the transformation routines, as some of them
+ * change these values for the row. It also should enable using
+ * the routines for other purposes.
+ */
+typedef struct png_row_info_struct
+{
+ png_uint_32 width; /* width of row */
+ png_uint_32 rowbytes; /* number of bytes in row */
+ png_byte color_type; /* color type of row */
+ png_byte bit_depth; /* bit depth of row */
+ png_byte channels; /* number of channels (1, 2, 3, or 4) */
+ png_byte pixel_depth; /* bits per pixel (depth * channels) */
+} png_row_info;
+
+typedef png_row_info FAR * png_row_infop;
+typedef png_row_info FAR * FAR * png_row_infopp;
+
+/* These are the function types for the I/O functions and for the functions
+ * that allow the user to override the default I/O functions with his or her
+ * own. The png_error_ptr type should match that of user-supplied warning
+ * and error functions, while the png_rw_ptr type should match that of the
+ * user read/write data functions.
+ */
+typedef struct png_struct_def png_struct;
+typedef png_struct FAR * png_structp;
+
+typedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp));
+typedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t));
+typedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp));
+typedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32,
+ int));
+typedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32,
+ int));
+
+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+typedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp, png_infop));
+typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop));
+typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep,
+ png_uint_32, int));
+#endif
+
+#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
+ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
+ defined(PNG_LEGACY_SUPPORTED)
+typedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp,
+ png_row_infop, png_bytep));
+#endif
+
+#ifdef PNG_USER_CHUNKS_SUPPORTED
+typedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp, png_unknown_chunkp));
+#endif
+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
+typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp));
+#endif
+
+/* Transform masks for the high-level interface */
+#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */
+#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */
+#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */
+#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */
+#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */
+#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */
+#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */
+#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */
+#define PNG_TRANSFORM_BGR 0x0080 /* read and write */
+#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */
+#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */
+#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */
+#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only, deprecated */
+/* Added to libpng-1.2.34 */
+#define PNG_TRANSFORM_STRIP_FILLER_BEFORE 0x0800 /* write only */
+#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */
+/* Added to libpng-1.2.41 */
+#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */
+
+/* Flags for MNG supported features */
+#define PNG_FLAG_MNG_EMPTY_PLTE 0x01
+#define PNG_FLAG_MNG_FILTER_64 0x04
+#define PNG_ALL_MNG_FEATURES 0x05
+
+typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_size_t));
+typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp));
+
+/* The structure that holds the information to read and write PNG files.
+ * The only people who need to care about what is inside of this are the
+ * people who will be modifying the library for their own special needs.
+ * It should NOT be accessed directly by an application, except to store
+ * the jmp_buf.
+ */
+
+struct png_struct_def
+{
+#ifdef PNG_SETJMP_SUPPORTED
+ jmp_buf jmpbuf; /* used in png_error */
+#endif
+ png_error_ptr error_fn PNG_DEPSTRUCT; /* function for printing errors and aborting */
+ png_error_ptr warning_fn PNG_DEPSTRUCT; /* function for printing warnings */
+ png_voidp error_ptr PNG_DEPSTRUCT; /* user supplied struct for error functions */
+ png_rw_ptr write_data_fn PNG_DEPSTRUCT; /* function for writing output data */
+ png_rw_ptr read_data_fn PNG_DEPSTRUCT; /* function for reading input data */
+ png_voidp io_ptr PNG_DEPSTRUCT; /* ptr to application struct for I/O functions */
+
+#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
+ png_user_transform_ptr read_user_transform_fn PNG_DEPSTRUCT; /* user read transform */
+#endif
+
+#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
+ png_user_transform_ptr write_user_transform_fn PNG_DEPSTRUCT; /* user write transform */
+#endif
+
+/* These were added in libpng-1.0.2 */
+#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
+#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
+ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
+ png_voidp user_transform_ptr PNG_DEPSTRUCT; /* user supplied struct for user transform */
+ png_byte user_transform_depth PNG_DEPSTRUCT; /* bit depth of user transformed pixels */
+ png_byte user_transform_channels PNG_DEPSTRUCT; /* channels in user transformed pixels */
+#endif
+#endif
+
+ png_uint_32 mode PNG_DEPSTRUCT; /* tells us where we are in the PNG file */
+ png_uint_32 flags PNG_DEPSTRUCT; /* flags indicating various things to libpng */
+ png_uint_32 transformations PNG_DEPSTRUCT; /* which transformations to perform */
+
+ z_stream zstream PNG_DEPSTRUCT; /* pointer to decompression structure (below) */
+ png_bytep zbuf PNG_DEPSTRUCT; /* buffer for zlib */
+ png_size_t zbuf_size PNG_DEPSTRUCT; /* size of zbuf */
+ int zlib_level PNG_DEPSTRUCT; /* holds zlib compression level */
+ int zlib_method PNG_DEPSTRUCT; /* holds zlib compression method */
+ int zlib_window_bits PNG_DEPSTRUCT; /* holds zlib compression window bits */
+ int zlib_mem_level PNG_DEPSTRUCT; /* holds zlib compression memory level */
+ int zlib_strategy PNG_DEPSTRUCT; /* holds zlib compression strategy */
+
+ png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels */
+ png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels */
+ png_uint_32 num_rows PNG_DEPSTRUCT; /* number of rows in current pass */
+ png_uint_32 usr_width PNG_DEPSTRUCT; /* width of row at start of write */
+ png_uint_32 rowbytes PNG_DEPSTRUCT; /* size of row in bytes */
+#if 0 /* Replaced with the following in libpng-1.2.43 */
+ png_size_t irowbytes PNG_DEPSTRUCT;
+#endif
+/* Added in libpng-1.2.43 */
+#ifdef PNG_USER_LIMITS_SUPPORTED
+ /* Added in libpng-1.4.0: Total number of sPLT, text, and unknown
+ * chunks that can be stored (0 means unlimited).
+ */
+ png_uint_32 user_chunk_cache_max PNG_DEPSTRUCT;
+#endif
+ png_uint_32 iwidth PNG_DEPSTRUCT; /* width of current interlaced row in pixels */
+ png_uint_32 row_number PNG_DEPSTRUCT; /* current row in interlace pass */
+ png_bytep prev_row PNG_DEPSTRUCT; /* buffer to save previous (unfiltered) row */
+ png_bytep row_buf PNG_DEPSTRUCT; /* buffer to save current (unfiltered) row */
+#ifndef PNG_NO_WRITE_FILTER
+ png_bytep sub_row PNG_DEPSTRUCT; /* buffer to save "sub" row when filtering */
+ png_bytep up_row PNG_DEPSTRUCT; /* buffer to save "up" row when filtering */
+ png_bytep avg_row PNG_DEPSTRUCT; /* buffer to save "avg" row when filtering */
+ png_bytep paeth_row PNG_DEPSTRUCT; /* buffer to save "Paeth" row when filtering */
+#endif
+ png_row_info row_info PNG_DEPSTRUCT; /* used for transformation routines */
+
+ png_uint_32 idat_size PNG_DEPSTRUCT; /* current IDAT size for read */
+ png_uint_32 crc PNG_DEPSTRUCT; /* current chunk CRC value */
+ png_colorp palette PNG_DEPSTRUCT; /* palette from the input file */
+ png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in palette */
+ png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparency values */
+ png_byte chunk_name[5] PNG_DEPSTRUCT; /* null-terminated name of current chunk */
+ png_byte compression PNG_DEPSTRUCT; /* file compression type (always 0) */
+ png_byte filter PNG_DEPSTRUCT; /* file filter type (always 0) */
+ png_byte interlaced PNG_DEPSTRUCT; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
+ png_byte pass PNG_DEPSTRUCT; /* current interlace pass (0 - 6) */
+ png_byte do_filter PNG_DEPSTRUCT; /* row filter flags (see PNG_FILTER_ below ) */
+ png_byte color_type PNG_DEPSTRUCT; /* color type of file */
+ png_byte bit_depth PNG_DEPSTRUCT; /* bit depth of file */
+ png_byte usr_bit_depth PNG_DEPSTRUCT; /* bit depth of users row */
+ png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */
+ png_byte channels PNG_DEPSTRUCT; /* number of channels in file */
+ png_byte usr_channels PNG_DEPSTRUCT; /* channels at start of write */
+ png_byte sig_bytes PNG_DEPSTRUCT; /* magic bytes read/written from start of file */
+
+#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
+#ifdef PNG_LEGACY_SUPPORTED
+ png_byte filler PNG_DEPSTRUCT; /* filler byte for pixel expansion */
+#else
+ png_uint_16 filler PNG_DEPSTRUCT; /* filler bytes for pixel expansion */
+#endif
+#endif
+
+#ifdef PNG_bKGD_SUPPORTED
+ png_byte background_gamma_type PNG_DEPSTRUCT;
+# ifdef PNG_FLOATING_POINT_SUPPORTED
+ float background_gamma PNG_DEPSTRUCT;
+# endif
+ png_color_16 background PNG_DEPSTRUCT; /* background color in screen gamma space */
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ png_color_16 background_1 PNG_DEPSTRUCT; /* background normalized to gamma 1.0 */
+#endif
+#endif /* PNG_bKGD_SUPPORTED */
+
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+ png_flush_ptr output_flush_fn PNG_DEPSTRUCT; /* Function for flushing output */
+ png_uint_32 flush_dist PNG_DEPSTRUCT; /* how many rows apart to flush, 0 - no flush */
+ png_uint_32 flush_rows PNG_DEPSTRUCT; /* number of rows written since last flush */
+#endif
+
+#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
+ int gamma_shift PNG_DEPSTRUCT; /* number of "insignificant" bits 16-bit gamma */
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ float gamma PNG_DEPSTRUCT; /* file gamma value */
+ float screen_gamma PNG_DEPSTRUCT; /* screen gamma value (display_exponent) */
+#endif
+#endif
+
+#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
+ png_bytep gamma_table PNG_DEPSTRUCT; /* gamma table for 8-bit depth files */
+ png_bytep gamma_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */
+ png_bytep gamma_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */
+ png_uint_16pp gamma_16_table PNG_DEPSTRUCT; /* gamma table for 16-bit depth files */
+ png_uint_16pp gamma_16_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */
+ png_uint_16pp gamma_16_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */
+#endif
+
+#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED)
+ png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in each available channel */
+#endif
+
+#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
+ png_color_8 shift PNG_DEPSTRUCT; /* shift for significant bit tranformation */
+#endif
+
+#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
+ || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
+ png_bytep trans PNG_DEPSTRUCT; /* transparency values for paletted files */
+ png_color_16 trans_values PNG_DEPSTRUCT; /* transparency values for non-paletted files */
+#endif
+
+ png_read_status_ptr read_row_fn PNG_DEPSTRUCT; /* called after each row is decoded */
+ png_write_status_ptr write_row_fn PNG_DEPSTRUCT; /* called after each row is encoded */
+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+ png_progressive_info_ptr info_fn PNG_DEPSTRUCT; /* called after header data fully read */
+ png_progressive_row_ptr row_fn PNG_DEPSTRUCT; /* called after each prog. row is decoded */
+ png_progressive_end_ptr end_fn PNG_DEPSTRUCT; /* called after image is complete */
+ png_bytep save_buffer_ptr PNG_DEPSTRUCT; /* current location in save_buffer */
+ png_bytep save_buffer PNG_DEPSTRUCT; /* buffer for previously read data */
+ png_bytep current_buffer_ptr PNG_DEPSTRUCT; /* current location in current_buffer */
+ png_bytep current_buffer PNG_DEPSTRUCT; /* buffer for recently used data */
+ png_uint_32 push_length PNG_DEPSTRUCT; /* size of current input chunk */
+ png_uint_32 skip_length PNG_DEPSTRUCT; /* bytes to skip in input data */
+ png_size_t save_buffer_size PNG_DEPSTRUCT; /* amount of data now in save_buffer */
+ png_size_t save_buffer_max PNG_DEPSTRUCT; /* total size of save_buffer */
+ png_size_t buffer_size PNG_DEPSTRUCT; /* total amount of available input data */
+ png_size_t current_buffer_size PNG_DEPSTRUCT; /* amount of data now in current_buffer */
+ int process_mode PNG_DEPSTRUCT; /* what push library is currently doing */
+ int cur_palette PNG_DEPSTRUCT; /* current push library palette index */
+
+# ifdef PNG_TEXT_SUPPORTED
+ png_size_t current_text_size PNG_DEPSTRUCT; /* current size of text input data */
+ png_size_t current_text_left PNG_DEPSTRUCT; /* how much text left to read in input */
+ png_charp current_text PNG_DEPSTRUCT; /* current text chunk buffer */
+ png_charp current_text_ptr PNG_DEPSTRUCT; /* current location in current_text */
+# endif /* PNG_TEXT_SUPPORTED */
+#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
+
+#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
+/* for the Borland special 64K segment handler */
+ png_bytepp offset_table_ptr PNG_DEPSTRUCT;
+ png_bytep offset_table PNG_DEPSTRUCT;
+ png_uint_16 offset_table_number PNG_DEPSTRUCT;
+ png_uint_16 offset_table_count PNG_DEPSTRUCT;
+ png_uint_16 offset_table_count_free PNG_DEPSTRUCT;
+#endif
+
+#ifdef PNG_READ_DITHER_SUPPORTED
+ png_bytep palette_lookup PNG_DEPSTRUCT; /* lookup table for dithering */
+ png_bytep dither_index PNG_DEPSTRUCT; /* index translation for palette files */
+#endif
+
+#if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_hIST_SUPPORTED)
+ png_uint_16p hist PNG_DEPSTRUCT; /* histogram */
+#endif
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ png_byte heuristic_method PNG_DEPSTRUCT; /* heuristic for row filter selection */
+ png_byte num_prev_filters PNG_DEPSTRUCT; /* number of weights for previous rows */
+ png_bytep prev_filters PNG_DEPSTRUCT; /* filter type(s) of previous row(s) */
+ png_uint_16p filter_weights PNG_DEPSTRUCT; /* weight(s) for previous line(s) */
+ png_uint_16p inv_filter_weights PNG_DEPSTRUCT; /* 1/weight(s) for previous line(s) */
+ png_uint_16p filter_costs PNG_DEPSTRUCT; /* relative filter calculation cost */
+ png_uint_16p inv_filter_costs PNG_DEPSTRUCT; /* 1/relative filter calculation cost */
+#endif
+
+#ifdef PNG_TIME_RFC1123_SUPPORTED
+ png_charp time_buffer PNG_DEPSTRUCT; /* String to hold RFC 1123 time text */
+#endif
+
+/* New members added in libpng-1.0.6 */
+
+#ifdef PNG_FREE_ME_SUPPORTED
+ png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is responsible for freeing */
+#endif
+
+#ifdef PNG_USER_CHUNKS_SUPPORTED
+ png_voidp user_chunk_ptr PNG_DEPSTRUCT;
+ png_user_chunk_ptr read_user_chunk_fn PNG_DEPSTRUCT; /* user read chunk handler */
+#endif
+
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+ int num_chunk_list PNG_DEPSTRUCT;
+ png_bytep chunk_list PNG_DEPSTRUCT;
+#endif
+
+/* New members added in libpng-1.0.3 */
+#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
+ png_byte rgb_to_gray_status PNG_DEPSTRUCT;
+ /* These were changed from png_byte in libpng-1.0.6 */
+ png_uint_16 rgb_to_gray_red_coeff PNG_DEPSTRUCT;
+ png_uint_16 rgb_to_gray_green_coeff PNG_DEPSTRUCT;
+ png_uint_16 rgb_to_gray_blue_coeff PNG_DEPSTRUCT;
+#endif
+
+/* New member added in libpng-1.0.4 (renamed in 1.0.9) */
+#if defined(PNG_MNG_FEATURES_SUPPORTED) || \
+ defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
+ defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
+/* Changed from png_byte to png_uint_32 at version 1.2.0 */
+#ifdef PNG_1_0_X
+ png_byte mng_features_permitted PNG_DEPSTRUCT;
+#else
+ png_uint_32 mng_features_permitted PNG_DEPSTRUCT;
+#endif /* PNG_1_0_X */
+#endif
+
+/* New member added in libpng-1.0.7 */
+#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
+ png_fixed_point int_gamma PNG_DEPSTRUCT;
+#endif
+
+/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ png_byte filter_type PNG_DEPSTRUCT;
+#endif
+
+#ifdef PNG_1_0_X
+/* New member added in libpng-1.0.10, ifdef'ed out in 1.2.0 */
+ png_uint_32 row_buf_size PNG_DEPSTRUCT;
+#endif
+
+/* New members added in libpng-1.2.0 */
+#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
+# ifndef PNG_1_0_X
+# ifdef PNG_MMX_CODE_SUPPORTED
+ png_byte mmx_bitdepth_threshold PNG_DEPSTRUCT;
+ png_uint_32 mmx_rowbytes_threshold PNG_DEPSTRUCT;
+# endif
+ png_uint_32 asm_flags PNG_DEPSTRUCT;
+# endif
+#endif
+
+/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_voidp mem_ptr PNG_DEPSTRUCT; /* user supplied struct for mem functions */
+ png_malloc_ptr malloc_fn PNG_DEPSTRUCT; /* function for allocating memory */
+ png_free_ptr free_fn PNG_DEPSTRUCT; /* function for freeing memory */
+#endif
+
+/* New member added in libpng-1.0.13 and 1.2.0 */
+ png_bytep big_row_buf PNG_DEPSTRUCT; /* buffer to save current (unfiltered) row */
+
+#ifdef PNG_READ_DITHER_SUPPORTED
+/* The following three members were added at version 1.0.14 and 1.2.4 */
+ png_bytep dither_sort PNG_DEPSTRUCT; /* working sort array */
+ png_bytep index_to_palette PNG_DEPSTRUCT; /* where the original index currently is */
+ /* in the palette */
+ png_bytep palette_to_index PNG_DEPSTRUCT; /* which original index points to this */
+ /* palette color */
+#endif
+
+/* New members added in libpng-1.0.16 and 1.2.6 */
+ png_byte compression_type PNG_DEPSTRUCT;
+
+#ifdef PNG_USER_LIMITS_SUPPORTED
+ png_uint_32 user_width_max PNG_DEPSTRUCT;
+ png_uint_32 user_height_max PNG_DEPSTRUCT;
+#endif
+
+/* New member added in libpng-1.0.25 and 1.2.17 */
+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
+ /* Storage for unknown chunk that the library doesn't recognize. */
+ png_unknown_chunk unknown_chunk PNG_DEPSTRUCT;
+#endif
+
+/* New members added in libpng-1.2.26 */
+ png_uint_32 old_big_row_buf_size PNG_DEPSTRUCT;
+ png_uint_32 old_prev_row_size PNG_DEPSTRUCT;
+
+/* New member added in libpng-1.2.30 */
+ png_charp chunkdata PNG_DEPSTRUCT; /* buffer for reading chunk data */
+
+
+};
+
+
+/* This triggers a compiler error in png.c, if png.c and png.h
+ * do not agree upon the version number.
+ */
+typedef png_structp version_1_2_50;
+
+typedef png_struct FAR * FAR * png_structpp;
+
+/* Here are the function definitions most commonly used. This is not
+ * the place to find out how to use libpng. See libpng.txt for the
+ * full explanation, see example.c for the summary. This just provides
+ * a simple one line description of the use of each function.
+ */
+
+/* Returns the version number of the library */
+extern PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void));
+
+/* Tell lib we have already handled the first magic bytes.
+ * Handling more than 8 bytes from the beginning of the file is an error.
+ */
+extern PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr,
+ int num_bytes));
+
+/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a
+ * PNG file. Returns zero if the supplied bytes match the 8-byte PNG
+ * signature, and non-zero otherwise. Having num_to_check == 0 or
+ * start > 7 will always fail (ie return non-zero).
+ */
+extern PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start,
+ png_size_t num_to_check));
+
+/* Simple signature checking function. This is the same as calling
+ * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n).
+ */
+extern PNG_EXPORT(int,png_check_sig) PNGARG((png_bytep sig, int num)) PNG_DEPRECATED;
+
+/* Allocate and initialize png_ptr struct for reading, and any other memory. */
+extern PNG_EXPORT(png_structp,png_create_read_struct)
+ PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
+ png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED;
+
+/* Allocate and initialize png_ptr struct for writing, and any other memory */
+extern PNG_EXPORT(png_structp,png_create_write_struct)
+ PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
+ png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED;
+
+#ifdef PNG_WRITE_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_compression_buffer_size)
+ PNGARG((png_structp png_ptr));
+#endif
+
+#ifdef PNG_WRITE_SUPPORTED
+extern PNG_EXPORT(void,png_set_compression_buffer_size)
+ PNGARG((png_structp png_ptr, png_uint_32 size));
+#endif
+
+/* Reset the compression stream */
+extern PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr));
+
+/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */
+#ifdef PNG_USER_MEM_SUPPORTED
+extern PNG_EXPORT(png_structp,png_create_read_struct_2)
+ PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
+ png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
+ png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED;
+extern PNG_EXPORT(png_structp,png_create_write_struct_2)
+ PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
+ png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
+ png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED;
+#endif
+
+/* Write a PNG chunk - size, type, (optional) data, CRC. */
+extern PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr,
+ png_bytep chunk_name, png_bytep data, png_size_t length));
+
+/* Write the start of a PNG chunk - length and chunk name. */
+extern PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr,
+ png_bytep chunk_name, png_uint_32 length));
+
+/* Write the data of a PNG chunk started with png_write_chunk_start(). */
+extern PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr,
+ png_bytep data, png_size_t length));
+
+/* Finish a chunk started with png_write_chunk_start() (includes CRC). */
+extern PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr));
+
+/* Allocate and initialize the info structure */
+extern PNG_EXPORT(png_infop,png_create_info_struct)
+ PNGARG((png_structp png_ptr)) PNG_ALLOCATED;
+
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+/* Initialize the info structure (old interface - DEPRECATED) */
+extern PNG_EXPORT(void,png_info_init) PNGARG((png_infop info_ptr))
+ PNG_DEPRECATED;
+#undef png_info_init
+#define png_info_init(info_ptr) png_info_init_3(&info_ptr,\
+ png_sizeof(png_info));
+#endif
+
+extern PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr,
+ png_size_t png_info_struct_size));
+
+/* Writes all the PNG information before the image. */
+extern PNG_EXPORT(void,png_write_info_before_PLTE) PNGARG((png_structp png_ptr,
+ png_infop info_ptr));
+extern PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr,
+ png_infop info_ptr));
+
+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
+/* Read the information before the actual image data. */
+extern PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr,
+ png_infop info_ptr));
+#endif
+
+#ifdef PNG_TIME_RFC1123_SUPPORTED
+extern PNG_EXPORT(png_charp,png_convert_to_rfc1123)
+ PNGARG((png_structp png_ptr, png_timep ptime));
+#endif
+
+#ifdef PNG_CONVERT_tIME_SUPPORTED
+/* Convert from a struct tm to png_time */
+extern PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime,
+ struct tm FAR * ttime));
+
+/* Convert from time_t to png_time. Uses gmtime() */
+extern PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime,
+ time_t ttime));
+#endif /* PNG_CONVERT_tIME_SUPPORTED */
+
+#ifdef PNG_READ_EXPAND_SUPPORTED
+/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */
+extern PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr));
+#ifndef PNG_1_0_X
+extern PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp
+ png_ptr));
+#endif
+extern PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr));
+extern PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr));
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+/* Deprecated */
+extern PNG_EXPORT(void,png_set_gray_1_2_4_to_8) PNGARG((png_structp
+ png_ptr)) PNG_DEPRECATED;
+#endif
+#endif
+
+#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
+/* Use blue, green, red order for pixels. */
+extern PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr));
+#endif
+
+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
+/* Expand the grayscale to 24-bit RGB if necessary. */
+extern PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr));
+#endif
+
+#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
+/* Reduce RGB to grayscale. */
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr,
+ int error_action, double red, double green ));
+#endif
+extern PNG_EXPORT(void,png_set_rgb_to_gray_fixed) PNGARG((png_structp png_ptr,
+ int error_action, png_fixed_point red, png_fixed_point green ));
+extern PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_structp
+ png_ptr));
+#endif
+
+extern PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth,
+ png_colorp palette));
+
+#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
+extern PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr));
+#endif
+
+#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
+ defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
+extern PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr));
+#endif
+
+#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
+ defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
+extern PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr));
+#endif
+
+#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
+/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */
+extern PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr,
+ png_uint_32 filler, int flags));
+/* The values of the PNG_FILLER_ defines should NOT be changed */
+#define PNG_FILLER_BEFORE 0
+#define PNG_FILLER_AFTER 1
+/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */
+#ifndef PNG_1_0_X
+extern PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr,
+ png_uint_32 filler, int flags));
+#endif
+#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */
+
+#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
+/* Swap bytes in 16-bit depth files. */
+extern PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr));
+#endif
+
+#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
+/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */
+extern PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr));
+#endif
+
+#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
+/* Swap packing order of pixels in bytes. */
+extern PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr));
+#endif
+
+#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
+/* Converts files to legal bit depths. */
+extern PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr,
+ png_color_8p true_bits));
+#endif
+
+#if defined(PNG_READ_INTERLACING_SUPPORTED) || \
+ defined(PNG_WRITE_INTERLACING_SUPPORTED)
+/* Have the code handle the interlacing. Returns the number of passes. */
+extern PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr));
+#endif
+
+#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
+/* Invert monochrome files */
+extern PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr));
+#endif
+
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+/* Handle alpha and tRNS by replacing with a background color. */
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr,
+ png_color_16p background_color, int background_gamma_code,
+ int need_expand, double background_gamma));
+#endif
+#define PNG_BACKGROUND_GAMMA_UNKNOWN 0
+#define PNG_BACKGROUND_GAMMA_SCREEN 1
+#define PNG_BACKGROUND_GAMMA_FILE 2
+#define PNG_BACKGROUND_GAMMA_UNIQUE 3
+#endif
+
+#ifdef PNG_READ_16_TO_8_SUPPORTED
+/* Strip the second byte of information from a 16-bit depth file. */
+extern PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr));
+#endif
+
+#ifdef PNG_READ_DITHER_SUPPORTED
+/* Turn on dithering, and reduce the palette to the number of colors available. */
+extern PNG_EXPORT(void,png_set_dither) PNGARG((png_structp png_ptr,
+ png_colorp palette, int num_palette, int maximum_colors,
+ png_uint_16p histogram, int full_dither));
+#endif
+
+#ifdef PNG_READ_GAMMA_SUPPORTED
+/* Handle gamma correction. Screen_gamma=(display_exponent) */
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr,
+ double screen_gamma, double default_file_gamma));
+#endif
+#endif
+
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
+ defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
+/* Permit or disallow empty PLTE (0: not permitted, 1: permitted) */
+/* Deprecated and will be removed. Use png_permit_mng_features() instead. */
+extern PNG_EXPORT(void,png_permit_empty_plte) PNGARG((png_structp png_ptr,
+ int empty_plte_permitted)) PNG_DEPRECATED;
+#endif
+#endif
+
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+/* Set how many lines between output flushes - 0 for no flushing */
+extern PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows));
+/* Flush the current PNG output buffer */
+extern PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr));
+#endif
+
+/* Optional update palette with requested transformations */
+extern PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr));
+
+/* Optional call to update the users info structure */
+extern PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr,
+ png_infop info_ptr));
+
+#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
+/* Read one or more rows of image data. */
+extern PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr,
+ png_bytepp row, png_bytepp display_row, png_uint_32 num_rows));
+#endif
+
+#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
+/* Read a row of data. */
+extern PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr,
+ png_bytep row,
+ png_bytep display_row));
+#endif
+
+#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
+/* Read the whole image into memory at once. */
+extern PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr,
+ png_bytepp image));
+#endif
+
+/* Write a row of image data */
+extern PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr,
+ png_bytep row));
+
+/* Write a few rows of image data */
+extern PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr,
+ png_bytepp row, png_uint_32 num_rows));
+
+/* Write the image data */
+extern PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr,
+ png_bytepp image));
+
+/* Writes the end of the PNG file. */
+extern PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr,
+ png_infop info_ptr));
+
+#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
+/* Read the end of the PNG file. */
+extern PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr,
+ png_infop info_ptr));
+#endif
+
+/* Free any memory associated with the png_info_struct */
+extern PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr,
+ png_infopp info_ptr_ptr));
+
+/* Free any memory associated with the png_struct and the png_info_structs */
+extern PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp
+ png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr));
+
+/* Free all memory used by the read (old method - NOT DLL EXPORTED) */
+extern void png_read_destroy PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_infop end_info_ptr)) PNG_DEPRECATED;
+
+/* Free any memory associated with the png_struct and the png_info_structs */
+extern PNG_EXPORT(void,png_destroy_write_struct)
+ PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr));
+
+/* Free any memory used in png_ptr struct (old method - NOT DLL EXPORTED) */
+extern void png_write_destroy PNGARG((png_structp png_ptr)) PNG_DEPRECATED;
+
+/* Set the libpng method of handling chunk CRC errors */
+extern PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr,
+ int crit_action, int ancil_action));
+
+/* Values for png_set_crc_action() to say how to handle CRC errors in
+ * ancillary and critical chunks, and whether to use the data contained
+ * therein. Note that it is impossible to "discard" data in a critical
+ * chunk. For versions prior to 0.90, the action was always error/quit,
+ * whereas in version 0.90 and later, the action for CRC errors in ancillary
+ * chunks is warn/discard. These values should NOT be changed.
+ *
+ * value action:critical action:ancillary
+ */
+#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */
+#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */
+#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */
+#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */
+#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */
+#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */
+
+/* These functions give the user control over the scan-line filtering in
+ * libpng and the compression methods used by zlib. These functions are
+ * mainly useful for testing, as the defaults should work with most users.
+ * Those users who are tight on memory or want faster performance at the
+ * expense of compression can modify them. See the compression library
+ * header file (zlib.h) for an explination of the compression functions.
+ */
+
+/* Set the filtering method(s) used by libpng. Currently, the only valid
+ * value for "method" is 0.
+ */
+extern PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method,
+ int filters));
+
+/* Flags for png_set_filter() to say which filters to use. The flags
+ * are chosen so that they don't conflict with real filter types
+ * below, in case they are supplied instead of the #defined constants.
+ * These values should NOT be changed.
+ */
+#define PNG_NO_FILTERS 0x00
+#define PNG_FILTER_NONE 0x08
+#define PNG_FILTER_SUB 0x10
+#define PNG_FILTER_UP 0x20
+#define PNG_FILTER_AVG 0x40
+#define PNG_FILTER_PAETH 0x80
+#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \
+ PNG_FILTER_AVG | PNG_FILTER_PAETH)
+
+/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now.
+ * These defines should NOT be changed.
+ */
+#define PNG_FILTER_VALUE_NONE 0
+#define PNG_FILTER_VALUE_SUB 1
+#define PNG_FILTER_VALUE_UP 2
+#define PNG_FILTER_VALUE_AVG 3
+#define PNG_FILTER_VALUE_PAETH 4
+#define PNG_FILTER_VALUE_LAST 5
+
+#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) /* EXPERIMENTAL */
+/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_
+ * defines, either the default (minimum-sum-of-absolute-differences), or
+ * the experimental method (weighted-minimum-sum-of-absolute-differences).
+ *
+ * Weights are factors >= 1.0, indicating how important it is to keep the
+ * filter type consistent between rows. Larger numbers mean the current
+ * filter is that many times as likely to be the same as the "num_weights"
+ * previous filters. This is cumulative for each previous row with a weight.
+ * There needs to be "num_weights" values in "filter_weights", or it can be
+ * NULL if the weights aren't being specified. Weights have no influence on
+ * the selection of the first row filter. Well chosen weights can (in theory)
+ * improve the compression for a given image.
+ *
+ * Costs are factors >= 1.0 indicating the relative decoding costs of a
+ * filter type. Higher costs indicate more decoding expense, and are
+ * therefore less likely to be selected over a filter with lower computational
+ * costs. There needs to be a value in "filter_costs" for each valid filter
+ * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't
+ * setting the costs. Costs try to improve the speed of decompression without
+ * unduly increasing the compressed image size.
+ *
+ * A negative weight or cost indicates the default value is to be used, and
+ * values in the range [0.0, 1.0) indicate the value is to remain unchanged.
+ * The default values for both weights and costs are currently 1.0, but may
+ * change if good general weighting/cost heuristics can be found. If both
+ * the weights and costs are set to 1.0, this degenerates the WEIGHTED method
+ * to the UNWEIGHTED method, but with added encoding time/computation.
+ */
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr,
+ int heuristic_method, int num_weights, png_doublep filter_weights,
+ png_doublep filter_costs));
+#endif
+#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */
+
+/* Heuristic used for row filter selection. These defines should NOT be
+ * changed.
+ */
+#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */
+#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */
+#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */
+#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */
+
+/* Set the library compression level. Currently, valid values range from
+ * 0 - 9, corresponding directly to the zlib compression levels 0 - 9
+ * (0 - no compression, 9 - "maximal" compression). Note that tests have
+ * shown that zlib compression levels 3-6 usually perform as well as level 9
+ * for PNG images, and do considerably fewer caclulations. In the future,
+ * these values may not correspond directly to the zlib compression levels.
+ */
+extern PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr,
+ int level));
+
+extern PNG_EXPORT(void,png_set_compression_mem_level)
+ PNGARG((png_structp png_ptr, int mem_level));
+
+extern PNG_EXPORT(void,png_set_compression_strategy)
+ PNGARG((png_structp png_ptr, int strategy));
+
+extern PNG_EXPORT(void,png_set_compression_window_bits)
+ PNGARG((png_structp png_ptr, int window_bits));
+
+extern PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr,
+ int method));
+
+/* These next functions are called for input/output, memory, and error
+ * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c,
+ * and call standard C I/O routines such as fread(), fwrite(), and
+ * fprintf(). These functions can be made to use other I/O routines
+ * at run time for those applications that need to handle I/O in a
+ * different manner by calling png_set_???_fn(). See libpng.txt for
+ * more information.
+ */
+
+#ifdef PNG_STDIO_SUPPORTED
+/* Initialize the input/output for the PNG file to the default functions. */
+extern PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, png_FILE_p fp));
+#endif
+
+/* Replace the (error and abort), and warning functions with user
+ * supplied functions. If no messages are to be printed you must still
+ * write and use replacement functions. The replacement error_fn should
+ * still do a longjmp to the last setjmp location if you are using this
+ * method of error handling. If error_fn or warning_fn is NULL, the
+ * default function will be used.
+ */
+
+extern PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr,
+ png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn));
+
+/* Return the user pointer associated with the error functions */
+extern PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr));
+
+/* Replace the default data output functions with a user supplied one(s).
+ * If buffered output is not used, then output_flush_fn can be set to NULL.
+ * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time
+ * output_flush_fn will be ignored (and thus can be NULL).
+ * It is probably a mistake to use NULL for output_flush_fn if
+ * write_data_fn is not also NULL unless you have built libpng with
+ * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's
+ * default flush function, which uses the standard *FILE structure, will
+ * be used.
+ */
+extern PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr,
+ png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn));
+
+/* Replace the default data input function with a user supplied one. */
+extern PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr,
+ png_voidp io_ptr, png_rw_ptr read_data_fn));
+
+/* Return the user pointer associated with the I/O functions */
+extern PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr));
+
+extern PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr,
+ png_read_status_ptr read_row_fn));
+
+extern PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr,
+ png_write_status_ptr write_row_fn));
+
+#ifdef PNG_USER_MEM_SUPPORTED
+/* Replace the default memory allocation functions with user supplied one(s). */
+extern PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr,
+ png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn));
+/* Return the user pointer associated with the memory functions */
+extern PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_structp png_ptr));
+#endif
+
+#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
+ defined(PNG_LEGACY_SUPPORTED)
+extern PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp
+ png_ptr, png_user_transform_ptr read_user_transform_fn));
+#endif
+
+#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
+ defined(PNG_LEGACY_SUPPORTED)
+extern PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp
+ png_ptr, png_user_transform_ptr write_user_transform_fn));
+#endif
+
+#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
+ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
+ defined(PNG_LEGACY_SUPPORTED)
+extern PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp
+ png_ptr, png_voidp user_transform_ptr, int user_transform_depth,
+ int user_transform_channels));
+/* Return the user pointer associated with the user transform functions */
+extern PNG_EXPORT(png_voidp,png_get_user_transform_ptr)
+ PNGARG((png_structp png_ptr));
+#endif
+
+#ifdef PNG_USER_CHUNKS_SUPPORTED
+extern PNG_EXPORT(void,png_set_read_user_chunk_fn) PNGARG((png_structp png_ptr,
+ png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn));
+extern PNG_EXPORT(png_voidp,png_get_user_chunk_ptr) PNGARG((png_structp
+ png_ptr));
+#endif
+
+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+/* Sets the function callbacks for the push reader, and a pointer to a
+ * user-defined structure available to the callback functions.
+ */
+extern PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr,
+ png_voidp progressive_ptr,
+ png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
+ png_progressive_end_ptr end_fn));
+
+/* Returns the user pointer associated with the push read functions */
+extern PNG_EXPORT(png_voidp,png_get_progressive_ptr)
+ PNGARG((png_structp png_ptr));
+
+/* Function to be called when data becomes available */
+extern PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_bytep buffer, png_size_t buffer_size));
+
+/* Function that combines rows. Not very much different than the
+ * png_combine_row() call. Is this even used?????
+ */
+extern PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr,
+ png_bytep old_row, png_bytep new_row));
+#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
+
+extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr,
+ png_uint_32 size)) PNG_ALLOCATED;
+
+#ifdef PNG_1_0_X
+# define png_malloc_warn png_malloc
+#else
+/* Added at libpng version 1.2.4 */
+extern PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr,
+ png_uint_32 size)) PNG_ALLOCATED;
+#endif
+
+/* Frees a pointer allocated by png_malloc() */
+extern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr));
+
+#ifdef PNG_1_0_X
+/* Function to allocate memory for zlib. */
+extern PNG_EXPORT(voidpf,png_zalloc) PNGARG((voidpf png_ptr, uInt items,
+ uInt size));
+
+/* Function to free memory for zlib */
+extern PNG_EXPORT(void,png_zfree) PNGARG((voidpf png_ptr, voidpf ptr));
+#endif
+
+/* Free data that was allocated internally */
+extern PNG_EXPORT(void,png_free_data) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_32 free_me, int num));
+#ifdef PNG_FREE_ME_SUPPORTED
+/* Reassign responsibility for freeing existing data, whether allocated
+ * by libpng or by the application
+ */
+extern PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, int freer, png_uint_32 mask));
+#endif
+/* Assignments for png_data_freer */
+#define PNG_DESTROY_WILL_FREE_DATA 1
+#define PNG_SET_WILL_FREE_DATA 1
+#define PNG_USER_WILL_FREE_DATA 2
+/* Flags for png_ptr->free_me and info_ptr->free_me */
+#define PNG_FREE_HIST 0x0008
+#define PNG_FREE_ICCP 0x0010
+#define PNG_FREE_SPLT 0x0020
+#define PNG_FREE_ROWS 0x0040
+#define PNG_FREE_PCAL 0x0080
+#define PNG_FREE_SCAL 0x0100
+#define PNG_FREE_UNKN 0x0200
+#define PNG_FREE_LIST 0x0400
+#define PNG_FREE_PLTE 0x1000
+#define PNG_FREE_TRNS 0x2000
+#define PNG_FREE_TEXT 0x4000
+#define PNG_FREE_ALL 0x7fff
+#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */
+
+#ifdef PNG_USER_MEM_SUPPORTED
+extern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr,
+ png_uint_32 size)) PNG_ALLOCATED;
+extern PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr,
+ png_voidp ptr));
+#endif
+
+extern PNG_EXPORT(png_voidp,png_memcpy_check) PNGARG((png_structp png_ptr,
+ png_voidp s1, png_voidp s2, png_uint_32 size)) PNG_DEPRECATED;
+
+extern PNG_EXPORT(png_voidp,png_memset_check) PNGARG((png_structp png_ptr,
+ png_voidp s1, int value, png_uint_32 size)) PNG_DEPRECATED;
+
+#if defined(USE_FAR_KEYWORD) /* memory model conversion function */
+extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr,
+ int check));
+#endif /* USE_FAR_KEYWORD */
+
+#ifndef PNG_NO_ERROR_TEXT
+/* Fatal error in PNG image of libpng - can't continue */
+extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr,
+ png_const_charp error_message)) PNG_NORETURN;
+
+/* The same, but the chunk name is prepended to the error string. */
+extern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr,
+ png_const_charp error_message)) PNG_NORETURN;
+#else
+/* Fatal error in PNG image of libpng - can't continue */
+extern PNG_EXPORT(void,png_err) PNGARG((png_structp png_ptr)) PNG_NORETURN;
+#endif
+
+#ifndef PNG_NO_WARNINGS
+/* Non-fatal error in libpng. Can continue, but may have a problem. */
+extern PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr,
+ png_const_charp warning_message));
+
+#ifdef PNG_READ_SUPPORTED
+/* Non-fatal error in libpng, chunk name is prepended to message. */
+extern PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr,
+ png_const_charp warning_message));
+#endif /* PNG_READ_SUPPORTED */
+#endif /* PNG_NO_WARNINGS */
+
+/* The png_set_ functions are for storing values in the png_info_struct.
+ * Similarly, the png_get_ calls are used to read values from the
+ * png_info_struct, either storing the parameters in the passed variables, or
+ * setting pointers into the png_info_struct where the data is stored. The
+ * png_get_ functions return a non-zero value if the data was available
+ * in info_ptr, or return zero and do not change any of the parameters if the
+ * data was not available.
+ *
+ * These functions should be used instead of directly accessing png_info
+ * to avoid problems with future changes in the size and internal layout of
+ * png_info_struct.
+ */
+/* Returns "flag" if chunk data is valid in info_ptr. */
+extern PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr,
+png_infop info_ptr, png_uint_32 flag));
+
+/* Returns number of bytes needed to hold a transformed row. */
+extern PNG_EXPORT(png_uint_32,png_get_rowbytes) PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+#ifdef PNG_INFO_IMAGE_SUPPORTED
+/* Returns row_pointers, which is an array of pointers to scanlines that was
+ * returned from png_read_png().
+ */
+extern PNG_EXPORT(png_bytepp,png_get_rows) PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+/* Set row_pointers, which is an array of pointers to scanlines for use
+ * by png_write_png().
+ */
+extern PNG_EXPORT(void,png_set_rows) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_bytepp row_pointers));
+#endif
+
+/* Returns number of color channels in image. */
+extern PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+#ifdef PNG_EASY_ACCESS_SUPPORTED
+/* Returns image width in pixels. */
+extern PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+
+/* Returns image height in pixels. */
+extern PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+
+/* Returns image bit_depth. */
+extern PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+
+/* Returns image color_type. */
+extern PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+
+/* Returns image filter_type. */
+extern PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+
+/* Returns image interlace_type. */
+extern PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+
+/* Returns image compression_type. */
+extern PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+
+/* Returns image resolution in pixels per meter, from pHYs chunk data. */
+extern PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+extern PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+extern PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+
+/* Returns pixel aspect ratio, computed from pHYs chunk data. */
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+#endif
+
+/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */
+extern PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+extern PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+extern PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+extern PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_structp
+png_ptr, png_infop info_ptr));
+
+#endif /* PNG_EASY_ACCESS_SUPPORTED */
+
+/* Returns pointer to signature string read from PNG header */
+extern PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+#ifdef PNG_bKGD_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_color_16p *background));
+#endif
+
+#ifdef PNG_bKGD_SUPPORTED
+extern PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_color_16p background));
+#endif
+
+#ifdef PNG_cHRM_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, double *white_x, double *white_y, double *red_x,
+ double *red_y, double *green_x, double *green_y, double *blue_x,
+ double *blue_y));
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_cHRM_fixed) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_fixed_point *int_white_x, png_fixed_point
+ *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y,
+ png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point
+ *int_blue_x, png_fixed_point *int_blue_y));
+#endif
+#endif
+
+#ifdef PNG_cHRM_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, double white_x, double white_y, double red_x,
+ double red_y, double green_x, double green_y, double blue_x, double blue_y));
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+extern PNG_EXPORT(void,png_set_cHRM_fixed) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_fixed_point int_white_x, png_fixed_point int_white_y,
+ png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point
+ int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x,
+ png_fixed_point int_blue_y));
+#endif
+#endif
+
+#ifdef PNG_gAMA_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, double *file_gamma));
+#endif
+extern PNG_EXPORT(png_uint_32,png_get_gAMA_fixed) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_fixed_point *int_file_gamma));
+#endif
+
+#ifdef PNG_gAMA_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, double file_gamma));
+#endif
+extern PNG_EXPORT(void,png_set_gAMA_fixed) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_fixed_point int_file_gamma));
+#endif
+
+#ifdef PNG_hIST_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_16p *hist));
+#endif
+
+#ifdef PNG_hIST_SUPPORTED
+extern PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_16p hist));
+#endif
+
+extern PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_32 *width, png_uint_32 *height,
+ int *bit_depth, int *color_type, int *interlace_method,
+ int *compression_method, int *filter_method));
+
+extern PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth,
+ int color_type, int interlace_method, int compression_method,
+ int filter_method));
+
+#ifdef PNG_oFFs_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_int_32 *offset_x, png_int_32 *offset_y,
+ int *unit_type));
+#endif
+
+#ifdef PNG_oFFs_SUPPORTED
+extern PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_int_32 offset_x, png_int_32 offset_y,
+ int unit_type));
+#endif
+
+#ifdef PNG_pCAL_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1,
+ int *type, int *nparams, png_charp *units, png_charpp *params));
+#endif
+
+#ifdef PNG_pCAL_SUPPORTED
+extern PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1,
+ int type, int nparams, png_charp units, png_charpp params));
+#endif
+
+#ifdef PNG_pHYs_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
+#endif
+
+#ifdef PNG_pHYs_SUPPORTED
+extern PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type));
+#endif
+
+extern PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_colorp *palette, int *num_palette));
+
+extern PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_colorp palette, int num_palette));
+
+#ifdef PNG_sBIT_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_color_8p *sig_bit));
+#endif
+
+#ifdef PNG_sBIT_SUPPORTED
+extern PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_color_8p sig_bit));
+#endif
+
+#ifdef PNG_sRGB_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, int *intent));
+#endif
+
+#ifdef PNG_sRGB_SUPPORTED
+extern PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, int intent));
+extern PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, int intent));
+#endif
+
+#ifdef PNG_iCCP_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_charpp name, int *compression_type,
+ png_charpp profile, png_uint_32 *proflen));
+ /* Note to maintainer: profile should be png_bytepp */
+#endif
+
+#ifdef PNG_iCCP_SUPPORTED
+extern PNG_EXPORT(void,png_set_iCCP) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_charp name, int compression_type,
+ png_charp profile, png_uint_32 proflen));
+ /* Note to maintainer: profile should be png_bytep */
+#endif
+
+#ifdef PNG_sPLT_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_sPLT) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_sPLT_tpp entries));
+#endif
+
+#ifdef PNG_sPLT_SUPPORTED
+extern PNG_EXPORT(void,png_set_sPLT) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_sPLT_tp entries, int nentries));
+#endif
+
+#ifdef PNG_TEXT_SUPPORTED
+/* png_get_text also returns the number of text chunks in *num_text */
+extern PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_textp *text_ptr, int *num_text));
+#endif
+
+/*
+ * Note while png_set_text() will accept a structure whose text,
+ * language, and translated keywords are NULL pointers, the structure
+ * returned by png_get_text will always contain regular
+ * zero-terminated C strings. They might be empty strings but
+ * they will never be NULL pointers.
+ */
+
+#ifdef PNG_TEXT_SUPPORTED
+extern PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_textp text_ptr, int num_text));
+#endif
+
+#ifdef PNG_tIME_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_timep *mod_time));
+#endif
+
+#ifdef PNG_tIME_SUPPORTED
+extern PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_timep mod_time));
+#endif
+
+#ifdef PNG_tRNS_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_bytep *trans, int *num_trans,
+ png_color_16p *trans_values));
+#endif
+
+#ifdef PNG_tRNS_SUPPORTED
+extern PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_bytep trans, int num_trans,
+ png_color_16p trans_values));
+#endif
+
+#ifdef PNG_tRNS_SUPPORTED
+#endif
+
+#ifdef PNG_sCAL_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_sCAL) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, int *unit, double *width, double *height));
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight));
+#endif
+#endif
+#endif /* PNG_sCAL_SUPPORTED */
+
+#ifdef PNG_sCAL_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+extern PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, int unit, double width, double height));
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+extern PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, int unit, png_charp swidth, png_charp sheight));
+#endif
+#endif
+#endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */
+
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+/* Provide a list of chunks and how they are to be handled, if the built-in
+ handling or default unknown chunk handling is not desired. Any chunks not
+ listed will be handled in the default manner. The IHDR and IEND chunks
+ must not be listed.
+ keep = 0: follow default behaviour
+ = 1: do not keep
+ = 2: keep only if safe-to-copy
+ = 3: keep even if unsafe-to-copy
+*/
+extern PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp
+ png_ptr, int keep, png_bytep chunk_list, int num_chunks));
+PNG_EXPORT(int,png_handle_as_unknown) PNGARG((png_structp png_ptr, png_bytep
+ chunk_name));
+#endif
+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
+extern PNG_EXPORT(void, png_set_unknown_chunks) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns));
+extern PNG_EXPORT(void, png_set_unknown_chunk_location)
+ PNGARG((png_structp png_ptr, png_infop info_ptr, int chunk, int location));
+extern PNG_EXPORT(png_uint_32,png_get_unknown_chunks) PNGARG((png_structp
+ png_ptr, png_infop info_ptr, png_unknown_chunkpp entries));
+#endif
+
+/* Png_free_data() will turn off the "valid" flag for anything it frees.
+ * If you need to turn it off for a chunk that your application has freed,
+ * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK);
+ */
+extern PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr,
+ png_infop info_ptr, int mask));
+
+#ifdef PNG_INFO_IMAGE_SUPPORTED
+/* The "params" pointer is currently not used and is for future expansion. */
+extern PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr,
+ png_infop info_ptr,
+ int transforms,
+ png_voidp params));
+extern PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr,
+ png_infop info_ptr,
+ int transforms,
+ png_voidp params));
+#endif
+
+/* Define PNG_DEBUG at compile time for debugging information. Higher
+ * numbers for PNG_DEBUG mean more debugging information. This has
+ * only been added since version 0.95 so it is not implemented throughout
+ * libpng yet, but more support will be added as needed.
+ */
+#ifdef PNG_DEBUG
+#if (PNG_DEBUG > 0)
+#if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER)
+#include
+#if (PNG_DEBUG > 1)
+#ifndef _DEBUG
+# define _DEBUG
+#endif
+#ifndef png_debug
+#define png_debug(l,m) _RPT0(_CRT_WARN,m PNG_STRING_NEWLINE)
+#endif
+#ifndef png_debug1
+#define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m PNG_STRING_NEWLINE,p1)
+#endif
+#ifndef png_debug2
+#define png_debug2(l,m,p1,p2) _RPT2(_CRT_WARN,m PNG_STRING_NEWLINE,p1,p2)
+#endif
+#endif
+#else /* PNG_DEBUG_FILE || !_MSC_VER */
+#ifndef PNG_DEBUG_FILE
+#define PNG_DEBUG_FILE stderr
+#endif /* PNG_DEBUG_FILE */
+
+#if (PNG_DEBUG > 1)
+/* Note: ["%s"m PNG_STRING_NEWLINE] probably does not work on non-ISO
+ * compilers.
+ */
+# ifdef __STDC__
+# ifndef png_debug
+# define png_debug(l,m) \
+ { \
+ int num_tabs=l; \
+ fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
+ (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":"")))); \
+ }
+# endif
+# ifndef png_debug1
+# define png_debug1(l,m,p1) \
+ { \
+ int num_tabs=l; \
+ fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
+ (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1); \
+ }
+# endif
+# ifndef png_debug2
+# define png_debug2(l,m,p1,p2) \
+ { \
+ int num_tabs=l; \
+ fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
+ (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1,p2); \
+ }
+# endif
+# else /* __STDC __ */
+# ifndef png_debug
+# define png_debug(l,m) \
+ { \
+ int num_tabs=l; \
+ char format[256]; \
+ snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
+ (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
+ m,PNG_STRING_NEWLINE); \
+ fprintf(PNG_DEBUG_FILE,format); \
+ }
+# endif
+# ifndef png_debug1
+# define png_debug1(l,m,p1) \
+ { \
+ int num_tabs=l; \
+ char format[256]; \
+ snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
+ (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
+ m,PNG_STRING_NEWLINE); \
+ fprintf(PNG_DEBUG_FILE,format,p1); \
+ }
+# endif
+# ifndef png_debug2
+# define png_debug2(l,m,p1,p2) \
+ { \
+ int num_tabs=l; \
+ char format[256]; \
+ snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
+ (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
+ m,PNG_STRING_NEWLINE); \
+ fprintf(PNG_DEBUG_FILE,format,p1,p2); \
+ }
+# endif
+# endif /* __STDC __ */
+#endif /* (PNG_DEBUG > 1) */
+
+#endif /* _MSC_VER */
+#endif /* (PNG_DEBUG > 0) */
+#endif /* PNG_DEBUG */
+#ifndef png_debug
+#define png_debug(l, m)
+#endif
+#ifndef png_debug1
+#define png_debug1(l, m, p1)
+#endif
+#ifndef png_debug2
+#define png_debug2(l, m, p1, p2)
+#endif
+
+extern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr));
+extern PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr));
+extern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr));
+extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr));
+
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp
+ png_ptr, png_uint_32 mng_features_permitted));
+#endif
+
+/* For use in png_set_keep_unknown, added to version 1.2.6 */
+#define PNG_HANDLE_CHUNK_AS_DEFAULT 0
+#define PNG_HANDLE_CHUNK_NEVER 1
+#define PNG_HANDLE_CHUNK_IF_SAFE 2
+#define PNG_HANDLE_CHUNK_ALWAYS 3
+
+/* Added to version 1.2.0 */
+#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
+#ifdef PNG_MMX_CODE_SUPPORTED
+#define PNG_ASM_FLAG_MMX_SUPPORT_COMPILED 0x01 /* not user-settable */
+#define PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU 0x02 /* not user-settable */
+#define PNG_ASM_FLAG_MMX_READ_COMBINE_ROW 0x04
+#define PNG_ASM_FLAG_MMX_READ_INTERLACE 0x08
+#define PNG_ASM_FLAG_MMX_READ_FILTER_SUB 0x10
+#define PNG_ASM_FLAG_MMX_READ_FILTER_UP 0x20
+#define PNG_ASM_FLAG_MMX_READ_FILTER_AVG 0x40
+#define PNG_ASM_FLAG_MMX_READ_FILTER_PAETH 0x80
+#define PNG_ASM_FLAGS_INITIALIZED 0x80000000 /* not user-settable */
+
+#define PNG_MMX_READ_FLAGS ( PNG_ASM_FLAG_MMX_READ_COMBINE_ROW \
+ | PNG_ASM_FLAG_MMX_READ_INTERLACE \
+ | PNG_ASM_FLAG_MMX_READ_FILTER_SUB \
+ | PNG_ASM_FLAG_MMX_READ_FILTER_UP \
+ | PNG_ASM_FLAG_MMX_READ_FILTER_AVG \
+ | PNG_ASM_FLAG_MMX_READ_FILTER_PAETH )
+#define PNG_MMX_WRITE_FLAGS ( 0 )
+
+#define PNG_MMX_FLAGS ( PNG_ASM_FLAG_MMX_SUPPORT_COMPILED \
+ | PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU \
+ | PNG_MMX_READ_FLAGS \
+ | PNG_MMX_WRITE_FLAGS )
+
+#define PNG_SELECT_READ 1
+#define PNG_SELECT_WRITE 2
+#endif /* PNG_MMX_CODE_SUPPORTED */
+
+#ifndef PNG_1_0_X
+/* pngget.c */
+extern PNG_EXPORT(png_uint_32,png_get_mmx_flagmask)
+ PNGARG((int flag_select, int *compilerID));
+
+/* pngget.c */
+extern PNG_EXPORT(png_uint_32,png_get_asm_flagmask)
+ PNGARG((int flag_select));
+
+/* pngget.c */
+extern PNG_EXPORT(png_uint_32,png_get_asm_flags)
+ PNGARG((png_structp png_ptr));
+
+/* pngget.c */
+extern PNG_EXPORT(png_byte,png_get_mmx_bitdepth_threshold)
+ PNGARG((png_structp png_ptr));
+
+/* pngget.c */
+extern PNG_EXPORT(png_uint_32,png_get_mmx_rowbytes_threshold)
+ PNGARG((png_structp png_ptr));
+
+/* pngset.c */
+extern PNG_EXPORT(void,png_set_asm_flags)
+ PNGARG((png_structp png_ptr, png_uint_32 asm_flags));
+
+/* pngset.c */
+extern PNG_EXPORT(void,png_set_mmx_thresholds)
+ PNGARG((png_structp png_ptr, png_byte mmx_bitdepth_threshold,
+ png_uint_32 mmx_rowbytes_threshold));
+
+#endif /* PNG_1_0_X */
+
+#ifndef PNG_1_0_X
+/* png.c, pnggccrd.c, or pngvcrd.c */
+extern PNG_EXPORT(int,png_mmx_support) PNGARG((void));
+#endif /* PNG_1_0_X */
+#endif /* PNG_ASSEMBLER_CODE_SUPPORTED */
+
+/* Strip the prepended error numbers ("#nnn ") from error and warning
+ * messages before passing them to the error or warning handler.
+ */
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+extern PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp
+ png_ptr, png_uint_32 strip_mode));
+#endif
+
+/* Added at libpng-1.2.6 */
+#ifdef PNG_SET_USER_LIMITS_SUPPORTED
+extern PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp
+ png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max));
+extern PNG_EXPORT(png_uint_32,png_get_user_width_max) PNGARG((png_structp
+ png_ptr));
+extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp
+ png_ptr));
+#endif
+/* Maintainer: Put new public prototypes here ^, in libpng.3, and in
+ * project defs
+ */
+
+#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
+/* With these routines we avoid an integer divide, which will be slower on
+ * most machines. However, it does take more operations than the corresponding
+ * divide method, so it may be slower on a few RISC systems. There are two
+ * shifts (by 8 or 16 bits) and an addition, versus a single integer divide.
+ *
+ * Note that the rounding factors are NOT supposed to be the same! 128 and
+ * 32768 are correct for the NODIV code; 127 and 32767 are correct for the
+ * standard method.
+ *
+ * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ]
+ */
+
+ /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */
+
+# define png_composite(composite, fg, alpha, bg) \
+ { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) * (png_uint_16)(alpha) \
+ + (png_uint_16)(bg)*(png_uint_16)(255 - \
+ (png_uint_16)(alpha)) + (png_uint_16)128); \
+ (composite) = (png_byte)((temp + (temp >> 8)) >> 8); }
+
+# define png_composite_16(composite, fg, alpha, bg) \
+ { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) * (png_uint_32)(alpha) \
+ + (png_uint_32)(bg)*(png_uint_32)(65535L - \
+ (png_uint_32)(alpha)) + (png_uint_32)32768L); \
+ (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); }
+
+#else /* Standard method using integer division */
+
+# define png_composite(composite, fg, alpha, bg) \
+ (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \
+ (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \
+ (png_uint_16)127) / 255)
+
+# define png_composite_16(composite, fg, alpha, bg) \
+ (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \
+ (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \
+ (png_uint_32)32767) / (png_uint_32)65535L)
+
+#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */
+
+/* Inline macros to do direct reads of bytes from the input buffer. These
+ * require that you are using an architecture that uses PNG byte ordering
+ * (MSB first) and supports unaligned data storage. I think that PowerPC
+ * in big-endian mode and 680x0 are the only ones that will support this.
+ * The x86 line of processors definitely do not. The png_get_int_32()
+ * routine also assumes we are using two's complement format for negative
+ * values, which is almost certainly true.
+ */
+#ifdef PNG_READ_BIG_ENDIAN_SUPPORTED
+# define png_get_uint_32(buf) ( *((png_uint_32p) (buf)))
+# define png_get_uint_16(buf) ( *((png_uint_16p) (buf)))
+# define png_get_int_32(buf) ( *((png_int_32p) (buf)))
+#else
+extern PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf));
+extern PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf));
+extern PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf));
+#endif /* !PNG_READ_BIG_ENDIAN_SUPPORTED */
+extern PNG_EXPORT(png_uint_32,png_get_uint_31)
+ PNGARG((png_structp png_ptr, png_bytep buf));
+/* No png_get_int_16 -- may be added if there's a real need for it. */
+
+/* Place a 32-bit number into a buffer in PNG byte order (big-endian).
+ */
+extern PNG_EXPORT(void,png_save_uint_32)
+ PNGARG((png_bytep buf, png_uint_32 i));
+extern PNG_EXPORT(void,png_save_int_32)
+ PNGARG((png_bytep buf, png_int_32 i));
+
+/* Place a 16-bit number into a buffer in PNG byte order.
+ * The parameter is declared unsigned int, not png_uint_16,
+ * just to avoid potential problems on pre-ANSI C compilers.
+ */
+extern PNG_EXPORT(void,png_save_uint_16)
+ PNGARG((png_bytep buf, unsigned int i));
+/* No png_save_int_16 -- may be added if there's a real need for it. */
+
+/* ************************************************************************* */
+
+/* These next functions are used internally in the code. They generally
+ * shouldn't be used unless you are writing code to add or replace some
+ * functionality in libpng. More information about most functions can
+ * be found in the files where the functions are located.
+ */
+
+
+/* Various modes of operation, that are visible to applications because
+ * they are used for unknown chunk location.
+ */
+#define PNG_HAVE_IHDR 0x01
+#define PNG_HAVE_PLTE 0x02
+#define PNG_HAVE_IDAT 0x04
+#define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */
+#define PNG_HAVE_IEND 0x10
+
+#ifdef PNG_INTERNAL
+
+/* More modes of operation. Note that after an init, mode is set to
+ * zero automatically when the structure is created.
+ */
+#define PNG_HAVE_gAMA 0x20
+#define PNG_HAVE_cHRM 0x40
+#define PNG_HAVE_sRGB 0x80
+#define PNG_HAVE_CHUNK_HEADER 0x100
+#define PNG_WROTE_tIME 0x200
+#define PNG_WROTE_INFO_BEFORE_PLTE 0x400
+#define PNG_BACKGROUND_IS_GRAY 0x800
+#define PNG_HAVE_PNG_SIGNATURE 0x1000
+#define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */
+
+/* Flags for the transformations the PNG library does on the image data */
+#define PNG_BGR 0x0001
+#define PNG_INTERLACE 0x0002
+#define PNG_PACK 0x0004
+#define PNG_SHIFT 0x0008
+#define PNG_SWAP_BYTES 0x0010
+#define PNG_INVERT_MONO 0x0020
+#define PNG_DITHER 0x0040
+#define PNG_BACKGROUND 0x0080
+#define PNG_BACKGROUND_EXPAND 0x0100
+ /* 0x0200 unused */
+#define PNG_16_TO_8 0x0400
+#define PNG_RGBA 0x0800
+#define PNG_EXPAND 0x1000
+#define PNG_GAMMA 0x2000
+#define PNG_GRAY_TO_RGB 0x4000
+#define PNG_FILLER 0x8000L
+#define PNG_PACKSWAP 0x10000L
+#define PNG_SWAP_ALPHA 0x20000L
+#define PNG_STRIP_ALPHA 0x40000L
+#define PNG_INVERT_ALPHA 0x80000L
+#define PNG_USER_TRANSFORM 0x100000L
+#define PNG_RGB_TO_GRAY_ERR 0x200000L
+#define PNG_RGB_TO_GRAY_WARN 0x400000L
+#define PNG_RGB_TO_GRAY 0x600000L /* two bits, RGB_TO_GRAY_ERR|WARN */
+ /* 0x800000L Unused */
+#define PNG_ADD_ALPHA 0x1000000L /* Added to libpng-1.2.7 */
+#define PNG_EXPAND_tRNS 0x2000000L /* Added to libpng-1.2.9 */
+#define PNG_PREMULTIPLY_ALPHA 0x4000000L /* Added to libpng-1.2.41 */
+ /* by volker */
+ /* 0x8000000L unused */
+ /* 0x10000000L unused */
+ /* 0x20000000L unused */
+ /* 0x40000000L unused */
+
+/* Flags for png_create_struct */
+#define PNG_STRUCT_PNG 0x0001
+#define PNG_STRUCT_INFO 0x0002
+
+/* Scaling factor for filter heuristic weighting calculations */
+#define PNG_WEIGHT_SHIFT 8
+#define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT))
+#define PNG_COST_SHIFT 3
+#define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT))
+
+/* Flags for the png_ptr->flags rather than declaring a byte for each one */
+#define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001
+#define PNG_FLAG_ZLIB_CUSTOM_LEVEL 0x0002
+#define PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL 0x0004
+#define PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS 0x0008
+#define PNG_FLAG_ZLIB_CUSTOM_METHOD 0x0010
+#define PNG_FLAG_ZLIB_FINISHED 0x0020
+#define PNG_FLAG_ROW_INIT 0x0040
+#define PNG_FLAG_FILLER_AFTER 0x0080
+#define PNG_FLAG_CRC_ANCILLARY_USE 0x0100
+#define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200
+#define PNG_FLAG_CRC_CRITICAL_USE 0x0400
+#define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800
+#define PNG_FLAG_FREE_PLTE 0x1000
+#define PNG_FLAG_FREE_TRNS 0x2000
+#define PNG_FLAG_FREE_HIST 0x4000
+#define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000L
+#define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000L
+#define PNG_FLAG_LIBRARY_MISMATCH 0x20000L
+#define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000L
+#define PNG_FLAG_STRIP_ERROR_TEXT 0x80000L
+#define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000L
+#define PNG_FLAG_ADD_ALPHA 0x200000L /* Added to libpng-1.2.8 */
+#define PNG_FLAG_STRIP_ALPHA 0x400000L /* Added to libpng-1.2.8 */
+ /* 0x800000L unused */
+ /* 0x1000000L unused */
+ /* 0x2000000L unused */
+ /* 0x4000000L unused */
+ /* 0x8000000L unused */
+ /* 0x10000000L unused */
+ /* 0x20000000L unused */
+ /* 0x40000000L unused */
+
+#define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \
+ PNG_FLAG_CRC_ANCILLARY_NOWARN)
+
+#define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \
+ PNG_FLAG_CRC_CRITICAL_IGNORE)
+
+#define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \
+ PNG_FLAG_CRC_CRITICAL_MASK)
+
+/* Save typing and make code easier to understand */
+
+#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \
+ abs((int)((c1).green) - (int)((c2).green)) + \
+ abs((int)((c1).blue) - (int)((c2).blue)))
+
+/* Added to libpng-1.2.6 JB */
+#define PNG_ROWBYTES(pixel_bits, width) \
+ ((pixel_bits) >= 8 ? \
+ ((width) * (((png_uint_32)(pixel_bits)) >> 3)) : \
+ (( ((width) * ((png_uint_32)(pixel_bits))) + 7) >> 3) )
+
+/* PNG_OUT_OF_RANGE returns true if value is outside the range
+ * ideal-delta..ideal+delta. Each argument is evaluated twice.
+ * "ideal" and "delta" should be constants, normally simple
+ * integers, "value" a variable. Added to libpng-1.2.6 JB
+ */
+#define PNG_OUT_OF_RANGE(value, ideal, delta) \
+ ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) )
+
+/* Variables declared in png.c - only it needs to define PNG_NO_EXTERN */
+#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
+/* Place to hold the signature string for a PNG file. */
+#ifdef PNG_USE_GLOBAL_ARRAYS
+ PNG_EXPORT_VAR (PNG_CONST png_byte FARDATA) png_sig[8];
+#else
+#endif
+#endif /* PNG_NO_EXTERN */
+
+/* Constant strings for known chunk types. If you need to add a chunk,
+ * define the name here, and add an invocation of the macro in png.c and
+ * wherever it's needed.
+ */
+#define PNG_IHDR png_byte png_IHDR[5] = { 73, 72, 68, 82, '\0'}
+#define PNG_IDAT png_byte png_IDAT[5] = { 73, 68, 65, 84, '\0'}
+#define PNG_IEND png_byte png_IEND[5] = { 73, 69, 78, 68, '\0'}
+#define PNG_PLTE png_byte png_PLTE[5] = { 80, 76, 84, 69, '\0'}
+#define PNG_bKGD png_byte png_bKGD[5] = { 98, 75, 71, 68, '\0'}
+#define PNG_cHRM png_byte png_cHRM[5] = { 99, 72, 82, 77, '\0'}
+#define PNG_gAMA png_byte png_gAMA[5] = {103, 65, 77, 65, '\0'}
+#define PNG_hIST png_byte png_hIST[5] = {104, 73, 83, 84, '\0'}
+#define PNG_iCCP png_byte png_iCCP[5] = {105, 67, 67, 80, '\0'}
+#define PNG_iTXt png_byte png_iTXt[5] = {105, 84, 88, 116, '\0'}
+#define PNG_oFFs png_byte png_oFFs[5] = {111, 70, 70, 115, '\0'}
+#define PNG_pCAL png_byte png_pCAL[5] = {112, 67, 65, 76, '\0'}
+#define PNG_sCAL png_byte png_sCAL[5] = {115, 67, 65, 76, '\0'}
+#define PNG_pHYs png_byte png_pHYs[5] = {112, 72, 89, 115, '\0'}
+#define PNG_sBIT png_byte png_sBIT[5] = {115, 66, 73, 84, '\0'}
+#define PNG_sPLT png_byte png_sPLT[5] = {115, 80, 76, 84, '\0'}
+#define PNG_sRGB png_byte png_sRGB[5] = {115, 82, 71, 66, '\0'}
+#define PNG_tEXt png_byte png_tEXt[5] = {116, 69, 88, 116, '\0'}
+#define PNG_tIME png_byte png_tIME[5] = {116, 73, 77, 69, '\0'}
+#define PNG_tRNS png_byte png_tRNS[5] = {116, 82, 78, 83, '\0'}
+#define PNG_zTXt png_byte png_zTXt[5] = {122, 84, 88, 116, '\0'}
+
+#ifdef PNG_USE_GLOBAL_ARRAYS
+PNG_EXPORT_VAR (png_byte FARDATA) png_IHDR[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_IDAT[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_IEND[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_PLTE[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_bKGD[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_cHRM[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_gAMA[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_hIST[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_iCCP[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_iTXt[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_oFFs[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_pCAL[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_sCAL[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_pHYs[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_sBIT[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_sPLT[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_sRGB[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_tEXt[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_tIME[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_tRNS[5];
+PNG_EXPORT_VAR (png_byte FARDATA) png_zTXt[5];
+#endif /* PNG_USE_GLOBAL_ARRAYS */
+
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+/* Initialize png_ptr struct for reading, and allocate any other memory.
+ * (old interface - DEPRECATED - use png_create_read_struct instead).
+ */
+extern PNG_EXPORT(void,png_read_init) PNGARG((png_structp png_ptr))
+ PNG_DEPRECATED;
+#undef png_read_init
+#define png_read_init(png_ptr) png_read_init_3(&png_ptr, \
+ PNG_LIBPNG_VER_STRING, png_sizeof(png_struct));
+#endif
+
+extern PNG_EXPORT(void,png_read_init_3) PNGARG((png_structpp ptr_ptr,
+ png_const_charp user_png_ver, png_size_t png_struct_size));
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+extern PNG_EXPORT(void,png_read_init_2) PNGARG((png_structp png_ptr,
+ png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
+ png_info_size));
+#endif
+
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+/* Initialize png_ptr struct for writing, and allocate any other memory.
+ * (old interface - DEPRECATED - use png_create_write_struct instead).
+ */
+extern PNG_EXPORT(void,png_write_init) PNGARG((png_structp png_ptr))
+ PNG_DEPRECATED;
+#undef png_write_init
+#define png_write_init(png_ptr) png_write_init_3(&png_ptr, \
+ PNG_LIBPNG_VER_STRING, png_sizeof(png_struct));
+#endif
+
+extern PNG_EXPORT(void,png_write_init_3) PNGARG((png_structpp ptr_ptr,
+ png_const_charp user_png_ver, png_size_t png_struct_size));
+extern PNG_EXPORT(void,png_write_init_2) PNGARG((png_structp png_ptr,
+ png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
+ png_info_size));
+
+/* Allocate memory for an internal libpng struct */
+PNG_EXTERN png_voidp png_create_struct PNGARG((int type)) PNG_PRIVATE;
+
+/* Free memory from internal libpng struct */
+PNG_EXTERN void png_destroy_struct PNGARG((png_voidp struct_ptr)) PNG_PRIVATE;
+
+PNG_EXTERN png_voidp png_create_struct_2 PNGARG((int type, png_malloc_ptr
+ malloc_fn, png_voidp mem_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_destroy_struct_2 PNGARG((png_voidp struct_ptr,
+ png_free_ptr free_fn, png_voidp mem_ptr)) PNG_PRIVATE;
+
+/* Free any memory that info_ptr points to and reset struct. */
+PNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+
+#ifndef PNG_1_0_X
+/* Function to allocate memory for zlib. */
+PNG_EXTERN voidpf png_zalloc PNGARG((voidpf png_ptr, uInt items,
+ uInt size)) PNG_PRIVATE;
+
+/* Function to free memory for zlib */
+PNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr)) PNG_PRIVATE;
+
+#ifdef PNG_SIZE_T
+/* Function to convert a sizeof an item to png_sizeof item */
+ PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size))
+ PNG_PRIVATE;
+#endif
+
+/* Next four functions are used internally as callbacks. PNGAPI is required
+ * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3.
+ */
+
+PNG_EXTERN void PNGAPI png_default_read_data PNGARG((png_structp png_ptr,
+ png_bytep data, png_size_t length)) PNG_PRIVATE;
+
+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+PNG_EXTERN void PNGAPI png_push_fill_buffer PNGARG((png_structp png_ptr,
+ png_bytep buffer, png_size_t length)) PNG_PRIVATE;
+#endif
+
+PNG_EXTERN void PNGAPI png_default_write_data PNGARG((png_structp png_ptr,
+ png_bytep data, png_size_t length)) PNG_PRIVATE;
+
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+#ifdef PNG_STDIO_SUPPORTED
+PNG_EXTERN void PNGAPI png_default_flush PNGARG((png_structp png_ptr))
+ PNG_PRIVATE;
+#endif
+#endif
+#else /* PNG_1_0_X */
+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+PNG_EXTERN void png_push_fill_buffer PNGARG((png_structp png_ptr,
+ png_bytep buffer, png_size_t length)) PNG_PRIVATE;
+#endif
+#endif /* PNG_1_0_X */
+
+/* Reset the CRC variable */
+PNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+
+/* Write the "data" buffer to whatever output you are using. */
+PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, png_bytep data,
+ png_size_t length)) PNG_PRIVATE;
+
+/* Read data from whatever input you are using into the "data" buffer */
+PNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data,
+ png_size_t length)) PNG_PRIVATE;
+
+/* Read bytes into buf, and update png_ptr->crc */
+PNG_EXTERN void png_crc_read PNGARG((png_structp png_ptr, png_bytep buf,
+ png_size_t length)) PNG_PRIVATE;
+
+/* Decompress data in a chunk that uses compression */
+#if defined(PNG_zTXt_SUPPORTED) || defined(PNG_iTXt_SUPPORTED) || \
+ defined(PNG_iCCP_SUPPORTED) || defined(PNG_sPLT_SUPPORTED)
+PNG_EXTERN void png_decompress_chunk PNGARG((png_structp png_ptr,
+ int comp_type, png_size_t chunklength,
+ png_size_t prefix_length, png_size_t *data_length)) PNG_PRIVATE;
+#endif
+
+/* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */
+PNG_EXTERN int png_crc_finish PNGARG((png_structp png_ptr, png_uint_32 skip)
+ PNG_PRIVATE);
+
+/* Read the CRC from the file and compare it to the libpng calculated CRC */
+PNG_EXTERN int png_crc_error PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+
+/* Calculate the CRC over a section of data. Note that we are only
+ * passing a maximum of 64K on systems that have this as a memory limit,
+ * since this is the maximum buffer size we can specify.
+ */
+PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, png_bytep ptr,
+ png_size_t length)) PNG_PRIVATE;
+
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+PNG_EXTERN void png_flush PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+#endif
+
+/* Simple function to write the signature */
+PNG_EXTERN void png_write_sig PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+
+/* Write various chunks */
+
+/* Write the IHDR chunk, and update the png_struct with the necessary
+ * information.
+ */
+PNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width,
+ png_uint_32 height,
+ int bit_depth, int color_type, int compression_method, int filter_method,
+ int interlace_method)) PNG_PRIVATE;
+
+PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, png_colorp palette,
+ png_uint_32 num_pal)) PNG_PRIVATE;
+
+PNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data,
+ png_size_t length)) PNG_PRIVATE;
+
+PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+
+#ifdef PNG_WRITE_gAMA_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma))
+ PNG_PRIVATE;
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+PNG_EXTERN void png_write_gAMA_fixed PNGARG((png_structp png_ptr,
+ png_fixed_point file_gamma)) PNG_PRIVATE;
+#endif
+#endif
+
+#ifdef PNG_WRITE_sBIT_SUPPORTED
+PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, png_color_8p sbit,
+ int color_type)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_cHRM_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+PNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr,
+ double white_x, double white_y,
+ double red_x, double red_y, double green_x, double green_y,
+ double blue_x, double blue_y)) PNG_PRIVATE;
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+PNG_EXTERN void png_write_cHRM_fixed PNGARG((png_structp png_ptr,
+ png_fixed_point int_white_x, png_fixed_point int_white_y,
+ png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point
+ int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x,
+ png_fixed_point int_blue_y)) PNG_PRIVATE;
+#endif
+#endif
+
+#ifdef PNG_WRITE_sRGB_SUPPORTED
+PNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr,
+ int intent)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_iCCP_SUPPORTED
+PNG_EXTERN void png_write_iCCP PNGARG((png_structp png_ptr,
+ png_charp name, int compression_type,
+ png_charp profile, int proflen)) PNG_PRIVATE;
+ /* Note to maintainer: profile should be png_bytep */
+#endif
+
+#ifdef PNG_WRITE_sPLT_SUPPORTED
+PNG_EXTERN void png_write_sPLT PNGARG((png_structp png_ptr,
+ png_sPLT_tp palette)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_tRNS_SUPPORTED
+PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, png_bytep trans,
+ png_color_16p values, int number, int color_type)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_bKGD_SUPPORTED
+PNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr,
+ png_color_16p values, int color_type)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_hIST_SUPPORTED
+PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist,
+ int num_hist)) PNG_PRIVATE;
+#endif
+
+#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \
+ defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
+PNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr,
+ png_charp key, png_charpp new_key)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_tEXt_SUPPORTED
+PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_charp key,
+ png_charp text, png_size_t text_len)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_zTXt_SUPPORTED
+PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_charp key,
+ png_charp text, png_size_t text_len, int compression)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_iTXt_SUPPORTED
+PNG_EXTERN void png_write_iTXt PNGARG((png_structp png_ptr,
+ int compression, png_charp key, png_charp lang, png_charp lang_key,
+ png_charp text)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_TEXT_SUPPORTED /* Added at version 1.0.14 and 1.2.4 */
+PNG_EXTERN int png_set_text_2 PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_textp text_ptr, int num_text)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_oFFs_SUPPORTED
+PNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr,
+ png_int_32 x_offset, png_int_32 y_offset, int unit_type)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_pCAL_SUPPORTED
+PNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose,
+ png_int_32 X0, png_int_32 X1, int type, int nparams,
+ png_charp units, png_charpp params)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_pHYs_SUPPORTED
+PNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr,
+ png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit,
+ int unit_type)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_tIME_SUPPORTED
+PNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr,
+ png_timep mod_time)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_sCAL_SUPPORTED
+#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO)
+PNG_EXTERN void png_write_sCAL PNGARG((png_structp png_ptr,
+ int unit, double width, double height)) PNG_PRIVATE;
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+PNG_EXTERN void png_write_sCAL_s PNGARG((png_structp png_ptr,
+ int unit, png_charp width, png_charp height)) PNG_PRIVATE;
+#endif
+#endif
+#endif
+
+/* Called when finished processing a row of data */
+PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+
+/* Internal use only. Called before first row of data */
+PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+
+#ifdef PNG_READ_GAMMA_SUPPORTED
+PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+#endif
+
+/* Combine a row of data, dealing with alpha, etc. if requested */
+PNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row,
+ int mask)) PNG_PRIVATE;
+
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+/* Expand an interlaced row */
+/* OLD pre-1.0.9 interface:
+PNG_EXTERN void png_do_read_interlace PNGARG((png_row_infop row_info,
+ png_bytep row, int pass, png_uint_32 transformations)) PNG_PRIVATE;
+ */
+PNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+#endif
+
+/* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */
+
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+/* Grab pixels out of a row for an interlaced pass */
+PNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info,
+ png_bytep row, int pass)) PNG_PRIVATE;
+#endif
+
+/* Unfilter a row */
+PNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr,
+ png_row_infop row_info, png_bytep row, png_bytep prev_row,
+ int filter)) PNG_PRIVATE;
+
+/* Choose the best filter to use and filter the row data */
+PNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr,
+ png_row_infop row_info)) PNG_PRIVATE;
+
+/* Write out the filtered row. */
+PNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr,
+ png_bytep filtered_row)) PNG_PRIVATE;
+/* Finish a row while reading, dealing with interlacing passes, etc. */
+PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr));
+
+/* Initialize the row buffers, etc. */
+PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+/* Optional call to update the users info structure */
+PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+
+/* These are the functions that do the transformations */
+#ifdef PNG_READ_FILLER_SUPPORTED
+PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info,
+ png_bytep row, png_uint_32 filler, png_uint_32 flags)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED
+PNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED
+PNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
+PNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
+PNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#if defined(PNG_WRITE_FILLER_SUPPORTED) || \
+ defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
+PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info,
+ png_bytep row, png_uint_32 flags)) PNG_PRIVATE;
+#endif
+
+#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
+PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
+PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
+PNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, png_row_infop
+ row_info, png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
+PNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_PACK_SUPPORTED
+PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_SHIFT_SUPPORTED
+PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row,
+ png_color_8p sig_bits)) PNG_PRIVATE;
+#endif
+
+#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
+PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_16_TO_8_SUPPORTED
+PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_DITHER_SUPPORTED
+PNG_EXTERN void png_do_dither PNGARG((png_row_infop row_info,
+ png_bytep row, png_bytep palette_lookup,
+ png_bytep dither_lookup)) PNG_PRIVATE;
+
+# ifdef PNG_CORRECT_PALETTE_SUPPORTED
+PNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr,
+ png_colorp palette, int num_palette)) PNG_PRIVATE;
+# endif
+#endif
+
+#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
+PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_PACK_SUPPORTED
+PNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info,
+ png_bytep row, png_uint_32 bit_depth)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_WRITE_SHIFT_SUPPORTED
+PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, png_bytep row,
+ png_color_8p bit_depth)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+#ifdef PNG_READ_GAMMA_SUPPORTED
+PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row,
+ png_color_16p trans_values, png_color_16p background,
+ png_color_16p background_1,
+ png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1,
+ png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1,
+ png_uint_16pp gamma_16_to_1, int gamma_shift)) PNG_PRIVATE;
+#else
+PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row,
+ png_color_16p trans_values, png_color_16p background)) PNG_PRIVATE;
+#endif
+#endif
+
+#ifdef PNG_READ_GAMMA_SUPPORTED
+PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, png_bytep row,
+ png_bytep gamma_table, png_uint_16pp gamma_16_table,
+ int gamma_shift)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_EXPAND_SUPPORTED
+PNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info,
+ png_bytep row, png_colorp palette, png_bytep trans,
+ int num_trans)) PNG_PRIVATE;
+PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info,
+ png_bytep row, png_color_16p trans_value)) PNG_PRIVATE;
+#endif
+
+/* The following decodes the appropriate chunks, and does error correction,
+ * then calls the appropriate callback for the chunk if it is valid.
+ */
+
+/* Decode the IHDR chunk */
+PNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+PNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length));
+PNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length));
+
+#ifdef PNG_READ_bKGD_SUPPORTED
+PNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_cHRM_SUPPORTED
+PNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_gAMA_SUPPORTED
+PNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_hIST_SUPPORTED
+PNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_iCCP_SUPPORTED
+extern void png_handle_iCCP PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length));
+#endif /* PNG_READ_iCCP_SUPPORTED */
+
+#ifdef PNG_READ_iTXt_SUPPORTED
+PNG_EXTERN void png_handle_iTXt PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_oFFs_SUPPORTED
+PNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_pCAL_SUPPORTED
+PNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_pHYs_SUPPORTED
+PNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_sBIT_SUPPORTED
+PNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_sCAL_SUPPORTED
+PNG_EXTERN void png_handle_sCAL PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_sPLT_SUPPORTED
+extern void png_handle_sPLT PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif /* PNG_READ_sPLT_SUPPORTED */
+
+#ifdef PNG_READ_sRGB_SUPPORTED
+PNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_tEXt_SUPPORTED
+PNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_tIME_SUPPORTED
+PNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_tRNS_SUPPORTED
+PNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_READ_zTXt_SUPPORTED
+PNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+#endif
+
+PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE;
+
+PNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr,
+ png_bytep chunk_name)) PNG_PRIVATE;
+
+/* Handle the transformations for reading and writing */
+PNG_EXTERN void png_do_read_transformations
+ PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_do_write_transformations
+ PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+
+PNG_EXTERN void png_init_read_transformations
+ PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+
+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr,
+ png_uint_32 length)) PNG_PRIVATE;
+PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr,
+ png_bytep buffer, png_size_t buffer_length)) PNG_PRIVATE;
+PNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_process_IDAT_data PNGARG((png_structp png_ptr,
+ png_bytep buffer, png_size_t buffer_length)) PNG_PRIVATE;
+PNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_push_handle_unknown PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE;
+PNG_EXTERN void png_push_have_info PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_push_have_end PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr,
+ png_bytep row)) PNG_PRIVATE;
+PNG_EXTERN void png_push_read_end PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_process_some_data PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+PNG_EXTERN void png_read_push_finish_row
+ PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+#ifdef PNG_READ_tEXt_SUPPORTED
+PNG_EXTERN void png_push_handle_tEXt PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE;
+PNG_EXTERN void png_push_read_tEXt PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+#endif
+#ifdef PNG_READ_zTXt_SUPPORTED
+PNG_EXTERN void png_push_handle_zTXt PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE;
+PNG_EXTERN void png_push_read_zTXt PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+#endif
+#ifdef PNG_READ_iTXt_SUPPORTED
+PNG_EXTERN void png_push_handle_iTXt PNGARG((png_structp png_ptr,
+ png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE;
+PNG_EXTERN void png_push_read_iTXt PNGARG((png_structp png_ptr,
+ png_infop info_ptr)) PNG_PRIVATE;
+#endif
+
+#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
+
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+PNG_EXTERN void png_do_read_intrapixel PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+PNG_EXTERN void png_do_write_intrapixel PNGARG((png_row_infop row_info,
+ png_bytep row)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
+#ifdef PNG_MMX_CODE_SUPPORTED
+/* png.c */ /* PRIVATE */
+PNG_EXTERN void png_init_mmx_flags PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+#endif
+#endif
+
+
+/* The following six functions will be exported in libpng-1.4.0. */
+#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)
+PNG_EXTERN png_uint_32 png_get_pixels_per_inch PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+PNG_EXTERN png_uint_32 png_get_x_pixels_per_inch PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+PNG_EXTERN png_uint_32 png_get_y_pixels_per_inch PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+PNG_EXTERN float png_get_x_offset_inches PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+PNG_EXTERN float png_get_y_offset_inches PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+#ifdef PNG_pHYs_SUPPORTED
+PNG_EXTERN png_uint_32 png_get_pHYs_dpi PNGARG((png_structp png_ptr,
+png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
+#endif /* PNG_pHYs_SUPPORTED */
+#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */
+
+/* Read the chunk header (length + type name) */
+PNG_EXTERN png_uint_32 png_read_chunk_header
+ PNGARG((png_structp png_ptr)) PNG_PRIVATE;
+
+/* Added at libpng version 1.2.34 */
+#ifdef PNG_cHRM_SUPPORTED
+PNG_EXTERN int png_check_cHRM_fixed PNGARG((png_structp png_ptr,
+ png_fixed_point int_white_x, png_fixed_point int_white_y,
+ png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point
+ int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x,
+ png_fixed_point int_blue_y)) PNG_PRIVATE;
+#endif
+
+#ifdef PNG_cHRM_SUPPORTED
+#ifdef PNG_CHECK_cHRM_SUPPORTED
+/* Added at libpng version 1.2.34 */
+PNG_EXTERN void png_64bit_product PNGARG((long v1, long v2,
+ unsigned long *hi_product, unsigned long *lo_product)) PNG_PRIVATE;
+#endif
+#endif
+
+/* Added at libpng version 1.2.41 */
+PNG_EXTERN void png_check_IHDR PNGARG((png_structp png_ptr,
+ png_uint_32 width, png_uint_32 height, int bit_depth,
+ int color_type, int interlace_type, int compression_type,
+ int filter_type)) PNG_PRIVATE;
+
+/* Added at libpng version 1.2.41 */
+PNG_EXTERN png_voidp png_calloc PNGARG((png_structp png_ptr,
+ png_uint_32 size));
+
+/* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */
+
+#endif /* PNG_INTERNAL */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* PNG_VERSION_INFO_ONLY */
+/* Do not put anything past this line */
+#endif /* PNG_H */
diff --git a/Externals/libpng/pngconf.h b/Externals/libpng/pngconf.h
index 2633bf890c..bb78fa7d98 100644
--- a/Externals/libpng/pngconf.h
+++ b/Externals/libpng/pngconf.h
@@ -1,632 +1,1665 @@
-
-/* pngconf.h - machine configurable file for libpng
- *
- * libpng version 1.5.1 - February 3, 2011
- *
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- */
-
-/* Any machine specific code is near the front of this file, so if you
- * are configuring libpng for a machine, you may want to read the section
- * starting here down to where it starts to typedef png_color, png_text,
- * and png_info.
- */
-
-#ifndef PNGCONF_H
-#define PNGCONF_H
-
-/* PNG_NO_LIMITS_H may be used to turn off the use of the standard C
- * definition file for machine specific limits, this may impact the
- * correctness of the definitons below (see uses of INT_MAX).
- */
-#ifndef PNG_NO_LIMITS_H
-# include
-#endif
-
-/* For the memory copy APIs (i.e. the standard definitions of these),
- * because this file defines png_memcpy and so on the base APIs must
- * be defined here.
- */
-#ifdef BSD
-# include
-#else
-# include
-#endif
-
-/* For png_FILE_p - this provides the standard definition of a
- * FILE
- */
-#ifdef PNG_STDIO_SUPPORTED
-# include
-#endif
-
-/* This controls optimization of the reading of 16 and 32 bit values
- * from PNG files. It can be set on a per-app-file basis - it
- * just changes whether a macro is used to the function is called.
- * The library builder sets the default, if read functions are not
- * built into the library the macro implementation is forced on.
- */
-#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED
-# define PNG_USE_READ_MACROS
-#endif
-#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS)
-# if PNG_DEFAULT_READ_MACROS
-# define PNG_USE_READ_MACROS
-# endif
-#endif
-
-/* COMPILER SPECIFIC OPTIONS.
- *
- * These options are provided so that a variety of difficult compilers
- * can be used. Some are fixed at build time (e.g. PNG_API_RULE
- * below) but still have compiler specific implementations, others
- * may be changed on a per-file basis when compiling against libpng.
- */
-
-/* The PNGARG macro protects us against machines that don't have function
- * prototypes (ie K&R style headers). If your compiler does not handle
- * function prototypes, define this macro and use the included ansi2knr.
- * I've always been able to use _NO_PROTO as the indicator, but you may
- * need to drag the empty declaration out in front of here, or change the
- * ifdef to suit your own needs.
- */
-#ifndef PNGARG
-
-# ifdef OF /* zlib prototype munger */
-# define PNGARG(arglist) OF(arglist)
-# else
-
-# ifdef _NO_PROTO
-# define PNGARG(arglist) ()
-# else
-# define PNGARG(arglist) arglist
-# endif /* _NO_PROTO */
-
-# endif /* OF */
-
-#endif /* PNGARG */
-
-/* Function calling conventions.
- * =============================
- * Normally it is not necessary to specify to the compiler how to call
- * a function - it just does it - however on x86 systems derived from
- * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems
- * and some others) there are multiple ways to call a function and the
- * default can be changed on the compiler command line. For this reason
- * libpng specifies the calling convention of every exported function and
- * every function called via a user supplied function pointer. This is
- * done in this file by defining the following macros:
- *
- * PNGAPI Calling convention for exported functions.
- * PNGCBAPI Calling convention for user provided (callback) functions.
- * PNGCAPI Calling convention used by the ANSI-C library (required
- * for longjmp callbacks and sometimes used internally to
- * specify the calling convention for zlib).
- *
- * These macros should never be overridden. If it is necessary to
- * change calling convention in a private build this can be done
- * by setting PNG_API_RULE (which defaults to 0) to one of the values
- * below to select the correct 'API' variants.
- *
- * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout.
- * This is correct in every known environment.
- * PNG_API_RULE=1 Use the operating system convention for PNGAPI and
- * the 'C' calling convention (from PNGCAPI) for
- * callbacks (PNGCBAPI). This is no longer required
- * in any known environment - if it has to be used
- * please post an explanation of the problem to the
- * libpng mailing list.
- *
- * These cases only differ if the operating system does not use the C
- * calling convention, at present this just means the above cases
- * (x86 DOS/Windows sytems) and, even then, this does not apply to
- * Cygwin running on those systems.
- *
- * Note that the value must be defined in pnglibconf.h so that what
- * the application uses to call the library matches the conventions
- * set when building the library.
- */
-
-/* Symbol export
- * =============
- * When building a shared library it is almost always necessary to tell
- * the compiler which symbols to export. The png.h macro 'PNG_EXPORT'
- * is used to mark the symbols. On some systems these symbols can be
- * extracted at link time and need no special processing by the compiler,
- * on other systems the symbols are flagged by the compiler and just
- * the declaration requires a special tag applied (unfortunately) in a
- * compiler dependent way. Some systems can do either.
- *
- * A small number of older systems also require a symbol from a DLL to
- * be flagged to the program that calls it. This is a problem because
- * we do not know in the header file included by application code that
- * the symbol will come from a shared library, as opposed to a statically
- * linked one. For this reason the application must tell us by setting
- * the magic flag PNG_USE_DLL to turn on the special processing before
- * it includes png.h.
- *
- * Four additional macros are used to make this happen:
- *
- * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from
- * the build or imported if PNG_USE_DLL is set - compiler
- * and system specific.
- *
- * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to
- * 'type', compiler specific.
- *
- * PNG_DLL_EXPORT Set to the magic to use during a libpng build to
- * make a symbol exported from the DLL.
- *
- * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come
- * from a DLL - used to define PNG_IMPEXP when
- * PNG_USE_DLL is set.
- */
-
-/* System specific discovery.
- * ==========================
- * This code is used at build time to find PNG_IMPEXP, the API settings
- * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL
- * import processing is possible. On Windows/x86 systems it also sets
- * compiler-specific macros to the values required to change the calling
- * conventions of the various functions.
- */
-#if ( defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\
- defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) ) &&\
- ( defined(_X86_) || defined(_X64_) || defined(_M_IX86) ||\
- defined(_M_X64) || defined(_M_IA64) )
- /* Windows system (DOS doesn't support DLLs) running on x86/x64. Includes
- * builds under Cygwin or MinGW. Also includes Watcom builds but these need
- * special treatment because they are not compatible with GCC or Visual C
- * because of different calling conventions.
- */
-# if PNG_API_RULE == 2
- /* If this line results in an error, either because __watcall is not
- * understood or because of a redefine just below you cannot use *this*
- * build of the library with the compiler you are using. *This* build was
- * build using Watcom and applications must also be built using Watcom!
- */
-# define PNGCAPI __watcall
-# endif
-
-# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800))
-# define PNGCAPI __cdecl
-# if PNG_API_RULE == 1
-# define PNGAPI __stdcall
-# endif
-# else
- /* An older compiler, or one not detected (erroneously) above,
- * if necessary override on the command line to get the correct
- * variants for the compiler.
- */
-# ifndef PNGCAPI
-# define PNGCAPI _cdecl
-# endif
-# if PNG_API_RULE == 1 && !defined(PNGAPI)
-# define PNGAPI _stdcall
-# endif
-# endif /* compiler/api */
- /* NOTE: PNGCBAPI always defaults to PNGCAPI. */
-
-# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD)
- ERROR: PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed
-# endif
-
-# if (defined(_MSC_VER) && _MSC_VER < 800) ||\
- (defined(__BORLANDC__) && __BORLANDC__ < 0x500)
- /* older Borland and MSC
- * compilers used '__export' and required this to be after
- * the type.
- */
-# ifndef PNG_EXPORT_TYPE
-# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP
-# endif
-# define PNG_DLL_EXPORT __export
-# else /* newer compiler */
-# define PNG_DLL_EXPORT __declspec(dllexport)
-# ifndef PNG_DLL_IMPORT
-# define PNG_DLL_IMPORT __declspec(dllimport)
-# endif
-# endif /* compiler */
-
-#else /* !Windows/x86 */
-# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
-# define PNGAPI _System
-# else /* !Windows/x86 && !OS/2 */
- /* Use the defaults, or define PNG*API on the command line (but
- * this will have to be done for every compile!)
- */
-# endif /* other system, !OS/2 */
-#endif /* !Windows/x86 */
-
-/* Now do all the defaulting . */
-#ifndef PNGCAPI
-# define PNGCAPI
-#endif
-#ifndef PNGCBAPI
-# define PNGCBAPI PNGCAPI
-#endif
-#ifndef PNGAPI
-# define PNGAPI PNGCAPI
-#endif
-
-/* The default for PNG_IMPEXP depends on whether the library is
- * being built or used.
- */
-#ifndef PNG_IMPEXP
-# ifdef PNGLIB_BUILD
- /* Building the library */
-# if (defined(DLL_EXPORT)/*from libtool*/ ||\
- defined(_WINDLL) || defined(_DLL) || defined(__DLL__) ||\
- defined(_USRDLL) ||\
- defined(PNG_BUILD_DLL)) && defined(PNG_DLL_EXPORT)
- /* Building a DLL. */
-# define PNG_IMPEXP PNG_DLL_EXPORT
-# endif /* DLL */
-# else
- /* Using the library */
-# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT)
- /* This forces use of a DLL, disallowing static linking */
-# define PNG_IMPEXP PNG_DLL_IMPORT
-# endif
-# endif
-
-# ifndef PNG_IMPEXP
-# define PNG_IMPEXP
-# endif
-#endif
-
-/* THe following complexity is concerned with getting the 'attributes' of the
- * declared function in the correct place. This potentially requires a separate
- * PNG_EXPORT function for every compiler.
- */
-#ifndef PNG_FUNCTION
-# ifdef __GNUC__
-# define PNG_FUNCTION(type, name, args, attributes)\
- attributes type name args
-# else /* !GNUC */
-# ifdef _MSC_VER
-# define PNG_FUNCTION(type, name, args, attributes)\
- attributes type name args
-# else /* !MSC */
-# define PNG_FUNCTION(type, name, args, attributes)\
- type name args
-# endif
-# endif
-#endif
-
-#ifndef PNG_EXPORT_TYPE
-# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type
-#endif
-
- /* The ordinal value is only relevant when preprocessing png.h for symbol
- * table entries, so we discard it here. See the .dfn files in the
- * scripts directory.
- */
-#ifndef PNG_EXPORTA
-# define PNG_EXPORTA(ordinal, type, name, args, attributes)\
- extern PNG_FUNCTION(PNG_EXPORT_TYPE(type),(PNGAPI name),PNGARG(args),\
- attributes)
-#endif
-
-#define PNG_EXPORT(ordinal, type, name, args)\
- PNG_EXPORTA(ordinal, type, name, args, )
-
-/* Use PNG_REMOVED to comment out a removed interface. */
-#ifndef PNG_REMOVED
-# define PNG_REMOVED(ordinal, type, name, args, attributes)
-#endif
-
-#ifndef PNG_CALLBACK
-# define PNG_CALLBACK(type, name, args, attributes)\
- type (PNGCBAPI name) PNGARG(args) attributes
-#endif
-
-/* Support for compiler specific function attributes. These are used
- * so that where compiler support is available incorrect use of API
- * functions in png.h will generate compiler warnings.
- *
- * Added at libpng-1.2.41.
- */
-
-#ifndef PNG_NO_PEDANTIC_WARNINGS
-# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED
-# define PNG_PEDANTIC_WARNINGS_SUPPORTED
-# endif
-#endif
-
-#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED
- /* Support for compiler specific function attributes. These are used
- * so that where compiler support is available incorrect use of API
- * functions in png.h will generate compiler warnings. Added at libpng
- * version 1.2.41.
- */
-# ifdef __GNUC__
-# ifndef PNG_USE_RESULT
-# define PNG_USE_RESULT __attribute__((__warn_unused_result__))
-# endif
-# ifndef PNG_NORETURN
-# define PNG_NORETURN __attribute__((__noreturn__))
-# endif
-# ifndef PNG_PTR_NORETURN
-# define PNG_PTR_NORETURN __attribute__((__noreturn__))
-# endif
-# ifndef PNG_ALLOCATED
-# define PNG_ALLOCATED __attribute__((__malloc__))
-# endif
-
- /* This specifically protects structure members that should only be
- * accessed from within the library, therefore should be empty during
- * a library build.
- */
-# ifndef PNGLIB_BUILD
-# ifndef PNG_DEPRECATED
-# define PNG_DEPRECATED __attribute__((__deprecated__))
-# endif
-# ifndef PNG_DEPSTRUCT
-# define PNG_DEPSTRUCT __attribute__((__deprecated__))
-# endif
-# ifndef PNG_PRIVATE
-# if 0 /* Doesn't work so we use deprecated instead*/
-# define PNG_PRIVATE \
- __attribute__((warning("This function is not exported by libpng.")))
-# else
-# define PNG_PRIVATE \
- __attribute__((__deprecated__))
-# endif
-# endif /* PNG_PRIVATE */
-# endif /* PNGLIB_BUILD */
-# endif /* __GNUC__ */
-# ifdef _MSC_VER /* may need to check value */
-# ifndef PNG_USE_RESULT
-# define PNG_USE_RESULT /*not supported*/
-# endif
-# ifndef PNG_NORETURN
-# define PNG_NORETURN __declspec(noreturn)
-# endif
-# ifndef PNG_PTR_NORETURN
-# define PNG_PTR_NORETURN /*not supported*/
-# endif
-# ifndef PNG_ALLOCATED
-# define PNG_ALLOCATED __declspec(restrict)
-# endif
-
- /* This specifically protects structure members that should only be
- * accessed from within the library, therefore should be empty during
- * a library build.
- */
-# ifndef PNGLIB_BUILD
-# ifndef PNG_DEPRECATED
-# define PNG_DEPRECATED __declspec(deprecated)
-# endif
-# ifndef PNG_DEPSTRUCT
-# define PNG_DEPSTRUCT __declspec(deprecated)
-# endif
-# ifndef PNG_PRIVATE
-# define PNG_PRIVATE __declspec(deprecated)
-# endif /* PNG_PRIVATE */
-# endif /* PNGLIB_BUILD */
-# endif /* __GNUC__ */
-#endif /* PNG_PEDANTIC_WARNINGS */
-
-#ifndef PNG_DEPRECATED
-# define PNG_DEPRECATED /* Use of this function is deprecated */
-#endif
-#ifndef PNG_USE_RESULT
-# define PNG_USE_RESULT /* The result of this function must be checked */
-#endif
-#ifndef PNG_NORETURN
-# define PNG_NORETURN /* This function does not return */
-#endif
-#ifndef PNG_ALLOCATED
-# define PNG_ALLOCATED /* The result of the function is new memory */
-#endif
-#ifndef PNG_DEPSTRUCT
-# define PNG_DEPSTRUCT /* Access to this struct member is deprecated */
-#endif
-#ifndef PNG_PRIVATE
-# define PNG_PRIVATE /* This is a private libpng function */
-#endif
-#ifndef PNG_FP_EXPORT /* A floating point API. */
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-# define PNG_FP_EXPORT(ordinal, type, name, args)\
- PNG_EXPORT(ordinal, type, name, args)
-# else /* No floating point APIs */
-# define PNG_FP_EXPORT(ordinal, type, name, args)
-# endif
-#endif
-#ifndef PNG_FIXED_EXPORT /* A fixed point API. */
-# ifdef PNG_FIXED_POINT_SUPPORTED
-# define PNG_FIXED_EXPORT(ordinal, type, name, args)\
- PNG_EXPORT(ordinal, type, name, args)
-# else /* No fixed point APIs */
-# define PNG_FIXED_EXPORT(ordinal, type, name, args)
-# endif
-#endif
-
-/* The following uses const char * instead of char * for error
- * and warning message functions, so some compilers won't complain.
- * If you do not want to use const, define PNG_NO_CONST here.
- *
- * This should not change how the APIs are called, so it can be done
- * on a per-file basis in the application.
- */
-#ifndef PNG_CONST
-# ifndef PNG_NO_CONST
-# define PNG_CONST const
-# else
-# define PNG_CONST
-# endif
-#endif
-
-/* Some typedefs to get us started. These should be safe on most of the
- * common platforms. The typedefs should be at least as large as the
- * numbers suggest (a png_uint_32 must be at least 32 bits long), but they
- * don't have to be exactly that size. Some compilers dislike passing
- * unsigned shorts as function parameters, so you may be better off using
- * unsigned int for png_uint_16.
- */
-
-#if defined(INT_MAX) && (INT_MAX > 0x7ffffffeL)
-typedef unsigned int png_uint_32;
-typedef int png_int_32;
-#else
-typedef unsigned long png_uint_32;
-typedef long png_int_32;
-#endif
-typedef unsigned short png_uint_16;
-typedef short png_int_16;
-typedef unsigned char png_byte;
-
-#ifdef PNG_NO_SIZE_T
-typedef unsigned int png_size_t;
-#else
-typedef size_t png_size_t;
-#endif
-#define png_sizeof(x) (sizeof (x))
-
-/* The following is needed for medium model support. It cannot be in the
- * pngpriv.h header. Needs modification for other compilers besides
- * MSC. Model independent support declares all arrays and pointers to be
- * large using the far keyword. The zlib version used must also support
- * model independent data. As of version zlib 1.0.4, the necessary changes
- * have been made in zlib. The USE_FAR_KEYWORD define triggers other
- * changes that are needed. (Tim Wegner)
- */
-
-/* Separate compiler dependencies (problem here is that zlib.h always
- * defines FAR. (SJT)
- */
-#ifdef __BORLANDC__
-# if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__)
-# define LDATA 1
-# else
-# define LDATA 0
-# endif
- /* GRR: why is Cygwin in here? Cygwin is not Borland C... */
-# if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__)
-# define PNG_MAX_MALLOC_64K /* only used in build */
-# if (LDATA != 1)
-# ifndef FAR
-# define FAR __far
-# endif
-# define USE_FAR_KEYWORD
-# endif /* LDATA != 1 */
- /* Possibly useful for moving data out of default segment.
- * Uncomment it if you want. Could also define FARDATA as
- * const if your compiler supports it. (SJT)
-# define FARDATA FAR
- */
-# endif /* __WIN32__, __FLAT__, __CYGWIN__ */
-#endif /* __BORLANDC__ */
-
-
-/* Suggest testing for specific compiler first before testing for
- * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM,
- * making reliance oncertain keywords suspect. (SJT)
- */
-
-/* MSC Medium model */
-#ifdef FAR
-# ifdef M_I86MM
-# define USE_FAR_KEYWORD
-# define FARDATA FAR
-# include
-# endif
-#endif
-
-/* SJT: default case */
-#ifndef FAR
-# define FAR
-#endif
-
-/* At this point FAR is always defined */
-#ifndef FARDATA
-# define FARDATA
-#endif
-
-/* Typedef for floating-point numbers that are converted
- * to fixed-point with a multiple of 100,000, e.g., gamma
- */
-typedef png_int_32 png_fixed_point;
-
-/* Add typedefs for pointers */
-typedef void FAR * png_voidp;
-typedef PNG_CONST void FAR * png_const_voidp;
-typedef png_byte FAR * png_bytep;
-typedef PNG_CONST png_byte FAR * png_const_bytep;
-typedef png_uint_32 FAR * png_uint_32p;
-typedef PNG_CONST png_uint_32 FAR * png_const_uint_32p;
-typedef png_int_32 FAR * png_int_32p;
-typedef PNG_CONST png_int_32 FAR * png_const_int_32p;
-typedef png_uint_16 FAR * png_uint_16p;
-typedef PNG_CONST png_uint_16 FAR * png_const_uint_16p;
-typedef png_int_16 FAR * png_int_16p;
-typedef PNG_CONST png_int_16 FAR * png_const_int_16p;
-typedef char FAR * png_charp;
-typedef PNG_CONST char FAR * png_const_charp;
-typedef png_fixed_point FAR * png_fixed_point_p;
-typedef PNG_CONST png_fixed_point FAR * png_const_fixed_point_p;
-typedef png_size_t FAR * png_size_tp;
-typedef PNG_CONST png_size_t FAR * png_const_size_tp;
-
-#ifdef PNG_STDIO_SUPPORTED
-typedef FILE * png_FILE_p;
-#endif
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-typedef double FAR * png_doublep;
-typedef PNG_CONST double FAR * png_const_doublep;
-#endif
-
-/* Pointers to pointers; i.e. arrays */
-typedef png_byte FAR * FAR * png_bytepp;
-typedef png_uint_32 FAR * FAR * png_uint_32pp;
-typedef png_int_32 FAR * FAR * png_int_32pp;
-typedef png_uint_16 FAR * FAR * png_uint_16pp;
-typedef png_int_16 FAR * FAR * png_int_16pp;
-typedef PNG_CONST char FAR * FAR * png_const_charpp;
-typedef char FAR * FAR * png_charpp;
-typedef png_fixed_point FAR * FAR * png_fixed_point_pp;
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-typedef double FAR * FAR * png_doublepp;
-#endif
-
-/* Pointers to pointers to pointers; i.e., pointer to array */
-typedef char FAR * FAR * FAR * png_charppp;
-
-/* png_alloc_size_t is guaranteed to be no smaller than png_size_t,
- * and no smaller than png_uint_32. Casts from png_size_t or png_uint_32
- * to png_alloc_size_t are not necessary; in fact, it is recommended
- * not to use them at all so that the compiler can complain when something
- * turns out to be problematic.
- * Casts in the other direction (from png_alloc_size_t to png_size_t or
- * png_uint_32) should be explicitly applied; however, we do not expect
- * to encounter practical situations that require such conversions.
- */
-#if defined(__TURBOC__) && !defined(__FLAT__)
- typedef unsigned long png_alloc_size_t;
-#else
-# if defined(_MSC_VER) && defined(MAXSEG_64K)
- typedef unsigned long png_alloc_size_t;
-# else
- /* This is an attempt to detect an old Windows system where (int) is
- * actually 16 bits, in that case png_malloc must have an argument with a
- * bigger size to accomodate the requirements of the library.
- */
-# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) && \
- (!defined(INT_MAX) || INT_MAX <= 0x7ffffffeL)
- typedef DWORD png_alloc_size_t;
-# else
- typedef png_size_t png_alloc_size_t;
-# endif
-# endif
-#endif
-
-#endif /* PNGCONF_H */
+
+/* pngconf.h - machine configurable file for libpng
+ *
+ * libpng version 1.2.50 - July 10, 2012
+ * Copyright (c) 1998-2012 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ */
+
+/* Any machine specific code is near the front of this file, so if you
+ * are configuring libpng for a machine, you may want to read the section
+ * starting here down to where it starts to typedef png_color, png_text,
+ * and png_info.
+ */
+
+#ifndef PNGCONF_H
+#define PNGCONF_H
+
+#define PNG_1_2_X
+
+/*
+ * PNG_USER_CONFIG has to be defined on the compiler command line. This
+ * includes the resource compiler for Windows DLL configurations.
+ */
+#ifdef PNG_USER_CONFIG
+# ifndef PNG_USER_PRIVATEBUILD
+# define PNG_USER_PRIVATEBUILD
+# endif
+#include "pngusr.h"
+#endif
+
+/* PNG_CONFIGURE_LIBPNG is set by the "configure" script. */
+#ifdef PNG_CONFIGURE_LIBPNG
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#endif
+
+/*
+ * Added at libpng-1.2.8
+ *
+ * If you create a private DLL you need to define in "pngusr.h" the followings:
+ * #define PNG_USER_PRIVATEBUILD
+ * e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons."
+ * #define PNG_USER_DLLFNAME_POSTFIX
+ * e.g. // private DLL "libpng13gx.dll"
+ * #define PNG_USER_DLLFNAME_POSTFIX "gx"
+ *
+ * The following macros are also at your disposal if you want to complete the
+ * DLL VERSIONINFO structure.
+ * - PNG_USER_VERSIONINFO_COMMENTS
+ * - PNG_USER_VERSIONINFO_COMPANYNAME
+ * - PNG_USER_VERSIONINFO_LEGALTRADEMARKS
+ */
+
+#ifdef __STDC__
+#ifdef SPECIALBUILD
+# pragma message("PNG_LIBPNG_SPECIALBUILD (and deprecated SPECIALBUILD)\
+ are now LIBPNG reserved macros. Use PNG_USER_PRIVATEBUILD instead.")
+#endif
+
+#ifdef PRIVATEBUILD
+# pragma message("PRIVATEBUILD is deprecated.\
+ Use PNG_USER_PRIVATEBUILD instead.")
+# define PNG_USER_PRIVATEBUILD PRIVATEBUILD
+#endif
+#endif /* __STDC__ */
+
+#ifndef PNG_VERSION_INFO_ONLY
+
+/* End of material added to libpng-1.2.8 */
+
+/* Added at libpng-1.2.19, removed at libpng-1.2.20 because it caused trouble
+ Restored at libpng-1.2.21 */
+#if !defined(PNG_NO_WARN_UNINITIALIZED_ROW) && \
+ !defined(PNG_WARN_UNINITIALIZED_ROW)
+# define PNG_WARN_UNINITIALIZED_ROW 1
+#endif
+/* End of material added at libpng-1.2.19/1.2.21 */
+
+/* This is the size of the compression buffer, and thus the size of
+ * an IDAT chunk. Make this whatever size you feel is best for your
+ * machine. One of these will be allocated per png_struct. When this
+ * is full, it writes the data to the disk, and does some other
+ * calculations. Making this an extremely small size will slow
+ * the library down, but you may want to experiment to determine
+ * where it becomes significant, if you are concerned with memory
+ * usage. Note that zlib allocates at least 32Kb also. For readers,
+ * this describes the size of the buffer available to read the data in.
+ * Unless this gets smaller than the size of a row (compressed),
+ * it should not make much difference how big this is.
+ */
+
+#ifndef PNG_ZBUF_SIZE
+# define PNG_ZBUF_SIZE 8192
+#endif
+
+/* Enable if you want a write-only libpng */
+
+#ifndef PNG_NO_READ_SUPPORTED
+# define PNG_READ_SUPPORTED
+#endif
+
+/* Enable if you want a read-only libpng */
+
+#ifndef PNG_NO_WRITE_SUPPORTED
+# define PNG_WRITE_SUPPORTED
+#endif
+
+/* Enabled in 1.2.41. */
+#ifdef PNG_ALLOW_BENIGN_ERRORS
+# define png_benign_error png_warning
+# define png_chunk_benign_error png_chunk_warning
+#else
+# ifndef PNG_BENIGN_ERRORS_SUPPORTED
+# define png_benign_error png_error
+# define png_chunk_benign_error png_chunk_error
+# endif
+#endif
+
+/* Added in libpng-1.2.41 */
+#if !defined(PNG_NO_WARNINGS) && !defined(PNG_WARNINGS_SUPPORTED)
+# define PNG_WARNINGS_SUPPORTED
+#endif
+
+#if !defined(PNG_NO_ERROR_TEXT) && !defined(PNG_ERROR_TEXT_SUPPORTED)
+# define PNG_ERROR_TEXT_SUPPORTED
+#endif
+
+#if !defined(PNG_NO_CHECK_cHRM) && !defined(PNG_CHECK_cHRM_SUPPORTED)
+# define PNG_CHECK_cHRM_SUPPORTED
+#endif
+
+/* Enabled by default in 1.2.0. You can disable this if you don't need to
+ * support PNGs that are embedded in MNG datastreams
+ */
+#if !defined(PNG_1_0_X) && !defined(PNG_NO_MNG_FEATURES)
+# ifndef PNG_MNG_FEATURES_SUPPORTED
+# define PNG_MNG_FEATURES_SUPPORTED
+# endif
+#endif
+
+#ifndef PNG_NO_FLOATING_POINT_SUPPORTED
+# ifndef PNG_FLOATING_POINT_SUPPORTED
+# define PNG_FLOATING_POINT_SUPPORTED
+# endif
+#endif
+
+/* If you are running on a machine where you cannot allocate more
+ * than 64K of memory at once, uncomment this. While libpng will not
+ * normally need that much memory in a chunk (unless you load up a very
+ * large file), zlib needs to know how big of a chunk it can use, and
+ * libpng thus makes sure to check any memory allocation to verify it
+ * will fit into memory.
+#define PNG_MAX_MALLOC_64K
+ */
+#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K)
+# define PNG_MAX_MALLOC_64K
+#endif
+
+/* Special munging to support doing things the 'cygwin' way:
+ * 'Normal' png-on-win32 defines/defaults:
+ * PNG_BUILD_DLL -- building dll
+ * PNG_USE_DLL -- building an application, linking to dll
+ * (no define) -- building static library, or building an
+ * application and linking to the static lib
+ * 'Cygwin' defines/defaults:
+ * PNG_BUILD_DLL -- (ignored) building the dll
+ * (no define) -- (ignored) building an application, linking to the dll
+ * PNG_STATIC -- (ignored) building the static lib, or building an
+ * application that links to the static lib.
+ * ALL_STATIC -- (ignored) building various static libs, or building an
+ * application that links to the static libs.
+ * Thus,
+ * a cygwin user should define either PNG_BUILD_DLL or PNG_STATIC, and
+ * this bit of #ifdefs will define the 'correct' config variables based on
+ * that. If a cygwin user *wants* to define 'PNG_USE_DLL' that's okay, but
+ * unnecessary.
+ *
+ * Also, the precedence order is:
+ * ALL_STATIC (since we can't #undef something outside our namespace)
+ * PNG_BUILD_DLL
+ * PNG_STATIC
+ * (nothing) == PNG_USE_DLL
+ *
+ * CYGWIN (2002-01-20): The preceding is now obsolete. With the advent
+ * of auto-import in binutils, we no longer need to worry about
+ * __declspec(dllexport) / __declspec(dllimport) and friends. Therefore,
+ * we don't need to worry about PNG_STATIC or ALL_STATIC when it comes
+ * to __declspec() stuff. However, we DO need to worry about
+ * PNG_BUILD_DLL and PNG_STATIC because those change some defaults
+ * such as CONSOLE_IO and whether GLOBAL_ARRAYS are allowed.
+ */
+#ifdef __CYGWIN__
+# ifdef ALL_STATIC
+# ifdef PNG_BUILD_DLL
+# undef PNG_BUILD_DLL
+# endif
+# ifdef PNG_USE_DLL
+# undef PNG_USE_DLL
+# endif
+# ifdef PNG_DLL
+# undef PNG_DLL
+# endif
+# ifndef PNG_STATIC
+# define PNG_STATIC
+# endif
+# else
+# ifdef PNG_BUILD_DLL
+# ifdef PNG_STATIC
+# undef PNG_STATIC
+# endif
+# ifdef PNG_USE_DLL
+# undef PNG_USE_DLL
+# endif
+# ifndef PNG_DLL
+# define PNG_DLL
+# endif
+# else
+# ifdef PNG_STATIC
+# ifdef PNG_USE_DLL
+# undef PNG_USE_DLL
+# endif
+# ifdef PNG_DLL
+# undef PNG_DLL
+# endif
+# else
+# ifndef PNG_USE_DLL
+# define PNG_USE_DLL
+# endif
+# ifndef PNG_DLL
+# define PNG_DLL
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* This protects us against compilers that run on a windowing system
+ * and thus don't have or would rather us not use the stdio types:
+ * stdin, stdout, and stderr. The only one currently used is stderr
+ * in png_error() and png_warning(). #defining PNG_NO_CONSOLE_IO will
+ * prevent these from being compiled and used. #defining PNG_NO_STDIO
+ * will also prevent these, plus will prevent the entire set of stdio
+ * macros and functions (FILE *, printf, etc.) from being compiled and used,
+ * unless (PNG_DEBUG > 0) has been #defined.
+ *
+ * #define PNG_NO_CONSOLE_IO
+ * #define PNG_NO_STDIO
+ */
+
+#if !defined(PNG_NO_STDIO) && !defined(PNG_STDIO_SUPPORTED)
+# define PNG_STDIO_SUPPORTED
+#endif
+
+#ifdef _WIN32_WCE
+# include
+ /* Console I/O functions are not supported on WindowsCE */
+# define PNG_NO_CONSOLE_IO
+ /* abort() may not be supported on some/all Windows CE platforms */
+# define PNG_ABORT() exit(-1)
+# ifdef PNG_DEBUG
+# undef PNG_DEBUG
+# endif
+#endif
+
+#ifdef PNG_BUILD_DLL
+# ifndef PNG_CONSOLE_IO_SUPPORTED
+# ifndef PNG_NO_CONSOLE_IO
+# define PNG_NO_CONSOLE_IO
+# endif
+# endif
+#endif
+
+# ifdef PNG_NO_STDIO
+# ifndef PNG_NO_CONSOLE_IO
+# define PNG_NO_CONSOLE_IO
+# endif
+# ifdef PNG_DEBUG
+# if (PNG_DEBUG > 0)
+# include
+# endif
+# endif
+# else
+# ifndef _WIN32_WCE
+/* "stdio.h" functions are not supported on WindowsCE */
+# include
+# endif
+# endif
+
+#if !(defined PNG_NO_CONSOLE_IO) && !defined(PNG_CONSOLE_IO_SUPPORTED)
+# define PNG_CONSOLE_IO_SUPPORTED
+#endif
+
+/* This macro protects us against machines that don't have function
+ * prototypes (ie K&R style headers). If your compiler does not handle
+ * function prototypes, define this macro and use the included ansi2knr.
+ * I've always been able to use _NO_PROTO as the indicator, but you may
+ * need to drag the empty declaration out in front of here, or change the
+ * ifdef to suit your own needs.
+ */
+#ifndef PNGARG
+
+#ifdef OF /* zlib prototype munger */
+# define PNGARG(arglist) OF(arglist)
+#else
+
+#ifdef _NO_PROTO
+# define PNGARG(arglist) ()
+# ifndef PNG_TYPECAST_NULL
+# define PNG_TYPECAST_NULL
+# endif
+#else
+# define PNGARG(arglist) arglist
+#endif /* _NO_PROTO */
+
+
+#endif /* OF */
+
+#endif /* PNGARG */
+
+/* Try to determine if we are compiling on a Mac. Note that testing for
+ * just __MWERKS__ is not good enough, because the Codewarrior is now used
+ * on non-Mac platforms.
+ */
+#ifndef MACOS
+# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
+ defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
+# define MACOS
+# endif
+#endif
+
+/* enough people need this for various reasons to include it here */
+#if !defined(MACOS) && !defined(RISCOS) && !defined(_WIN32_WCE)
+# include
+#endif
+
+#if !defined(PNG_SETJMP_NOT_SUPPORTED) && !defined(PNG_NO_SETJMP_SUPPORTED)
+# define PNG_SETJMP_SUPPORTED
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+/* This is an attempt to force a single setjmp behaviour on Linux. If
+ * the X config stuff didn't define _BSD_SOURCE we wouldn't need this.
+ *
+ * You can bypass this test if you know that your application uses exactly
+ * the same setjmp.h that was included when libpng was built. Only define
+ * PNG_SKIP_SETJMP_CHECK while building your application, prior to the
+ * application's '#include "png.h"'. Don't define PNG_SKIP_SETJMP_CHECK
+ * while building a separate libpng library for general use.
+ */
+
+# ifndef PNG_SKIP_SETJMP_CHECK
+# ifdef __linux__
+# ifdef _BSD_SOURCE
+# define PNG_SAVE_BSD_SOURCE
+# undef _BSD_SOURCE
+# endif
+# ifdef _SETJMP_H
+ /* If you encounter a compiler error here, see the explanation
+ * near the end of INSTALL.
+ */
+ __pngconf.h__ in libpng already includes setjmp.h;
+ __dont__ include it again.;
+# endif
+# endif /* __linux__ */
+# endif /* PNG_SKIP_SETJMP_CHECK */
+
+ /* include setjmp.h for error handling */
+# include
+
+# ifdef __linux__
+# ifdef PNG_SAVE_BSD_SOURCE
+# ifndef _BSD_SOURCE
+# define _BSD_SOURCE
+# endif
+# undef PNG_SAVE_BSD_SOURCE
+# endif
+# endif /* __linux__ */
+#endif /* PNG_SETJMP_SUPPORTED */
+
+#ifdef BSD
+# include
+#else
+# include
+#endif
+
+/* Other defines for things like memory and the like can go here. */
+#ifdef PNG_INTERNAL
+
+#include
+
+/* The functions exported by PNG_EXTERN are PNG_INTERNAL functions, which
+ * aren't usually used outside the library (as far as I know), so it is
+ * debatable if they should be exported at all. In the future, when it is
+ * possible to have run-time registry of chunk-handling functions, some of
+ * these will be made available again.
+#define PNG_EXTERN extern
+ */
+#define PNG_EXTERN
+
+/* Other defines specific to compilers can go here. Try to keep
+ * them inside an appropriate ifdef/endif pair for portability.
+ */
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+# ifdef MACOS
+ /* We need to check that hasn't already been included earlier
+ * as it seems it doesn't agree with , yet we should really use
+ * if possible.
+ */
+# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
+# include
+# endif
+# else
+# include
+# endif
+# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
+ /* Amiga SAS/C: We must include builtin FPU functions when compiling using
+ * MATH=68881
+ */
+# include
+# endif
+#endif
+
+/* Codewarrior on NT has linking problems without this. */
+#if (defined(__MWERKS__) && defined(WIN32)) || defined(__STDC__)
+# define PNG_ALWAYS_EXTERN
+#endif
+
+/* This provides the non-ANSI (far) memory allocation routines. */
+#if defined(__TURBOC__) && defined(__MSDOS__)
+# include
+# include
+#endif
+
+/* I have no idea why is this necessary... */
+#if defined(_MSC_VER) && (defined(WIN32) || defined(_Windows) || \
+ defined(_WINDOWS) || defined(_WIN32) || defined(__WIN32__))
+# include
+#endif
+
+/* This controls how fine the dithering gets. As this allocates
+ * a largish chunk of memory (32K), those who are not as concerned
+ * with dithering quality can decrease some or all of these.
+ */
+#ifndef PNG_DITHER_RED_BITS
+# define PNG_DITHER_RED_BITS 5
+#endif
+#ifndef PNG_DITHER_GREEN_BITS
+# define PNG_DITHER_GREEN_BITS 5
+#endif
+#ifndef PNG_DITHER_BLUE_BITS
+# define PNG_DITHER_BLUE_BITS 5
+#endif
+
+/* This controls how fine the gamma correction becomes when you
+ * are only interested in 8 bits anyway. Increasing this value
+ * results in more memory being used, and more pow() functions
+ * being called to fill in the gamma tables. Don't set this value
+ * less then 8, and even that may not work (I haven't tested it).
+ */
+
+#ifndef PNG_MAX_GAMMA_8
+# define PNG_MAX_GAMMA_8 11
+#endif
+
+/* This controls how much a difference in gamma we can tolerate before
+ * we actually start doing gamma conversion.
+ */
+#ifndef PNG_GAMMA_THRESHOLD
+# define PNG_GAMMA_THRESHOLD 0.05
+#endif
+
+#endif /* PNG_INTERNAL */
+
+/* The following uses const char * instead of char * for error
+ * and warning message functions, so some compilers won't complain.
+ * If you do not want to use const, define PNG_NO_CONST here.
+ */
+
+#ifndef PNG_NO_CONST
+# define PNG_CONST const
+#else
+# define PNG_CONST
+#endif
+
+/* The following defines give you the ability to remove code from the
+ * library that you will not be using. I wish I could figure out how to
+ * automate this, but I can't do that without making it seriously hard
+ * on the users. So if you are not using an ability, change the #define
+ * to and #undef, and that part of the library will not be compiled. If
+ * your linker can't find a function, you may want to make sure the
+ * ability is defined here. Some of these depend upon some others being
+ * defined. I haven't figured out all the interactions here, so you may
+ * have to experiment awhile to get everything to compile. If you are
+ * creating or using a shared library, you probably shouldn't touch this,
+ * as it will affect the size of the structures, and this will cause bad
+ * things to happen if the library and/or application ever change.
+ */
+
+/* Any features you will not be using can be undef'ed here */
+
+/* GR-P, 0.96a: Set "*TRANSFORMS_SUPPORTED as default but allow user
+ * to turn it off with "*TRANSFORMS_NOT_SUPPORTED" or *PNG_NO_*_TRANSFORMS
+ * on the compile line, then pick and choose which ones to define without
+ * having to edit this file. It is safe to use the *TRANSFORMS_NOT_SUPPORTED
+ * if you only want to have a png-compliant reader/writer but don't need
+ * any of the extra transformations. This saves about 80 kbytes in a
+ * typical installation of the library. (PNG_NO_* form added in version
+ * 1.0.1c, for consistency)
+ */
+
+/* The size of the png_text structure changed in libpng-1.0.6 when
+ * iTXt support was added. iTXt support was turned off by default through
+ * libpng-1.2.x, to support old apps that malloc the png_text structure
+ * instead of calling png_set_text() and letting libpng malloc it. It
+ * will be turned on by default in libpng-1.4.0.
+ */
+
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+# ifndef PNG_NO_iTXt_SUPPORTED
+# define PNG_NO_iTXt_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_iTXt
+# define PNG_NO_READ_iTXt
+# endif
+# ifndef PNG_NO_WRITE_iTXt
+# define PNG_NO_WRITE_iTXt
+# endif
+#endif
+
+#if !defined(PNG_NO_iTXt_SUPPORTED)
+# if !defined(PNG_READ_iTXt_SUPPORTED) && !defined(PNG_NO_READ_iTXt)
+# define PNG_READ_iTXt
+# endif
+# if !defined(PNG_WRITE_iTXt_SUPPORTED) && !defined(PNG_NO_WRITE_iTXt)
+# define PNG_WRITE_iTXt
+# endif
+#endif
+
+/* The following support, added after version 1.0.0, can be turned off here en
+ * masse by defining PNG_LEGACY_SUPPORTED in case you need binary compatibility
+ * with old applications that require the length of png_struct and png_info
+ * to remain unchanged.
+ */
+
+#ifdef PNG_LEGACY_SUPPORTED
+# define PNG_NO_FREE_ME
+# define PNG_NO_READ_UNKNOWN_CHUNKS
+# define PNG_NO_WRITE_UNKNOWN_CHUNKS
+# define PNG_NO_HANDLE_AS_UNKNOWN
+# define PNG_NO_READ_USER_CHUNKS
+# define PNG_NO_READ_iCCP
+# define PNG_NO_WRITE_iCCP
+# define PNG_NO_READ_iTXt
+# define PNG_NO_WRITE_iTXt
+# define PNG_NO_READ_sCAL
+# define PNG_NO_WRITE_sCAL
+# define PNG_NO_READ_sPLT
+# define PNG_NO_WRITE_sPLT
+# define PNG_NO_INFO_IMAGE
+# define PNG_NO_READ_RGB_TO_GRAY
+# define PNG_NO_READ_USER_TRANSFORM
+# define PNG_NO_WRITE_USER_TRANSFORM
+# define PNG_NO_USER_MEM
+# define PNG_NO_READ_EMPTY_PLTE
+# define PNG_NO_MNG_FEATURES
+# define PNG_NO_FIXED_POINT_SUPPORTED
+#endif
+
+/* Ignore attempt to turn off both floating and fixed point support */
+#if !defined(PNG_FLOATING_POINT_SUPPORTED) || \
+ !defined(PNG_NO_FIXED_POINT_SUPPORTED)
+# define PNG_FIXED_POINT_SUPPORTED
+#endif
+
+#ifndef PNG_NO_FREE_ME
+# define PNG_FREE_ME_SUPPORTED
+#endif
+
+#ifdef PNG_READ_SUPPORTED
+
+#if !defined(PNG_READ_TRANSFORMS_NOT_SUPPORTED) && \
+ !defined(PNG_NO_READ_TRANSFORMS)
+# define PNG_READ_TRANSFORMS_SUPPORTED
+#endif
+
+#ifdef PNG_READ_TRANSFORMS_SUPPORTED
+# ifndef PNG_NO_READ_EXPAND
+# define PNG_READ_EXPAND_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_SHIFT
+# define PNG_READ_SHIFT_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_PACK
+# define PNG_READ_PACK_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_BGR
+# define PNG_READ_BGR_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_SWAP
+# define PNG_READ_SWAP_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_PACKSWAP
+# define PNG_READ_PACKSWAP_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_INVERT
+# define PNG_READ_INVERT_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_DITHER
+# define PNG_READ_DITHER_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_BACKGROUND
+# define PNG_READ_BACKGROUND_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_16_TO_8
+# define PNG_READ_16_TO_8_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_FILLER
+# define PNG_READ_FILLER_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_GAMMA
+# define PNG_READ_GAMMA_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_GRAY_TO_RGB
+# define PNG_READ_GRAY_TO_RGB_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_SWAP_ALPHA
+# define PNG_READ_SWAP_ALPHA_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_INVERT_ALPHA
+# define PNG_READ_INVERT_ALPHA_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_STRIP_ALPHA
+# define PNG_READ_STRIP_ALPHA_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_USER_TRANSFORM
+# define PNG_READ_USER_TRANSFORM_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_RGB_TO_GRAY
+# define PNG_READ_RGB_TO_GRAY_SUPPORTED
+# endif
+#endif /* PNG_READ_TRANSFORMS_SUPPORTED */
+
+/* PNG_PROGRESSIVE_READ_NOT_SUPPORTED is deprecated. */
+#if !defined(PNG_NO_PROGRESSIVE_READ) && \
+ !defined(PNG_PROGRESSIVE_READ_NOT_SUPPORTED) /* if you don't do progressive */
+# define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */
+#endif /* about interlacing capability! You'll */
+ /* still have interlacing unless you change the following define: */
+#define PNG_READ_INTERLACING_SUPPORTED /* required for PNG-compliant decoders */
+
+/* PNG_NO_SEQUENTIAL_READ_SUPPORTED is deprecated. */
+#if !defined(PNG_NO_SEQUENTIAL_READ) && \
+ !defined(PNG_SEQUENTIAL_READ_SUPPORTED) && \
+ !defined(PNG_NO_SEQUENTIAL_READ_SUPPORTED)
+# define PNG_SEQUENTIAL_READ_SUPPORTED
+#endif
+
+#define PNG_READ_INTERLACING_SUPPORTED /* required in PNG-compliant decoders */
+
+#ifndef PNG_NO_READ_COMPOSITE_NODIV
+# ifndef PNG_NO_READ_COMPOSITED_NODIV /* libpng-1.0.x misspelling */
+# define PNG_READ_COMPOSITE_NODIV_SUPPORTED /* well tested on Intel, SGI */
+# endif
+#endif
+
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+/* Deprecated, will be removed from version 2.0.0.
+ Use PNG_MNG_FEATURES_SUPPORTED instead. */
+#ifndef PNG_NO_READ_EMPTY_PLTE
+# define PNG_READ_EMPTY_PLTE_SUPPORTED
+#endif
+#endif
+
+#endif /* PNG_READ_SUPPORTED */
+
+#ifdef PNG_WRITE_SUPPORTED
+
+# if !defined(PNG_WRITE_TRANSFORMS_NOT_SUPPORTED) && \
+ !defined(PNG_NO_WRITE_TRANSFORMS)
+# define PNG_WRITE_TRANSFORMS_SUPPORTED
+#endif
+
+#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED
+# ifndef PNG_NO_WRITE_SHIFT
+# define PNG_WRITE_SHIFT_SUPPORTED
+# endif
+# ifndef PNG_NO_WRITE_PACK
+# define PNG_WRITE_PACK_SUPPORTED
+# endif
+# ifndef PNG_NO_WRITE_BGR
+# define PNG_WRITE_BGR_SUPPORTED
+# endif
+# ifndef PNG_NO_WRITE_SWAP
+# define PNG_WRITE_SWAP_SUPPORTED
+# endif
+# ifndef PNG_NO_WRITE_PACKSWAP
+# define PNG_WRITE_PACKSWAP_SUPPORTED
+# endif
+# ifndef PNG_NO_WRITE_INVERT
+# define PNG_WRITE_INVERT_SUPPORTED
+# endif
+# ifndef PNG_NO_WRITE_FILLER
+# define PNG_WRITE_FILLER_SUPPORTED /* same as WRITE_STRIP_ALPHA */
+# endif
+# ifndef PNG_NO_WRITE_SWAP_ALPHA
+# define PNG_WRITE_SWAP_ALPHA_SUPPORTED
+# endif
+#ifndef PNG_1_0_X
+# ifndef PNG_NO_WRITE_INVERT_ALPHA
+# define PNG_WRITE_INVERT_ALPHA_SUPPORTED
+# endif
+#endif
+# ifndef PNG_NO_WRITE_USER_TRANSFORM
+# define PNG_WRITE_USER_TRANSFORM_SUPPORTED
+# endif
+#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */
+
+#if !defined(PNG_NO_WRITE_INTERLACING_SUPPORTED) && \
+ !defined(PNG_WRITE_INTERLACING_SUPPORTED)
+#define PNG_WRITE_INTERLACING_SUPPORTED /* not required for PNG-compliant
+ encoders, but can cause trouble
+ if left undefined */
+#endif
+
+#if !defined(PNG_NO_WRITE_WEIGHTED_FILTER) && \
+ !defined(PNG_WRITE_WEIGHTED_FILTER) && \
+ defined(PNG_FLOATING_POINT_SUPPORTED)
+# define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+#endif
+
+#ifndef PNG_NO_WRITE_FLUSH
+# define PNG_WRITE_FLUSH_SUPPORTED
+#endif
+
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+/* Deprecated, see PNG_MNG_FEATURES_SUPPORTED, above */
+#ifndef PNG_NO_WRITE_EMPTY_PLTE
+# define PNG_WRITE_EMPTY_PLTE_SUPPORTED
+#endif
+#endif
+
+#endif /* PNG_WRITE_SUPPORTED */
+
+#ifndef PNG_1_0_X
+# ifndef PNG_NO_ERROR_NUMBERS
+# define PNG_ERROR_NUMBERS_SUPPORTED
+# endif
+#endif /* PNG_1_0_X */
+
+#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
+ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
+# ifndef PNG_NO_USER_TRANSFORM_PTR
+# define PNG_USER_TRANSFORM_PTR_SUPPORTED
+# endif
+#endif
+
+#ifndef PNG_NO_STDIO
+# define PNG_TIME_RFC1123_SUPPORTED
+#endif
+
+/* This adds extra functions in pngget.c for accessing data from the
+ * info pointer (added in version 0.99)
+ * png_get_image_width()
+ * png_get_image_height()
+ * png_get_bit_depth()
+ * png_get_color_type()
+ * png_get_compression_type()
+ * png_get_filter_type()
+ * png_get_interlace_type()
+ * png_get_pixel_aspect_ratio()
+ * png_get_pixels_per_meter()
+ * png_get_x_offset_pixels()
+ * png_get_y_offset_pixels()
+ * png_get_x_offset_microns()
+ * png_get_y_offset_microns()
+ */
+#if !defined(PNG_NO_EASY_ACCESS) && !defined(PNG_EASY_ACCESS_SUPPORTED)
+# define PNG_EASY_ACCESS_SUPPORTED
+#endif
+
+/* PNG_ASSEMBLER_CODE was enabled by default in version 1.2.0
+ * and removed from version 1.2.20. The following will be removed
+ * from libpng-1.4.0
+*/
+
+#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_OPTIMIZED_CODE)
+# ifndef PNG_OPTIMIZED_CODE_SUPPORTED
+# define PNG_OPTIMIZED_CODE_SUPPORTED
+# endif
+#endif
+
+#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_ASSEMBLER_CODE)
+# ifndef PNG_ASSEMBLER_CODE_SUPPORTED
+# define PNG_ASSEMBLER_CODE_SUPPORTED
+# endif
+
+# if defined(__GNUC__) && defined(__x86_64__) && (__GNUC__ < 4)
+ /* work around 64-bit gcc compiler bugs in gcc-3.x */
+# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
+# define PNG_NO_MMX_CODE
+# endif
+# endif
+
+# ifdef __APPLE__
+# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
+# define PNG_NO_MMX_CODE
+# endif
+# endif
+
+# if (defined(__MWERKS__) && ((__MWERKS__ < 0x0900) || macintosh))
+# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
+# define PNG_NO_MMX_CODE
+# endif
+# endif
+
+# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
+# define PNG_MMX_CODE_SUPPORTED
+# endif
+
+#endif
+/* end of obsolete code to be removed from libpng-1.4.0 */
+
+/* Added at libpng-1.2.0 */
+#ifndef PNG_1_0_X
+#if !defined(PNG_NO_USER_MEM) && !defined(PNG_USER_MEM_SUPPORTED)
+# define PNG_USER_MEM_SUPPORTED
+#endif
+#endif /* PNG_1_0_X */
+
+/* Added at libpng-1.2.6 */
+#ifndef PNG_1_0_X
+# ifndef PNG_SET_USER_LIMITS_SUPPORTED
+# ifndef PNG_NO_SET_USER_LIMITS
+# define PNG_SET_USER_LIMITS_SUPPORTED
+# endif
+# endif
+#endif /* PNG_1_0_X */
+
+/* Added at libpng-1.0.53 and 1.2.43 */
+#ifndef PNG_USER_LIMITS_SUPPORTED
+# ifndef PNG_NO_USER_LIMITS
+# define PNG_USER_LIMITS_SUPPORTED
+# endif
+#endif
+
+/* Added at libpng-1.0.16 and 1.2.6. To accept all valid PNGS no matter
+ * how large, set these limits to 0x7fffffffL
+ */
+#ifndef PNG_USER_WIDTH_MAX
+# define PNG_USER_WIDTH_MAX 1000000L
+#endif
+#ifndef PNG_USER_HEIGHT_MAX
+# define PNG_USER_HEIGHT_MAX 1000000L
+#endif
+
+/* Added at libpng-1.2.43. To accept all valid PNGs no matter
+ * how large, set these two limits to 0.
+ */
+#ifndef PNG_USER_CHUNK_CACHE_MAX
+# define PNG_USER_CHUNK_CACHE_MAX 0
+#endif
+
+/* Added at libpng-1.2.43 */
+#ifndef PNG_USER_CHUNK_MALLOC_MAX
+# define PNG_USER_CHUNK_MALLOC_MAX 0
+#endif
+
+#ifndef PNG_LITERAL_SHARP
+# define PNG_LITERAL_SHARP 0x23
+#endif
+#ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET
+# define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b
+#endif
+#ifndef PNG_LITERAL_RIGHT_SQUARE_BRACKET
+# define PNG_LITERAL_RIGHT_SQUARE_BRACKET 0x5d
+#endif
+
+/* Added at libpng-1.2.34 */
+#ifndef PNG_STRING_NEWLINE
+#define PNG_STRING_NEWLINE "\n"
+#endif
+
+/* These are currently experimental features, define them if you want */
+
+/* very little testing */
+/*
+#ifdef PNG_READ_SUPPORTED
+# ifndef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED
+# define PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED
+# endif
+#endif
+*/
+
+/* This is only for PowerPC big-endian and 680x0 systems */
+/* some testing */
+/*
+#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED
+# define PNG_READ_BIG_ENDIAN_SUPPORTED
+#endif
+*/
+
+/* Buggy compilers (e.g., gcc 2.7.2.2) need this */
+/*
+#define PNG_NO_POINTER_INDEXING
+*/
+
+#if !defined(PNG_NO_POINTER_INDEXING) && \
+ !defined(PNG_POINTER_INDEXING_SUPPORTED)
+# define PNG_POINTER_INDEXING_SUPPORTED
+#endif
+
+/* These functions are turned off by default, as they will be phased out. */
+/*
+#define PNG_USELESS_TESTS_SUPPORTED
+#define PNG_CORRECT_PALETTE_SUPPORTED
+*/
+
+/* Any chunks you are not interested in, you can undef here. The
+ * ones that allocate memory may be expecially important (hIST,
+ * tEXt, zTXt, tRNS, pCAL). Others will just save time and make png_info
+ * a bit smaller.
+ */
+
+#if defined(PNG_READ_SUPPORTED) && \
+ !defined(PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \
+ !defined(PNG_NO_READ_ANCILLARY_CHUNKS)
+# define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED
+#endif
+
+#if defined(PNG_WRITE_SUPPORTED) && \
+ !defined(PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \
+ !defined(PNG_NO_WRITE_ANCILLARY_CHUNKS)
+# define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED
+#endif
+
+#ifdef PNG_READ_ANCILLARY_CHUNKS_SUPPORTED
+
+#ifdef PNG_NO_READ_TEXT
+# define PNG_NO_READ_iTXt
+# define PNG_NO_READ_tEXt
+# define PNG_NO_READ_zTXt
+#endif
+#ifndef PNG_NO_READ_bKGD
+# define PNG_READ_bKGD_SUPPORTED
+# define PNG_bKGD_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_cHRM
+# define PNG_READ_cHRM_SUPPORTED
+# define PNG_cHRM_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_gAMA
+# define PNG_READ_gAMA_SUPPORTED
+# define PNG_gAMA_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_hIST
+# define PNG_READ_hIST_SUPPORTED
+# define PNG_hIST_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_iCCP
+# define PNG_READ_iCCP_SUPPORTED
+# define PNG_iCCP_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_iTXt
+# ifndef PNG_READ_iTXt_SUPPORTED
+# define PNG_READ_iTXt_SUPPORTED
+# endif
+# ifndef PNG_iTXt_SUPPORTED
+# define PNG_iTXt_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_READ_oFFs
+# define PNG_READ_oFFs_SUPPORTED
+# define PNG_oFFs_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_pCAL
+# define PNG_READ_pCAL_SUPPORTED
+# define PNG_pCAL_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_sCAL
+# define PNG_READ_sCAL_SUPPORTED
+# define PNG_sCAL_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_pHYs
+# define PNG_READ_pHYs_SUPPORTED
+# define PNG_pHYs_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_sBIT
+# define PNG_READ_sBIT_SUPPORTED
+# define PNG_sBIT_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_sPLT
+# define PNG_READ_sPLT_SUPPORTED
+# define PNG_sPLT_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_sRGB
+# define PNG_READ_sRGB_SUPPORTED
+# define PNG_sRGB_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_tEXt
+# define PNG_READ_tEXt_SUPPORTED
+# define PNG_tEXt_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_tIME
+# define PNG_READ_tIME_SUPPORTED
+# define PNG_tIME_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_tRNS
+# define PNG_READ_tRNS_SUPPORTED
+# define PNG_tRNS_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_zTXt
+# define PNG_READ_zTXt_SUPPORTED
+# define PNG_zTXt_SUPPORTED
+#endif
+#ifndef PNG_NO_READ_OPT_PLTE
+# define PNG_READ_OPT_PLTE_SUPPORTED /* only affects support of the */
+#endif /* optional PLTE chunk in RGB and RGBA images */
+#if defined(PNG_READ_iTXt_SUPPORTED) || defined(PNG_READ_tEXt_SUPPORTED) || \
+ defined(PNG_READ_zTXt_SUPPORTED)
+# define PNG_READ_TEXT_SUPPORTED
+# define PNG_TEXT_SUPPORTED
+#endif
+
+#endif /* PNG_READ_ANCILLARY_CHUNKS_SUPPORTED */
+
+#ifndef PNG_NO_READ_UNKNOWN_CHUNKS
+# define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
+# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED
+# define PNG_UNKNOWN_CHUNKS_SUPPORTED
+# endif
+#endif
+#if !defined(PNG_NO_READ_USER_CHUNKS) && \
+ defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
+# define PNG_READ_USER_CHUNKS_SUPPORTED
+# define PNG_USER_CHUNKS_SUPPORTED
+# ifdef PNG_NO_READ_UNKNOWN_CHUNKS
+# undef PNG_NO_READ_UNKNOWN_CHUNKS
+# endif
+# ifdef PNG_NO_HANDLE_AS_UNKNOWN
+# undef PNG_NO_HANDLE_AS_UNKNOWN
+# endif
+#endif
+
+#ifndef PNG_NO_HANDLE_AS_UNKNOWN
+# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+# endif
+#endif
+
+#ifdef PNG_WRITE_SUPPORTED
+#ifdef PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED
+
+#ifdef PNG_NO_WRITE_TEXT
+# define PNG_NO_WRITE_iTXt
+# define PNG_NO_WRITE_tEXt
+# define PNG_NO_WRITE_zTXt
+#endif
+#ifndef PNG_NO_WRITE_bKGD
+# define PNG_WRITE_bKGD_SUPPORTED
+# ifndef PNG_bKGD_SUPPORTED
+# define PNG_bKGD_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_cHRM
+# define PNG_WRITE_cHRM_SUPPORTED
+# ifndef PNG_cHRM_SUPPORTED
+# define PNG_cHRM_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_gAMA
+# define PNG_WRITE_gAMA_SUPPORTED
+# ifndef PNG_gAMA_SUPPORTED
+# define PNG_gAMA_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_hIST
+# define PNG_WRITE_hIST_SUPPORTED
+# ifndef PNG_hIST_SUPPORTED
+# define PNG_hIST_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_iCCP
+# define PNG_WRITE_iCCP_SUPPORTED
+# ifndef PNG_iCCP_SUPPORTED
+# define PNG_iCCP_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_iTXt
+# ifndef PNG_WRITE_iTXt_SUPPORTED
+# define PNG_WRITE_iTXt_SUPPORTED
+# endif
+# ifndef PNG_iTXt_SUPPORTED
+# define PNG_iTXt_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_oFFs
+# define PNG_WRITE_oFFs_SUPPORTED
+# ifndef PNG_oFFs_SUPPORTED
+# define PNG_oFFs_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_pCAL
+# define PNG_WRITE_pCAL_SUPPORTED
+# ifndef PNG_pCAL_SUPPORTED
+# define PNG_pCAL_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_sCAL
+# define PNG_WRITE_sCAL_SUPPORTED
+# ifndef PNG_sCAL_SUPPORTED
+# define PNG_sCAL_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_pHYs
+# define PNG_WRITE_pHYs_SUPPORTED
+# ifndef PNG_pHYs_SUPPORTED
+# define PNG_pHYs_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_sBIT
+# define PNG_WRITE_sBIT_SUPPORTED
+# ifndef PNG_sBIT_SUPPORTED
+# define PNG_sBIT_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_sPLT
+# define PNG_WRITE_sPLT_SUPPORTED
+# ifndef PNG_sPLT_SUPPORTED
+# define PNG_sPLT_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_sRGB
+# define PNG_WRITE_sRGB_SUPPORTED
+# ifndef PNG_sRGB_SUPPORTED
+# define PNG_sRGB_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_tEXt
+# define PNG_WRITE_tEXt_SUPPORTED
+# ifndef PNG_tEXt_SUPPORTED
+# define PNG_tEXt_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_tIME
+# define PNG_WRITE_tIME_SUPPORTED
+# ifndef PNG_tIME_SUPPORTED
+# define PNG_tIME_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_tRNS
+# define PNG_WRITE_tRNS_SUPPORTED
+# ifndef PNG_tRNS_SUPPORTED
+# define PNG_tRNS_SUPPORTED
+# endif
+#endif
+#ifndef PNG_NO_WRITE_zTXt
+# define PNG_WRITE_zTXt_SUPPORTED
+# ifndef PNG_zTXt_SUPPORTED
+# define PNG_zTXt_SUPPORTED
+# endif
+#endif
+#if defined(PNG_WRITE_iTXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \
+ defined(PNG_WRITE_zTXt_SUPPORTED)
+# define PNG_WRITE_TEXT_SUPPORTED
+# ifndef PNG_TEXT_SUPPORTED
+# define PNG_TEXT_SUPPORTED
+# endif
+#endif
+
+#ifdef PNG_WRITE_tIME_SUPPORTED
+# ifndef PNG_NO_CONVERT_tIME
+# ifndef _WIN32_WCE
+/* The "tm" structure is not supported on WindowsCE */
+# ifndef PNG_CONVERT_tIME_SUPPORTED
+# define PNG_CONVERT_tIME_SUPPORTED
+# endif
+# endif
+# endif
+#endif
+
+#endif /* PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED */
+
+#if !defined(PNG_NO_WRITE_FILTER) && !defined(PNG_WRITE_FILTER_SUPPORTED)
+# define PNG_WRITE_FILTER_SUPPORTED
+#endif
+
+#ifndef PNG_NO_WRITE_UNKNOWN_CHUNKS
+# define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
+# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED
+# define PNG_UNKNOWN_CHUNKS_SUPPORTED
+# endif
+#endif
+
+#ifndef PNG_NO_HANDLE_AS_UNKNOWN
+# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+# endif
+#endif
+#endif /* PNG_WRITE_SUPPORTED */
+
+/* Turn this off to disable png_read_png() and
+ * png_write_png() and leave the row_pointers member
+ * out of the info structure.
+ */
+#ifndef PNG_NO_INFO_IMAGE
+# define PNG_INFO_IMAGE_SUPPORTED
+#endif
+
+/* Need the time information for converting tIME chunks */
+#ifdef PNG_CONVERT_tIME_SUPPORTED
+ /* "time.h" functions are not supported on WindowsCE */
+# include
+#endif
+
+/* Some typedefs to get us started. These should be safe on most of the
+ * common platforms. The typedefs should be at least as large as the
+ * numbers suggest (a png_uint_32 must be at least 32 bits long), but they
+ * don't have to be exactly that size. Some compilers dislike passing
+ * unsigned shorts as function parameters, so you may be better off using
+ * unsigned int for png_uint_16. Likewise, for 64-bit systems, you may
+ * want to have unsigned int for png_uint_32 instead of unsigned long.
+ */
+
+typedef unsigned long png_uint_32;
+typedef long png_int_32;
+typedef unsigned short png_uint_16;
+typedef short png_int_16;
+typedef unsigned char png_byte;
+
+/* This is usually size_t. It is typedef'ed just in case you need it to
+ change (I'm not sure if you will or not, so I thought I'd be safe) */
+#ifdef PNG_SIZE_T
+ typedef PNG_SIZE_T png_size_t;
+# define png_sizeof(x) png_convert_size(sizeof(x))
+#else
+ typedef size_t png_size_t;
+# define png_sizeof(x) sizeof(x)
+#endif
+
+/* The following is needed for medium model support. It cannot be in the
+ * PNG_INTERNAL section. Needs modification for other compilers besides
+ * MSC. Model independent support declares all arrays and pointers to be
+ * large using the far keyword. The zlib version used must also support
+ * model independent data. As of version zlib 1.0.4, the necessary changes
+ * have been made in zlib. The USE_FAR_KEYWORD define triggers other
+ * changes that are needed. (Tim Wegner)
+ */
+
+/* Separate compiler dependencies (problem here is that zlib.h always
+ defines FAR. (SJT) */
+#ifdef __BORLANDC__
+# if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__)
+# define LDATA 1
+# else
+# define LDATA 0
+# endif
+ /* GRR: why is Cygwin in here? Cygwin is not Borland C... */
+# if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__)
+# define PNG_MAX_MALLOC_64K
+# if (LDATA != 1)
+# ifndef FAR
+# define FAR __far
+# endif
+# define USE_FAR_KEYWORD
+# endif /* LDATA != 1 */
+ /* Possibly useful for moving data out of default segment.
+ * Uncomment it if you want. Could also define FARDATA as
+ * const if your compiler supports it. (SJT)
+# define FARDATA FAR
+ */
+# endif /* __WIN32__, __FLAT__, __CYGWIN__ */
+#endif /* __BORLANDC__ */
+
+
+/* Suggest testing for specific compiler first before testing for
+ * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM,
+ * making reliance oncertain keywords suspect. (SJT)
+ */
+
+/* MSC Medium model */
+#ifdef FAR
+# ifdef M_I86MM
+# define USE_FAR_KEYWORD
+# define FARDATA FAR
+# include
+# endif
+#endif
+
+/* SJT: default case */
+#ifndef FAR
+# define FAR
+#endif
+
+/* At this point FAR is always defined */
+#ifndef FARDATA
+# define FARDATA
+#endif
+
+/* Typedef for floating-point numbers that are converted
+ to fixed-point with a multiple of 100,000, e.g., int_gamma */
+typedef png_int_32 png_fixed_point;
+
+/* Add typedefs for pointers */
+typedef void FAR * png_voidp;
+typedef png_byte FAR * png_bytep;
+typedef png_uint_32 FAR * png_uint_32p;
+typedef png_int_32 FAR * png_int_32p;
+typedef png_uint_16 FAR * png_uint_16p;
+typedef png_int_16 FAR * png_int_16p;
+typedef PNG_CONST char FAR * png_const_charp;
+typedef char FAR * png_charp;
+typedef png_fixed_point FAR * png_fixed_point_p;
+
+#ifndef PNG_NO_STDIO
+#ifdef _WIN32_WCE
+typedef HANDLE png_FILE_p;
+#else
+typedef FILE * png_FILE_p;
+#endif
+#endif
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+typedef double FAR * png_doublep;
+#endif
+
+/* Pointers to pointers; i.e. arrays */
+typedef png_byte FAR * FAR * png_bytepp;
+typedef png_uint_32 FAR * FAR * png_uint_32pp;
+typedef png_int_32 FAR * FAR * png_int_32pp;
+typedef png_uint_16 FAR * FAR * png_uint_16pp;
+typedef png_int_16 FAR * FAR * png_int_16pp;
+typedef PNG_CONST char FAR * FAR * png_const_charpp;
+typedef char FAR * FAR * png_charpp;
+typedef png_fixed_point FAR * FAR * png_fixed_point_pp;
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+typedef double FAR * FAR * png_doublepp;
+#endif
+
+/* Pointers to pointers to pointers; i.e., pointer to array */
+typedef char FAR * FAR * FAR * png_charppp;
+
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
+/* SPC - Is this stuff deprecated? */
+/* It'll be removed as of libpng-1.4.0 - GR-P */
+/* libpng typedefs for types in zlib. If zlib changes
+ * or another compression library is used, then change these.
+ * Eliminates need to change all the source files.
+ */
+typedef charf * png_zcharp;
+typedef charf * FAR * png_zcharpp;
+typedef z_stream FAR * png_zstreamp;
+#endif /* (PNG_1_0_X) || defined(PNG_1_2_X) */
+
+/*
+ * Define PNG_BUILD_DLL if the module being built is a Windows
+ * LIBPNG DLL.
+ *
+ * Define PNG_USE_DLL if you want to *link* to the Windows LIBPNG DLL.
+ * It is equivalent to Microsoft predefined macro _DLL that is
+ * automatically defined when you compile using the share
+ * version of the CRT (C Run-Time library)
+ *
+ * The cygwin mods make this behavior a little different:
+ * Define PNG_BUILD_DLL if you are building a dll for use with cygwin
+ * Define PNG_STATIC if you are building a static library for use with cygwin,
+ * -or- if you are building an application that you want to link to the
+ * static library.
+ * PNG_USE_DLL is defined by default (no user action needed) unless one of
+ * the other flags is defined.
+ */
+
+#if !defined(PNG_DLL) && (defined(PNG_BUILD_DLL) || defined(PNG_USE_DLL))
+# define PNG_DLL
+#endif
+/* If CYGWIN, then disallow GLOBAL ARRAYS unless building a static lib.
+ * When building a static lib, default to no GLOBAL ARRAYS, but allow
+ * command-line override
+ */
+#ifdef __CYGWIN__
+# ifndef PNG_STATIC
+# ifdef PNG_USE_GLOBAL_ARRAYS
+# undef PNG_USE_GLOBAL_ARRAYS
+# endif
+# ifndef PNG_USE_LOCAL_ARRAYS
+# define PNG_USE_LOCAL_ARRAYS
+# endif
+# else
+# if defined(PNG_USE_LOCAL_ARRAYS) || defined(PNG_NO_GLOBAL_ARRAYS)
+# ifdef PNG_USE_GLOBAL_ARRAYS
+# undef PNG_USE_GLOBAL_ARRAYS
+# endif
+# endif
+# endif
+# if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS)
+# define PNG_USE_LOCAL_ARRAYS
+# endif
+#endif
+
+/* Do not use global arrays (helps with building DLL's)
+ * They are no longer used in libpng itself, since version 1.0.5c,
+ * but might be required for some pre-1.0.5c applications.
+ */
+#if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS)
+# if defined(PNG_NO_GLOBAL_ARRAYS) || \
+ (defined(__GNUC__) && defined(PNG_DLL)) || defined(_MSC_VER)
+# define PNG_USE_LOCAL_ARRAYS
+# else
+# define PNG_USE_GLOBAL_ARRAYS
+# endif
+#endif
+
+#ifdef __CYGWIN__
+# undef PNGAPI
+# define PNGAPI __cdecl
+# undef PNG_IMPEXP
+# define PNG_IMPEXP
+#endif
+
+/* If you define PNGAPI, e.g., with compiler option "-DPNGAPI=__stdcall",
+ * you may get warnings regarding the linkage of png_zalloc and png_zfree.
+ * Don't ignore those warnings; you must also reset the default calling
+ * convention in your compiler to match your PNGAPI, and you must build
+ * zlib and your applications the same way you build libpng.
+ */
+
+#if defined(__MINGW32__) && !defined(PNG_MODULEDEF)
+# ifndef PNG_NO_MODULEDEF
+# define PNG_NO_MODULEDEF
+# endif
+#endif
+
+#if !defined(PNG_IMPEXP) && defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF)
+# define PNG_IMPEXP
+#endif
+
+#if defined(PNG_DLL) || defined(_DLL) || defined(__DLL__ ) || \
+ (( defined(_Windows) || defined(_WINDOWS) || \
+ defined(WIN32) || defined(_WIN32) || defined(__WIN32__) ))
+
+# ifndef PNGAPI
+# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800))
+# define PNGAPI __cdecl
+# else
+# define PNGAPI _cdecl
+# endif
+# endif
+
+# if !defined(PNG_IMPEXP) && (!defined(PNG_DLL) || \
+ 0 /* WINCOMPILER_WITH_NO_SUPPORT_FOR_DECLIMPEXP */)
+# define PNG_IMPEXP
+# endif
+
+# ifndef PNG_IMPEXP
+
+# define PNG_EXPORT_TYPE1(type,symbol) PNG_IMPEXP type PNGAPI symbol
+# define PNG_EXPORT_TYPE2(type,symbol) type PNG_IMPEXP PNGAPI symbol
+
+ /* Borland/Microsoft */
+# if defined(_MSC_VER) || defined(__BORLANDC__)
+# if (_MSC_VER >= 800) || (__BORLANDC__ >= 0x500)
+# define PNG_EXPORT PNG_EXPORT_TYPE1
+# else
+# define PNG_EXPORT PNG_EXPORT_TYPE2
+# ifdef PNG_BUILD_DLL
+# define PNG_IMPEXP __export
+# else
+# define PNG_IMPEXP /*__import */ /* doesn't exist AFAIK in
+ VC++ */
+# endif /* Exists in Borland C++ for
+ C++ classes (== huge) */
+# endif
+# endif
+
+# ifndef PNG_IMPEXP
+# ifdef PNG_BUILD_DLL
+# define PNG_IMPEXP __declspec(dllexport)
+# else
+# define PNG_IMPEXP __declspec(dllimport)
+# endif
+# endif
+# endif /* PNG_IMPEXP */
+#else /* !(DLL || non-cygwin WINDOWS) */
+# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
+# ifndef PNGAPI
+# define PNGAPI _System
+# endif
+# else
+# if 0 /* ... other platforms, with other meanings */
+# endif
+# endif
+#endif
+
+#ifndef PNGAPI
+# define PNGAPI
+#endif
+#ifndef PNG_IMPEXP
+# define PNG_IMPEXP
+#endif
+
+#ifdef PNG_BUILDSYMS
+# ifndef PNG_EXPORT
+# define PNG_EXPORT(type,symbol) PNG_FUNCTION_EXPORT symbol END
+# endif
+# ifdef PNG_USE_GLOBAL_ARRAYS
+# ifndef PNG_EXPORT_VAR
+# define PNG_EXPORT_VAR(type) PNG_DATA_EXPORT
+# endif
+# endif
+#endif
+
+#ifndef PNG_EXPORT
+# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol
+#endif
+
+#ifdef PNG_USE_GLOBAL_ARRAYS
+# ifndef PNG_EXPORT_VAR
+# define PNG_EXPORT_VAR(type) extern PNG_IMPEXP type
+# endif
+#endif
+
+#ifdef PNG_PEDANTIC_WARNINGS
+# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED
+# define PNG_PEDANTIC_WARNINGS_SUPPORTED
+# endif
+#endif
+
+#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED
+/* Support for compiler specific function attributes. These are used
+ * so that where compiler support is available incorrect use of API
+ * functions in png.h will generate compiler warnings. Added at libpng
+ * version 1.2.41.
+ */
+# ifdef __GNUC__
+# ifndef PNG_USE_RESULT
+# define PNG_USE_RESULT __attribute__((__warn_unused_result__))
+# endif
+# ifndef PNG_NORETURN
+# define PNG_NORETURN __attribute__((__noreturn__))
+# endif
+# ifndef PNG_ALLOCATED
+# define PNG_ALLOCATED __attribute__((__malloc__))
+# endif
+
+ /* This specifically protects structure members that should only be
+ * accessed from within the library, therefore should be empty during
+ * a library build.
+ */
+# ifndef PNG_DEPRECATED
+# define PNG_DEPRECATED __attribute__((__deprecated__))
+# endif
+# ifndef PNG_DEPSTRUCT
+# define PNG_DEPSTRUCT __attribute__((__deprecated__))
+# endif
+# ifndef PNG_PRIVATE
+# if 0 /* Doesn't work so we use deprecated instead*/
+# define PNG_PRIVATE \
+ __attribute__((warning("This function is not exported by libpng.")))
+# else
+# define PNG_PRIVATE \
+ __attribute__((__deprecated__))
+# endif
+# endif /* PNG_PRIVATE */
+# endif /* __GNUC__ */
+#endif /* PNG_PEDANTIC_WARNINGS */
+
+#ifndef PNG_DEPRECATED
+# define PNG_DEPRECATED /* Use of this function is deprecated */
+#endif
+#ifndef PNG_USE_RESULT
+# define PNG_USE_RESULT /* The result of this function must be checked */
+#endif
+#ifndef PNG_NORETURN
+# define PNG_NORETURN /* This function does not return */
+#endif
+#ifndef PNG_ALLOCATED
+# define PNG_ALLOCATED /* The result of the function is new memory */
+#endif
+#ifndef PNG_DEPSTRUCT
+# define PNG_DEPSTRUCT /* Access to this struct member is deprecated */
+#endif
+#ifndef PNG_PRIVATE
+# define PNG_PRIVATE /* This is a private libpng function */
+#endif
+
+/* User may want to use these so they are not in PNG_INTERNAL. Any library
+ * functions that are passed far data must be model independent.
+ */
+
+#ifndef PNG_ABORT
+# define PNG_ABORT() abort()
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf)
+#else
+# define png_jmpbuf(png_ptr) \
+ (LIBPNG_WAS_COMPILED_WITH__PNG_SETJMP_NOT_SUPPORTED)
+#endif
+
+#ifdef USE_FAR_KEYWORD /* memory model independent fns */
+/* Use this to make far-to-near assignments */
+# define CHECK 1
+# define NOCHECK 0
+# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK))
+# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK))
+# define png_snprintf _fsnprintf /* Added to v 1.2.19 */
+# define png_strlen _fstrlen
+# define png_memcmp _fmemcmp /* SJT: added */
+# define png_memcpy _fmemcpy
+# define png_memset _fmemset
+#else /* Use the usual functions */
+# define CVT_PTR(ptr) (ptr)
+# define CVT_PTR_NOCHECK(ptr) (ptr)
+# ifndef PNG_NO_SNPRINTF
+# ifdef _MSC_VER
+# define png_snprintf _snprintf /* Added to v 1.2.19 */
+# define png_snprintf2 _snprintf
+# define png_snprintf6 _snprintf
+# else
+# define png_snprintf snprintf /* Added to v 1.2.19 */
+# define png_snprintf2 snprintf
+# define png_snprintf6 snprintf
+# endif
+# else
+ /* You don't have or don't want to use snprintf(). Caution: Using
+ * sprintf instead of snprintf exposes your application to accidental
+ * or malevolent buffer overflows. If you don't have snprintf()
+ * as a general rule you should provide one (you can get one from
+ * Portable OpenSSH).
+ */
+# define png_snprintf(s1,n,fmt,x1) sprintf(s1,fmt,x1)
+# define png_snprintf2(s1,n,fmt,x1,x2) sprintf(s1,fmt,x1,x2)
+# define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \
+ sprintf(s1,fmt,x1,x2,x3,x4,x5,x6)
+# endif
+# define png_strlen strlen
+# define png_memcmp memcmp /* SJT: added */
+# define png_memcpy memcpy
+# define png_memset memset
+#endif
+/* End of memory model independent support */
+
+/* Just a little check that someone hasn't tried to define something
+ * contradictory.
+ */
+#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K)
+# undef PNG_ZBUF_SIZE
+# define PNG_ZBUF_SIZE 65536L
+#endif
+
+/* Added at libpng-1.2.8 */
+#endif /* PNG_VERSION_INFO_ONLY */
+
+#endif /* PNGCONF_H */
diff --git a/Externals/libpng/pngerror.c b/Externals/libpng/pngerror.c
index 8290bb4106..fd91a7fc54 100644
--- a/Externals/libpng/pngerror.c
+++ b/Externals/libpng/pngerror.c
@@ -1,447 +1,396 @@
-
-/* pngerror.c - stub functions for i/o and memory allocation
- *
- * Last changed in libpng 1.5.1 [February 3, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- * This file provides a location for all error handling. Users who
- * need special error handling are expected to write replacement functions
- * and use png_set_error_fn() to use those functions. See the instructions
- * at each function.
- */
-
-#include "pngpriv.h"
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-
-static PNG_FUNCTION(void, png_default_error,PNGARG((png_structp png_ptr,
- png_const_charp error_message)),PNG_NORETURN);
-
-#ifdef PNG_WARNINGS_SUPPORTED
-static void /* PRIVATE */
-png_default_warning PNGARG((png_structp png_ptr,
- png_const_charp warning_message));
-#endif /* PNG_WARNINGS_SUPPORTED */
-
-/* This function is called whenever there is a fatal error. This function
- * should not be changed. If there is a need to handle errors differently,
- * you should supply a replacement error function and use png_set_error_fn()
- * to replace the error function at run-time.
- */
-#ifdef PNG_ERROR_TEXT_SUPPORTED
-PNG_FUNCTION(void,PNGAPI
-png_error,(png_structp png_ptr, png_const_charp error_message),PNG_NORETURN)
-{
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- char msg[16];
- if (png_ptr != NULL)
- {
- if (png_ptr->flags&
- (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
- {
- if (*error_message == PNG_LITERAL_SHARP)
- {
- /* Strip "#nnnn " from beginning of error message. */
- int offset;
- for (offset = 1; offset<15; offset++)
- if (error_message[offset] == ' ')
- break;
-
- if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
- {
- int i;
- for (i = 0; i < offset - 1; i++)
- msg[i] = error_message[i + 1];
- msg[i - 1] = '\0';
- error_message = msg;
- }
-
- else
- error_message += offset;
- }
-
- else
- {
- if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
- {
- msg[0] = '0';
- msg[1] = '\0';
- error_message = msg;
- }
- }
- }
- }
-#endif
- if (png_ptr != NULL && png_ptr->error_fn != NULL)
- (*(png_ptr->error_fn))(png_ptr, error_message);
-
- /* If the custom handler doesn't exist, or if it returns,
- use the default handler, which will not return. */
- png_default_error(png_ptr, error_message);
-}
-#else
-PNG_FUNCTION(void,PNGAPI
-png_err,(png_structp png_ptr),PNG_NORETURN)
-{
- if (png_ptr != NULL && png_ptr->error_fn != NULL)
- (*(png_ptr->error_fn))(png_ptr, '\0');
-
- /* If the custom handler doesn't exist, or if it returns,
- use the default handler, which will not return. */
- png_default_error(png_ptr, '\0');
-}
-#endif /* PNG_ERROR_TEXT_SUPPORTED */
-
-#ifdef PNG_WARNINGS_SUPPORTED
-/* This function is called whenever there is a non-fatal error. This function
- * should not be changed. If there is a need to handle warnings differently,
- * you should supply a replacement warning function and use
- * png_set_error_fn() to replace the warning function at run-time.
- */
-void PNGAPI
-png_warning(png_structp png_ptr, png_const_charp warning_message)
-{
- int offset = 0;
- if (png_ptr != NULL)
- {
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- if (png_ptr->flags&
- (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
-#endif
- {
- if (*warning_message == PNG_LITERAL_SHARP)
- {
- for (offset = 1; offset < 15; offset++)
- if (warning_message[offset] == ' ')
- break;
- }
- }
- }
- if (png_ptr != NULL && png_ptr->warning_fn != NULL)
- (*(png_ptr->warning_fn))(png_ptr, warning_message + offset);
- else
- png_default_warning(png_ptr, warning_message + offset);
-}
-#endif /* PNG_WARNINGS_SUPPORTED */
-
-#ifdef PNG_BENIGN_ERRORS_SUPPORTED
-void PNGAPI
-png_benign_error(png_structp png_ptr, png_const_charp error_message)
-{
- if (png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN)
- png_warning(png_ptr, error_message);
- else
- png_error(png_ptr, error_message);
-}
-#endif
-
-/* These utilities are used internally to build an error message that relates
- * to the current chunk. The chunk name comes from png_ptr->chunk_name,
- * this is used to prefix the message. The message is limited in length
- * to 63 bytes, the name characters are output as hex digits wrapped in []
- * if the character is invalid.
- */
-#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97))
-static PNG_CONST char png_digit[16] = {
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
- 'A', 'B', 'C', 'D', 'E', 'F'
-};
-
-#define PNG_MAX_ERROR_TEXT 64
-#if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_ERROR_TEXT_SUPPORTED)
-static void /* PRIVATE */
-png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp
- error_message)
-{
- int iout = 0, iin = 0;
-
- while (iin < 4)
- {
- int c = png_ptr->chunk_name[iin++];
- if (isnonalpha(c))
- {
- buffer[iout++] = PNG_LITERAL_LEFT_SQUARE_BRACKET;
- buffer[iout++] = png_digit[(c & 0xf0) >> 4];
- buffer[iout++] = png_digit[c & 0x0f];
- buffer[iout++] = PNG_LITERAL_RIGHT_SQUARE_BRACKET;
- }
-
- else
- {
- buffer[iout++] = (png_byte)c;
- }
- }
-
- if (error_message == NULL)
- buffer[iout] = '\0';
-
- else
- {
- buffer[iout++] = ':';
- buffer[iout++] = ' ';
- png_memcpy(buffer + iout, error_message, PNG_MAX_ERROR_TEXT);
- buffer[iout + PNG_MAX_ERROR_TEXT - 1] = '\0';
- }
-}
-#endif /* PNG_WARNINGS_SUPPORTED || PNG_ERROR_TEXT_SUPPORTED */
-
-#if defined(PNG_READ_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED)
-PNG_FUNCTION(void,PNGAPI
-png_chunk_error,(png_structp png_ptr, png_const_charp error_message),
- PNG_NORETURN)
-{
- char msg[18+PNG_MAX_ERROR_TEXT];
- if (png_ptr == NULL)
- png_error(png_ptr, error_message);
-
- else
- {
- png_format_buffer(png_ptr, msg, error_message);
- png_error(png_ptr, msg);
- }
-}
-#endif /* PNG_READ_SUPPORTED && PNG_ERROR_TEXT_SUPPORTED */
-
-#ifdef PNG_WARNINGS_SUPPORTED
-void PNGAPI
-png_chunk_warning(png_structp png_ptr, png_const_charp warning_message)
-{
- char msg[18+PNG_MAX_ERROR_TEXT];
- if (png_ptr == NULL)
- png_warning(png_ptr, warning_message);
-
- else
- {
- png_format_buffer(png_ptr, msg, warning_message);
- png_warning(png_ptr, msg);
- }
-}
-#endif /* PNG_WARNINGS_SUPPORTED */
-
-#ifdef PNG_READ_SUPPORTED
-#ifdef PNG_BENIGN_ERRORS_SUPPORTED
-void PNGAPI
-png_chunk_benign_error(png_structp png_ptr, png_const_charp error_message)
-{
- if (png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN)
- png_chunk_warning(png_ptr, error_message);
-
- else
- png_chunk_error(png_ptr, error_message);
-}
-#endif
-#endif /* PNG_READ_SUPPORTED */
-
-#ifdef PNG_ERROR_TEXT_SUPPORTED
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-PNG_FUNCTION(void,
-png_fixed_error,(png_structp png_ptr, png_const_charp name),PNG_NORETURN)
-{
-# define fixed_message "fixed point overflow in "
-# define fixed_message_ln ((sizeof fixed_message)-1)
- int iin;
- char msg[fixed_message_ln+PNG_MAX_ERROR_TEXT];
- png_memcpy(msg, fixed_message, fixed_message_ln);
- iin = 0;
- if (name != NULL) while (iin < (PNG_MAX_ERROR_TEXT-1) && name[iin] != 0)
- {
- msg[fixed_message_ln + iin] = name[iin];
- ++iin;
- }
- msg[fixed_message_ln + iin] = 0;
- png_error(png_ptr, msg);
-}
-#endif
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
-/* This API only exists if ANSI-C style error handling is used,
- * otherwise it is necessary for png_default_error to be overridden.
- */
-jmp_buf* PNGAPI
-png_set_longjmp_fn(png_structp png_ptr, png_longjmp_ptr longjmp_fn,
- size_t jmp_buf_size)
-{
- if (png_ptr == NULL || jmp_buf_size != png_sizeof(jmp_buf))
- return NULL;
-
- png_ptr->longjmp_fn = longjmp_fn;
- return &png_ptr->png_jmpbuf;
-}
-#endif
-
-/* This is the default error handling function. Note that replacements for
- * this function MUST NOT RETURN, or the program will likely crash. This
- * function is used by default, or if the program supplies NULL for the
- * error function pointer in png_set_error_fn().
- */
-static PNG_FUNCTION(void /* PRIVATE */,
-png_default_error,(png_structp png_ptr, png_const_charp error_message),
- PNG_NORETURN)
-{
-#ifdef PNG_CONSOLE_IO_SUPPORTED
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- if (*error_message == PNG_LITERAL_SHARP)
- {
- /* Strip "#nnnn " from beginning of error message. */
- int offset;
- char error_number[16];
- for (offset = 0; offset<15; offset++)
- {
- error_number[offset] = error_message[offset + 1];
- if (error_message[offset] == ' ')
- break;
- }
-
- if ((offset > 1) && (offset < 15))
- {
- error_number[offset - 1] = '\0';
- fprintf(stderr, "libpng error no. %s: %s",
- error_number, error_message + offset + 1);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
-
- else
- {
- fprintf(stderr, "libpng error: %s, offset=%d",
- error_message, offset);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
- }
- else
-#endif
- {
- fprintf(stderr, "libpng error: %s", error_message);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
-#endif
-#ifndef PNG_CONSOLE_IO_SUPPORTED
- PNG_UNUSED(error_message) /* Make compiler happy */
-#endif
- png_longjmp(png_ptr, 1);
-}
-
-PNG_FUNCTION(void,PNGAPI
-png_longjmp,(png_structp png_ptr, int val),PNG_NORETURN)
-{
-#ifdef PNG_SETJMP_SUPPORTED
- if (png_ptr && png_ptr->longjmp_fn)
- {
-# ifdef USE_FAR_KEYWORD
- {
- jmp_buf png_jmpbuf;
- png_memcpy(png_jmpbuf, png_ptr->png_jmpbuf, png_sizeof(jmp_buf));
- png_ptr->longjmp_fn(png_jmpbuf, val);
- }
-
-# else
- png_ptr->longjmp_fn(png_ptr->png_jmpbuf, val);
-# endif
- }
-#endif
- /* Here if not setjmp support or if png_ptr is null. */
- PNG_ABORT();
-}
-
-#ifdef PNG_WARNINGS_SUPPORTED
-/* This function is called when there is a warning, but the library thinks
- * it can continue anyway. Replacement functions don't have to do anything
- * here if you don't want them to. In the default configuration, png_ptr is
- * not used, but it is passed in case it may be useful.
- */
-static void /* PRIVATE */
-png_default_warning(png_structp png_ptr, png_const_charp warning_message)
-{
-#ifdef PNG_CONSOLE_IO_SUPPORTED
-# ifdef PNG_ERROR_NUMBERS_SUPPORTED
- if (*warning_message == PNG_LITERAL_SHARP)
- {
- int offset;
- char warning_number[16];
- for (offset = 0; offset < 15; offset++)
- {
- warning_number[offset] = warning_message[offset + 1];
- if (warning_message[offset] == ' ')
- break;
- }
-
- if ((offset > 1) && (offset < 15))
- {
- warning_number[offset + 1] = '\0';
- fprintf(stderr, "libpng warning no. %s: %s",
- warning_number, warning_message + offset);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
-
- else
- {
- fprintf(stderr, "libpng warning: %s",
- warning_message);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
- }
- else
-# endif
-
- {
- fprintf(stderr, "libpng warning: %s", warning_message);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
-#else
- PNG_UNUSED(warning_message) /* Make compiler happy */
-#endif
- PNG_UNUSED(png_ptr) /* Make compiler happy */
-}
-#endif /* PNG_WARNINGS_SUPPORTED */
-
-/* This function is called when the application wants to use another method
- * of handling errors and warnings. Note that the error function MUST NOT
- * return to the calling routine or serious problems will occur. The return
- * method used in the default routine calls longjmp(png_ptr->png_jmpbuf, 1)
- */
-void PNGAPI
-png_set_error_fn(png_structp png_ptr, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warning_fn)
-{
- if (png_ptr == NULL)
- return;
-
- png_ptr->error_ptr = error_ptr;
- png_ptr->error_fn = error_fn;
- png_ptr->warning_fn = warning_fn;
-}
-
-
-/* This function returns a pointer to the error_ptr associated with the user
- * functions. The application should free any memory associated with this
- * pointer before png_write_destroy and png_read_destroy are called.
- */
-png_voidp PNGAPI
-png_get_error_ptr(png_const_structp png_ptr)
-{
- if (png_ptr == NULL)
- return NULL;
-
- return ((png_voidp)png_ptr->error_ptr);
-}
-
-
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
-void PNGAPI
-png_set_strip_error_numbers(png_structp png_ptr, png_uint_32 strip_mode)
-{
- if (png_ptr != NULL)
- {
- png_ptr->flags &=
- ((~(PNG_FLAG_STRIP_ERROR_NUMBERS |
- PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode);
- }
-}
-#endif
-#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
+
+/* pngerror.c - stub functions for i/o and memory allocation
+ *
+ * Last changed in libpng 1.2.45 [July 7, 2011]
+ * Copyright (c) 1998-2011 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * This file provides a location for all error handling. Users who
+ * need special error handling are expected to write replacement functions
+ * and use png_set_error_fn() to use those functions. See the instructions
+ * at each function.
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+
+static void /* PRIVATE */
+png_default_error PNGARG((png_structp png_ptr,
+ png_const_charp error_message)) PNG_NORETURN;
+#ifdef PNG_WARNINGS_SUPPORTED
+static void /* PRIVATE */
+png_default_warning PNGARG((png_structp png_ptr,
+ png_const_charp warning_message));
+#endif /* PNG_WARNINGS_SUPPORTED */
+
+/* This function is called whenever there is a fatal error. This function
+ * should not be changed. If there is a need to handle errors differently,
+ * you should supply a replacement error function and use png_set_error_fn()
+ * to replace the error function at run-time.
+ */
+#ifdef PNG_ERROR_TEXT_SUPPORTED
+void PNGAPI
+png_error(png_structp png_ptr, png_const_charp error_message)
+{
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+ char msg[16];
+ if (png_ptr != NULL)
+ {
+ if (png_ptr->flags&
+ (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
+ {
+ if (*error_message == PNG_LITERAL_SHARP)
+ {
+ /* Strip "#nnnn " from beginning of error message. */
+ int offset;
+ for (offset = 1; offset<15; offset++)
+ if (error_message[offset] == ' ')
+ break;
+ if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
+ {
+ int i;
+ for (i = 0; i < offset - 1; i++)
+ msg[i] = error_message[i + 1];
+ msg[i - 1] = '\0';
+ error_message = msg;
+ }
+ else
+ error_message += offset;
+ }
+ else
+ {
+ if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
+ {
+ msg[0] = '0';
+ msg[1] = '\0';
+ error_message = msg;
+ }
+ }
+ }
+ }
+#endif
+ if (png_ptr != NULL && png_ptr->error_fn != NULL)
+ (*(png_ptr->error_fn))(png_ptr, error_message);
+
+ /* If the custom handler doesn't exist, or if it returns,
+ use the default handler, which will not return. */
+ png_default_error(png_ptr, error_message);
+}
+#else
+void PNGAPI
+png_err(png_structp png_ptr)
+{
+ /* Prior to 1.2.45 the error_fn received a NULL pointer, expressed
+ * erroneously as '\0', instead of the empty string "". This was
+ * apparently an error, introduced in libpng-1.2.20, and png_default_error
+ * will crash in this case.
+ */
+ if (png_ptr != NULL && png_ptr->error_fn != NULL)
+ (*(png_ptr->error_fn))(png_ptr, "");
+
+ /* If the custom handler doesn't exist, or if it returns,
+ use the default handler, which will not return. */
+ png_default_error(png_ptr, "");
+}
+#endif /* PNG_ERROR_TEXT_SUPPORTED */
+
+#ifdef PNG_WARNINGS_SUPPORTED
+/* This function is called whenever there is a non-fatal error. This function
+ * should not be changed. If there is a need to handle warnings differently,
+ * you should supply a replacement warning function and use
+ * png_set_error_fn() to replace the warning function at run-time.
+ */
+void PNGAPI
+png_warning(png_structp png_ptr, png_const_charp warning_message)
+{
+ int offset = 0;
+ if (png_ptr != NULL)
+ {
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+ if (png_ptr->flags&
+ (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
+#endif
+ {
+ if (*warning_message == PNG_LITERAL_SHARP)
+ {
+ for (offset = 1; offset < 15; offset++)
+ if (warning_message[offset] == ' ')
+ break;
+ }
+ }
+ }
+ if (png_ptr != NULL && png_ptr->warning_fn != NULL)
+ (*(png_ptr->warning_fn))(png_ptr, warning_message + offset);
+ else
+ png_default_warning(png_ptr, warning_message + offset);
+}
+#endif /* PNG_WARNINGS_SUPPORTED */
+
+#ifdef PNG_BENIGN_ERRORS_SUPPORTED
+void PNGAPI
+png_benign_error(png_structp png_ptr, png_const_charp error_message)
+{
+ if (png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN)
+ png_warning(png_ptr, error_message);
+ else
+ png_error(png_ptr, error_message);
+}
+#endif
+
+/* These utilities are used internally to build an error message that relates
+ * to the current chunk. The chunk name comes from png_ptr->chunk_name,
+ * this is used to prefix the message. The message is limited in length
+ * to 63 bytes, the name characters are output as hex digits wrapped in []
+ * if the character is invalid.
+ */
+#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97))
+static PNG_CONST char png_digit[16] = {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+ 'A', 'B', 'C', 'D', 'E', 'F'
+};
+
+#define PNG_MAX_ERROR_TEXT 64
+#if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_ERROR_TEXT_SUPPORTED)
+static void /* PRIVATE */
+png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp
+ error_message)
+{
+ int iout = 0, iin = 0;
+
+ while (iin < 4)
+ {
+ int c = png_ptr->chunk_name[iin++];
+ if (isnonalpha(c))
+ {
+ buffer[iout++] = PNG_LITERAL_LEFT_SQUARE_BRACKET;
+ buffer[iout++] = png_digit[(c & 0xf0) >> 4];
+ buffer[iout++] = png_digit[c & 0x0f];
+ buffer[iout++] = PNG_LITERAL_RIGHT_SQUARE_BRACKET;
+ }
+ else
+ {
+ buffer[iout++] = (png_byte)c;
+ }
+ }
+
+ if (error_message == NULL)
+ buffer[iout] = '\0';
+ else
+ {
+ buffer[iout++] = ':';
+ buffer[iout++] = ' ';
+
+ iin = 0;
+ while (iin < PNG_MAX_ERROR_TEXT-1 && error_message[iin] != '\0')
+ buffer[iout++] = error_message[iin++];
+
+ /* iin < PNG_MAX_ERROR_TEXT, so the following is safe: */
+ buffer[iout] = '\0';
+ }
+}
+
+#ifdef PNG_READ_SUPPORTED
+void PNGAPI
+png_chunk_error(png_structp png_ptr, png_const_charp error_message)
+{
+ char msg[18+PNG_MAX_ERROR_TEXT];
+ if (png_ptr == NULL)
+ png_error(png_ptr, error_message);
+ else
+ {
+ png_format_buffer(png_ptr, msg, error_message);
+ png_error(png_ptr, msg);
+ }
+}
+#endif /* PNG_READ_SUPPORTED */
+#endif /* PNG_WARNINGS_SUPPORTED || PNG_ERROR_TEXT_SUPPORTED */
+
+#ifdef PNG_WARNINGS_SUPPORTED
+void PNGAPI
+png_chunk_warning(png_structp png_ptr, png_const_charp warning_message)
+{
+ char msg[18+PNG_MAX_ERROR_TEXT];
+ if (png_ptr == NULL)
+ png_warning(png_ptr, warning_message);
+ else
+ {
+ png_format_buffer(png_ptr, msg, warning_message);
+ png_warning(png_ptr, msg);
+ }
+}
+#endif /* PNG_WARNINGS_SUPPORTED */
+
+#ifdef PNG_READ_SUPPORTED
+#ifdef PNG_BENIGN_ERRORS_SUPPORTED
+void PNGAPI
+png_chunk_benign_error(png_structp png_ptr, png_const_charp error_message)
+{
+ if (png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN)
+ png_chunk_warning(png_ptr, error_message);
+ else
+ png_chunk_error(png_ptr, error_message);
+}
+#endif
+#endif /* PNG_READ_SUPPORTED */
+
+/* This is the default error handling function. Note that replacements for
+ * this function MUST NOT RETURN, or the program will likely crash. This
+ * function is used by default, or if the program supplies NULL for the
+ * error function pointer in png_set_error_fn().
+ */
+static void /* PRIVATE */
+png_default_error(png_structp png_ptr, png_const_charp error_message)
+{
+#ifdef PNG_CONSOLE_IO_SUPPORTED
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+ if (*error_message == PNG_LITERAL_SHARP)
+ {
+ /* Strip "#nnnn " from beginning of error message. */
+ int offset;
+ char error_number[16];
+ for (offset = 0; offset<15; offset++)
+ {
+ error_number[offset] = error_message[offset + 1];
+ if (error_message[offset] == ' ')
+ break;
+ }
+ if ((offset > 1) && (offset < 15))
+ {
+ error_number[offset - 1] = '\0';
+ fprintf(stderr, "libpng error no. %s: %s",
+ error_number, error_message + offset + 1);
+ fprintf(stderr, PNG_STRING_NEWLINE);
+ }
+ else
+ {
+ fprintf(stderr, "libpng error: %s, offset=%d",
+ error_message, offset);
+ fprintf(stderr, PNG_STRING_NEWLINE);
+ }
+ }
+ else
+#endif
+ {
+ fprintf(stderr, "libpng error: %s", error_message);
+ fprintf(stderr, PNG_STRING_NEWLINE);
+ }
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+ if (png_ptr)
+ {
+# ifdef USE_FAR_KEYWORD
+ {
+ jmp_buf jmpbuf;
+ png_memcpy(jmpbuf, png_ptr->jmpbuf, png_sizeof(jmp_buf));
+ longjmp(jmpbuf,1);
+ }
+# else
+ longjmp(png_ptr->jmpbuf, 1);
+# endif
+ }
+#endif
+ /* Here if not setjmp support or if png_ptr is null. */
+ PNG_ABORT();
+#ifndef PNG_CONSOLE_IO_SUPPORTED
+ error_message = error_message; /* Make compiler happy */
+#endif
+}
+
+#ifdef PNG_WARNINGS_SUPPORTED
+/* This function is called when there is a warning, but the library thinks
+ * it can continue anyway. Replacement functions don't have to do anything
+ * here if you don't want them to. In the default configuration, png_ptr is
+ * not used, but it is passed in case it may be useful.
+ */
+static void /* PRIVATE */
+png_default_warning(png_structp png_ptr, png_const_charp warning_message)
+{
+#ifdef PNG_CONSOLE_IO_SUPPORTED
+# ifdef PNG_ERROR_NUMBERS_SUPPORTED
+ if (*warning_message == PNG_LITERAL_SHARP)
+ {
+ int offset;
+ char warning_number[16];
+ for (offset = 0; offset < 15; offset++)
+ {
+ warning_number[offset] = warning_message[offset + 1];
+ if (warning_message[offset] == ' ')
+ break;
+ }
+ if ((offset > 1) && (offset < 15))
+ {
+ warning_number[offset + 1] = '\0';
+ fprintf(stderr, "libpng warning no. %s: %s",
+ warning_number, warning_message + offset);
+ fprintf(stderr, PNG_STRING_NEWLINE);
+ }
+ else
+ {
+ fprintf(stderr, "libpng warning: %s",
+ warning_message);
+ fprintf(stderr, PNG_STRING_NEWLINE);
+ }
+ }
+ else
+# endif
+ {
+ fprintf(stderr, "libpng warning: %s", warning_message);
+ fprintf(stderr, PNG_STRING_NEWLINE);
+ }
+#else
+ warning_message = warning_message; /* Make compiler happy */
+#endif
+ png_ptr = png_ptr; /* Make compiler happy */
+}
+#endif /* PNG_WARNINGS_SUPPORTED */
+
+/* This function is called when the application wants to use another method
+ * of handling errors and warnings. Note that the error function MUST NOT
+ * return to the calling routine or serious problems will occur. The return
+ * method used in the default routine calls longjmp(png_ptr->jmpbuf, 1)
+ */
+void PNGAPI
+png_set_error_fn(png_structp png_ptr, png_voidp error_ptr,
+ png_error_ptr error_fn, png_error_ptr warning_fn)
+{
+ if (png_ptr == NULL)
+ return;
+ png_ptr->error_ptr = error_ptr;
+ png_ptr->error_fn = error_fn;
+ png_ptr->warning_fn = warning_fn;
+}
+
+
+/* This function returns a pointer to the error_ptr associated with the user
+ * functions. The application should free any memory associated with this
+ * pointer before png_write_destroy and png_read_destroy are called.
+ */
+png_voidp PNGAPI
+png_get_error_ptr(png_structp png_ptr)
+{
+ if (png_ptr == NULL)
+ return NULL;
+ return ((png_voidp)png_ptr->error_ptr);
+}
+
+
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+void PNGAPI
+png_set_strip_error_numbers(png_structp png_ptr, png_uint_32 strip_mode)
+{
+ if (png_ptr != NULL)
+ {
+ png_ptr->flags &=
+ ((~(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode);
+ }
+}
+#endif
+#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/Externals/libpng/pnggccrd.c b/Externals/libpng/pnggccrd.c
new file mode 100644
index 0000000000..074df593fe
--- /dev/null
+++ b/Externals/libpng/pnggccrd.c
@@ -0,0 +1,26 @@
+/* pnggccrd.c
+ *
+ * Last changed in libpng 1.2.48 [March 8, 2012]
+ * Copyright (c) 1998-2012 Glenn Randers-Pehrson
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * This code snippet is for use by configure's compilation test. Most of the
+ * remainder of the file was removed from libpng-1.2.20, and all of the
+ * assembler code was removed from libpng-1.2.48.
+ */
+
+#if (!defined _MSC_VER) && \
+ defined(PNG_ASSEMBLER_CODE_SUPPORTED) && \
+ defined(PNG_MMX_CODE_SUPPORTED)
+
+int PNGAPI png_dummy_mmx_support(void);
+
+int PNGAPI png_dummy_mmx_support(void)
+{
+ /* 0: no MMX; 1: MMX supported; 2: not tested */
+ return 2;
+}
+#endif
diff --git a/Externals/libpng/pngget.c b/Externals/libpng/pngget.c
index b5e5798c02..e46495f205 100644
--- a/Externals/libpng/pngget.c
+++ b/Externals/libpng/pngget.c
@@ -1,1032 +1,944 @@
-
-/* pngget.c - retrieval of values from info struct
- *
- * Last changed in libpng 1.5.1 [February 3, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- */
-
-#include "pngpriv.h"
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-
-png_uint_32 PNGAPI
-png_get_valid(png_const_structp png_ptr, png_const_infop info_ptr,
- png_uint_32 flag)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return(info_ptr->valid & flag);
-
- return(0);
-}
-
-png_size_t PNGAPI
-png_get_rowbytes(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return(info_ptr->rowbytes);
-
- return(0);
-}
-
-#ifdef PNG_INFO_IMAGE_SUPPORTED
-png_bytepp PNGAPI
-png_get_rows(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return(info_ptr->row_pointers);
-
- return(0);
-}
-#endif
-
-#ifdef PNG_EASY_ACCESS_SUPPORTED
-/* Easy access to info, added in libpng-0.99 */
-png_uint_32 PNGAPI
-png_get_image_width(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return info_ptr->width;
-
- return (0);
-}
-
-png_uint_32 PNGAPI
-png_get_image_height(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return info_ptr->height;
-
- return (0);
-}
-
-png_byte PNGAPI
-png_get_bit_depth(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return info_ptr->bit_depth;
-
- return (0);
-}
-
-png_byte PNGAPI
-png_get_color_type(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return info_ptr->color_type;
-
- return (0);
-}
-
-png_byte PNGAPI
-png_get_filter_type(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return info_ptr->filter_type;
-
- return (0);
-}
-
-png_byte PNGAPI
-png_get_interlace_type(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return info_ptr->interlace_type;
-
- return (0);
-}
-
-png_byte PNGAPI
-png_get_compression_type(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return info_ptr->compression_type;
-
- return (0);
-}
-
-png_uint_32 PNGAPI
-png_get_x_pixels_per_meter(png_const_structp png_ptr, png_const_infop info_ptr)
-{
-#ifdef PNG_pHYs_SUPPORTED
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
- {
- png_debug1(1, "in %s retrieval function",
- "png_get_x_pixels_per_meter");
-
- if (info_ptr->phys_unit_type == PNG_RESOLUTION_METER)
- return (info_ptr->x_pixels_per_unit);
- }
-#endif
-
- return (0);
-}
-
-png_uint_32 PNGAPI
-png_get_y_pixels_per_meter(png_const_structp png_ptr, png_const_infop info_ptr)
-{
-#ifdef PNG_pHYs_SUPPORTED
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
- {
- png_debug1(1, "in %s retrieval function",
- "png_get_y_pixels_per_meter");
-
- if (info_ptr->phys_unit_type == PNG_RESOLUTION_METER)
- return (info_ptr->y_pixels_per_unit);
- }
-#endif
-
- return (0);
-}
-
-png_uint_32 PNGAPI
-png_get_pixels_per_meter(png_const_structp png_ptr, png_const_infop info_ptr)
-{
-#ifdef PNG_pHYs_SUPPORTED
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
- {
- png_debug1(1, "in %s retrieval function", "png_get_pixels_per_meter");
-
- if (info_ptr->phys_unit_type == PNG_RESOLUTION_METER &&
- info_ptr->x_pixels_per_unit == info_ptr->y_pixels_per_unit)
- return (info_ptr->x_pixels_per_unit);
- }
-#endif
-
- return (0);
-}
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-float PNGAPI
-png_get_pixel_aspect_ratio(png_const_structp png_ptr, png_const_infop info_ptr)
-{
-#ifdef PNG_READ_pHYs_SUPPORTED
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
- {
- png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio");
-
- if (info_ptr->x_pixels_per_unit != 0)
- return ((float)((float)info_ptr->y_pixels_per_unit
- /(float)info_ptr->x_pixels_per_unit));
- }
-#endif
-
- return ((float)0.0);
-}
-#endif
-
-#ifdef PNG_FIXED_POINT_SUPPORTED
-png_fixed_point PNGAPI
-png_get_pixel_aspect_ratio_fixed(png_const_structp png_ptr,
- png_const_infop info_ptr)
-{
-#ifdef PNG_READ_pHYs_SUPPORTED
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)
- && info_ptr->x_pixels_per_unit > 0 && info_ptr->y_pixels_per_unit > 0
- && info_ptr->x_pixels_per_unit <= PNG_UINT_31_MAX
- && info_ptr->y_pixels_per_unit <= PNG_UINT_31_MAX)
- {
- png_fixed_point res;
-
- png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio_fixed");
-
- /* The following casts work because a PNG 4 byte integer only has a valid
- * range of 0..2^31-1; otherwise the cast might overflow.
- */
- if (png_muldiv(&res, (png_int_32)info_ptr->y_pixels_per_unit, PNG_FP_1,
- (png_int_32)info_ptr->x_pixels_per_unit))
- return res;
- }
-#endif
-
- return 0;
-}
-#endif
-
-png_int_32 PNGAPI
-png_get_x_offset_microns(png_const_structp png_ptr, png_const_infop info_ptr)
-{
-#ifdef PNG_oFFs_SUPPORTED
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
- {
- png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
-
- if (info_ptr->offset_unit_type == PNG_OFFSET_MICROMETER)
- return (info_ptr->x_offset);
- }
-#endif
-
- return (0);
-}
-
-png_int_32 PNGAPI
-png_get_y_offset_microns(png_const_structp png_ptr, png_const_infop info_ptr)
-{
-#ifdef PNG_oFFs_SUPPORTED
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
- {
- png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
-
- if (info_ptr->offset_unit_type == PNG_OFFSET_MICROMETER)
- return (info_ptr->y_offset);
- }
-#endif
-
- return (0);
-}
-
-png_int_32 PNGAPI
-png_get_x_offset_pixels(png_const_structp png_ptr, png_const_infop info_ptr)
-{
-#ifdef PNG_oFFs_SUPPORTED
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
- {
- png_debug1(1, "in %s retrieval function", "png_get_x_offset_pixels");
-
- if (info_ptr->offset_unit_type == PNG_OFFSET_PIXEL)
- return (info_ptr->x_offset);
- }
-#endif
-
- return (0);
-}
-
-png_int_32 PNGAPI
-png_get_y_offset_pixels(png_const_structp png_ptr, png_const_infop info_ptr)
-{
-#ifdef PNG_oFFs_SUPPORTED
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
- {
- png_debug1(1, "in %s retrieval function", "png_get_y_offset_pixels");
-
- if (info_ptr->offset_unit_type == PNG_OFFSET_PIXEL)
- return (info_ptr->y_offset);
- }
-#endif
-
- return (0);
-}
-
-#ifdef PNG_INCH_CONVERSIONS_SUPPORTED
-static png_uint_32
-ppi_from_ppm(png_uint_32 ppm)
-{
-#if 0
- /* The conversion is *(2.54/100), in binary (32 digits):
- * .00000110100000001001110101001001
- */
- png_uint_32 t1001, t1101;
- ppm >>= 1; /* .1 */
- t1001 = ppm + (ppm >> 3); /* .1001 */
- t1101 = t1001 + (ppm >> 1); /* .1101 */
- ppm >>= 20; /* .000000000000000000001 */
- t1101 += t1101 >> 15; /* .1101000000000001101 */
- t1001 >>= 11; /* .000000000001001 */
- t1001 += t1001 >> 12; /* .000000000001001000000001001 */
- ppm += t1001; /* .000000000001001000001001001 */
- ppm += t1101; /* .110100000001001110101001001 */
- return (ppm + 16) >> 5;/* .00000110100000001001110101001001 */
-#else
- /* The argument is a PNG unsigned integer, so it is not permitted
- * to be bigger than 2^31.
- */
- png_fixed_point result;
- if (ppm <= PNG_UINT_31_MAX && png_muldiv(&result, (png_int_32)ppm, 127,
- 5000))
- return result;
-
- /* Overflow. */
- return 0;
-#endif
-}
-
-png_uint_32 PNGAPI
-png_get_pixels_per_inch(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- return ppi_from_ppm(png_get_pixels_per_meter(png_ptr, info_ptr));
-}
-
-png_uint_32 PNGAPI
-png_get_x_pixels_per_inch(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- return ppi_from_ppm(png_get_x_pixels_per_meter(png_ptr, info_ptr));
-}
-
-png_uint_32 PNGAPI
-png_get_y_pixels_per_inch(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- return ppi_from_ppm(png_get_y_pixels_per_meter(png_ptr, info_ptr));
-}
-
-#ifdef PNG_FIXED_POINT_SUPPORTED
-static png_fixed_point
-png_fixed_inches_from_microns(png_structp png_ptr, png_int_32 microns)
-{
- /* Convert from metres * 1,000,000 to inches * 100,000, meters to
- * inches is simply *(100/2.54), so we want *(10/2.54) == 500/127.
- * Notice that this can overflow - a warning is output and 0 is
- * returned.
- */
- return png_muldiv_warn(png_ptr, microns, 500, 127);
-}
-
-png_fixed_point PNGAPI
-png_get_x_offset_inches_fixed(png_structp png_ptr,
- png_const_infop info_ptr)
-{
- return png_fixed_inches_from_microns(png_ptr,
- png_get_x_offset_microns(png_ptr, info_ptr));
-}
-#endif
-
-#ifdef PNG_FIXED_POINT_SUPPORTED
-png_fixed_point PNGAPI
-png_get_y_offset_inches_fixed(png_structp png_ptr,
- png_const_infop info_ptr)
-{
- return png_fixed_inches_from_microns(png_ptr,
- png_get_y_offset_microns(png_ptr, info_ptr));
-}
-#endif
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-float PNGAPI
-png_get_x_offset_inches(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- /* To avoid the overflow do the conversion directly in floating
- * point.
- */
- return (float)(png_get_x_offset_microns(png_ptr, info_ptr) * .00003937);
-}
-#endif
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-float PNGAPI
-png_get_y_offset_inches(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- /* To avoid the overflow do the conversion directly in floating
- * point.
- */
- return (float)(png_get_y_offset_microns(png_ptr, info_ptr) * .00003937);
-}
-#endif
-
-#ifdef PNG_pHYs_SUPPORTED
-png_uint_32 PNGAPI
-png_get_pHYs_dpi(png_const_structp png_ptr, png_const_infop info_ptr,
- png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)
-{
- png_uint_32 retval = 0;
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
- {
- png_debug1(1, "in %s retrieval function", "pHYs");
-
- if (res_x != NULL)
- {
- *res_x = info_ptr->x_pixels_per_unit;
- retval |= PNG_INFO_pHYs;
- }
-
- if (res_y != NULL)
- {
- *res_y = info_ptr->y_pixels_per_unit;
- retval |= PNG_INFO_pHYs;
- }
-
- if (unit_type != NULL)
- {
- *unit_type = (int)info_ptr->phys_unit_type;
- retval |= PNG_INFO_pHYs;
-
- if (*unit_type == 1)
- {
- if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50);
- if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50);
- }
- }
- }
-
- return (retval);
-}
-#endif /* PNG_pHYs_SUPPORTED */
-#endif /* PNG_INCH_CONVERSIONS_SUPPORTED */
-
-/* png_get_channels really belongs in here, too, but it's been around longer */
-
-#endif /* PNG_EASY_ACCESS_SUPPORTED */
-
-png_byte PNGAPI
-png_get_channels(png_const_structp png_ptr, png_const_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return(info_ptr->channels);
-
- return (0);
-}
-
-png_const_bytep PNGAPI
-png_get_signature(png_const_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return(info_ptr->signature);
-
- return (NULL);
-}
-
-#ifdef PNG_bKGD_SUPPORTED
-png_uint_32 PNGAPI
-png_get_bKGD(png_const_structp png_ptr, png_infop info_ptr,
- png_color_16p *background)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD)
- && background != NULL)
- {
- png_debug1(1, "in %s retrieval function", "bKGD");
-
- *background = &(info_ptr->background);
- return (PNG_INFO_bKGD);
- }
-
- return (0);
-}
-#endif
-
-#ifdef PNG_cHRM_SUPPORTED
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_cHRM(png_const_structp png_ptr, png_const_infop info_ptr,
- double *white_x, double *white_y, double *red_x, double *red_y,
- double *green_x, double *green_y, double *blue_x, double *blue_y)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
- {
- png_debug1(1, "in %s retrieval function", "cHRM");
-
- if (white_x != NULL)
- *white_x = png_float(png_ptr, info_ptr->x_white, "cHRM white X");
- if (white_y != NULL)
- *white_y = png_float(png_ptr, info_ptr->y_white, "cHRM white Y");
- if (red_x != NULL)
- *red_x = png_float(png_ptr, info_ptr->x_red, "cHRM red X");
- if (red_y != NULL)
- *red_y = png_float(png_ptr, info_ptr->y_red, "cHRM red Y");
- if (green_x != NULL)
- *green_x = png_float(png_ptr, info_ptr->x_green, "cHRM green X");
- if (green_y != NULL)
- *green_y = png_float(png_ptr, info_ptr->y_green, "cHRM green Y");
- if (blue_x != NULL)
- *blue_x = png_float(png_ptr, info_ptr->x_blue, "cHRM blue X");
- if (blue_y != NULL)
- *blue_y = png_float(png_ptr, info_ptr->y_blue, "cHRM blue Y");
- return (PNG_INFO_cHRM);
- }
-
- return (0);
-}
-# endif
-
-# ifdef PNG_FIXED_POINT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_cHRM_fixed(png_const_structp png_ptr, png_const_infop info_ptr,
- png_fixed_point *white_x, png_fixed_point *white_y, png_fixed_point *red_x,
- png_fixed_point *red_y, png_fixed_point *green_x, png_fixed_point *green_y,
- png_fixed_point *blue_x, png_fixed_point *blue_y)
-{
- png_debug1(1, "in %s retrieval function", "cHRM");
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
- {
- if (white_x != NULL)
- *white_x = info_ptr->x_white;
- if (white_y != NULL)
- *white_y = info_ptr->y_white;
- if (red_x != NULL)
- *red_x = info_ptr->x_red;
- if (red_y != NULL)
- *red_y = info_ptr->y_red;
- if (green_x != NULL)
- *green_x = info_ptr->x_green;
- if (green_y != NULL)
- *green_y = info_ptr->y_green;
- if (blue_x != NULL)
- *blue_x = info_ptr->x_blue;
- if (blue_y != NULL)
- *blue_y = info_ptr->y_blue;
- return (PNG_INFO_cHRM);
- }
-
- return (0);
-}
-# endif
-#endif
-
-#ifdef PNG_gAMA_SUPPORTED
-png_uint_32 PNGFAPI
-png_get_gAMA_fixed(png_const_structp png_ptr, png_const_infop info_ptr,
- png_fixed_point *file_gamma)
-{
- png_debug1(1, "in %s retrieval function", "gAMA");
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
- && file_gamma != NULL)
- {
- *file_gamma = info_ptr->gamma;
- return (PNG_INFO_gAMA);
- }
-
- return (0);
-}
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_gAMA(png_const_structp png_ptr, png_const_infop info_ptr,
- double *file_gamma)
-{
- png_fixed_point igamma;
- png_uint_32 ok = png_get_gAMA_fixed(png_ptr, info_ptr, &igamma);
-
- if (ok)
- *file_gamma = png_float(png_ptr, igamma, "png_get_gAMA");
-
- return ok;
-}
-
-# endif
-#endif
-
-#ifdef PNG_sRGB_SUPPORTED
-png_uint_32 PNGAPI
-png_get_sRGB(png_const_structp png_ptr, png_const_infop info_ptr,
- int *file_srgb_intent)
-{
- png_debug1(1, "in %s retrieval function", "sRGB");
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB)
- && file_srgb_intent != NULL)
- {
- *file_srgb_intent = (int)info_ptr->srgb_intent;
- return (PNG_INFO_sRGB);
- }
-
- return (0);
-}
-#endif
-
-#ifdef PNG_iCCP_SUPPORTED
-png_uint_32 PNGAPI
-png_get_iCCP(png_const_structp png_ptr, png_const_infop info_ptr,
- png_charpp name, int *compression_type,
- png_bytepp profile, png_uint_32 *proflen)
-{
- png_debug1(1, "in %s retrieval function", "iCCP");
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP)
- && name != NULL && profile != NULL && proflen != NULL)
- {
- *name = info_ptr->iccp_name;
- *profile = info_ptr->iccp_profile;
- /* Compression_type is a dummy so the API won't have to change
- * if we introduce multiple compression types later.
- */
- *proflen = (int)info_ptr->iccp_proflen;
- *compression_type = (int)info_ptr->iccp_compression;
- return (PNG_INFO_iCCP);
- }
-
- return (0);
-}
-#endif
-
-#ifdef PNG_sPLT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_sPLT(png_const_structp png_ptr, png_const_infop info_ptr,
- png_sPLT_tpp spalettes)
-{
- if (png_ptr != NULL && info_ptr != NULL && spalettes != NULL)
- {
- *spalettes = info_ptr->splt_palettes;
- return ((png_uint_32)info_ptr->splt_palettes_num);
- }
-
- return (0);
-}
-#endif
-
-#ifdef PNG_hIST_SUPPORTED
-png_uint_32 PNGAPI
-png_get_hIST(png_const_structp png_ptr, png_const_infop info_ptr,
- png_uint_16p *hist)
-{
- png_debug1(1, "in %s retrieval function", "hIST");
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST)
- && hist != NULL)
- {
- *hist = info_ptr->hist;
- return (PNG_INFO_hIST);
- }
-
- return (0);
-}
-#endif
-
-png_uint_32 PNGAPI
-png_get_IHDR(png_structp png_ptr, png_infop info_ptr,
- png_uint_32 *width, png_uint_32 *height, int *bit_depth,
- int *color_type, int *interlace_type, int *compression_type,
- int *filter_type)
-
-{
- png_debug1(1, "in %s retrieval function", "IHDR");
-
- if (png_ptr == NULL || info_ptr == NULL || width == NULL ||
- height == NULL || bit_depth == NULL || color_type == NULL)
- return (0);
-
- *width = info_ptr->width;
- *height = info_ptr->height;
- *bit_depth = info_ptr->bit_depth;
- *color_type = info_ptr->color_type;
-
- if (compression_type != NULL)
- *compression_type = info_ptr->compression_type;
-
- if (filter_type != NULL)
- *filter_type = info_ptr->filter_type;
-
- if (interlace_type != NULL)
- *interlace_type = info_ptr->interlace_type;
-
- /* This is redundant if we can be sure that the info_ptr values were all
- * assigned in png_set_IHDR(). We do the check anyhow in case an
- * application has ignored our advice not to mess with the members
- * of info_ptr directly.
- */
- png_check_IHDR (png_ptr, info_ptr->width, info_ptr->height,
- info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type,
- info_ptr->compression_type, info_ptr->filter_type);
-
- return (1);
-}
-
-#ifdef PNG_oFFs_SUPPORTED
-png_uint_32 PNGAPI
-png_get_oFFs(png_const_structp png_ptr, png_const_infop info_ptr,
- png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type)
-{
- png_debug1(1, "in %s retrieval function", "oFFs");
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)
- && offset_x != NULL && offset_y != NULL && unit_type != NULL)
- {
- *offset_x = info_ptr->x_offset;
- *offset_y = info_ptr->y_offset;
- *unit_type = (int)info_ptr->offset_unit_type;
- return (PNG_INFO_oFFs);
- }
-
- return (0);
-}
-#endif
-
-#ifdef PNG_pCAL_SUPPORTED
-png_uint_32 PNGAPI
-png_get_pCAL(png_const_structp png_ptr, png_const_infop info_ptr,
- png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams,
- png_charp *units, png_charpp *params)
-{
- png_debug1(1, "in %s retrieval function", "pCAL");
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL)
- && purpose != NULL && X0 != NULL && X1 != NULL && type != NULL &&
- nparams != NULL && units != NULL && params != NULL)
- {
- *purpose = info_ptr->pcal_purpose;
- *X0 = info_ptr->pcal_X0;
- *X1 = info_ptr->pcal_X1;
- *type = (int)info_ptr->pcal_type;
- *nparams = (int)info_ptr->pcal_nparams;
- *units = info_ptr->pcal_units;
- *params = info_ptr->pcal_params;
- return (PNG_INFO_pCAL);
- }
-
- return (0);
-}
-#endif
-
-#ifdef PNG_sCAL_SUPPORTED
-# ifdef PNG_FIXED_POINT_SUPPORTED
-# ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
-png_uint_32 PNGAPI
-png_get_sCAL_fixed(png_structp png_ptr, png_const_infop info_ptr,
- int *unit, png_fixed_point *width, png_fixed_point *height)
-{
- if (png_ptr != NULL && info_ptr != NULL &&
- (info_ptr->valid & PNG_INFO_sCAL))
- {
- *unit = info_ptr->scal_unit;
- /*TODO: make this work without FP support */
- *width = png_fixed(png_ptr, atof(info_ptr->scal_s_width), "sCAL width");
- *height = png_fixed(png_ptr, atof(info_ptr->scal_s_height),
- "sCAL height");
- return (PNG_INFO_sCAL);
- }
-
- return(0);
-}
-# endif /* FLOATING_ARITHMETIC */
-# endif /* FIXED_POINT */
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_sCAL(png_const_structp png_ptr, png_const_infop info_ptr,
- int *unit, double *width, double *height)
-{
- if (png_ptr != NULL && info_ptr != NULL &&
- (info_ptr->valid & PNG_INFO_sCAL))
- {
- *unit = info_ptr->scal_unit;
- *width = atof(info_ptr->scal_s_width);
- *height = atof(info_ptr->scal_s_height);
- return (PNG_INFO_sCAL);
- }
-
- return(0);
-}
-# endif /* FLOATING POINT */
-png_uint_32 PNGAPI
-png_get_sCAL_s(png_const_structp png_ptr, png_const_infop info_ptr,
- int *unit, png_charpp width, png_charpp height)
-{
- if (png_ptr != NULL && info_ptr != NULL &&
- (info_ptr->valid & PNG_INFO_sCAL))
- {
- *unit = info_ptr->scal_unit;
- *width = info_ptr->scal_s_width;
- *height = info_ptr->scal_s_height;
- return (PNG_INFO_sCAL);
- }
-
- return(0);
-}
-#endif /* sCAL */
-
-#ifdef PNG_pHYs_SUPPORTED
-png_uint_32 PNGAPI
-png_get_pHYs(png_const_structp png_ptr, png_const_infop info_ptr,
- png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)
-{
- png_uint_32 retval = 0;
-
- png_debug1(1, "in %s retrieval function", "pHYs");
-
- if (png_ptr != NULL && info_ptr != NULL &&
- (info_ptr->valid & PNG_INFO_pHYs))
- {
- if (res_x != NULL)
- {
- *res_x = info_ptr->x_pixels_per_unit;
- retval |= PNG_INFO_pHYs;
- }
-
- if (res_y != NULL)
- {
- *res_y = info_ptr->y_pixels_per_unit;
- retval |= PNG_INFO_pHYs;
- }
-
- if (unit_type != NULL)
- {
- *unit_type = (int)info_ptr->phys_unit_type;
- retval |= PNG_INFO_pHYs;
- }
- }
-
- return (retval);
-}
-#endif /* pHYs */
-
-png_uint_32 PNGAPI
-png_get_PLTE(png_const_structp png_ptr, png_const_infop info_ptr,
- png_colorp *palette, int *num_palette)
-{
- png_debug1(1, "in %s retrieval function", "PLTE");
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_PLTE)
- && palette != NULL)
- {
- *palette = info_ptr->palette;
- *num_palette = info_ptr->num_palette;
- png_debug1(3, "num_palette = %d", *num_palette);
- return (PNG_INFO_PLTE);
- }
-
- return (0);
-}
-
-#ifdef PNG_sBIT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_sBIT(png_const_structp png_ptr, png_infop info_ptr,
- png_color_8p *sig_bit)
-{
- png_debug1(1, "in %s retrieval function", "sBIT");
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT)
- && sig_bit != NULL)
- {
- *sig_bit = &(info_ptr->sig_bit);
- return (PNG_INFO_sBIT);
- }
-
- return (0);
-}
-#endif
-
-#ifdef PNG_TEXT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_text(png_const_structp png_ptr, png_const_infop info_ptr,
- png_textp *text_ptr, int *num_text)
-{
- if (png_ptr != NULL && info_ptr != NULL && info_ptr->num_text > 0)
- {
- png_debug1(1, "in %s retrieval function",
- (png_ptr->chunk_name[0] == '\0' ? "text" :
- (png_const_charp)png_ptr->chunk_name));
-
- if (text_ptr != NULL)
- *text_ptr = info_ptr->text;
-
- if (num_text != NULL)
- *num_text = info_ptr->num_text;
-
- return ((png_uint_32)info_ptr->num_text);
- }
-
- if (num_text != NULL)
- *num_text = 0;
-
- return(0);
-}
-#endif
-
-#ifdef PNG_tIME_SUPPORTED
-png_uint_32 PNGAPI
-png_get_tIME(png_const_structp png_ptr, png_infop info_ptr, png_timep *mod_time)
-{
- png_debug1(1, "in %s retrieval function", "tIME");
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME)
- && mod_time != NULL)
- {
- *mod_time = &(info_ptr->mod_time);
- return (PNG_INFO_tIME);
- }
-
- return (0);
-}
-#endif
-
-#ifdef PNG_tRNS_SUPPORTED
-png_uint_32 PNGAPI
-png_get_tRNS(png_const_structp png_ptr, png_infop info_ptr,
- png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color)
-{
- png_uint_32 retval = 0;
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS))
- {
- png_debug1(1, "in %s retrieval function", "tRNS");
-
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (trans_alpha != NULL)
- {
- *trans_alpha = info_ptr->trans_alpha;
- retval |= PNG_INFO_tRNS;
- }
-
- if (trans_color != NULL)
- *trans_color = &(info_ptr->trans_color);
- }
-
- else /* if (info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) */
- {
- if (trans_color != NULL)
- {
- *trans_color = &(info_ptr->trans_color);
- retval |= PNG_INFO_tRNS;
- }
-
- if (trans_alpha != NULL)
- *trans_alpha = NULL;
- }
-
- if (num_trans != NULL)
- {
- *num_trans = info_ptr->num_trans;
- retval |= PNG_INFO_tRNS;
- }
- }
-
- return (retval);
-}
-#endif
-
-#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
-int PNGAPI
-png_get_unknown_chunks(png_const_structp png_ptr, png_const_infop info_ptr,
- png_unknown_chunkpp unknowns)
-{
- if (png_ptr != NULL && info_ptr != NULL && unknowns != NULL)
- {
- *unknowns = info_ptr->unknown_chunks;
- return info_ptr->unknown_chunks_num;
- }
-
- return (0);
-}
-#endif
-
-#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
-png_byte PNGAPI
-png_get_rgb_to_gray_status (png_const_structp png_ptr)
-{
- return (png_byte)(png_ptr ? png_ptr->rgb_to_gray_status : 0);
-}
-#endif
-
-#ifdef PNG_USER_CHUNKS_SUPPORTED
-png_voidp PNGAPI
-png_get_user_chunk_ptr(png_const_structp png_ptr)
-{
- return (png_ptr ? png_ptr->user_chunk_ptr : NULL);
-}
-#endif
-
-png_size_t PNGAPI
-png_get_compression_buffer_size(png_const_structp png_ptr)
-{
- return (png_ptr ? png_ptr->zbuf_size : 0L);
-}
-
-
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
-/* These functions were added to libpng 1.2.6 and were enabled
- * by default in libpng-1.4.0 */
-png_uint_32 PNGAPI
-png_get_user_width_max (png_const_structp png_ptr)
-{
- return (png_ptr ? png_ptr->user_width_max : 0);
-}
-
-png_uint_32 PNGAPI
-png_get_user_height_max (png_const_structp png_ptr)
-{
- return (png_ptr ? png_ptr->user_height_max : 0);
-}
-
-/* This function was added to libpng 1.4.0 */
-png_uint_32 PNGAPI
-png_get_chunk_cache_max (png_const_structp png_ptr)
-{
- return (png_ptr ? png_ptr->user_chunk_cache_max : 0);
-}
-
-/* This function was added to libpng 1.4.1 */
-png_alloc_size_t PNGAPI
-png_get_chunk_malloc_max (png_const_structp png_ptr)
-{
- return (png_ptr ? png_ptr->user_chunk_malloc_max : 0);
-}
-#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
-
-/* These functions were added to libpng 1.4.0 */
-#ifdef PNG_IO_STATE_SUPPORTED
-png_uint_32 PNGAPI
-png_get_io_state (png_structp png_ptr)
-{
- return png_ptr->io_state;
-}
-
-png_uint_32 PNGAPI
-png_get_io_chunk_type (png_const_structp png_ptr)
-{
- return ((png_ptr->chunk_name[0] << 24) +
- (png_ptr->chunk_name[1] << 16) +
- (png_ptr->chunk_name[2] << 8) +
- (png_ptr->chunk_name[3]));
-}
-
-png_const_bytep PNGAPI
-png_get_io_chunk_name (png_structp png_ptr)
-{
- return png_ptr->chunk_name;
-}
-#endif /* ?PNG_IO_STATE_SUPPORTED */
-
-#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
+
+/* pngget.c - retrieval of values from info struct
+ *
+ * Last changed in libpng 1.2.43 [February 25, 2010]
+ * Copyright (c) 1998-2010 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+
+png_uint_32 PNGAPI
+png_get_valid(png_structp png_ptr, png_infop info_ptr, png_uint_32 flag)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return(info_ptr->valid & flag);
+
+ else
+ return(0);
+}
+
+png_uint_32 PNGAPI
+png_get_rowbytes(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return(info_ptr->rowbytes);
+
+ else
+ return(0);
+}
+
+#ifdef PNG_INFO_IMAGE_SUPPORTED
+png_bytepp PNGAPI
+png_get_rows(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return(info_ptr->row_pointers);
+
+ else
+ return(0);
+}
+#endif
+
+#ifdef PNG_EASY_ACCESS_SUPPORTED
+/* Easy access to info, added in libpng-0.99 */
+png_uint_32 PNGAPI
+png_get_image_width(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return info_ptr->width;
+
+ return (0);
+}
+
+png_uint_32 PNGAPI
+png_get_image_height(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return info_ptr->height;
+
+ return (0);
+}
+
+png_byte PNGAPI
+png_get_bit_depth(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return info_ptr->bit_depth;
+
+ return (0);
+}
+
+png_byte PNGAPI
+png_get_color_type(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return info_ptr->color_type;
+
+ return (0);
+}
+
+png_byte PNGAPI
+png_get_filter_type(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return info_ptr->filter_type;
+
+ return (0);
+}
+
+png_byte PNGAPI
+png_get_interlace_type(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return info_ptr->interlace_type;
+
+ return (0);
+}
+
+png_byte PNGAPI
+png_get_compression_type(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return info_ptr->compression_type;
+
+ return (0);
+}
+
+png_uint_32 PNGAPI
+png_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+#ifdef PNG_pHYs_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_pHYs)
+ {
+ png_debug1(1, "in %s retrieval function", "png_get_x_pixels_per_meter");
+
+ if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
+ return (0);
+
+ else
+ return (info_ptr->x_pixels_per_unit);
+ }
+#else
+ return (0);
+#endif
+ return (0);
+}
+
+png_uint_32 PNGAPI
+png_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+#ifdef PNG_pHYs_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_pHYs)
+ {
+ png_debug1(1, "in %s retrieval function", "png_get_y_pixels_per_meter");
+
+ if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
+ return (0);
+
+ else
+ return (info_ptr->y_pixels_per_unit);
+ }
+#else
+ return (0);
+#endif
+ return (0);
+}
+
+png_uint_32 PNGAPI
+png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+#ifdef PNG_pHYs_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_pHYs)
+ {
+ png_debug1(1, "in %s retrieval function", "png_get_pixels_per_meter");
+
+ if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER ||
+ info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit)
+ return (0);
+
+ else
+ return (info_ptr->x_pixels_per_unit);
+ }
+#else
+ return (0);
+#endif
+ return (0);
+}
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+float PNGAPI
+png_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr)
+ {
+ if (png_ptr != NULL && info_ptr != NULL)
+#ifdef PNG_pHYs_SUPPORTED
+
+ if (info_ptr->valid & PNG_INFO_pHYs)
+ {
+ png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio");
+
+ if (info_ptr->x_pixels_per_unit == 0)
+ return ((float)0.0);
+
+ else
+ return ((float)((float)info_ptr->y_pixels_per_unit
+ /(float)info_ptr->x_pixels_per_unit));
+ }
+#else
+ return (0.0);
+#endif
+ return ((float)0.0);
+}
+#endif
+
+png_int_32 PNGAPI
+png_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+#ifdef PNG_oFFs_SUPPORTED
+
+ if (info_ptr->valid & PNG_INFO_oFFs)
+ {
+ png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
+
+ if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
+ return (0);
+
+ else
+ return (info_ptr->x_offset);
+ }
+#else
+ return (0);
+#endif
+ return (0);
+}
+
+png_int_32 PNGAPI
+png_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+
+#ifdef PNG_oFFs_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_oFFs)
+ {
+ png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
+
+ if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
+ return (0);
+
+ else
+ return (info_ptr->y_offset);
+ }
+#else
+ return (0);
+#endif
+ return (0);
+}
+
+png_int_32 PNGAPI
+png_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+
+#ifdef PNG_oFFs_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_oFFs)
+ {
+ png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
+
+ if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
+ return (0);
+
+ else
+ return (info_ptr->x_offset);
+ }
+#else
+ return (0);
+#endif
+ return (0);
+}
+
+png_int_32 PNGAPI
+png_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+
+#ifdef PNG_oFFs_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_oFFs)
+ {
+ png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
+
+ if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
+ return (0);
+
+ else
+ return (info_ptr->y_offset);
+ }
+#else
+ return (0);
+#endif
+ return (0);
+}
+
+#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)
+png_uint_32 PNGAPI
+png_get_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
+{
+ return ((png_uint_32)((float)png_get_pixels_per_meter(png_ptr, info_ptr)
+ *.0254 +.5));
+}
+
+png_uint_32 PNGAPI
+png_get_x_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
+{
+ return ((png_uint_32)((float)png_get_x_pixels_per_meter(png_ptr, info_ptr)
+ *.0254 +.5));
+}
+
+png_uint_32 PNGAPI
+png_get_y_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
+{
+ return ((png_uint_32)((float)png_get_y_pixels_per_meter(png_ptr, info_ptr)
+ *.0254 +.5));
+}
+
+float PNGAPI
+png_get_x_offset_inches(png_structp png_ptr, png_infop info_ptr)
+{
+ return ((float)png_get_x_offset_microns(png_ptr, info_ptr)
+ *.00003937);
+}
+
+float PNGAPI
+png_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr)
+{
+ return ((float)png_get_y_offset_microns(png_ptr, info_ptr)
+ *.00003937);
+}
+
+#ifdef PNG_pHYs_SUPPORTED
+png_uint_32 PNGAPI
+png_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)
+{
+ png_uint_32 retval = 0;
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
+ {
+ png_debug1(1, "in %s retrieval function", "pHYs");
+
+ if (res_x != NULL)
+ {
+ *res_x = info_ptr->x_pixels_per_unit;
+ retval |= PNG_INFO_pHYs;
+ }
+ if (res_y != NULL)
+ {
+ *res_y = info_ptr->y_pixels_per_unit;
+ retval |= PNG_INFO_pHYs;
+ }
+ if (unit_type != NULL)
+ {
+ *unit_type = (int)info_ptr->phys_unit_type;
+ retval |= PNG_INFO_pHYs;
+ if (*unit_type == 1)
+ {
+ if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50);
+ if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50);
+ }
+ }
+ }
+ return (retval);
+}
+#endif /* PNG_pHYs_SUPPORTED */
+#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */
+
+/* png_get_channels really belongs in here, too, but it's been around longer */
+
+#endif /* PNG_EASY_ACCESS_SUPPORTED */
+
+png_byte PNGAPI
+png_get_channels(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return(info_ptr->channels);
+ else
+ return (0);
+}
+
+png_bytep PNGAPI
+png_get_signature(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr != NULL && info_ptr != NULL)
+ return(info_ptr->signature);
+ else
+ return (NULL);
+}
+
+#ifdef PNG_bKGD_SUPPORTED
+png_uint_32 PNGAPI
+png_get_bKGD(png_structp png_ptr, png_infop info_ptr,
+ png_color_16p *background)
+{
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD)
+ && background != NULL)
+ {
+ png_debug1(1, "in %s retrieval function", "bKGD");
+
+ *background = &(info_ptr->background);
+ return (PNG_INFO_bKGD);
+ }
+ return (0);
+}
+#endif
+
+#ifdef PNG_cHRM_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+png_uint_32 PNGAPI
+png_get_cHRM(png_structp png_ptr, png_infop info_ptr,
+ double *white_x, double *white_y, double *red_x, double *red_y,
+ double *green_x, double *green_y, double *blue_x, double *blue_y)
+{
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
+ {
+ png_debug1(1, "in %s retrieval function", "cHRM");
+
+ if (white_x != NULL)
+ *white_x = (double)info_ptr->x_white;
+ if (white_y != NULL)
+ *white_y = (double)info_ptr->y_white;
+ if (red_x != NULL)
+ *red_x = (double)info_ptr->x_red;
+ if (red_y != NULL)
+ *red_y = (double)info_ptr->y_red;
+ if (green_x != NULL)
+ *green_x = (double)info_ptr->x_green;
+ if (green_y != NULL)
+ *green_y = (double)info_ptr->y_green;
+ if (blue_x != NULL)
+ *blue_x = (double)info_ptr->x_blue;
+ if (blue_y != NULL)
+ *blue_y = (double)info_ptr->y_blue;
+ return (PNG_INFO_cHRM);
+ }
+ return (0);
+}
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+png_uint_32 PNGAPI
+png_get_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
+ png_fixed_point *white_x, png_fixed_point *white_y, png_fixed_point *red_x,
+ png_fixed_point *red_y, png_fixed_point *green_x, png_fixed_point *green_y,
+ png_fixed_point *blue_x, png_fixed_point *blue_y)
+{
+ png_debug1(1, "in %s retrieval function", "cHRM");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
+ {
+ if (white_x != NULL)
+ *white_x = info_ptr->int_x_white;
+ if (white_y != NULL)
+ *white_y = info_ptr->int_y_white;
+ if (red_x != NULL)
+ *red_x = info_ptr->int_x_red;
+ if (red_y != NULL)
+ *red_y = info_ptr->int_y_red;
+ if (green_x != NULL)
+ *green_x = info_ptr->int_x_green;
+ if (green_y != NULL)
+ *green_y = info_ptr->int_y_green;
+ if (blue_x != NULL)
+ *blue_x = info_ptr->int_x_blue;
+ if (blue_y != NULL)
+ *blue_y = info_ptr->int_y_blue;
+ return (PNG_INFO_cHRM);
+ }
+ return (0);
+}
+#endif
+#endif
+
+#ifdef PNG_gAMA_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+png_uint_32 PNGAPI
+png_get_gAMA(png_structp png_ptr, png_infop info_ptr, double *file_gamma)
+{
+ png_debug1(1, "in %s retrieval function", "gAMA");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
+ && file_gamma != NULL)
+ {
+ *file_gamma = (double)info_ptr->gamma;
+ return (PNG_INFO_gAMA);
+ }
+ return (0);
+}
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+png_uint_32 PNGAPI
+png_get_gAMA_fixed(png_structp png_ptr, png_infop info_ptr,
+ png_fixed_point *int_file_gamma)
+{
+ png_debug1(1, "in %s retrieval function", "gAMA");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
+ && int_file_gamma != NULL)
+ {
+ *int_file_gamma = info_ptr->int_gamma;
+ return (PNG_INFO_gAMA);
+ }
+ return (0);
+}
+#endif
+#endif
+
+#ifdef PNG_sRGB_SUPPORTED
+png_uint_32 PNGAPI
+png_get_sRGB(png_structp png_ptr, png_infop info_ptr, int *file_srgb_intent)
+{
+ png_debug1(1, "in %s retrieval function", "sRGB");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB)
+ && file_srgb_intent != NULL)
+ {
+ *file_srgb_intent = (int)info_ptr->srgb_intent;
+ return (PNG_INFO_sRGB);
+ }
+ return (0);
+}
+#endif
+
+#ifdef PNG_iCCP_SUPPORTED
+png_uint_32 PNGAPI
+png_get_iCCP(png_structp png_ptr, png_infop info_ptr,
+ png_charpp name, int *compression_type,
+ png_charpp profile, png_uint_32 *proflen)
+{
+ png_debug1(1, "in %s retrieval function", "iCCP");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP)
+ && name != NULL && profile != NULL && proflen != NULL)
+ {
+ *name = info_ptr->iccp_name;
+ *profile = info_ptr->iccp_profile;
+ /* Compression_type is a dummy so the API won't have to change
+ * if we introduce multiple compression types later.
+ */
+ *proflen = (int)info_ptr->iccp_proflen;
+ *compression_type = (int)info_ptr->iccp_compression;
+ return (PNG_INFO_iCCP);
+ }
+ return (0);
+}
+#endif
+
+#ifdef PNG_sPLT_SUPPORTED
+png_uint_32 PNGAPI
+png_get_sPLT(png_structp png_ptr, png_infop info_ptr,
+ png_sPLT_tpp spalettes)
+{
+ if (png_ptr != NULL && info_ptr != NULL && spalettes != NULL)
+ {
+ *spalettes = info_ptr->splt_palettes;
+ return ((png_uint_32)info_ptr->splt_palettes_num);
+ }
+ return (0);
+}
+#endif
+
+#ifdef PNG_hIST_SUPPORTED
+png_uint_32 PNGAPI
+png_get_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p *hist)
+{
+ png_debug1(1, "in %s retrieval function", "hIST");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST)
+ && hist != NULL)
+ {
+ *hist = info_ptr->hist;
+ return (PNG_INFO_hIST);
+ }
+ return (0);
+}
+#endif
+
+png_uint_32 PNGAPI
+png_get_IHDR(png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 *width, png_uint_32 *height, int *bit_depth,
+ int *color_type, int *interlace_type, int *compression_type,
+ int *filter_type)
+
+{
+ png_debug1(1, "in %s retrieval function", "IHDR");
+
+ if (png_ptr == NULL || info_ptr == NULL || width == NULL ||
+ height == NULL || bit_depth == NULL || color_type == NULL)
+ return (0);
+
+ *width = info_ptr->width;
+ *height = info_ptr->height;
+ *bit_depth = info_ptr->bit_depth;
+ *color_type = info_ptr->color_type;
+
+ if (compression_type != NULL)
+ *compression_type = info_ptr->compression_type;
+
+ if (filter_type != NULL)
+ *filter_type = info_ptr->filter_type;
+
+ if (interlace_type != NULL)
+ *interlace_type = info_ptr->interlace_type;
+
+ /* This is redundant if we can be sure that the info_ptr values were all
+ * assigned in png_set_IHDR(). We do the check anyhow in case an
+ * application has ignored our advice not to mess with the members
+ * of info_ptr directly.
+ */
+ png_check_IHDR (png_ptr, info_ptr->width, info_ptr->height,
+ info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type,
+ info_ptr->compression_type, info_ptr->filter_type);
+
+ return (1);
+}
+
+#ifdef PNG_oFFs_SUPPORTED
+png_uint_32 PNGAPI
+png_get_oFFs(png_structp png_ptr, png_infop info_ptr,
+ png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type)
+{
+ png_debug1(1, "in %s retrieval function", "oFFs");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)
+ && offset_x != NULL && offset_y != NULL && unit_type != NULL)
+ {
+ *offset_x = info_ptr->x_offset;
+ *offset_y = info_ptr->y_offset;
+ *unit_type = (int)info_ptr->offset_unit_type;
+ return (PNG_INFO_oFFs);
+ }
+ return (0);
+}
+#endif
+
+#ifdef PNG_pCAL_SUPPORTED
+png_uint_32 PNGAPI
+png_get_pCAL(png_structp png_ptr, png_infop info_ptr,
+ png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams,
+ png_charp *units, png_charpp *params)
+{
+ png_debug1(1, "in %s retrieval function", "pCAL");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL)
+ && purpose != NULL && X0 != NULL && X1 != NULL && type != NULL &&
+ nparams != NULL && units != NULL && params != NULL)
+ {
+ *purpose = info_ptr->pcal_purpose;
+ *X0 = info_ptr->pcal_X0;
+ *X1 = info_ptr->pcal_X1;
+ *type = (int)info_ptr->pcal_type;
+ *nparams = (int)info_ptr->pcal_nparams;
+ *units = info_ptr->pcal_units;
+ *params = info_ptr->pcal_params;
+ return (PNG_INFO_pCAL);
+ }
+ return (0);
+}
+#endif
+
+#ifdef PNG_sCAL_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+png_uint_32 PNGAPI
+png_get_sCAL(png_structp png_ptr, png_infop info_ptr,
+ int *unit, double *width, double *height)
+{
+ if (png_ptr != NULL && info_ptr != NULL &&
+ (info_ptr->valid & PNG_INFO_sCAL))
+ {
+ *unit = info_ptr->scal_unit;
+ *width = info_ptr->scal_pixel_width;
+ *height = info_ptr->scal_pixel_height;
+ return (PNG_INFO_sCAL);
+ }
+ return(0);
+}
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+png_uint_32 PNGAPI
+png_get_sCAL_s(png_structp png_ptr, png_infop info_ptr,
+ int *unit, png_charpp width, png_charpp height)
+{
+ if (png_ptr != NULL && info_ptr != NULL &&
+ (info_ptr->valid & PNG_INFO_sCAL))
+ {
+ *unit = info_ptr->scal_unit;
+ *width = info_ptr->scal_s_width;
+ *height = info_ptr->scal_s_height;
+ return (PNG_INFO_sCAL);
+ }
+ return(0);
+}
+#endif
+#endif
+#endif
+
+#ifdef PNG_pHYs_SUPPORTED
+png_uint_32 PNGAPI
+png_get_pHYs(png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)
+{
+ png_uint_32 retval = 0;
+
+ png_debug1(1, "in %s retrieval function", "pHYs");
+
+ if (png_ptr != NULL && info_ptr != NULL &&
+ (info_ptr->valid & PNG_INFO_pHYs))
+ {
+ if (res_x != NULL)
+ {
+ *res_x = info_ptr->x_pixels_per_unit;
+ retval |= PNG_INFO_pHYs;
+ }
+
+ if (res_y != NULL)
+ {
+ *res_y = info_ptr->y_pixels_per_unit;
+ retval |= PNG_INFO_pHYs;
+ }
+
+ if (unit_type != NULL)
+ {
+ *unit_type = (int)info_ptr->phys_unit_type;
+ retval |= PNG_INFO_pHYs;
+ }
+ }
+ return (retval);
+}
+#endif
+
+png_uint_32 PNGAPI
+png_get_PLTE(png_structp png_ptr, png_infop info_ptr, png_colorp *palette,
+ int *num_palette)
+{
+ png_debug1(1, "in %s retrieval function", "PLTE");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_PLTE)
+ && palette != NULL)
+ {
+ *palette = info_ptr->palette;
+ *num_palette = info_ptr->num_palette;
+ png_debug1(3, "num_palette = %d", *num_palette);
+ return (PNG_INFO_PLTE);
+ }
+ return (0);
+}
+
+#ifdef PNG_sBIT_SUPPORTED
+png_uint_32 PNGAPI
+png_get_sBIT(png_structp png_ptr, png_infop info_ptr, png_color_8p *sig_bit)
+{
+ png_debug1(1, "in %s retrieval function", "sBIT");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT)
+ && sig_bit != NULL)
+ {
+ *sig_bit = &(info_ptr->sig_bit);
+ return (PNG_INFO_sBIT);
+ }
+ return (0);
+}
+#endif
+
+#ifdef PNG_TEXT_SUPPORTED
+png_uint_32 PNGAPI
+png_get_text(png_structp png_ptr, png_infop info_ptr, png_textp *text_ptr,
+ int *num_text)
+{
+ if (png_ptr != NULL && info_ptr != NULL && info_ptr->num_text > 0)
+ {
+ png_debug1(1, "in %s retrieval function",
+ (png_ptr->chunk_name[0] == '\0' ? "text"
+ : (png_const_charp)png_ptr->chunk_name));
+
+ if (text_ptr != NULL)
+ *text_ptr = info_ptr->text;
+
+ if (num_text != NULL)
+ *num_text = info_ptr->num_text;
+
+ return ((png_uint_32)info_ptr->num_text);
+ }
+ if (num_text != NULL)
+ *num_text = 0;
+ return(0);
+}
+#endif
+
+#ifdef PNG_tIME_SUPPORTED
+png_uint_32 PNGAPI
+png_get_tIME(png_structp png_ptr, png_infop info_ptr, png_timep *mod_time)
+{
+ png_debug1(1, "in %s retrieval function", "tIME");
+
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME)
+ && mod_time != NULL)
+ {
+ *mod_time = &(info_ptr->mod_time);
+ return (PNG_INFO_tIME);
+ }
+ return (0);
+}
+#endif
+
+#ifdef PNG_tRNS_SUPPORTED
+png_uint_32 PNGAPI
+png_get_tRNS(png_structp png_ptr, png_infop info_ptr,
+ png_bytep *trans, int *num_trans, png_color_16p *trans_values)
+{
+ png_uint_32 retval = 0;
+ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS))
+ {
+ png_debug1(1, "in %s retrieval function", "tRNS");
+
+ if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ if (trans != NULL)
+ {
+ *trans = info_ptr->trans;
+ retval |= PNG_INFO_tRNS;
+ }
+
+ if (trans_values != NULL)
+ *trans_values = &(info_ptr->trans_values);
+ }
+ else /* if (info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) */
+ {
+ if (trans_values != NULL)
+ {
+ *trans_values = &(info_ptr->trans_values);
+ retval |= PNG_INFO_tRNS;
+ }
+
+ if (trans != NULL)
+ *trans = NULL;
+ }
+ if (num_trans != NULL)
+ {
+ *num_trans = info_ptr->num_trans;
+ retval |= PNG_INFO_tRNS;
+ }
+ }
+ return (retval);
+}
+#endif
+
+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
+png_uint_32 PNGAPI
+png_get_unknown_chunks(png_structp png_ptr, png_infop info_ptr,
+ png_unknown_chunkpp unknowns)
+{
+ if (png_ptr != NULL && info_ptr != NULL && unknowns != NULL)
+ {
+ *unknowns = info_ptr->unknown_chunks;
+ return ((png_uint_32)info_ptr->unknown_chunks_num);
+ }
+ return (0);
+}
+#endif
+
+#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
+png_byte PNGAPI
+png_get_rgb_to_gray_status (png_structp png_ptr)
+{
+ return (png_byte)(png_ptr? png_ptr->rgb_to_gray_status : 0);
+}
+#endif
+
+#ifdef PNG_USER_CHUNKS_SUPPORTED
+png_voidp PNGAPI
+png_get_user_chunk_ptr(png_structp png_ptr)
+{
+ return (png_ptr? png_ptr->user_chunk_ptr : NULL);
+}
+#endif
+
+png_uint_32 PNGAPI
+png_get_compression_buffer_size(png_structp png_ptr)
+{
+ return (png_uint_32)(png_ptr? png_ptr->zbuf_size : 0L);
+}
+
+#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
+#ifndef PNG_1_0_X
+/* This function was added to libpng 1.2.0 and should exist by default */
+png_uint_32 PNGAPI
+png_get_asm_flags (png_structp png_ptr)
+{
+ /* Obsolete, to be removed from libpng-1.4.0 */
+ return (png_ptr? 0L: 0L);
+}
+
+/* This function was added to libpng 1.2.0 and should exist by default */
+png_uint_32 PNGAPI
+png_get_asm_flagmask (int flag_select)
+{
+ /* Obsolete, to be removed from libpng-1.4.0 */
+ flag_select=flag_select;
+ return 0L;
+}
+
+ /* GRR: could add this: && defined(PNG_MMX_CODE_SUPPORTED) */
+/* This function was added to libpng 1.2.0 */
+png_uint_32 PNGAPI
+png_get_mmx_flagmask (int flag_select, int *compilerID)
+{
+ /* Obsolete, to be removed from libpng-1.4.0 */
+ flag_select=flag_select;
+ *compilerID = -1; /* unknown (i.e., no asm/MMX code compiled) */
+ return 0L;
+}
+
+/* This function was added to libpng 1.2.0 */
+png_byte PNGAPI
+png_get_mmx_bitdepth_threshold (png_structp png_ptr)
+{
+ /* Obsolete, to be removed from libpng-1.4.0 */
+ return (png_ptr? 0: 0);
+}
+
+/* This function was added to libpng 1.2.0 */
+png_uint_32 PNGAPI
+png_get_mmx_rowbytes_threshold (png_structp png_ptr)
+{
+ /* Obsolete, to be removed from libpng-1.4.0 */
+ return (png_ptr? 0L: 0L);
+}
+#endif /* ?PNG_1_0_X */
+#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
+
+#ifdef PNG_SET_USER_LIMITS_SUPPORTED
+/* These functions were added to libpng 1.2.6 but not enabled
+* by default. They will be enabled in libpng-1.4.0 */
+png_uint_32 PNGAPI
+png_get_user_width_max (png_structp png_ptr)
+{
+ return (png_ptr? png_ptr->user_width_max : 0);
+}
+png_uint_32 PNGAPI
+png_get_user_height_max (png_structp png_ptr)
+{
+ return (png_ptr? png_ptr->user_height_max : 0);
+}
+#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
+
+#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/Externals/libpng/pngmem.c b/Externals/libpng/pngmem.c
index a15d8b0859..019c7d2509 100644
--- a/Externals/libpng/pngmem.c
+++ b/Externals/libpng/pngmem.c
@@ -1,658 +1,641 @@
-
-/* pngmem.c - stub functions for memory allocation
- *
- * Last changed in libpng 1.5.1 [February 3, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- * This file provides a location for all memory allocation. Users who
- * need special memory handling are expected to supply replacement
- * functions for png_malloc() and png_free(), and to use
- * png_create_read_struct_2() and png_create_write_struct_2() to
- * identify the replacement functions.
- */
-
-#include "pngpriv.h"
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-
-/* Borland DOS special memory handler */
-#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
-/* If you change this, be sure to change the one in png.h also */
-
-/* Allocate memory for a png_struct. The malloc and memset can be replaced
- by a single call to calloc() if this is thought to improve performance. */
-PNG_FUNCTION(png_voidp /* PRIVATE */,
-png_create_struct,(int type),PNG_ALLOCATED)
-{
-# ifdef PNG_USER_MEM_SUPPORTED
- return (png_create_struct_2(type, NULL, NULL));
-}
-
-/* Alternate version of png_create_struct, for use with user-defined malloc. */
-PNG_FUNCTION(png_voidp /* PRIVATE */,
-png_create_struct_2,(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr),
- PNG_ALLOCATED)
-{
-# endif /* PNG_USER_MEM_SUPPORTED */
- png_size_t size;
- png_voidp struct_ptr;
-
- if (type == PNG_STRUCT_INFO)
- size = png_sizeof(png_info);
-
- else if (type == PNG_STRUCT_PNG)
- size = png_sizeof(png_struct);
-
- else
- return (png_get_copyright(NULL));
-
-# ifdef PNG_USER_MEM_SUPPORTED
- if (malloc_fn != NULL)
- {
- png_struct dummy_struct;
- png_structp png_ptr = &dummy_struct;
- png_ptr->mem_ptr=mem_ptr;
- struct_ptr = (*(malloc_fn))(png_ptr, (png_uint_32)size);
- }
-
- else
-# endif /* PNG_USER_MEM_SUPPORTED */
- struct_ptr = (png_voidp)farmalloc(size);
- if (struct_ptr != NULL)
- png_memset(struct_ptr, 0, size);
-
- return (struct_ptr);
-}
-
-/* Free memory allocated by a png_create_struct() call */
-void /* PRIVATE */
-png_destroy_struct(png_voidp struct_ptr)
-{
-# ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2(struct_ptr, NULL, NULL);
-}
-
-/* Free memory allocated by a png_create_struct() call */
-void /* PRIVATE */
-png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
- png_voidp mem_ptr)
-{
-# endif
- if (struct_ptr != NULL)
- {
-# ifdef PNG_USER_MEM_SUPPORTED
- if (free_fn != NULL)
- {
- png_struct dummy_struct;
- png_structp png_ptr = &dummy_struct;
- png_ptr->mem_ptr=mem_ptr;
- (*(free_fn))(png_ptr, struct_ptr);
- return;
- }
-
-# endif /* PNG_USER_MEM_SUPPORTED */
- farfree (struct_ptr);
- }
-}
-
-/* Allocate memory. For reasonable files, size should never exceed
- * 64K. However, zlib may allocate more then 64K if you don't tell
- * it not to. See zconf.h and png.h for more information. zlib does
- * need to allocate exactly 64K, so whatever you call here must
- * have the ability to do that.
- *
- * Borland seems to have a problem in DOS mode for exactly 64K.
- * It gives you a segment with an offset of 8 (perhaps to store its
- * memory stuff). zlib doesn't like this at all, so we have to
- * detect and deal with it. This code should not be needed in
- * Windows or OS/2 modes, and only in 16 bit mode. This code has
- * been updated by Alexander Lehmann for version 0.89 to waste less
- * memory.
- *
- * Note that we can't use png_size_t for the "size" declaration,
- * since on some systems a png_size_t is a 16-bit quantity, and as a
- * result, we would be truncating potentially larger memory requests
- * (which should cause a fatal error) and introducing major problems.
- */
-PNG_FUNCTION(png_voidp,PNGAPI
-png_calloc,(png_structp png_ptr, png_alloc_size_t size),PNG_ALLOCATED)
-{
- png_voidp ret;
-
- ret = (png_malloc(png_ptr, size));
-
- if (ret != NULL)
- png_memset(ret,0,(png_size_t)size);
-
- return (ret);
-}
-
-PNG_FUNCTION(png_voidp,PNGAPI
-png_malloc,(png_structp png_ptr, png_alloc_size_t size),PNG_ALLOCATED)
-{
- png_voidp ret;
-
- if (png_ptr == NULL || size == 0)
- return (NULL);
-
-# ifdef PNG_USER_MEM_SUPPORTED
- if (png_ptr->malloc_fn != NULL)
- ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
-
- else
- ret = (png_malloc_default(png_ptr, size));
-
- if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out of memory");
-
- return (ret);
-}
-
-PNG_FUNCTION(png_voidp,PNGAPI
-png_malloc_default,(png_structp png_ptr, png_alloc_size_t size),PNG_ALLOCATED)
-{
- png_voidp ret;
-# endif /* PNG_USER_MEM_SUPPORTED */
-
- if (png_ptr == NULL || size == 0)
- return (NULL);
-
-# ifdef PNG_MAX_MALLOC_64K
- if (size > (png_uint_32)65536L)
- {
- png_warning(png_ptr, "Cannot Allocate > 64K");
- ret = NULL;
- }
-
- else
-# endif
-
- if (size != (size_t)size)
- ret = NULL;
-
- else if (size == (png_uint_32)65536L)
- {
- if (png_ptr->offset_table == NULL)
- {
- /* Try to see if we need to do any of this fancy stuff */
- ret = farmalloc(size);
- if (ret == NULL || ((png_size_t)ret & 0xffff))
- {
- int num_blocks;
- png_uint_32 total_size;
- png_bytep table;
- int i;
- png_byte huge * hptr;
-
- if (ret != NULL)
- {
- farfree(ret);
- ret = NULL;
- }
-
- if (png_ptr->zlib_window_bits > 14)
- num_blocks = (int)(1 << (png_ptr->zlib_window_bits - 14));
-
- else
- num_blocks = 1;
-
- if (png_ptr->zlib_mem_level >= 7)
- num_blocks += (int)(1 << (png_ptr->zlib_mem_level - 7));
-
- else
- num_blocks++;
-
- total_size = ((png_uint_32)65536L) * (png_uint_32)num_blocks+16;
-
- table = farmalloc(total_size);
-
- if (table == NULL)
- {
-# ifndef PNG_USER_MEM_SUPPORTED
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out Of Memory"); /* Note "O", "M" */
-
- else
- png_warning(png_ptr, "Out Of Memory");
-# endif
- return (NULL);
- }
-
- if ((png_size_t)table & 0xfff0)
- {
-# ifndef PNG_USER_MEM_SUPPORTED
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr,
- "Farmalloc didn't return normalized pointer");
-
- else
- png_warning(png_ptr,
- "Farmalloc didn't return normalized pointer");
-# endif
- return (NULL);
- }
-
- png_ptr->offset_table = table;
- png_ptr->offset_table_ptr = farmalloc(num_blocks *
- png_sizeof(png_bytep));
-
- if (png_ptr->offset_table_ptr == NULL)
- {
-# ifndef PNG_USER_MEM_SUPPORTED
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out Of memory"); /* Note "O", "m" */
-
- else
- png_warning(png_ptr, "Out Of memory");
-# endif
- return (NULL);
- }
-
- hptr = (png_byte huge *)table;
- if ((png_size_t)hptr & 0xf)
- {
- hptr = (png_byte huge *)((long)(hptr) & 0xfffffff0L);
- hptr = hptr + 16L; /* "hptr += 16L" fails on Turbo C++ 3.0 */
- }
-
- for (i = 0; i < num_blocks; i++)
- {
- png_ptr->offset_table_ptr[i] = (png_bytep)hptr;
- hptr = hptr + (png_uint_32)65536L; /* "+=" fails on TC++3.0 */
- }
-
- png_ptr->offset_table_number = num_blocks;
- png_ptr->offset_table_count = 0;
- png_ptr->offset_table_count_free = 0;
- }
- }
-
- if (png_ptr->offset_table_count >= png_ptr->offset_table_number)
- {
-# ifndef PNG_USER_MEM_SUPPORTED
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out of Memory"); /* Note "o" and "M" */
-
- else
- png_warning(png_ptr, "Out of Memory");
-# endif
- return (NULL);
- }
-
- ret = png_ptr->offset_table_ptr[png_ptr->offset_table_count++];
- }
-
- else
- ret = farmalloc(size);
-
-# ifndef PNG_USER_MEM_SUPPORTED
- if (ret == NULL)
- {
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out of memory"); /* Note "o" and "m" */
-
- else
- png_warning(png_ptr, "Out of memory"); /* Note "o" and "m" */
- }
-# endif
-
- return (ret);
-}
-
-/* Free a pointer allocated by png_malloc(). In the default
- * configuration, png_ptr is not used, but is passed in case it
- * is needed. If ptr is NULL, return without taking any action.
- */
-void PNGAPI
-png_free(png_structp png_ptr, png_voidp ptr)
-{
- if (png_ptr == NULL || ptr == NULL)
- return;
-
-# ifdef PNG_USER_MEM_SUPPORTED
- if (png_ptr->free_fn != NULL)
- {
- (*(png_ptr->free_fn))(png_ptr, ptr);
- return;
- }
-
- else
- png_free_default(png_ptr, ptr);
-}
-
-void PNGAPI
-png_free_default(png_structp png_ptr, png_voidp ptr)
-{
-# endif /* PNG_USER_MEM_SUPPORTED */
-
- if (png_ptr == NULL || ptr == NULL)
- return;
-
- if (png_ptr->offset_table != NULL)
- {
- int i;
-
- for (i = 0; i < png_ptr->offset_table_count; i++)
- {
- if (ptr == png_ptr->offset_table_ptr[i])
- {
- ptr = NULL;
- png_ptr->offset_table_count_free++;
- break;
- }
- }
- if (png_ptr->offset_table_count_free == png_ptr->offset_table_count)
- {
- farfree(png_ptr->offset_table);
- farfree(png_ptr->offset_table_ptr);
- png_ptr->offset_table = NULL;
- png_ptr->offset_table_ptr = NULL;
- }
- }
-
- if (ptr != NULL)
- farfree(ptr);
-}
-
-#else /* Not the Borland DOS special memory handler */
-
-/* Allocate memory for a png_struct or a png_info. The malloc and
- memset can be replaced by a single call to calloc() if this is thought
- to improve performance noticably. */
-PNG_FUNCTION(png_voidp /* PRIVATE */,
-png_create_struct,(int type),PNG_ALLOCATED)
-{
-# ifdef PNG_USER_MEM_SUPPORTED
- return (png_create_struct_2(type, NULL, NULL));
-}
-
-/* Allocate memory for a png_struct or a png_info. The malloc and
- memset can be replaced by a single call to calloc() if this is thought
- to improve performance noticably. */
-PNG_FUNCTION(png_voidp /* PRIVATE */,
-png_create_struct_2,(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr),
- PNG_ALLOCATED)
-{
-# endif /* PNG_USER_MEM_SUPPORTED */
- png_size_t size;
- png_voidp struct_ptr;
-
- if (type == PNG_STRUCT_INFO)
- size = png_sizeof(png_info);
-
- else if (type == PNG_STRUCT_PNG)
- size = png_sizeof(png_struct);
-
- else
- return (NULL);
-
-# ifdef PNG_USER_MEM_SUPPORTED
- if (malloc_fn != NULL)
- {
- png_struct dummy_struct;
- png_structp png_ptr = &dummy_struct;
- png_ptr->mem_ptr=mem_ptr;
- struct_ptr = (*(malloc_fn))(png_ptr, size);
-
- if (struct_ptr != NULL)
- png_memset(struct_ptr, 0, size);
-
- return (struct_ptr);
- }
-# endif /* PNG_USER_MEM_SUPPORTED */
-
-# if defined(__TURBOC__) && !defined(__FLAT__)
- struct_ptr = (png_voidp)farmalloc(size);
-# else
-# if defined(_MSC_VER) && defined(MAXSEG_64K)
- struct_ptr = (png_voidp)halloc(size, 1);
-# else
- struct_ptr = (png_voidp)malloc(size);
-# endif
-# endif
-
- if (struct_ptr != NULL)
- png_memset(struct_ptr, 0, size);
-
- return (struct_ptr);
-}
-
-
-/* Free memory allocated by a png_create_struct() call */
-void /* PRIVATE */
-png_destroy_struct(png_voidp struct_ptr)
-{
-# ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2(struct_ptr, NULL, NULL);
-}
-
-/* Free memory allocated by a png_create_struct() call */
-void /* PRIVATE */
-png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
- png_voidp mem_ptr)
-{
-# endif /* PNG_USER_MEM_SUPPORTED */
- if (struct_ptr != NULL)
- {
-# ifdef PNG_USER_MEM_SUPPORTED
- if (free_fn != NULL)
- {
- png_struct dummy_struct;
- png_structp png_ptr = &dummy_struct;
- png_ptr->mem_ptr=mem_ptr;
- (*(free_fn))(png_ptr, struct_ptr);
- return;
- }
-# endif /* PNG_USER_MEM_SUPPORTED */
-# if defined(__TURBOC__) && !defined(__FLAT__)
- farfree(struct_ptr);
-
-# else
-# if defined(_MSC_VER) && defined(MAXSEG_64K)
- hfree(struct_ptr);
-
-# else
- free(struct_ptr);
-
-# endif
-# endif
- }
-}
-
-/* Allocate memory. For reasonable files, size should never exceed
- * 64K. However, zlib may allocate more then 64K if you don't tell
- * it not to. See zconf.h and png.h for more information. zlib does
- * need to allocate exactly 64K, so whatever you call here must
- * have the ability to do that.
- */
-
-PNG_FUNCTION(png_voidp,PNGAPI
-png_calloc,(png_structp png_ptr, png_alloc_size_t size),PNG_ALLOCATED)
-{
- png_voidp ret;
-
- ret = (png_malloc(png_ptr, size));
-
- if (ret != NULL)
- png_memset(ret,0,(png_size_t)size);
-
- return (ret);
-}
-
-PNG_FUNCTION(png_voidp,PNGAPI
-png_malloc,(png_structp png_ptr, png_alloc_size_t size),PNG_ALLOCATED)
-{
- png_voidp ret;
-
-# ifdef PNG_USER_MEM_SUPPORTED
- if (png_ptr == NULL || size == 0)
- return (NULL);
-
- if (png_ptr->malloc_fn != NULL)
- ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
-
- else
- ret = (png_malloc_default(png_ptr, size));
-
- if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out of Memory");
-
- return (ret);
-}
-
-PNG_FUNCTION(png_voidp,PNGAPI
-png_malloc_default,(png_structp png_ptr, png_alloc_size_t size),PNG_ALLOCATED)
-{
- png_voidp ret;
-# endif /* PNG_USER_MEM_SUPPORTED */
-
- if (png_ptr == NULL || size == 0)
- return (NULL);
-
-# ifdef PNG_MAX_MALLOC_64K
- if (size > (png_uint_32)65536L)
- {
-# ifndef PNG_USER_MEM_SUPPORTED
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Cannot Allocate > 64K");
-
- else
-# endif
- return NULL;
- }
-# endif
-
- /* Check for overflow */
-# if defined(__TURBOC__) && !defined(__FLAT__)
-
- if (size != (unsigned long)size)
- ret = NULL;
-
- else
- ret = farmalloc(size);
-
-# else
-# if defined(_MSC_VER) && defined(MAXSEG_64K)
- if (size != (unsigned long)size)
- ret = NULL;
-
- else
- ret = halloc(size, 1);
-
-# else
- if (size != (size_t)size)
- ret = NULL;
-
- else
- ret = malloc((size_t)size);
-# endif
-# endif
-
-# ifndef PNG_USER_MEM_SUPPORTED
- if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out of Memory");
-# endif
-
- return (ret);
-}
-
-/* Free a pointer allocated by png_malloc(). If ptr is NULL, return
- * without taking any action.
- */
-void PNGAPI
-png_free(png_structp png_ptr, png_voidp ptr)
-{
- if (png_ptr == NULL || ptr == NULL)
- return;
-
-# ifdef PNG_USER_MEM_SUPPORTED
- if (png_ptr->free_fn != NULL)
- {
- (*(png_ptr->free_fn))(png_ptr, ptr);
- return;
- }
-
- else
- png_free_default(png_ptr, ptr);
-}
-
-void PNGAPI
-png_free_default(png_structp png_ptr, png_voidp ptr)
-{
- if (png_ptr == NULL || ptr == NULL)
- return;
-
-# endif /* PNG_USER_MEM_SUPPORTED */
-
-# if defined(__TURBOC__) && !defined(__FLAT__)
- farfree(ptr);
-
-# else
-# if defined(_MSC_VER) && defined(MAXSEG_64K)
- hfree(ptr);
-
-# else
- free(ptr);
-
-# endif
-# endif
-}
-#endif /* Not Borland DOS special memory handler */
-
-/* This function was added at libpng version 1.2.3. The png_malloc_warn()
- * function will set up png_malloc() to issue a png_warning and return NULL
- * instead of issuing a png_error, if it fails to allocate the requested
- * memory.
- */
-PNG_FUNCTION(png_voidp,PNGAPI
-png_malloc_warn,(png_structp png_ptr, png_alloc_size_t size),PNG_ALLOCATED)
-{
- png_voidp ptr;
- png_uint_32 save_flags;
- if (png_ptr == NULL)
- return (NULL);
-
- save_flags = png_ptr->flags;
- png_ptr->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
- ptr = (png_voidp)png_malloc((png_structp)png_ptr, size);
- png_ptr->flags=save_flags;
- return(ptr);
-}
-
-
-#ifdef PNG_USER_MEM_SUPPORTED
-/* This function is called when the application wants to use another method
- * of allocating and freeing memory.
- */
-void PNGAPI
-png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
- malloc_fn, png_free_ptr free_fn)
-{
- if (png_ptr != NULL)
- {
- png_ptr->mem_ptr = mem_ptr;
- png_ptr->malloc_fn = malloc_fn;
- png_ptr->free_fn = free_fn;
- }
-}
-
-/* This function returns a pointer to the mem_ptr associated with the user
- * functions. The application should free any memory associated with this
- * pointer before png_write_destroy and png_read_destroy are called.
- */
-png_voidp PNGAPI
-png_get_mem_ptr(png_const_structp png_ptr)
-{
- if (png_ptr == NULL)
- return (NULL);
-
- return ((png_voidp)png_ptr->mem_ptr);
-}
-#endif /* PNG_USER_MEM_SUPPORTED */
-#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
+
+/* pngmem.c - stub functions for memory allocation
+ *
+ * Last changed in libpng 1.2.41 [February 25, 2010]
+ * Copyright (c) 1998-2010 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * This file provides a location for all memory allocation. Users who
+ * need special memory handling are expected to supply replacement
+ * functions for png_malloc() and png_free(), and to use
+ * png_create_read_struct_2() and png_create_write_struct_2() to
+ * identify the replacement functions.
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+
+/* Borland DOS special memory handler */
+#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
+/* If you change this, be sure to change the one in png.h also */
+
+/* Allocate memory for a png_struct. The malloc and memset can be replaced
+ by a single call to calloc() if this is thought to improve performance. */
+png_voidp /* PRIVATE */
+png_create_struct(int type)
+{
+#ifdef PNG_USER_MEM_SUPPORTED
+ return (png_create_struct_2(type, png_malloc_ptr_NULL, png_voidp_NULL));
+}
+
+/* Alternate version of png_create_struct, for use with user-defined malloc. */
+png_voidp /* PRIVATE */
+png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)
+{
+#endif /* PNG_USER_MEM_SUPPORTED */
+ png_size_t size;
+ png_voidp struct_ptr;
+
+ if (type == PNG_STRUCT_INFO)
+ size = png_sizeof(png_info);
+ else if (type == PNG_STRUCT_PNG)
+ size = png_sizeof(png_struct);
+ else
+ return (png_get_copyright(NULL));
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ if (malloc_fn != NULL)
+ {
+ png_struct dummy_struct;
+ png_structp png_ptr = &dummy_struct;
+ png_ptr->mem_ptr=mem_ptr;
+ struct_ptr = (*(malloc_fn))(png_ptr, (png_uint_32)size);
+ }
+ else
+#endif /* PNG_USER_MEM_SUPPORTED */
+ struct_ptr = (png_voidp)farmalloc(size);
+ if (struct_ptr != NULL)
+ png_memset(struct_ptr, 0, size);
+ return (struct_ptr);
+}
+
+/* Free memory allocated by a png_create_struct() call */
+void /* PRIVATE */
+png_destroy_struct(png_voidp struct_ptr)
+{
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_destroy_struct_2(struct_ptr, png_free_ptr_NULL, png_voidp_NULL);
+}
+
+/* Free memory allocated by a png_create_struct() call */
+void /* PRIVATE */
+png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
+ png_voidp mem_ptr)
+{
+#endif
+ if (struct_ptr != NULL)
+ {
+#ifdef PNG_USER_MEM_SUPPORTED
+ if (free_fn != NULL)
+ {
+ png_struct dummy_struct;
+ png_structp png_ptr = &dummy_struct;
+ png_ptr->mem_ptr=mem_ptr;
+ (*(free_fn))(png_ptr, struct_ptr);
+ return;
+ }
+#endif /* PNG_USER_MEM_SUPPORTED */
+ farfree (struct_ptr);
+ }
+}
+
+/* Allocate memory. For reasonable files, size should never exceed
+ * 64K. However, zlib may allocate more then 64K if you don't tell
+ * it not to. See zconf.h and png.h for more information. zlib does
+ * need to allocate exactly 64K, so whatever you call here must
+ * have the ability to do that.
+ *
+ * Borland seems to have a problem in DOS mode for exactly 64K.
+ * It gives you a segment with an offset of 8 (perhaps to store its
+ * memory stuff). zlib doesn't like this at all, so we have to
+ * detect and deal with it. This code should not be needed in
+ * Windows or OS/2 modes, and only in 16 bit mode. This code has
+ * been updated by Alexander Lehmann for version 0.89 to waste less
+ * memory.
+ *
+ * Note that we can't use png_size_t for the "size" declaration,
+ * since on some systems a png_size_t is a 16-bit quantity, and as a
+ * result, we would be truncating potentially larger memory requests
+ * (which should cause a fatal error) and introducing major problems.
+ */
+png_voidp /* PRIVATE */
+png_calloc(png_structp png_ptr, png_uint_32 size)
+{
+ png_voidp ret;
+
+ ret = (png_malloc(png_ptr, size));
+ if (ret != NULL)
+ png_memset(ret,0,(png_size_t)size);
+ return (ret);
+}
+
+png_voidp PNGAPI
+png_malloc(png_structp png_ptr, png_uint_32 size)
+{
+ png_voidp ret;
+
+ if (png_ptr == NULL || size == 0)
+ return (NULL);
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ if (png_ptr->malloc_fn != NULL)
+ ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
+ else
+ ret = (png_malloc_default(png_ptr, size));
+ if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
+ png_error(png_ptr, "Out of memory!");
+ return (ret);
+}
+
+png_voidp PNGAPI
+png_malloc_default(png_structp png_ptr, png_uint_32 size)
+{
+ png_voidp ret;
+#endif /* PNG_USER_MEM_SUPPORTED */
+
+ if (png_ptr == NULL || size == 0)
+ return (NULL);
+
+#ifdef PNG_MAX_MALLOC_64K
+ if (size > (png_uint_32)65536L)
+ {
+ png_warning(png_ptr, "Cannot Allocate > 64K");
+ ret = NULL;
+ }
+ else
+#endif
+
+ if (size != (size_t)size)
+ ret = NULL;
+ else if (size == (png_uint_32)65536L)
+ {
+ if (png_ptr->offset_table == NULL)
+ {
+ /* Try to see if we need to do any of this fancy stuff */
+ ret = farmalloc(size);
+ if (ret == NULL || ((png_size_t)ret & 0xffff))
+ {
+ int num_blocks;
+ png_uint_32 total_size;
+ png_bytep table;
+ int i;
+ png_byte huge * hptr;
+
+ if (ret != NULL)
+ {
+ farfree(ret);
+ ret = NULL;
+ }
+
+ if (png_ptr->zlib_window_bits > 14)
+ num_blocks = (int)(1 << (png_ptr->zlib_window_bits - 14));
+ else
+ num_blocks = 1;
+ if (png_ptr->zlib_mem_level >= 7)
+ num_blocks += (int)(1 << (png_ptr->zlib_mem_level - 7));
+ else
+ num_blocks++;
+
+ total_size = ((png_uint_32)65536L) * (png_uint_32)num_blocks+16;
+
+ table = farmalloc(total_size);
+
+ if (table == NULL)
+ {
+#ifndef PNG_USER_MEM_SUPPORTED
+ if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
+ png_error(png_ptr, "Out Of Memory."); /* Note "O", "M" */
+ else
+ png_warning(png_ptr, "Out Of Memory.");
+#endif
+ return (NULL);
+ }
+
+ if ((png_size_t)table & 0xfff0)
+ {
+#ifndef PNG_USER_MEM_SUPPORTED
+ if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
+ png_error(png_ptr,
+ "Farmalloc didn't return normalized pointer");
+ else
+ png_warning(png_ptr,
+ "Farmalloc didn't return normalized pointer");
+#endif
+ return (NULL);
+ }
+
+ png_ptr->offset_table = table;
+ png_ptr->offset_table_ptr = farmalloc(num_blocks *
+ png_sizeof(png_bytep));
+
+ if (png_ptr->offset_table_ptr == NULL)
+ {
+#ifndef PNG_USER_MEM_SUPPORTED
+ if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
+ png_error(png_ptr, "Out Of memory."); /* Note "O", "m" */
+ else
+ png_warning(png_ptr, "Out Of memory.");
+#endif
+ return (NULL);
+ }
+
+ hptr = (png_byte huge *)table;
+ if ((png_size_t)hptr & 0xf)
+ {
+ hptr = (png_byte huge *)((long)(hptr) & 0xfffffff0L);
+ hptr = hptr + 16L; /* "hptr += 16L" fails on Turbo C++ 3.0 */
+ }
+ for (i = 0; i < num_blocks; i++)
+ {
+ png_ptr->offset_table_ptr[i] = (png_bytep)hptr;
+ hptr = hptr + (png_uint_32)65536L; /* "+=" fails on TC++3.0 */
+ }
+
+ png_ptr->offset_table_number = num_blocks;
+ png_ptr->offset_table_count = 0;
+ png_ptr->offset_table_count_free = 0;
+ }
+ }
+
+ if (png_ptr->offset_table_count >= png_ptr->offset_table_number)
+ {
+#ifndef PNG_USER_MEM_SUPPORTED
+ if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
+ png_error(png_ptr, "Out of Memory."); /* Note "o" and "M" */
+ else
+ png_warning(png_ptr, "Out of Memory.");
+#endif
+ return (NULL);
+ }
+
+ ret = png_ptr->offset_table_ptr[png_ptr->offset_table_count++];
+ }
+ else
+ ret = farmalloc(size);
+
+#ifndef PNG_USER_MEM_SUPPORTED
+ if (ret == NULL)
+ {
+ if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
+ png_error(png_ptr, "Out of memory."); /* Note "o" and "m" */
+ else
+ png_warning(png_ptr, "Out of memory."); /* Note "o" and "m" */
+ }
+#endif
+
+ return (ret);
+}
+
+/* Free a pointer allocated by png_malloc(). In the default
+ * configuration, png_ptr is not used, but is passed in case it
+ * is needed. If ptr is NULL, return without taking any action.
+ */
+void PNGAPI
+png_free(png_structp png_ptr, png_voidp ptr)
+{
+ if (png_ptr == NULL || ptr == NULL)
+ return;
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ if (png_ptr->free_fn != NULL)
+ {
+ (*(png_ptr->free_fn))(png_ptr, ptr);
+ return;
+ }
+ else
+ png_free_default(png_ptr, ptr);
+}
+
+void PNGAPI
+png_free_default(png_structp png_ptr, png_voidp ptr)
+{
+#endif /* PNG_USER_MEM_SUPPORTED */
+
+ if (png_ptr == NULL || ptr == NULL)
+ return;
+
+ if (png_ptr->offset_table != NULL)
+ {
+ int i;
+
+ for (i = 0; i < png_ptr->offset_table_count; i++)
+ {
+ if (ptr == png_ptr->offset_table_ptr[i])
+ {
+ ptr = NULL;
+ png_ptr->offset_table_count_free++;
+ break;
+ }
+ }
+ if (png_ptr->offset_table_count_free == png_ptr->offset_table_count)
+ {
+ farfree(png_ptr->offset_table);
+ farfree(png_ptr->offset_table_ptr);
+ png_ptr->offset_table = NULL;
+ png_ptr->offset_table_ptr = NULL;
+ }
+ }
+
+ if (ptr != NULL)
+ {
+ farfree(ptr);
+ }
+}
+
+#else /* Not the Borland DOS special memory handler */
+
+/* Allocate memory for a png_struct or a png_info. The malloc and
+ memset can be replaced by a single call to calloc() if this is thought
+ to improve performance noticably. */
+png_voidp /* PRIVATE */
+png_create_struct(int type)
+{
+#ifdef PNG_USER_MEM_SUPPORTED
+ return (png_create_struct_2(type, png_malloc_ptr_NULL, png_voidp_NULL));
+}
+
+/* Allocate memory for a png_struct or a png_info. The malloc and
+ memset can be replaced by a single call to calloc() if this is thought
+ to improve performance noticably. */
+png_voidp /* PRIVATE */
+png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)
+{
+#endif /* PNG_USER_MEM_SUPPORTED */
+ png_size_t size;
+ png_voidp struct_ptr;
+
+ if (type == PNG_STRUCT_INFO)
+ size = png_sizeof(png_info);
+ else if (type == PNG_STRUCT_PNG)
+ size = png_sizeof(png_struct);
+ else
+ return (NULL);
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ if (malloc_fn != NULL)
+ {
+ png_struct dummy_struct;
+ png_structp png_ptr = &dummy_struct;
+ png_ptr->mem_ptr=mem_ptr;
+ struct_ptr = (*(malloc_fn))(png_ptr, size);
+ if (struct_ptr != NULL)
+ png_memset(struct_ptr, 0, size);
+ return (struct_ptr);
+ }
+#endif /* PNG_USER_MEM_SUPPORTED */
+
+#if defined(__TURBOC__) && !defined(__FLAT__)
+ struct_ptr = (png_voidp)farmalloc(size);
+#else
+# if defined(_MSC_VER) && defined(MAXSEG_64K)
+ struct_ptr = (png_voidp)halloc(size, 1);
+# else
+ struct_ptr = (png_voidp)malloc(size);
+# endif
+#endif
+ if (struct_ptr != NULL)
+ png_memset(struct_ptr, 0, size);
+
+ return (struct_ptr);
+}
+
+
+/* Free memory allocated by a png_create_struct() call */
+void /* PRIVATE */
+png_destroy_struct(png_voidp struct_ptr)
+{
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_destroy_struct_2(struct_ptr, png_free_ptr_NULL, png_voidp_NULL);
+}
+
+/* Free memory allocated by a png_create_struct() call */
+void /* PRIVATE */
+png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
+ png_voidp mem_ptr)
+{
+#endif /* PNG_USER_MEM_SUPPORTED */
+ if (struct_ptr != NULL)
+ {
+#ifdef PNG_USER_MEM_SUPPORTED
+ if (free_fn != NULL)
+ {
+ png_struct dummy_struct;
+ png_structp png_ptr = &dummy_struct;
+ png_ptr->mem_ptr=mem_ptr;
+ (*(free_fn))(png_ptr, struct_ptr);
+ return;
+ }
+#endif /* PNG_USER_MEM_SUPPORTED */
+#if defined(__TURBOC__) && !defined(__FLAT__)
+ farfree(struct_ptr);
+#else
+# if defined(_MSC_VER) && defined(MAXSEG_64K)
+ hfree(struct_ptr);
+# else
+ free(struct_ptr);
+# endif
+#endif
+ }
+}
+
+/* Allocate memory. For reasonable files, size should never exceed
+ * 64K. However, zlib may allocate more then 64K if you don't tell
+ * it not to. See zconf.h and png.h for more information. zlib does
+ * need to allocate exactly 64K, so whatever you call here must
+ * have the ability to do that.
+ */
+
+png_voidp /* PRIVATE */
+png_calloc(png_structp png_ptr, png_uint_32 size)
+{
+ png_voidp ret;
+
+ ret = (png_malloc(png_ptr, size));
+ if (ret != NULL)
+ png_memset(ret,0,(png_size_t)size);
+ return (ret);
+}
+
+png_voidp PNGAPI
+png_malloc(png_structp png_ptr, png_uint_32 size)
+{
+ png_voidp ret;
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ if (png_ptr == NULL || size == 0)
+ return (NULL);
+
+ if (png_ptr->malloc_fn != NULL)
+ ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
+ else
+ ret = (png_malloc_default(png_ptr, size));
+ if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
+ png_error(png_ptr, "Out of Memory!");
+ return (ret);
+}
+
+png_voidp PNGAPI
+png_malloc_default(png_structp png_ptr, png_uint_32 size)
+{
+ png_voidp ret;
+#endif /* PNG_USER_MEM_SUPPORTED */
+
+ if (png_ptr == NULL || size == 0)
+ return (NULL);
+
+#ifdef PNG_MAX_MALLOC_64K
+ if (size > (png_uint_32)65536L)
+ {
+#ifndef PNG_USER_MEM_SUPPORTED
+ if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
+ png_error(png_ptr, "Cannot Allocate > 64K");
+ else
+#endif
+ return NULL;
+ }
+#endif
+
+ /* Check for overflow */
+#if defined(__TURBOC__) && !defined(__FLAT__)
+ if (size != (unsigned long)size)
+ ret = NULL;
+ else
+ ret = farmalloc(size);
+#else
+# if defined(_MSC_VER) && defined(MAXSEG_64K)
+ if (size != (unsigned long)size)
+ ret = NULL;
+ else
+ ret = halloc(size, 1);
+# else
+ if (size != (size_t)size)
+ ret = NULL;
+ else
+ ret = malloc((size_t)size);
+# endif
+#endif
+
+#ifndef PNG_USER_MEM_SUPPORTED
+ if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
+ png_error(png_ptr, "Out of Memory");
+#endif
+
+ return (ret);
+}
+
+/* Free a pointer allocated by png_malloc(). If ptr is NULL, return
+ * without taking any action.
+ */
+void PNGAPI
+png_free(png_structp png_ptr, png_voidp ptr)
+{
+ if (png_ptr == NULL || ptr == NULL)
+ return;
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ if (png_ptr->free_fn != NULL)
+ {
+ (*(png_ptr->free_fn))(png_ptr, ptr);
+ return;
+ }
+ else
+ png_free_default(png_ptr, ptr);
+}
+void PNGAPI
+png_free_default(png_structp png_ptr, png_voidp ptr)
+{
+ if (png_ptr == NULL || ptr == NULL)
+ return;
+
+#endif /* PNG_USER_MEM_SUPPORTED */
+
+#if defined(__TURBOC__) && !defined(__FLAT__)
+ farfree(ptr);
+#else
+# if defined(_MSC_VER) && defined(MAXSEG_64K)
+ hfree(ptr);
+# else
+ free(ptr);
+# endif
+#endif
+}
+
+#endif /* Not Borland DOS special memory handler */
+
+#ifdef PNG_1_0_X
+# define png_malloc_warn png_malloc
+#else
+/* This function was added at libpng version 1.2.3. The png_malloc_warn()
+ * function will set up png_malloc() to issue a png_warning and return NULL
+ * instead of issuing a png_error, if it fails to allocate the requested
+ * memory.
+ */
+png_voidp PNGAPI
+png_malloc_warn(png_structp png_ptr, png_uint_32 size)
+{
+ png_voidp ptr;
+ png_uint_32 save_flags;
+ if (png_ptr == NULL)
+ return (NULL);
+
+ save_flags = png_ptr->flags;
+ png_ptr->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
+ ptr = (png_voidp)png_malloc((png_structp)png_ptr, size);
+ png_ptr->flags=save_flags;
+ return(ptr);
+}
+#endif
+
+png_voidp PNGAPI
+png_memcpy_check (png_structp png_ptr, png_voidp s1, png_voidp s2,
+ png_uint_32 length)
+{
+ png_size_t size;
+
+ size = (png_size_t)length;
+ if ((png_uint_32)size != length)
+ png_error(png_ptr, "Overflow in png_memcpy_check.");
+
+ return(png_memcpy (s1, s2, size));
+}
+
+png_voidp PNGAPI
+png_memset_check (png_structp png_ptr, png_voidp s1, int value,
+ png_uint_32 length)
+{
+ png_size_t size;
+
+ size = (png_size_t)length;
+ if ((png_uint_32)size != length)
+ png_error(png_ptr, "Overflow in png_memset_check.");
+
+ return (png_memset (s1, value, size));
+
+}
+
+#ifdef PNG_USER_MEM_SUPPORTED
+/* This function is called when the application wants to use another method
+ * of allocating and freeing memory.
+ */
+void PNGAPI
+png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
+ malloc_fn, png_free_ptr free_fn)
+{
+ if (png_ptr != NULL)
+ {
+ png_ptr->mem_ptr = mem_ptr;
+ png_ptr->malloc_fn = malloc_fn;
+ png_ptr->free_fn = free_fn;
+ }
+}
+
+/* This function returns a pointer to the mem_ptr associated with the user
+ * functions. The application should free any memory associated with this
+ * pointer before png_write_destroy and png_read_destroy are called.
+ */
+png_voidp PNGAPI
+png_get_mem_ptr(png_structp png_ptr)
+{
+ if (png_ptr == NULL)
+ return (NULL);
+ return ((png_voidp)png_ptr->mem_ptr);
+}
+#endif /* PNG_USER_MEM_SUPPORTED */
+#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/Externals/libpng/pngpread.c b/Externals/libpng/pngpread.c
index 7b1149bab1..9d40c31366 100644
--- a/Externals/libpng/pngpread.c
+++ b/Externals/libpng/pngpread.c
@@ -1,1854 +1,1241 @@
-
-/* pngpread.c - read a png file in push mode
- *
- * Last changed in libpng 1.5.1 [February 3, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- */
-
-#include "pngpriv.h"
-
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-
-/* Push model modes */
-#define PNG_READ_SIG_MODE 0
-#define PNG_READ_CHUNK_MODE 1
-#define PNG_READ_IDAT_MODE 2
-#define PNG_SKIP_MODE 3
-#define PNG_READ_tEXt_MODE 4
-#define PNG_READ_zTXt_MODE 5
-#define PNG_READ_DONE_MODE 6
-#define PNG_READ_iTXt_MODE 7
-#define PNG_ERROR_MODE 8
-
-void PNGAPI
-png_process_data(png_structp png_ptr, png_infop info_ptr,
- png_bytep buffer, png_size_t buffer_size)
-{
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- png_push_restore_buffer(png_ptr, buffer, buffer_size);
-
- while (png_ptr->buffer_size)
- {
- png_process_some_data(png_ptr, info_ptr);
- }
-}
-
-png_size_t PNGAPI
-png_process_data_pause(png_structp png_ptr, int save)
-{
- if (png_ptr != NULL)
- {
- /* It's easiest for the caller if we do the save, then the caller doesn't
- * have to supply the same data again:
- */
- if (save)
- png_push_save_buffer(png_ptr);
- else
- {
- /* This includes any pending saved bytes: */
- png_size_t remaining = png_ptr->buffer_size;
- png_ptr->buffer_size = 0;
-
- /* So subtract the saved buffer size, unless all the data
- * is actually 'saved', in which case we just return 0
- */
- if (png_ptr->save_buffer_size < remaining)
- return remaining - png_ptr->save_buffer_size;
- }
- }
-
- return 0;
-}
-
-png_uint_32 PNGAPI
-png_process_data_skip(png_structp png_ptr)
-{
- png_uint_32 remaining = 0;
-
- if (png_ptr != NULL && png_ptr->process_mode == PNG_SKIP_MODE &&
- png_ptr->skip_length > 0)
- {
- /* At the end of png_process_data the buffer size must be 0 (see the loop
- * above) so we can detect a broken call here:
- */
- if (png_ptr->buffer_size != 0)
- png_error(png_ptr,
- "png_process_data_skip called inside png_process_data");
-
- /* If is impossible for there to be a saved buffer at this point -
- * otherwise we could not be in SKIP mode. This will also happen if
- * png_process_skip is called inside png_process_data (but only very
- * rarely.)
- */
- if (png_ptr->save_buffer_size != 0)
- png_error(png_ptr, "png_process_data_skip called with saved data");
-
- remaining = png_ptr->skip_length;
- png_ptr->skip_length = 0;
- png_ptr->process_mode = PNG_READ_CHUNK_MODE;
- }
-
- return remaining;
-}
-
-/* What we do with the incoming data depends on what we were previously
- * doing before we ran out of data...
- */
-void /* PRIVATE */
-png_process_some_data(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr == NULL)
- return;
-
- switch (png_ptr->process_mode)
- {
- case PNG_READ_SIG_MODE:
- {
- png_push_read_sig(png_ptr, info_ptr);
- break;
- }
-
- case PNG_READ_CHUNK_MODE:
- {
- png_push_read_chunk(png_ptr, info_ptr);
- break;
- }
-
- case PNG_READ_IDAT_MODE:
- {
- png_push_read_IDAT(png_ptr);
- break;
- }
-
-#ifdef PNG_READ_tEXt_SUPPORTED
- case PNG_READ_tEXt_MODE:
- {
- png_push_read_tEXt(png_ptr, info_ptr);
- break;
- }
-
-#endif
-#ifdef PNG_READ_zTXt_SUPPORTED
- case PNG_READ_zTXt_MODE:
- {
- png_push_read_zTXt(png_ptr, info_ptr);
- break;
- }
-
-#endif
-#ifdef PNG_READ_iTXt_SUPPORTED
- case PNG_READ_iTXt_MODE:
- {
- png_push_read_iTXt(png_ptr, info_ptr);
- break;
- }
-
-#endif
- case PNG_SKIP_MODE:
- {
- png_push_crc_finish(png_ptr);
- break;
- }
-
- default:
- {
- png_ptr->buffer_size = 0;
- break;
- }
- }
-}
-
-/* Read any remaining signature bytes from the stream and compare them with
- * the correct PNG signature. It is possible that this routine is called
- * with bytes already read from the signature, either because they have been
- * checked by the calling application, or because of multiple calls to this
- * routine.
- */
-void /* PRIVATE */
-png_push_read_sig(png_structp png_ptr, png_infop info_ptr)
-{
- png_size_t num_checked = png_ptr->sig_bytes,
- num_to_check = 8 - num_checked;
-
- if (png_ptr->buffer_size < num_to_check)
- {
- num_to_check = png_ptr->buffer_size;
- }
-
- png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]),
- num_to_check);
- png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes + num_to_check);
-
- if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check))
- {
- if (num_checked < 4 &&
- png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4))
- png_error(png_ptr, "Not a PNG file");
-
- else
- png_error(png_ptr, "PNG file corrupted by ASCII conversion");
- }
- else
- {
- if (png_ptr->sig_bytes >= 8)
- {
- png_ptr->process_mode = PNG_READ_CHUNK_MODE;
- }
- }
-}
-
-void /* PRIVATE */
-png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
-{
- PNG_IHDR;
- PNG_IDAT;
- PNG_IEND;
- PNG_PLTE;
-#ifdef PNG_READ_bKGD_SUPPORTED
- PNG_bKGD;
-#endif
-#ifdef PNG_READ_cHRM_SUPPORTED
- PNG_cHRM;
-#endif
-#ifdef PNG_READ_gAMA_SUPPORTED
- PNG_gAMA;
-#endif
-#ifdef PNG_READ_hIST_SUPPORTED
- PNG_hIST;
-#endif
-#ifdef PNG_READ_iCCP_SUPPORTED
- PNG_iCCP;
-#endif
-#ifdef PNG_READ_iTXt_SUPPORTED
- PNG_iTXt;
-#endif
-#ifdef PNG_READ_oFFs_SUPPORTED
- PNG_oFFs;
-#endif
-#ifdef PNG_READ_pCAL_SUPPORTED
- PNG_pCAL;
-#endif
-#ifdef PNG_READ_pHYs_SUPPORTED
- PNG_pHYs;
-#endif
-#ifdef PNG_READ_sBIT_SUPPORTED
- PNG_sBIT;
-#endif
-#ifdef PNG_READ_sCAL_SUPPORTED
- PNG_sCAL;
-#endif
-#ifdef PNG_READ_sRGB_SUPPORTED
- PNG_sRGB;
-#endif
-#ifdef PNG_READ_sPLT_SUPPORTED
- PNG_sPLT;
-#endif
-#ifdef PNG_READ_tEXt_SUPPORTED
- PNG_tEXt;
-#endif
-#ifdef PNG_READ_tIME_SUPPORTED
- PNG_tIME;
-#endif
-#ifdef PNG_READ_tRNS_SUPPORTED
- PNG_tRNS;
-#endif
-#ifdef PNG_READ_zTXt_SUPPORTED
- PNG_zTXt;
-#endif
-
- /* First we make sure we have enough data for the 4 byte chunk name
- * and the 4 byte chunk length before proceeding with decoding the
- * chunk data. To fully decode each of these chunks, we also make
- * sure we have enough data in the buffer for the 4 byte CRC at the
- * end of every chunk (except IDAT, which is handled separately).
- */
- if (!(png_ptr->mode & PNG_HAVE_CHUNK_HEADER))
- {
- png_byte chunk_length[4];
-
- if (png_ptr->buffer_size < 8)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_push_fill_buffer(png_ptr, chunk_length, 4);
- png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length);
- png_reset_crc(png_ptr);
- png_crc_read(png_ptr, png_ptr->chunk_name, 4);
- png_check_chunk_name(png_ptr, png_ptr->chunk_name);
- png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
- }
-
- if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
- if (png_ptr->mode & PNG_AFTER_IDAT)
- png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
-
- if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4))
- {
- if (png_ptr->push_length != 13)
- png_error(png_ptr, "Invalid IHDR length");
-
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length);
- }
-
- else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length);
-
- png_ptr->process_mode = PNG_READ_DONE_MODE;
- png_push_have_end(png_ptr, info_ptr);
- }
-
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
- else if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
- png_ptr->mode |= PNG_HAVE_IDAT;
-
- png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length);
-
- if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
- png_ptr->mode |= PNG_HAVE_PLTE;
-
- else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
- {
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before IDAT");
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
- !(png_ptr->mode & PNG_HAVE_PLTE))
- png_error(png_ptr, "Missing PLTE before IDAT");
- }
- }
-
-#endif
- else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
- png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length);
- }
-
- else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
- {
- /* If we reach an IDAT chunk, this means we have read all of the
- * header chunks, and we can start reading the image (or if this
- * is called after the image has been read - we have an error).
- */
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before IDAT");
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
- !(png_ptr->mode & PNG_HAVE_PLTE))
- png_error(png_ptr, "Missing PLTE before IDAT");
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- if (!(png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
- if (png_ptr->push_length == 0)
- return;
-
- if (png_ptr->mode & PNG_AFTER_IDAT)
- png_benign_error(png_ptr, "Too many IDATs found");
- }
-
- png_ptr->idat_size = png_ptr->push_length;
- png_ptr->mode |= PNG_HAVE_IDAT;
- png_ptr->process_mode = PNG_READ_IDAT_MODE;
- png_push_have_info(png_ptr, info_ptr);
- png_ptr->zstream.avail_out =
- (uInt) PNG_ROWBYTES(png_ptr->pixel_depth,
- png_ptr->iwidth) + 1;
- png_ptr->zstream.next_out = png_ptr->row_buf;
- return;
- }
-
-#ifdef PNG_READ_gAMA_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_sBIT_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_cHRM_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_sRGB_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_iCCP_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_iCCP, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_iCCP(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_sPLT_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_sPLT, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_sPLT(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_tRNS_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_bKGD_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_hIST_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_hIST(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_pHYs_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_pHYs, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_pHYs(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_oFFs_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_oFFs, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_oFFs(png_ptr, info_ptr, png_ptr->push_length);
- }
-#endif
-
-#ifdef PNG_READ_pCAL_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_pCAL(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_sCAL_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_sCAL, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_sCAL(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_tIME_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_tIME, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_handle_tIME(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_tEXt_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_tEXt, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_push_handle_tEXt(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_zTXt_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_zTXt, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_push_handle_zTXt(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
-#ifdef PNG_READ_iTXt_SUPPORTED
- else if (!png_memcmp(png_ptr->chunk_name, png_iTXt, 4))
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_push_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length);
- }
-
-#endif
- else
- {
- if (png_ptr->push_length + 4 > png_ptr->buffer_size)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
- png_push_handle_unknown(png_ptr, info_ptr, png_ptr->push_length);
- }
-
- png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
-}
-
-void /* PRIVATE */
-png_push_crc_skip(png_structp png_ptr, png_uint_32 skip)
-{
- png_ptr->process_mode = PNG_SKIP_MODE;
- png_ptr->skip_length = skip;
-}
-
-void /* PRIVATE */
-png_push_crc_finish(png_structp png_ptr)
-{
- if (png_ptr->skip_length && png_ptr->save_buffer_size)
- {
- png_size_t save_size = png_ptr->save_buffer_size;
- png_uint_32 skip_length = png_ptr->skip_length;
-
- /* We want the smaller of 'skip_length' and 'save_buffer_size', but
- * they are of different types and we don't know which variable has the
- * fewest bits. Carefully select the smaller and cast it to the type of
- * the larger - this cannot overflow. Do not cast in the following test
- * - it will break on either 16 or 64 bit platforms.
- */
- if (skip_length < save_size)
- save_size = (png_size_t)skip_length;
-
- else
- skip_length = (png_uint_32)save_size;
-
- png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size);
-
- png_ptr->skip_length -= skip_length;
- png_ptr->buffer_size -= save_size;
- png_ptr->save_buffer_size -= save_size;
- png_ptr->save_buffer_ptr += save_size;
- }
- if (png_ptr->skip_length && png_ptr->current_buffer_size)
- {
- png_size_t save_size = png_ptr->current_buffer_size;
- png_uint_32 skip_length = png_ptr->skip_length;
-
- /* We want the smaller of 'skip_length' and 'current_buffer_size', here,
- * the same problem exists as above and the same solution.
- */
- if (skip_length < save_size)
- save_size = (png_size_t)skip_length;
-
- else
- skip_length = (png_uint_32)save_size;
-
- png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size);
-
- png_ptr->skip_length -= skip_length;
- png_ptr->buffer_size -= save_size;
- png_ptr->current_buffer_size -= save_size;
- png_ptr->current_buffer_ptr += save_size;
- }
- if (!png_ptr->skip_length)
- {
- if (png_ptr->buffer_size < 4)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_crc_finish(png_ptr, 0);
- png_ptr->process_mode = PNG_READ_CHUNK_MODE;
- }
-}
-
-void PNGCBAPI
-png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
-{
- png_bytep ptr;
-
- if (png_ptr == NULL)
- return;
-
- ptr = buffer;
- if (png_ptr->save_buffer_size)
- {
- png_size_t save_size;
-
- if (length < png_ptr->save_buffer_size)
- save_size = length;
-
- else
- save_size = png_ptr->save_buffer_size;
-
- png_memcpy(ptr, png_ptr->save_buffer_ptr, save_size);
- length -= save_size;
- ptr += save_size;
- png_ptr->buffer_size -= save_size;
- png_ptr->save_buffer_size -= save_size;
- png_ptr->save_buffer_ptr += save_size;
- }
- if (length && png_ptr->current_buffer_size)
- {
- png_size_t save_size;
-
- if (length < png_ptr->current_buffer_size)
- save_size = length;
-
- else
- save_size = png_ptr->current_buffer_size;
-
- png_memcpy(ptr, png_ptr->current_buffer_ptr, save_size);
- png_ptr->buffer_size -= save_size;
- png_ptr->current_buffer_size -= save_size;
- png_ptr->current_buffer_ptr += save_size;
- }
-}
-
-void /* PRIVATE */
-png_push_save_buffer(png_structp png_ptr)
-{
- if (png_ptr->save_buffer_size)
- {
- if (png_ptr->save_buffer_ptr != png_ptr->save_buffer)
- {
- png_size_t i, istop;
- png_bytep sp;
- png_bytep dp;
-
- istop = png_ptr->save_buffer_size;
- for (i = 0, sp = png_ptr->save_buffer_ptr, dp = png_ptr->save_buffer;
- i < istop; i++, sp++, dp++)
- {
- *dp = *sp;
- }
- }
- }
- if (png_ptr->save_buffer_size + png_ptr->current_buffer_size >
- png_ptr->save_buffer_max)
- {
- png_size_t new_max;
- png_bytep old_buffer;
-
- if (png_ptr->save_buffer_size > PNG_SIZE_MAX -
- (png_ptr->current_buffer_size + 256))
- {
- png_error(png_ptr, "Potential overflow of save_buffer");
- }
-
- new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256;
- old_buffer = png_ptr->save_buffer;
- png_ptr->save_buffer = (png_bytep)png_malloc_warn(png_ptr,
- (png_size_t)new_max);
-
- if (png_ptr->save_buffer == NULL)
- {
- png_free(png_ptr, old_buffer);
- png_error(png_ptr, "Insufficient memory for save_buffer");
- }
-
- png_memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size);
- png_free(png_ptr, old_buffer);
- png_ptr->save_buffer_max = new_max;
- }
- if (png_ptr->current_buffer_size)
- {
- png_memcpy(png_ptr->save_buffer + png_ptr->save_buffer_size,
- png_ptr->current_buffer_ptr, png_ptr->current_buffer_size);
- png_ptr->save_buffer_size += png_ptr->current_buffer_size;
- png_ptr->current_buffer_size = 0;
- }
- png_ptr->save_buffer_ptr = png_ptr->save_buffer;
- png_ptr->buffer_size = 0;
-}
-
-void /* PRIVATE */
-png_push_restore_buffer(png_structp png_ptr, png_bytep buffer,
- png_size_t buffer_length)
-{
- png_ptr->current_buffer = buffer;
- png_ptr->current_buffer_size = buffer_length;
- png_ptr->buffer_size = buffer_length + png_ptr->save_buffer_size;
- png_ptr->current_buffer_ptr = png_ptr->current_buffer;
-}
-
-void /* PRIVATE */
-png_push_read_IDAT(png_structp png_ptr)
-{
- PNG_IDAT;
- if (!(png_ptr->mode & PNG_HAVE_CHUNK_HEADER))
- {
- png_byte chunk_length[4];
-
- if (png_ptr->buffer_size < 8)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_push_fill_buffer(png_ptr, chunk_length, 4);
- png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length);
- png_reset_crc(png_ptr);
- png_crc_read(png_ptr, png_ptr->chunk_name, 4);
- png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
-
- if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
- {
- png_ptr->process_mode = PNG_READ_CHUNK_MODE;
-
- if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
- png_error(png_ptr, "Not enough compressed data");
-
- return;
- }
-
- png_ptr->idat_size = png_ptr->push_length;
- }
- if (png_ptr->idat_size && png_ptr->save_buffer_size)
- {
- png_size_t save_size = png_ptr->save_buffer_size;
- png_uint_32 idat_size = png_ptr->idat_size;
-
- /* We want the smaller of 'idat_size' and 'current_buffer_size', but they
- * are of different types and we don't know which variable has the fewest
- * bits. Carefully select the smaller and cast it to the type of the
- * larger - this cannot overflow. Do not cast in the following test - it
- * will break on either 16 or 64 bit platforms.
- */
- if (idat_size < save_size)
- save_size = (png_size_t)idat_size;
-
- else
- idat_size = (png_uint_32)save_size;
-
- png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size);
-
- png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size);
-
- png_ptr->idat_size -= idat_size;
- png_ptr->buffer_size -= save_size;
- png_ptr->save_buffer_size -= save_size;
- png_ptr->save_buffer_ptr += save_size;
- }
-
- if (png_ptr->idat_size && png_ptr->current_buffer_size)
- {
- png_size_t save_size = png_ptr->current_buffer_size;
- png_uint_32 idat_size = png_ptr->idat_size;
-
- /* We want the smaller of 'idat_size' and 'current_buffer_size', but they
- * are of different types and we don't know which variable has the fewest
- * bits. Carefully select the smaller and cast it to the type of the
- * larger - this cannot overflow.
- */
- if (idat_size < save_size)
- save_size = (png_size_t)idat_size;
-
- else
- idat_size = (png_uint_32)save_size;
-
- png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size);
-
- png_process_IDAT_data(png_ptr, png_ptr->current_buffer_ptr, save_size);
-
- png_ptr->idat_size -= idat_size;
- png_ptr->buffer_size -= save_size;
- png_ptr->current_buffer_size -= save_size;
- png_ptr->current_buffer_ptr += save_size;
- }
- if (!png_ptr->idat_size)
- {
- if (png_ptr->buffer_size < 4)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_crc_finish(png_ptr, 0);
- png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
- png_ptr->mode |= PNG_AFTER_IDAT;
- }
-}
-
-void /* PRIVATE */
-png_process_IDAT_data(png_structp png_ptr, png_bytep buffer,
- png_size_t buffer_length)
-{
- /* The caller checks for a non-zero buffer length. */
- if (!(buffer_length > 0) || buffer == NULL)
- png_error(png_ptr, "No IDAT data (internal error)");
-
- /* This routine must process all the data it has been given
- * before returning, calling the row callback as required to
- * handle the uncompressed results.
- */
- png_ptr->zstream.next_in = buffer;
- png_ptr->zstream.avail_in = (uInt)buffer_length;
-
- /* Keep going until the decompressed data is all processed
- * or the stream marked as finished.
- */
- while (png_ptr->zstream.avail_in > 0 &&
- !(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
- {
- int ret;
-
- /* We have data for zlib, but we must check that zlib
- * has someplace to put the results. It doesn't matter
- * if we don't expect any results -- it may be the input
- * data is just the LZ end code.
- */
- if (!(png_ptr->zstream.avail_out > 0))
- {
- png_ptr->zstream.avail_out =
- (uInt) PNG_ROWBYTES(png_ptr->pixel_depth,
- png_ptr->iwidth) + 1;
-
- png_ptr->zstream.next_out = png_ptr->row_buf;
- }
-
- /* Using Z_SYNC_FLUSH here means that an unterminated
- * LZ stream (a stream with a missing end code) can still
- * be handled, otherwise (Z_NO_FLUSH) a future zlib
- * implementation might defer output and therefore
- * change the current behavior (see comments in inflate.c
- * for why this doesn't happen at present with zlib 1.2.5).
- */
- ret = inflate(&png_ptr->zstream, Z_SYNC_FLUSH);
-
- /* Check for any failure before proceeding. */
- if (ret != Z_OK && ret != Z_STREAM_END)
- {
- /* Terminate the decompression. */
- png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
-
- /* This may be a truncated stream (missing or
- * damaged end code). Treat that as a warning.
- */
- if (png_ptr->row_number >= png_ptr->num_rows ||
- png_ptr->pass > 6)
- png_warning(png_ptr, "Truncated compressed data in IDAT");
-
- else
- png_error(png_ptr, "Decompression error in IDAT");
-
- /* Skip the check on unprocessed input */
- return;
- }
-
- /* Did inflate output any data? */
- if (png_ptr->zstream.next_out != png_ptr->row_buf)
- {
- /* Is this unexpected data after the last row?
- * If it is, artificially terminate the LZ output
- * here.
- */
- if (png_ptr->row_number >= png_ptr->num_rows ||
- png_ptr->pass > 6)
- {
- /* Extra data. */
- png_warning(png_ptr, "Extra compressed data in IDAT");
- png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
-
- /* Do no more processing; skip the unprocessed
- * input check below.
- */
- return;
- }
-
- /* Do we have a complete row? */
- if (png_ptr->zstream.avail_out == 0)
- png_push_process_row(png_ptr);
- }
-
- /* And check for the end of the stream. */
- if (ret == Z_STREAM_END)
- png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
- }
-
- /* All the data should have been processed, if anything
- * is left at this point we have bytes of IDAT data
- * after the zlib end code.
- */
- if (png_ptr->zstream.avail_in > 0)
- png_warning(png_ptr, "Extra compression data in IDAT");
-}
-
-void /* PRIVATE */
-png_push_process_row(png_structp png_ptr)
-{
- png_ptr->row_info.color_type = png_ptr->color_type;
- png_ptr->row_info.width = png_ptr->iwidth;
- png_ptr->row_info.channels = png_ptr->channels;
- png_ptr->row_info.bit_depth = png_ptr->bit_depth;
- png_ptr->row_info.pixel_depth = png_ptr->pixel_depth;
-
- png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
- png_ptr->row_info.width);
-
- png_read_filter_row(png_ptr, &(png_ptr->row_info),
- png_ptr->row_buf + 1, png_ptr->prev_row + 1,
- (int)(png_ptr->row_buf[0]));
-
- png_memcpy(png_ptr->prev_row, png_ptr->row_buf, png_ptr->rowbytes + 1);
-
- if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
- png_do_read_transformations(png_ptr);
-
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- /* Blow up interlaced rows to full size */
- if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
- {
- if (png_ptr->pass < 6)
-/* old interface (pre-1.0.9):
- png_do_read_interlace(&(png_ptr->row_info),
- png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations);
- */
- png_do_read_interlace(png_ptr);
-
- switch (png_ptr->pass)
- {
- case 0:
- {
- int i;
- for (i = 0; i < 8 && png_ptr->pass == 0; i++)
- {
- png_push_have_row(png_ptr, png_ptr->row_buf + 1);
- png_read_push_finish_row(png_ptr); /* Updates png_ptr->pass */
- }
-
- if (png_ptr->pass == 2) /* Pass 1 might be empty */
- {
- for (i = 0; i < 4 && png_ptr->pass == 2; i++)
- {
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
- }
-
- if (png_ptr->pass == 4 && png_ptr->height <= 4)
- {
- for (i = 0; i < 2 && png_ptr->pass == 4; i++)
- {
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
- }
-
- if (png_ptr->pass == 6 && png_ptr->height <= 4)
- {
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
-
- break;
- }
-
- case 1:
- {
- int i;
- for (i = 0; i < 8 && png_ptr->pass == 1; i++)
- {
- png_push_have_row(png_ptr, png_ptr->row_buf + 1);
- png_read_push_finish_row(png_ptr);
- }
-
- if (png_ptr->pass == 2) /* Skip top 4 generated rows */
- {
- for (i = 0; i < 4 && png_ptr->pass == 2; i++)
- {
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
- }
-
- break;
- }
-
- case 2:
- {
- int i;
-
- for (i = 0; i < 4 && png_ptr->pass == 2; i++)
- {
- png_push_have_row(png_ptr, png_ptr->row_buf + 1);
- png_read_push_finish_row(png_ptr);
- }
-
- for (i = 0; i < 4 && png_ptr->pass == 2; i++)
- {
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
-
- if (png_ptr->pass == 4) /* Pass 3 might be empty */
- {
- for (i = 0; i < 2 && png_ptr->pass == 4; i++)
- {
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
- }
-
- break;
- }
-
- case 3:
- {
- int i;
-
- for (i = 0; i < 4 && png_ptr->pass == 3; i++)
- {
- png_push_have_row(png_ptr, png_ptr->row_buf + 1);
- png_read_push_finish_row(png_ptr);
- }
-
- if (png_ptr->pass == 4) /* Skip top two generated rows */
- {
- for (i = 0; i < 2 && png_ptr->pass == 4; i++)
- {
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
- }
-
- break;
- }
-
- case 4:
- {
- int i;
-
- for (i = 0; i < 2 && png_ptr->pass == 4; i++)
- {
- png_push_have_row(png_ptr, png_ptr->row_buf + 1);
- png_read_push_finish_row(png_ptr);
- }
-
- for (i = 0; i < 2 && png_ptr->pass == 4; i++)
- {
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
-
- if (png_ptr->pass == 6) /* Pass 5 might be empty */
- {
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
-
- break;
- }
-
- case 5:
- {
- int i;
-
- for (i = 0; i < 2 && png_ptr->pass == 5; i++)
- {
- png_push_have_row(png_ptr, png_ptr->row_buf + 1);
- png_read_push_finish_row(png_ptr);
- }
-
- if (png_ptr->pass == 6) /* Skip top generated row */
- {
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
-
- break;
- }
-
- default:
- case 6:
- {
- png_push_have_row(png_ptr, png_ptr->row_buf + 1);
- png_read_push_finish_row(png_ptr);
-
- if (png_ptr->pass != 6)
- break;
-
- png_push_have_row(png_ptr, NULL);
- png_read_push_finish_row(png_ptr);
- }
- }
- }
- else
-#endif
- {
- png_push_have_row(png_ptr, png_ptr->row_buf + 1);
- png_read_push_finish_row(png_ptr);
- }
-}
-
-void /* PRIVATE */
-png_read_push_finish_row(png_structp png_ptr)
-{
- /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
-
- /* Start of interlace block */
- PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};
-
- /* Offset to next interlace block */
- PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
-
- /* Start of interlace block in the y direction */
- PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
-
- /* Offset to next interlace block in the y direction */
- PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
-
- /* Height of interlace block. This is not currently used - if you need
- * it, uncomment it here and in png.h
- PNG_CONST int FARDATA png_pass_height[] = {8, 8, 4, 4, 2, 2, 1};
- */
-
- png_ptr->row_number++;
- if (png_ptr->row_number < png_ptr->num_rows)
- return;
-
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- if (png_ptr->interlaced)
- {
- png_ptr->row_number = 0;
- png_memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
-
- do
- {
- png_ptr->pass++;
- if ((png_ptr->pass == 1 && png_ptr->width < 5) ||
- (png_ptr->pass == 3 && png_ptr->width < 3) ||
- (png_ptr->pass == 5 && png_ptr->width < 2))
- png_ptr->pass++;
-
- if (png_ptr->pass > 7)
- png_ptr->pass--;
-
- if (png_ptr->pass >= 7)
- break;
-
- png_ptr->iwidth = (png_ptr->width +
- png_pass_inc[png_ptr->pass] - 1 -
- png_pass_start[png_ptr->pass]) /
- png_pass_inc[png_ptr->pass];
-
- if (png_ptr->transformations & PNG_INTERLACE)
- break;
-
- png_ptr->num_rows = (png_ptr->height +
- png_pass_yinc[png_ptr->pass] - 1 -
- png_pass_ystart[png_ptr->pass]) /
- png_pass_yinc[png_ptr->pass];
-
- } while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0);
- }
-#endif /* PNG_READ_INTERLACING_SUPPORTED */
-}
-
-#ifdef PNG_READ_tEXt_SUPPORTED
-void /* PRIVATE */
-png_push_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32
- length)
-{
- if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
- {
- PNG_UNUSED(info_ptr) /* To quiet some compiler warnings */
- png_error(png_ptr, "Out of place tEXt");
- /*NOT REACHED*/
- }
-
-#ifdef PNG_MAX_MALLOC_64K
- png_ptr->skip_length = 0; /* This may not be necessary */
-
- if (length > (png_uint_32)65535L) /* Can't hold entire string in memory */
- {
- png_warning(png_ptr, "tEXt chunk too large to fit in memory");
- png_ptr->skip_length = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
-
- png_ptr->current_text = (png_charp)png_malloc(png_ptr,
- (png_size_t)(length + 1));
- png_ptr->current_text[length] = '\0';
- png_ptr->current_text_ptr = png_ptr->current_text;
- png_ptr->current_text_size = (png_size_t)length;
- png_ptr->current_text_left = (png_size_t)length;
- png_ptr->process_mode = PNG_READ_tEXt_MODE;
-}
-
-void /* PRIVATE */
-png_push_read_tEXt(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr->buffer_size && png_ptr->current_text_left)
- {
- png_size_t text_size;
-
- if (png_ptr->buffer_size < png_ptr->current_text_left)
- text_size = png_ptr->buffer_size;
-
- else
- text_size = png_ptr->current_text_left;
-
- png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size);
- png_ptr->current_text_left -= text_size;
- png_ptr->current_text_ptr += text_size;
- }
- if (!(png_ptr->current_text_left))
- {
- png_textp text_ptr;
- png_charp text;
- png_charp key;
- int ret;
-
- if (png_ptr->buffer_size < 4)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_push_crc_finish(png_ptr);
-
-#ifdef PNG_MAX_MALLOC_64K
- if (png_ptr->skip_length)
- return;
-#endif
-
- key = png_ptr->current_text;
-
- for (text = key; *text; text++)
- /* Empty loop */ ;
-
- if (text < key + png_ptr->current_text_size)
- text++;
-
- text_ptr = (png_textp)png_malloc(png_ptr, png_sizeof(png_text));
- text_ptr->compression = PNG_TEXT_COMPRESSION_NONE;
- text_ptr->key = key;
- text_ptr->itxt_length = 0;
- text_ptr->lang = NULL;
- text_ptr->lang_key = NULL;
- text_ptr->text = text;
-
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
-
- png_free(png_ptr, key);
- png_free(png_ptr, text_ptr);
- png_ptr->current_text = NULL;
-
- if (ret)
- png_warning(png_ptr, "Insufficient memory to store text chunk");
- }
-}
-#endif
-
-#ifdef PNG_READ_zTXt_SUPPORTED
-void /* PRIVATE */
-png_push_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32
- length)
-{
- if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
- {
- PNG_UNUSED(info_ptr) /* To quiet some compiler warnings */
- png_error(png_ptr, "Out of place zTXt");
- /*NOT REACHED*/
- }
-
-#ifdef PNG_MAX_MALLOC_64K
- /* We can't handle zTXt chunks > 64K, since we don't have enough space
- * to be able to store the uncompressed data. Actually, the threshold
- * is probably around 32K, but it isn't as definite as 64K is.
- */
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "zTXt chunk too large to fit in memory");
- png_push_crc_skip(png_ptr, length);
- return;
- }
-#endif
-
- png_ptr->current_text = (png_charp)png_malloc(png_ptr,
- (png_size_t)(length + 1));
- png_ptr->current_text[length] = '\0';
- png_ptr->current_text_ptr = png_ptr->current_text;
- png_ptr->current_text_size = (png_size_t)length;
- png_ptr->current_text_left = (png_size_t)length;
- png_ptr->process_mode = PNG_READ_zTXt_MODE;
-}
-
-void /* PRIVATE */
-png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr->buffer_size && png_ptr->current_text_left)
- {
- png_size_t text_size;
-
- if (png_ptr->buffer_size < (png_uint_32)png_ptr->current_text_left)
- text_size = png_ptr->buffer_size;
-
- else
- text_size = png_ptr->current_text_left;
-
- png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size);
- png_ptr->current_text_left -= text_size;
- png_ptr->current_text_ptr += text_size;
- }
- if (!(png_ptr->current_text_left))
- {
- png_textp text_ptr;
- png_charp text;
- png_charp key;
- int ret;
- png_size_t text_size, key_size;
-
- if (png_ptr->buffer_size < 4)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_push_crc_finish(png_ptr);
-
- key = png_ptr->current_text;
-
- for (text = key; *text; text++)
- /* Empty loop */ ;
-
- /* zTXt can't have zero text */
- if (text >= key + png_ptr->current_text_size)
- {
- png_ptr->current_text = NULL;
- png_free(png_ptr, key);
- return;
- }
-
- text++;
-
- if (*text != PNG_TEXT_COMPRESSION_zTXt) /* Check compression byte */
- {
- png_ptr->current_text = NULL;
- png_free(png_ptr, key);
- return;
- }
-
- text++;
-
- png_ptr->zstream.next_in = (png_bytep)text;
- png_ptr->zstream.avail_in = (uInt)(png_ptr->current_text_size -
- (text - key));
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
-
- key_size = text - key;
- text_size = 0;
- text = NULL;
- ret = Z_STREAM_END;
-
- while (png_ptr->zstream.avail_in)
- {
- ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
- if (ret != Z_OK && ret != Z_STREAM_END)
- {
- inflateReset(&png_ptr->zstream);
- png_ptr->zstream.avail_in = 0;
- png_ptr->current_text = NULL;
- png_free(png_ptr, key);
- png_free(png_ptr, text);
- return;
- }
-
- if (!(png_ptr->zstream.avail_out) || ret == Z_STREAM_END)
- {
- if (text == NULL)
- {
- text = (png_charp)png_malloc(png_ptr,
- (png_ptr->zbuf_size
- - png_ptr->zstream.avail_out + key_size + 1));
-
- png_memcpy(text + key_size, png_ptr->zbuf,
- png_ptr->zbuf_size - png_ptr->zstream.avail_out);
-
- png_memcpy(text, key, key_size);
-
- text_size = key_size + png_ptr->zbuf_size -
- png_ptr->zstream.avail_out;
-
- *(text + text_size) = '\0';
- }
-
- else
- {
- png_charp tmp;
-
- tmp = text;
- text = (png_charp)png_malloc(png_ptr, text_size +
- (png_ptr->zbuf_size
- - png_ptr->zstream.avail_out + 1));
-
- png_memcpy(text, tmp, text_size);
- png_free(png_ptr, tmp);
-
- png_memcpy(text + text_size, png_ptr->zbuf,
- png_ptr->zbuf_size - png_ptr->zstream.avail_out);
-
- text_size += png_ptr->zbuf_size - png_ptr->zstream.avail_out;
- *(text + text_size) = '\0';
- }
-
- if (ret != Z_STREAM_END)
- {
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
- }
- }
- else
- {
- break;
- }
-
- if (ret == Z_STREAM_END)
- break;
- }
-
- inflateReset(&png_ptr->zstream);
- png_ptr->zstream.avail_in = 0;
-
- if (ret != Z_STREAM_END)
- {
- png_ptr->current_text = NULL;
- png_free(png_ptr, key);
- png_free(png_ptr, text);
- return;
- }
-
- png_ptr->current_text = NULL;
- png_free(png_ptr, key);
- key = text;
- text += key_size;
-
- text_ptr = (png_textp)png_malloc(png_ptr,
- png_sizeof(png_text));
- text_ptr->compression = PNG_TEXT_COMPRESSION_zTXt;
- text_ptr->key = key;
- text_ptr->itxt_length = 0;
- text_ptr->lang = NULL;
- text_ptr->lang_key = NULL;
- text_ptr->text = text;
-
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
-
- png_free(png_ptr, key);
- png_free(png_ptr, text_ptr);
-
- if (ret)
- png_warning(png_ptr, "Insufficient memory to store text chunk");
- }
-}
-#endif
-
-#ifdef PNG_READ_iTXt_SUPPORTED
-void /* PRIVATE */
-png_push_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32
- length)
-{
- if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
- {
- PNG_UNUSED(info_ptr) /* To quiet some compiler warnings */
- png_error(png_ptr, "Out of place iTXt");
- /*NOT REACHED*/
- }
-
-#ifdef PNG_MAX_MALLOC_64K
- png_ptr->skip_length = 0; /* This may not be necessary */
-
- if (length > (png_uint_32)65535L) /* Can't hold entire string in memory */
- {
- png_warning(png_ptr, "iTXt chunk too large to fit in memory");
- png_ptr->skip_length = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
-
- png_ptr->current_text = (png_charp)png_malloc(png_ptr,
- (png_size_t)(length + 1));
- png_ptr->current_text[length] = '\0';
- png_ptr->current_text_ptr = png_ptr->current_text;
- png_ptr->current_text_size = (png_size_t)length;
- png_ptr->current_text_left = (png_size_t)length;
- png_ptr->process_mode = PNG_READ_iTXt_MODE;
-}
-
-void /* PRIVATE */
-png_push_read_iTXt(png_structp png_ptr, png_infop info_ptr)
-{
-
- if (png_ptr->buffer_size && png_ptr->current_text_left)
- {
- png_size_t text_size;
-
- if (png_ptr->buffer_size < png_ptr->current_text_left)
- text_size = png_ptr->buffer_size;
-
- else
- text_size = png_ptr->current_text_left;
-
- png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size);
- png_ptr->current_text_left -= text_size;
- png_ptr->current_text_ptr += text_size;
- }
-
- if (!(png_ptr->current_text_left))
- {
- png_textp text_ptr;
- png_charp key;
- int comp_flag;
- png_charp lang;
- png_charp lang_key;
- png_charp text;
- int ret;
-
- if (png_ptr->buffer_size < 4)
- {
- png_push_save_buffer(png_ptr);
- return;
- }
-
- png_push_crc_finish(png_ptr);
-
-#ifdef PNG_MAX_MALLOC_64K
- if (png_ptr->skip_length)
- return;
-#endif
-
- key = png_ptr->current_text;
-
- for (lang = key; *lang; lang++)
- /* Empty loop */ ;
-
- if (lang < key + png_ptr->current_text_size - 3)
- lang++;
-
- comp_flag = *lang++;
- lang++; /* Skip comp_type, always zero */
-
- for (lang_key = lang; *lang_key; lang_key++)
- /* Empty loop */ ;
-
- lang_key++; /* Skip NUL separator */
-
- text=lang_key;
-
- if (lang_key < key + png_ptr->current_text_size - 1)
- {
- for (; *text; text++)
- /* Empty loop */ ;
- }
-
- if (text < key + png_ptr->current_text_size)
- text++;
-
- text_ptr = (png_textp)png_malloc(png_ptr,
- png_sizeof(png_text));
-
- text_ptr->compression = comp_flag + 2;
- text_ptr->key = key;
- text_ptr->lang = lang;
- text_ptr->lang_key = lang_key;
- text_ptr->text = text;
- text_ptr->text_length = 0;
- text_ptr->itxt_length = png_strlen(text);
-
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
-
- png_ptr->current_text = NULL;
-
- png_free(png_ptr, text_ptr);
- if (ret)
- png_warning(png_ptr, "Insufficient memory to store iTXt chunk");
- }
-}
-#endif
-
-/* This function is called when we haven't found a handler for this
- * chunk. If there isn't a problem with the chunk itself (ie a bad chunk
- * name or a critical chunk), the chunk is (currently) silently ignored.
- */
-void /* PRIVATE */
-png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32
- length)
-{
- png_uint_32 skip = 0;
-
- if (!(png_ptr->chunk_name[0] & 0x20))
- {
-#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
- if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
- PNG_HANDLE_CHUNK_ALWAYS
-#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
- && png_ptr->read_user_chunk_fn == NULL
-#endif
- )
-#endif
- png_chunk_error(png_ptr, "unknown critical chunk");
-
- PNG_UNUSED(info_ptr) /* To quiet some compiler warnings */
- }
-
-#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
- if (png_ptr->flags & PNG_FLAG_KEEP_UNKNOWN_CHUNKS)
- {
-#ifdef PNG_MAX_MALLOC_64K
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "unknown chunk too large to fit in memory");
- skip = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
- png_memcpy((png_charp)png_ptr->unknown_chunk.name,
- (png_charp)png_ptr->chunk_name,
- png_sizeof(png_ptr->unknown_chunk.name));
- png_ptr->unknown_chunk.name[png_sizeof(png_ptr->unknown_chunk.name) - 1]
- = '\0';
-
- png_ptr->unknown_chunk.size = (png_size_t)length;
-
- if (length == 0)
- png_ptr->unknown_chunk.data = NULL;
-
- else
- {
- png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr,
- (png_size_t)length);
- png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
- }
-
-#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
- if (png_ptr->read_user_chunk_fn != NULL)
- {
- /* Callback to user unknown chunk handler */
- int ret;
- ret = (*(png_ptr->read_user_chunk_fn))
- (png_ptr, &png_ptr->unknown_chunk);
-
- if (ret < 0)
- png_chunk_error(png_ptr, "error in user chunk");
-
- if (ret == 0)
- {
- if (!(png_ptr->chunk_name[0] & 0x20))
- if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
- PNG_HANDLE_CHUNK_ALWAYS)
- png_chunk_error(png_ptr, "unknown critical chunk");
- png_set_unknown_chunks(png_ptr, info_ptr,
- &png_ptr->unknown_chunk, 1);
- }
- }
-
- else
-#endif
- png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1);
- png_free(png_ptr, png_ptr->unknown_chunk.data);
- png_ptr->unknown_chunk.data = NULL;
- }
-
- else
-#endif
- skip=length;
- png_push_crc_skip(png_ptr, skip);
-}
-
-void /* PRIVATE */
-png_push_have_info(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr->info_fn != NULL)
- (*(png_ptr->info_fn))(png_ptr, info_ptr);
-}
-
-void /* PRIVATE */
-png_push_have_end(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr->end_fn != NULL)
- (*(png_ptr->end_fn))(png_ptr, info_ptr);
-}
-
-void /* PRIVATE */
-png_push_have_row(png_structp png_ptr, png_bytep row)
-{
- if (png_ptr->row_fn != NULL)
- (*(png_ptr->row_fn))(png_ptr, row, png_ptr->row_number,
- (int)png_ptr->pass);
-}
-
-void PNGAPI
-png_progressive_combine_row (png_structp png_ptr, png_bytep old_row,
- png_const_bytep new_row)
-{
- PNG_CONST int FARDATA png_pass_dsp_mask[7] =
- {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};
-
- if (png_ptr == NULL)
- return;
-
- if (new_row != NULL) /* new_row must == png_ptr->row_buf here. */
- png_combine_row(png_ptr, old_row, png_pass_dsp_mask[png_ptr->pass]);
-}
-
-void PNGAPI
-png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr,
- png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
- png_progressive_end_ptr end_fn)
-{
- if (png_ptr == NULL)
- return;
-
- png_ptr->info_fn = info_fn;
- png_ptr->row_fn = row_fn;
- png_ptr->end_fn = end_fn;
-
- png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer);
-}
-
-png_voidp PNGAPI
-png_get_progressive_ptr(png_const_structp png_ptr)
-{
- if (png_ptr == NULL)
- return (NULL);
-
- return png_ptr->io_ptr;
-}
-#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
+
+/* pngpread.c - read a png file in push mode
+ *
+ * Last changed in libpng 1.2.44 [June 26, 2010]
+ * Copyright (c) 1998-2010 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+
+/* Push model modes */
+#define PNG_READ_SIG_MODE 0
+#define PNG_READ_CHUNK_MODE 1
+#define PNG_READ_IDAT_MODE 2
+#define PNG_SKIP_MODE 3
+#define PNG_READ_tEXt_MODE 4
+#define PNG_READ_zTXt_MODE 5
+#define PNG_READ_DONE_MODE 6
+#define PNG_READ_iTXt_MODE 7
+#define PNG_ERROR_MODE 8
+
+void PNGAPI
+png_process_data(png_structp png_ptr, png_infop info_ptr,
+ png_bytep buffer, png_size_t buffer_size)
+{
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ png_push_restore_buffer(png_ptr, buffer, buffer_size);
+
+ while (png_ptr->buffer_size)
+ {
+ png_process_some_data(png_ptr, info_ptr);
+ }
+}
+
+/* What we do with the incoming data depends on what we were previously
+ * doing before we ran out of data...
+ */
+void /* PRIVATE */
+png_process_some_data(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr == NULL)
+ return;
+
+ switch (png_ptr->process_mode)
+ {
+ case PNG_READ_SIG_MODE:
+ {
+ png_push_read_sig(png_ptr, info_ptr);
+ break;
+ }
+
+ case PNG_READ_CHUNK_MODE:
+ {
+ png_push_read_chunk(png_ptr, info_ptr);
+ break;
+ }
+
+ case PNG_READ_IDAT_MODE:
+ {
+ png_push_read_IDAT(png_ptr);
+ break;
+ }
+
+ case PNG_SKIP_MODE:
+ {
+ png_push_crc_finish(png_ptr);
+ break;
+ }
+
+ default:
+ {
+ png_ptr->buffer_size = 0;
+ break;
+ }
+ }
+}
+
+/* Read any remaining signature bytes from the stream and compare them with
+ * the correct PNG signature. It is possible that this routine is called
+ * with bytes already read from the signature, either because they have been
+ * checked by the calling application, or because of multiple calls to this
+ * routine.
+ */
+void /* PRIVATE */
+png_push_read_sig(png_structp png_ptr, png_infop info_ptr)
+{
+ png_size_t num_checked = png_ptr->sig_bytes,
+ num_to_check = 8 - num_checked;
+
+ if (png_ptr->buffer_size < num_to_check)
+ {
+ num_to_check = png_ptr->buffer_size;
+ }
+
+ png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]),
+ num_to_check);
+ png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes + num_to_check);
+
+ if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check))
+ {
+ if (num_checked < 4 &&
+ png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4))
+ png_error(png_ptr, "Not a PNG file");
+ else
+ png_error(png_ptr, "PNG file corrupted by ASCII conversion");
+ }
+ else
+ {
+ if (png_ptr->sig_bytes >= 8)
+ {
+ png_ptr->process_mode = PNG_READ_CHUNK_MODE;
+ }
+ }
+}
+
+void /* PRIVATE */
+png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_CONST PNG_IHDR;
+ PNG_CONST PNG_IDAT;
+ PNG_CONST PNG_IEND;
+ PNG_CONST PNG_PLTE;
+#ifdef PNG_READ_bKGD_SUPPORTED
+ PNG_CONST PNG_bKGD;
+#endif
+#ifdef PNG_READ_cHRM_SUPPORTED
+ PNG_CONST PNG_cHRM;
+#endif
+#ifdef PNG_READ_gAMA_SUPPORTED
+ PNG_CONST PNG_gAMA;
+#endif
+#ifdef PNG_READ_hIST_SUPPORTED
+ PNG_CONST PNG_hIST;
+#endif
+#ifdef PNG_READ_iCCP_SUPPORTED
+ PNG_CONST PNG_iCCP;
+#endif
+#ifdef PNG_READ_iTXt_SUPPORTED
+ PNG_CONST PNG_iTXt;
+#endif
+#ifdef PNG_READ_oFFs_SUPPORTED
+ PNG_CONST PNG_oFFs;
+#endif
+#ifdef PNG_READ_pCAL_SUPPORTED
+ PNG_CONST PNG_pCAL;
+#endif
+#ifdef PNG_READ_pHYs_SUPPORTED
+ PNG_CONST PNG_pHYs;
+#endif
+#ifdef PNG_READ_sBIT_SUPPORTED
+ PNG_CONST PNG_sBIT;
+#endif
+#ifdef PNG_READ_sCAL_SUPPORTED
+ PNG_CONST PNG_sCAL;
+#endif
+#ifdef PNG_READ_sRGB_SUPPORTED
+ PNG_CONST PNG_sRGB;
+#endif
+#ifdef PNG_READ_sPLT_SUPPORTED
+ PNG_CONST PNG_sPLT;
+#endif
+#ifdef PNG_READ_tEXt_SUPPORTED
+ PNG_CONST PNG_tEXt;
+#endif
+#ifdef PNG_READ_tIME_SUPPORTED
+ PNG_CONST PNG_tIME;
+#endif
+#ifdef PNG_READ_tRNS_SUPPORTED
+ PNG_CONST PNG_tRNS;
+#endif
+#ifdef PNG_READ_zTXt_SUPPORTED
+ PNG_CONST PNG_zTXt;
+#endif
+#endif /* PNG_USE_LOCAL_ARRAYS */
+
+ /* First we make sure we have enough data for the 4 byte chunk name
+ * and the 4 byte chunk length before proceeding with decoding the
+ * chunk data. To fully decode each of these chunks, we also make
+ * sure we have enough data in the buffer for the 4 byte CRC at the
+ * end of every chunk (except IDAT, which is handled separately).
+ */
+ if (!(png_ptr->mode & PNG_HAVE_CHUNK_HEADER))
+ {
+ png_byte chunk_length[4];
+
+ if (png_ptr->buffer_size < 8)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_push_fill_buffer(png_ptr, chunk_length, 4);
+ png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length);
+ png_reset_crc(png_ptr);
+ png_crc_read(png_ptr, png_ptr->chunk_name, 4);
+ png_check_chunk_name(png_ptr, png_ptr->chunk_name);
+ png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
+ }
+
+ if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+ if (png_ptr->mode & PNG_AFTER_IDAT)
+ png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
+
+ if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4))
+ {
+ if (png_ptr->push_length != 13)
+ png_error(png_ptr, "Invalid IHDR length");
+
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+ else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length);
+
+ png_ptr->process_mode = PNG_READ_DONE_MODE;
+ png_push_have_end(png_ptr, info_ptr);
+ }
+
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+ else if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+ png_ptr->mode |= PNG_HAVE_IDAT;
+
+ png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length);
+
+ if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
+ png_ptr->mode |= PNG_HAVE_PLTE;
+
+ else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+ {
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before IDAT");
+
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
+ !(png_ptr->mode & PNG_HAVE_PLTE))
+ png_error(png_ptr, "Missing PLTE before IDAT");
+ }
+ }
+
+#endif
+ else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+ png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+ else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+ {
+ /* If we reach an IDAT chunk, this means we have read all of the
+ * header chunks, and we can start reading the image (or if this
+ * is called after the image has been read - we have an error).
+ */
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before IDAT");
+
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
+ !(png_ptr->mode & PNG_HAVE_PLTE))
+ png_error(png_ptr, "Missing PLTE before IDAT");
+
+ if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ if (!(png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
+ if (png_ptr->push_length == 0)
+ return;
+
+ if (png_ptr->mode & PNG_AFTER_IDAT)
+ png_error(png_ptr, "Too many IDAT's found");
+ }
+
+ png_ptr->idat_size = png_ptr->push_length;
+ png_ptr->mode |= PNG_HAVE_IDAT;
+ png_ptr->process_mode = PNG_READ_IDAT_MODE;
+ png_push_have_info(png_ptr, info_ptr);
+ png_ptr->zstream.avail_out =
+ (uInt) PNG_ROWBYTES(png_ptr->pixel_depth,
+ png_ptr->iwidth) + 1;
+ png_ptr->zstream.next_out = png_ptr->row_buf;
+ return;
+ }
+
+#ifdef PNG_READ_gAMA_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_sBIT_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_cHRM_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_sRGB_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_iCCP_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_iCCP, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_iCCP(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_sPLT_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_sPLT, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_sPLT(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_tRNS_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_bKGD_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_hIST_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_hIST(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_pHYs_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_pHYs, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_pHYs(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_oFFs_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_oFFs, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_oFFs(png_ptr, info_ptr, png_ptr->push_length);
+ }
+#endif
+
+#ifdef PNG_READ_pCAL_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_pCAL(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_sCAL_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_sCAL, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_sCAL(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_tIME_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_tIME, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_tIME(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_tEXt_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_tEXt, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_tEXt(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_zTXt_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_zTXt, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_zTXt(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+#ifdef PNG_READ_iTXt_SUPPORTED
+ else if (!png_memcmp(png_ptr->chunk_name, png_iTXt, 4))
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+#endif
+ else
+ {
+ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+ png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length);
+ }
+
+ png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
+}
+
+void /* PRIVATE */
+png_push_crc_skip(png_structp png_ptr, png_uint_32 skip)
+{
+ png_ptr->process_mode = PNG_SKIP_MODE;
+ png_ptr->skip_length = skip;
+}
+
+void /* PRIVATE */
+png_push_crc_finish(png_structp png_ptr)
+{
+ if (png_ptr->skip_length && png_ptr->save_buffer_size)
+ {
+ png_size_t save_size;
+
+ if (png_ptr->skip_length < (png_uint_32)png_ptr->save_buffer_size)
+ save_size = (png_size_t)png_ptr->skip_length;
+ else
+ save_size = png_ptr->save_buffer_size;
+
+ png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size);
+
+ png_ptr->skip_length -= save_size;
+ png_ptr->buffer_size -= save_size;
+ png_ptr->save_buffer_size -= save_size;
+ png_ptr->save_buffer_ptr += save_size;
+ }
+ if (png_ptr->skip_length && png_ptr->current_buffer_size)
+ {
+ png_size_t save_size;
+
+ if (png_ptr->skip_length < (png_uint_32)png_ptr->current_buffer_size)
+ save_size = (png_size_t)png_ptr->skip_length;
+ else
+ save_size = png_ptr->current_buffer_size;
+
+ png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size);
+
+ png_ptr->skip_length -= save_size;
+ png_ptr->buffer_size -= save_size;
+ png_ptr->current_buffer_size -= save_size;
+ png_ptr->current_buffer_ptr += save_size;
+ }
+ if (!png_ptr->skip_length)
+ {
+ if (png_ptr->buffer_size < 4)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_crc_finish(png_ptr, 0);
+ png_ptr->process_mode = PNG_READ_CHUNK_MODE;
+ }
+}
+
+void PNGAPI
+png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
+{
+ png_bytep ptr;
+
+ if (png_ptr == NULL)
+ return;
+
+ ptr = buffer;
+ if (png_ptr->save_buffer_size)
+ {
+ png_size_t save_size;
+
+ if (length < png_ptr->save_buffer_size)
+ save_size = length;
+ else
+ save_size = png_ptr->save_buffer_size;
+
+ png_memcpy(ptr, png_ptr->save_buffer_ptr, save_size);
+ length -= save_size;
+ ptr += save_size;
+ png_ptr->buffer_size -= save_size;
+ png_ptr->save_buffer_size -= save_size;
+ png_ptr->save_buffer_ptr += save_size;
+ }
+ if (length && png_ptr->current_buffer_size)
+ {
+ png_size_t save_size;
+
+ if (length < png_ptr->current_buffer_size)
+ save_size = length;
+
+ else
+ save_size = png_ptr->current_buffer_size;
+
+ png_memcpy(ptr, png_ptr->current_buffer_ptr, save_size);
+ png_ptr->buffer_size -= save_size;
+ png_ptr->current_buffer_size -= save_size;
+ png_ptr->current_buffer_ptr += save_size;
+ }
+}
+
+void /* PRIVATE */
+png_push_save_buffer(png_structp png_ptr)
+{
+ if (png_ptr->save_buffer_size)
+ {
+ if (png_ptr->save_buffer_ptr != png_ptr->save_buffer)
+ {
+ png_size_t i, istop;
+ png_bytep sp;
+ png_bytep dp;
+
+ istop = png_ptr->save_buffer_size;
+ for (i = 0, sp = png_ptr->save_buffer_ptr, dp = png_ptr->save_buffer;
+ i < istop; i++, sp++, dp++)
+ {
+ *dp = *sp;
+ }
+ }
+ }
+ if (png_ptr->save_buffer_size + png_ptr->current_buffer_size >
+ png_ptr->save_buffer_max)
+ {
+ png_size_t new_max;
+ png_bytep old_buffer;
+
+ if (png_ptr->save_buffer_size > PNG_SIZE_MAX -
+ (png_ptr->current_buffer_size + 256))
+ {
+ png_error(png_ptr, "Potential overflow of save_buffer");
+ }
+
+ new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256;
+ old_buffer = png_ptr->save_buffer;
+ png_ptr->save_buffer = (png_bytep)png_malloc_warn(png_ptr,
+ (png_uint_32)new_max);
+ if (png_ptr->save_buffer == NULL)
+ {
+ png_free(png_ptr, old_buffer);
+ png_error(png_ptr, "Insufficient memory for save_buffer");
+ }
+ png_memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size);
+ png_free(png_ptr, old_buffer);
+ png_ptr->save_buffer_max = new_max;
+ }
+ if (png_ptr->current_buffer_size)
+ {
+ png_memcpy(png_ptr->save_buffer + png_ptr->save_buffer_size,
+ png_ptr->current_buffer_ptr, png_ptr->current_buffer_size);
+ png_ptr->save_buffer_size += png_ptr->current_buffer_size;
+ png_ptr->current_buffer_size = 0;
+ }
+ png_ptr->save_buffer_ptr = png_ptr->save_buffer;
+ png_ptr->buffer_size = 0;
+}
+
+void /* PRIVATE */
+png_push_restore_buffer(png_structp png_ptr, png_bytep buffer,
+ png_size_t buffer_length)
+{
+ png_ptr->current_buffer = buffer;
+ png_ptr->current_buffer_size = buffer_length;
+ png_ptr->buffer_size = buffer_length + png_ptr->save_buffer_size;
+ png_ptr->current_buffer_ptr = png_ptr->current_buffer;
+}
+
+void /* PRIVATE */
+png_push_read_IDAT(png_structp png_ptr)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_CONST PNG_IDAT;
+#endif
+ if (!(png_ptr->mode & PNG_HAVE_CHUNK_HEADER))
+ {
+ png_byte chunk_length[4];
+
+ if (png_ptr->buffer_size < 8)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_push_fill_buffer(png_ptr, chunk_length, 4);
+ png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length);
+ png_reset_crc(png_ptr);
+ png_crc_read(png_ptr, png_ptr->chunk_name, 4);
+ png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
+
+ if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+ {
+ png_ptr->process_mode = PNG_READ_CHUNK_MODE;
+ if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
+ png_error(png_ptr, "Not enough compressed data");
+ return;
+ }
+
+ png_ptr->idat_size = png_ptr->push_length;
+ }
+ if (png_ptr->idat_size && png_ptr->save_buffer_size)
+ {
+ png_size_t save_size;
+
+ if (png_ptr->idat_size < (png_uint_32)png_ptr->save_buffer_size)
+ {
+ save_size = (png_size_t)png_ptr->idat_size;
+
+ /* Check for overflow */
+ if ((png_uint_32)save_size != png_ptr->idat_size)
+ png_error(png_ptr, "save_size overflowed in pngpread");
+ }
+ else
+ save_size = png_ptr->save_buffer_size;
+
+ png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size);
+
+ png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size);
+
+ png_ptr->idat_size -= save_size;
+ png_ptr->buffer_size -= save_size;
+ png_ptr->save_buffer_size -= save_size;
+ png_ptr->save_buffer_ptr += save_size;
+ }
+ if (png_ptr->idat_size && png_ptr->current_buffer_size)
+ {
+ png_size_t save_size;
+
+ if (png_ptr->idat_size < (png_uint_32)png_ptr->current_buffer_size)
+ {
+ save_size = (png_size_t)png_ptr->idat_size;
+
+ /* Check for overflow */
+ if ((png_uint_32)save_size != png_ptr->idat_size)
+ png_error(png_ptr, "save_size overflowed in pngpread");
+ }
+ else
+ save_size = png_ptr->current_buffer_size;
+
+ png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size);
+
+ png_process_IDAT_data(png_ptr, png_ptr->current_buffer_ptr, save_size);
+
+ png_ptr->idat_size -= save_size;
+ png_ptr->buffer_size -= save_size;
+ png_ptr->current_buffer_size -= save_size;
+ png_ptr->current_buffer_ptr += save_size;
+ }
+ if (!png_ptr->idat_size)
+ {
+ if (png_ptr->buffer_size < 4)
+ {
+ png_push_save_buffer(png_ptr);
+ return;
+ }
+
+ png_crc_finish(png_ptr, 0);
+ png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
+ png_ptr->mode |= PNG_AFTER_IDAT;
+ }
+}
+
+void /* PRIVATE */
+png_process_IDAT_data(png_structp png_ptr, png_bytep buffer,
+ png_size_t buffer_length)
+{
+ /* The caller checks for a non-zero buffer length. */
+ if (!(buffer_length > 0) || buffer == NULL)
+ png_error(png_ptr, "No IDAT data (internal error)");
+
+ /* This routine must process all the data it has been given
+ * before returning, calling the row callback as required to
+ * handle the uncompressed results.
+ */
+ png_ptr->zstream.next_in = buffer;
+ png_ptr->zstream.avail_in = (uInt)buffer_length;
+
+ /* Keep going until the decompressed data is all processed
+ * or the stream marked as finished.
+ */
+ while (png_ptr->zstream.avail_in > 0 &&
+ !(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
+ {
+ int ret;
+
+ /* We have data for zlib, but we must check that zlib
+ * has somewhere to put the results. It doesn't matter
+ * if we don't expect any results -- it may be the input
+ * data is just the LZ end code.
+ */
+ if (!(png_ptr->zstream.avail_out > 0))
+ {
+ png_ptr->zstream.avail_out =
+ (uInt) PNG_ROWBYTES(png_ptr->pixel_depth,
+ png_ptr->iwidth) + 1;
+ png_ptr->zstream.next_out = png_ptr->row_buf;
+ }
+
+ /* Using Z_SYNC_FLUSH here means that an unterminated
+ * LZ stream can still be handled (a stream with a missing
+ * end code), otherwise (Z_NO_FLUSH) a future zlib
+ * implementation might defer output and, therefore,
+ * change the current behavior. (See comments in inflate.c
+ * for why this doesn't happen at present with zlib 1.2.5.)
+ */
+ ret = inflate(&png_ptr->zstream, Z_SYNC_FLUSH);
+
+ /* Check for any failure before proceeding. */
+ if (ret != Z_OK && ret != Z_STREAM_END)
+ {
+ /* Terminate the decompression. */
+ png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
+
+ /* This may be a truncated stream (missing or
+ * damaged end code). Treat that as a warning.
+ */
+ if (png_ptr->row_number >= png_ptr->num_rows ||
+ png_ptr->pass > 6)
+ png_warning(png_ptr, "Truncated compressed data in IDAT");
+ else
+ png_error(png_ptr, "Decompression error in IDAT");
+
+ /* Skip the check on unprocessed input */
+ return;
+ }
+
+ /* Did inflate output any data? */
+ if (png_ptr->zstream.next_out != png_ptr->row_buf)
+ {
+ /* Is this unexpected data after the last row?
+ * If it is, artificially terminate the LZ output
+ * here.
+ */
+ if (png_ptr->row_number >= png_ptr->num_rows ||
+ png_ptr->pass > 6)
+ {
+ /* Extra data. */
+ png_warning(png_ptr, "Extra compressed data in IDAT");
+ png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
+ /* Do no more processing; skip the unprocessed
+ * input check below.
+ */
+ return;
+ }
+
+ /* Do we have a complete row? */
+ if (png_ptr->zstream.avail_out == 0)
+ png_push_process_row(png_ptr);
+ }
+
+ /* And check for the end of the stream. */
+ if (ret == Z_STREAM_END)
+ png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
+ }
+
+ /* All the data should have been processed, if anything
+ * is left at this point we have bytes of IDAT data
+ * after the zlib end code.
+ */
+ if (png_ptr->zstream.avail_in > 0)
+ png_warning(png_ptr, "Extra compression data");
+}
+
+void /* PRIVATE */
+png_push_process_row(png_structp png_ptr)
+{
+ png_ptr->row_info.color_type = png_ptr->color_type;
+ png_ptr->row_info.width = png_ptr->iwidth;
+ png_ptr->row_info.channels = png_ptr->channels;
+ png_ptr->row_info.bit_depth = png_ptr->bit_depth;
+ png_ptr->row_info.pixel_depth = png_ptr->pixel_depth;
+
+ png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
+ png_ptr->row_info.width);
+
+ png_read_filter_row(png_ptr, &(png_ptr->row_info),
+ png_ptr->row_buf + 1, png_ptr->prev_row + 1,
+ (int)(png_ptr->row_buf[0]));
+
+ png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf,
+ png_ptr->rowbytes + 1);
+
+ if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
+ png_do_read_transformations(png_ptr);
+
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+ /* Blow up interlaced rows to full size */
+ if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
+ {
+ if (png_ptr->pass < 6)
+/* old interface (pre-1.0.9):
+ png_do_read_interlace(&(png_ptr->row_info),
+ png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations);
+ */
+ png_do_read_interlace(png_ptr);
+
+ switch (png_ptr->pass)
+ {
+ case 0:
+ {
+ int i;
+ for (i = 0; i < 8 && png_ptr->pass == 0; i++)
+ {
+ png_push_have_row(png_ptr, png_ptr->row_buf + 1);
+ png_read_push_finish_row(png_ptr); /* Updates png_ptr->pass */
+ }
+
+ if (png_ptr->pass == 2) /* Pass 1 might be empty */
+ {
+ for (i = 0; i < 4 && png_ptr->pass == 2; i++)
+ {
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+ }
+
+ if (png_ptr->pass == 4 && png_ptr->height <= 4)
+ {
+ for (i = 0; i < 2 && png_ptr->pass == 4; i++)
+ {
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+ }
+
+ if (png_ptr->pass == 6 && png_ptr->height <= 4)
+ {
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+
+ break;
+ }
+
+ case 1:
+ {
+ int i;
+ for (i = 0; i < 8 && png_ptr->pass == 1; i++)
+ {
+ png_push_have_row(png_ptr, png_ptr->row_buf + 1);
+ png_read_push_finish_row(png_ptr);
+ }
+
+ if (png_ptr->pass == 2) /* Skip top 4 generated rows */
+ {
+ for (i = 0; i < 4 && png_ptr->pass == 2; i++)
+ {
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+ }
+
+ break;
+ }
+
+ case 2:
+ {
+ int i;
+
+ for (i = 0; i < 4 && png_ptr->pass == 2; i++)
+ {
+ png_push_have_row(png_ptr, png_ptr->row_buf + 1);
+ png_read_push_finish_row(png_ptr);
+ }
+
+ for (i = 0; i < 4 && png_ptr->pass == 2; i++)
+ {
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+
+ if (png_ptr->pass == 4) /* Pass 3 might be empty */
+ {
+ for (i = 0; i < 2 && png_ptr->pass == 4; i++)
+ {
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+ }
+
+ break;
+ }
+
+ case 3:
+ {
+ int i;
+
+ for (i = 0; i < 4 && png_ptr->pass == 3; i++)
+ {
+ png_push_have_row(png_ptr, png_ptr->row_buf + 1);
+ png_read_push_finish_row(png_ptr);
+ }
+
+ if (png_ptr->pass == 4) /* Skip top two generated rows */
+ {
+ for (i = 0; i < 2 && png_ptr->pass == 4; i++)
+ {
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+ }
+
+ break;
+ }
+
+ case 4:
+ {
+ int i;
+
+ for (i = 0; i < 2 && png_ptr->pass == 4; i++)
+ {
+ png_push_have_row(png_ptr, png_ptr->row_buf + 1);
+ png_read_push_finish_row(png_ptr);
+ }
+
+ for (i = 0; i < 2 && png_ptr->pass == 4; i++)
+ {
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+
+ if (png_ptr->pass == 6) /* Pass 5 might be empty */
+ {
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+
+ break;
+ }
+
+ case 5:
+ {
+ int i;
+
+ for (i = 0; i < 2 && png_ptr->pass == 5; i++)
+ {
+ png_push_have_row(png_ptr, png_ptr->row_buf + 1);
+ png_read_push_finish_row(png_ptr);
+ }
+
+ if (png_ptr->pass == 6) /* Skip top generated row */
+ {
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+
+ break;
+ }
+ case 6:
+ {
+ png_push_have_row(png_ptr, png_ptr->row_buf + 1);
+ png_read_push_finish_row(png_ptr);
+
+ if (png_ptr->pass != 6)
+ break;
+
+ png_push_have_row(png_ptr, png_bytep_NULL);
+ png_read_push_finish_row(png_ptr);
+ }
+ }
+ }
+ else
+#endif
+ {
+ png_push_have_row(png_ptr, png_ptr->row_buf + 1);
+ png_read_push_finish_row(png_ptr);
+ }
+}
+
+void /* PRIVATE */
+png_read_push_finish_row(png_structp png_ptr)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
+
+ /* Start of interlace block */
+ PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};
+
+ /* Offset to next interlace block */
+ PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
+
+ /* Start of interlace block in the y direction */
+ PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
+
+ /* Offset to next interlace block in the y direction */
+ PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
+
+ /* Height of interlace block. This is not currently used - if you need
+ * it, uncomment it here and in png.h
+ PNG_CONST int FARDATA png_pass_height[] = {8, 8, 4, 4, 2, 2, 1};
+ */
+#endif
+
+ png_ptr->row_number++;
+ if (png_ptr->row_number < png_ptr->num_rows)
+ return;
+
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+ if (png_ptr->interlaced)
+ {
+ png_ptr->row_number = 0;
+ png_memset_check(png_ptr, png_ptr->prev_row, 0,
+ png_ptr->rowbytes + 1);
+ do
+ {
+ png_ptr->pass++;
+ if ((png_ptr->pass == 1 && png_ptr->width < 5) ||
+ (png_ptr->pass == 3 && png_ptr->width < 3) ||
+ (png_ptr->pass == 5 && png_ptr->width < 2))
+ png_ptr->pass++;
+
+ if (png_ptr->pass > 7)
+ png_ptr->pass--;
+
+ if (png_ptr->pass >= 7)
+ break;
+
+ png_ptr->iwidth = (png_ptr->width +
+ png_pass_inc[png_ptr->pass] - 1 -
+ png_pass_start[png_ptr->pass]) /
+ png_pass_inc[png_ptr->pass];
+
+ if (png_ptr->transformations & PNG_INTERLACE)
+ break;
+
+ png_ptr->num_rows = (png_ptr->height +
+ png_pass_yinc[png_ptr->pass] - 1 -
+ png_pass_ystart[png_ptr->pass]) /
+ png_pass_yinc[png_ptr->pass];
+
+ } while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0);
+ }
+#endif /* PNG_READ_INTERLACING_SUPPORTED */
+}
+
+void /* PRIVATE */
+png_push_have_info(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr->info_fn != NULL)
+ (*(png_ptr->info_fn))(png_ptr, info_ptr);
+}
+
+void /* PRIVATE */
+png_push_have_end(png_structp png_ptr, png_infop info_ptr)
+{
+ if (png_ptr->end_fn != NULL)
+ (*(png_ptr->end_fn))(png_ptr, info_ptr);
+}
+
+void /* PRIVATE */
+png_push_have_row(png_structp png_ptr, png_bytep row)
+{
+ if (png_ptr->row_fn != NULL)
+ (*(png_ptr->row_fn))(png_ptr, row, png_ptr->row_number,
+ (int)png_ptr->pass);
+}
+
+void PNGAPI
+png_progressive_combine_row (png_structp png_ptr,
+ png_bytep old_row, png_bytep new_row)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_CONST int FARDATA png_pass_dsp_mask[7] =
+ {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};
+#endif
+
+ if (png_ptr == NULL)
+ return;
+
+ if (new_row != NULL) /* new_row must == png_ptr->row_buf here. */
+ png_combine_row(png_ptr, old_row, png_pass_dsp_mask[png_ptr->pass]);
+}
+
+void PNGAPI
+png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr,
+ png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
+ png_progressive_end_ptr end_fn)
+{
+ if (png_ptr == NULL)
+ return;
+
+ png_ptr->info_fn = info_fn;
+ png_ptr->row_fn = row_fn;
+ png_ptr->end_fn = end_fn;
+
+ png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer);
+}
+
+png_voidp PNGAPI
+png_get_progressive_ptr(png_structp png_ptr)
+{
+ if (png_ptr == NULL)
+ return (NULL);
+
+ return png_ptr->io_ptr;
+}
+#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
diff --git a/Externals/libpng/pngread.c b/Externals/libpng/pngread.c
index 2c8f2cd687..10b997694d 100644
--- a/Externals/libpng/pngread.c
+++ b/Externals/libpng/pngread.c
@@ -1,1466 +1,1515 @@
-
-/* pngread.c - read a PNG file
- *
- * Last changed in libpng 1.5.1 [$RDATE%]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- * This file contains routines that an application calls directly to
- * read a PNG file or stream.
- */
-
-#include "pngpriv.h"
-
-#ifdef PNG_READ_SUPPORTED
-
-/* Create a PNG structure for reading, and allocate any memory needed. */
-PNG_FUNCTION(png_structp,PNGAPI
-png_create_read_struct,(png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn),PNG_ALLOCATED)
-{
-
-#ifdef PNG_USER_MEM_SUPPORTED
- return (png_create_read_struct_2(user_png_ver, error_ptr, error_fn,
- warn_fn, NULL, NULL, NULL));
-}
-
-/* Alternate create PNG structure for reading, and allocate any memory
- * needed.
- */
-PNG_FUNCTION(png_structp,PNGAPI
-png_create_read_struct_2,(png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
- png_malloc_ptr malloc_fn, png_free_ptr free_fn),PNG_ALLOCATED)
-{
-#endif /* PNG_USER_MEM_SUPPORTED */
-
-#ifdef PNG_SETJMP_SUPPORTED
- volatile
-#endif
- png_structp png_ptr;
- volatile int png_cleanup_needed = 0;
-
-#ifdef PNG_SETJMP_SUPPORTED
-#ifdef USE_FAR_KEYWORD
- jmp_buf png_jmpbuf;
-#endif
-#endif
-
- int i;
-
- png_debug(1, "in png_create_read_struct");
-
-#ifdef PNG_USER_MEM_SUPPORTED
- png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
- malloc_fn, mem_ptr);
-#else
- png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
-#endif
- if (png_ptr == NULL)
- return (NULL);
-
- /* Added at libpng-1.2.6 */
-#ifdef PNG_USER_LIMITS_SUPPORTED
- png_ptr->user_width_max = PNG_USER_WIDTH_MAX;
- png_ptr->user_height_max = PNG_USER_HEIGHT_MAX;
-
-# ifdef PNG_USER_CHUNK_CACHE_MAX
- /* Added at libpng-1.2.43 and 1.4.0 */
- png_ptr->user_chunk_cache_max = PNG_USER_CHUNK_CACHE_MAX;
-# endif
-
-# ifdef PNG_SET_USER_CHUNK_MALLOC_MAX
- /* Added at libpng-1.2.43 and 1.4.1 */
- png_ptr->user_chunk_malloc_max = PNG_USER_CHUNK_MALLOC_MAX;
-# endif
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
-/* Applications that neglect to set up their own setjmp() and then
- encounter a png_error() will longjmp here. Since the jmpbuf is
- then meaningless we abort instead of returning. */
-#ifdef USE_FAR_KEYWORD
- if (setjmp(png_jmpbuf))
-#else
- if (setjmp(png_jmpbuf(png_ptr))) /* Sets longjmp to match setjmp */
-#endif
- PNG_ABORT();
-#ifdef USE_FAR_KEYWORD
- png_memcpy(png_jmpbuf(png_ptr), png_jmpbuf, png_sizeof(jmp_buf));
-#endif
-#endif /* PNG_SETJMP_SUPPORTED */
-
-#ifdef PNG_USER_MEM_SUPPORTED
- png_set_mem_fn(png_ptr, mem_ptr, malloc_fn, free_fn);
-#endif
-
- png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
-
- if (user_png_ver)
- {
- i = 0;
-
- do
- {
- if (user_png_ver[i] != png_libpng_ver[i])
- png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
- } while (png_libpng_ver[i++]);
- }
-
- else
- png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
-
-
- if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
- {
- /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so
- * we must recompile any applications that use any older library version.
- * For versions after libpng 1.0, we will be compatible, so we need
- * only check the first digit.
- */
- if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||
- (user_png_ver[0] == '1' && user_png_ver[2] != png_libpng_ver[2]) ||
- (user_png_ver[0] == '0' && user_png_ver[2] < '9'))
- {
-#ifdef PNG_CONSOLE_IO_SUPPORTED
- char msg[80];
- if (user_png_ver)
- {
- png_snprintf2(msg, 80,
- "Application built with libpng-%.20s"
- " but running with %.20s",
- user_png_ver,
- png_libpng_ver);
- png_warning(png_ptr, msg);
- }
-#else
- png_warning(png_ptr,
- "Incompatible libpng version in application and library");
-#endif
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- png_ptr->flags = 0;
-#endif
-
- png_cleanup_needed = 1;
- }
- }
-
- if (!png_cleanup_needed)
- {
- /* Initialize zbuf - compression buffer */
- png_ptr->zbuf_size = PNG_ZBUF_SIZE;
- png_ptr->zbuf = (png_bytep)png_malloc_warn(png_ptr, png_ptr->zbuf_size);
-
- if (png_ptr->zbuf == NULL)
- png_cleanup_needed = 1;
- }
-
- png_ptr->zstream.zalloc = png_zalloc;
- png_ptr->zstream.zfree = png_zfree;
- png_ptr->zstream.opaque = (voidpf)png_ptr;
-
- if (!png_cleanup_needed)
- {
- switch (inflateInit(&png_ptr->zstream))
- {
- case Z_OK:
- break; /* Do nothing */
-
- case Z_MEM_ERROR:
- png_warning(png_ptr, "zlib memory error");
- png_cleanup_needed = 1;
- break;
-
- case Z_STREAM_ERROR:
- png_warning(png_ptr, "zlib stream error");
- png_cleanup_needed = 1;
- break;
-
- case Z_VERSION_ERROR:
- png_warning(png_ptr, "zlib version error");
- png_cleanup_needed = 1;
- break;
-
- default: png_warning(png_ptr, "Unknown zlib error");
- png_cleanup_needed = 1;
- }
- }
-
- if (png_cleanup_needed)
- {
- /* Clean up PNG structure and deallocate any memory. */
- png_free(png_ptr, png_ptr->zbuf);
- png_ptr->zbuf = NULL;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)png_ptr,
- (png_free_ptr)free_fn, (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)png_ptr);
-#endif
- return (NULL);
- }
-
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
-
- png_set_read_fn(png_ptr, NULL, NULL);
-
-
- return (png_ptr);
-}
-
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-/* Read the information before the actual image data. This has been
- * changed in v0.90 to allow reading a file that already has the magic
- * bytes read from the stream. You can tell libpng how many bytes have
- * been read from the beginning of the stream (up to the maximum of 8)
- * via png_set_sig_bytes(), and we will only check the remaining bytes
- * here. The application can then have access to the signature bytes we
- * read if it is determined that this isn't a valid PNG file.
- */
-void PNGAPI
-png_read_info(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_read_info");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- /* Read and check the PNG file signature. */
- png_read_sig(png_ptr, info_ptr);
-
- for (;;)
- {
- PNG_IHDR;
- PNG_IDAT;
- PNG_IEND;
- PNG_PLTE;
-#ifdef PNG_READ_bKGD_SUPPORTED
- PNG_bKGD;
-#endif
-#ifdef PNG_READ_cHRM_SUPPORTED
- PNG_cHRM;
-#endif
-#ifdef PNG_READ_gAMA_SUPPORTED
- PNG_gAMA;
-#endif
-#ifdef PNG_READ_hIST_SUPPORTED
- PNG_hIST;
-#endif
-#ifdef PNG_READ_iCCP_SUPPORTED
- PNG_iCCP;
-#endif
-#ifdef PNG_READ_iTXt_SUPPORTED
- PNG_iTXt;
-#endif
-#ifdef PNG_READ_oFFs_SUPPORTED
- PNG_oFFs;
-#endif
-#ifdef PNG_READ_pCAL_SUPPORTED
- PNG_pCAL;
-#endif
-#ifdef PNG_READ_pHYs_SUPPORTED
- PNG_pHYs;
-#endif
-#ifdef PNG_READ_sBIT_SUPPORTED
- PNG_sBIT;
-#endif
-#ifdef PNG_READ_sCAL_SUPPORTED
- PNG_sCAL;
-#endif
-#ifdef PNG_READ_sPLT_SUPPORTED
- PNG_sPLT;
-#endif
-#ifdef PNG_READ_sRGB_SUPPORTED
- PNG_sRGB;
-#endif
-#ifdef PNG_READ_tEXt_SUPPORTED
- PNG_tEXt;
-#endif
-#ifdef PNG_READ_tIME_SUPPORTED
- PNG_tIME;
-#endif
-#ifdef PNG_READ_tRNS_SUPPORTED
- PNG_tRNS;
-#endif
-#ifdef PNG_READ_zTXt_SUPPORTED
- PNG_zTXt;
-#endif
- png_uint_32 length = png_read_chunk_header(png_ptr);
- PNG_CONST png_bytep chunk_name = png_ptr->chunk_name;
-
- /* This should be a binary subdivision search or a hash for
- * matching the chunk name rather than a linear search.
- */
- if (!png_memcmp(chunk_name, png_IDAT, 4))
- if (png_ptr->mode & PNG_AFTER_IDAT)
- png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
-
- if (!png_memcmp(chunk_name, png_IHDR, 4))
- png_handle_IHDR(png_ptr, info_ptr, length);
-
- else if (!png_memcmp(chunk_name, png_IEND, 4))
- png_handle_IEND(png_ptr, info_ptr, length);
-
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
- else if (png_handle_as_unknown(png_ptr, chunk_name))
- {
- if (!png_memcmp(chunk_name, png_IDAT, 4))
- png_ptr->mode |= PNG_HAVE_IDAT;
-
- png_handle_unknown(png_ptr, info_ptr, length);
-
- if (!png_memcmp(chunk_name, png_PLTE, 4))
- png_ptr->mode |= PNG_HAVE_PLTE;
-
- else if (!png_memcmp(chunk_name, png_IDAT, 4))
- {
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before IDAT");
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
- !(png_ptr->mode & PNG_HAVE_PLTE))
- png_error(png_ptr, "Missing PLTE before IDAT");
-
- break;
- }
- }
-#endif
- else if (!png_memcmp(chunk_name, png_PLTE, 4))
- png_handle_PLTE(png_ptr, info_ptr, length);
-
- else if (!png_memcmp(chunk_name, png_IDAT, 4))
- {
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before IDAT");
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
- !(png_ptr->mode & PNG_HAVE_PLTE))
- png_error(png_ptr, "Missing PLTE before IDAT");
-
- png_ptr->idat_size = length;
- png_ptr->mode |= PNG_HAVE_IDAT;
- break;
- }
-
-#ifdef PNG_READ_bKGD_SUPPORTED
- else if (!png_memcmp(chunk_name, png_bKGD, 4))
- png_handle_bKGD(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_cHRM_SUPPORTED
- else if (!png_memcmp(chunk_name, png_cHRM, 4))
- png_handle_cHRM(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_gAMA_SUPPORTED
- else if (!png_memcmp(chunk_name, png_gAMA, 4))
- png_handle_gAMA(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_hIST_SUPPORTED
- else if (!png_memcmp(chunk_name, png_hIST, 4))
- png_handle_hIST(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_oFFs_SUPPORTED
- else if (!png_memcmp(chunk_name, png_oFFs, 4))
- png_handle_oFFs(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_pCAL_SUPPORTED
- else if (!png_memcmp(chunk_name, png_pCAL, 4))
- png_handle_pCAL(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_sCAL_SUPPORTED
- else if (!png_memcmp(chunk_name, png_sCAL, 4))
- png_handle_sCAL(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_pHYs_SUPPORTED
- else if (!png_memcmp(chunk_name, png_pHYs, 4))
- png_handle_pHYs(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_sBIT_SUPPORTED
- else if (!png_memcmp(chunk_name, png_sBIT, 4))
- png_handle_sBIT(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_sRGB_SUPPORTED
- else if (!png_memcmp(chunk_name, png_sRGB, 4))
- png_handle_sRGB(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_iCCP_SUPPORTED
- else if (!png_memcmp(chunk_name, png_iCCP, 4))
- png_handle_iCCP(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_sPLT_SUPPORTED
- else if (!png_memcmp(chunk_name, png_sPLT, 4))
- png_handle_sPLT(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_tEXt_SUPPORTED
- else if (!png_memcmp(chunk_name, png_tEXt, 4))
- png_handle_tEXt(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_tIME_SUPPORTED
- else if (!png_memcmp(chunk_name, png_tIME, 4))
- png_handle_tIME(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_tRNS_SUPPORTED
- else if (!png_memcmp(chunk_name, png_tRNS, 4))
- png_handle_tRNS(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_zTXt_SUPPORTED
- else if (!png_memcmp(chunk_name, png_zTXt, 4))
- png_handle_zTXt(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_iTXt_SUPPORTED
- else if (!png_memcmp(chunk_name, png_iTXt, 4))
- png_handle_iTXt(png_ptr, info_ptr, length);
-#endif
-
- else
- png_handle_unknown(png_ptr, info_ptr, length);
- }
-}
-#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
-
-/* Optional call to update the users info_ptr structure */
-void PNGAPI
-png_read_update_info(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_read_update_info");
-
- if (png_ptr == NULL)
- return;
-
- if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
- png_read_start_row(png_ptr);
-
- else
- png_warning(png_ptr,
- "Ignoring extra png_read_update_info() call;"
- " row buffer not reallocated");
-
- png_read_transform_info(png_ptr, info_ptr);
-}
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-/* Initialize palette, background, etc, after transformations
- * are set, but before any reading takes place. This allows
- * the user to obtain a gamma-corrected palette, for example.
- * If the user doesn't call this, we will do it ourselves.
- */
-void PNGAPI
-png_start_read_image(png_structp png_ptr)
-{
- png_debug(1, "in png_start_read_image");
-
- if (png_ptr == NULL)
- return;
-
- if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
- png_read_start_row(png_ptr);
- else
- png_warning(png_ptr,
- "Ignoring extra png_start_read_image() call;"
- " row buffer not reallocated");
-}
-#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-void PNGAPI
-png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
-{
- PNG_IDAT;
- PNG_CONST int png_pass_dsp_mask[7] = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55,
- 0xff};
- PNG_CONST int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
- int ret;
-
- if (png_ptr == NULL)
- return;
-
- png_debug2(1, "in png_read_row (row %lu, pass %d)",
- (unsigned long)png_ptr->row_number, png_ptr->pass);
-
- if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
- png_read_start_row(png_ptr);
-
- if (png_ptr->row_number == 0 && png_ptr->pass == 0)
- {
- /* Check for transforms that have been set but were defined out */
-#if defined(PNG_WRITE_INVERT_SUPPORTED) && !defined(PNG_READ_INVERT_SUPPORTED)
- if (png_ptr->transformations & PNG_INVERT_MONO)
- png_warning(png_ptr, "PNG_READ_INVERT_SUPPORTED is not defined");
-#endif
-
-#if defined(PNG_WRITE_FILLER_SUPPORTED) && !defined(PNG_READ_FILLER_SUPPORTED)
- if (png_ptr->transformations & PNG_FILLER)
- png_warning(png_ptr, "PNG_READ_FILLER_SUPPORTED is not defined");
-#endif
-
-#if defined(PNG_WRITE_PACKSWAP_SUPPORTED) && \
- !defined(PNG_READ_PACKSWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_PACKSWAP)
- png_warning(png_ptr, "PNG_READ_PACKSWAP_SUPPORTED is not defined");
-#endif
-
-#if defined(PNG_WRITE_PACK_SUPPORTED) && !defined(PNG_READ_PACK_SUPPORTED)
- if (png_ptr->transformations & PNG_PACK)
- png_warning(png_ptr, "PNG_READ_PACK_SUPPORTED is not defined");
-#endif
-
-#if defined(PNG_WRITE_SHIFT_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED)
- if (png_ptr->transformations & PNG_SHIFT)
- png_warning(png_ptr, "PNG_READ_SHIFT_SUPPORTED is not defined");
-#endif
-
-#if defined(PNG_WRITE_BGR_SUPPORTED) && !defined(PNG_READ_BGR_SUPPORTED)
- if (png_ptr->transformations & PNG_BGR)
- png_warning(png_ptr, "PNG_READ_BGR_SUPPORTED is not defined");
-#endif
-
-#if defined(PNG_WRITE_SWAP_SUPPORTED) && !defined(PNG_READ_SWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_SWAP_BYTES)
- png_warning(png_ptr, "PNG_READ_SWAP_SUPPORTED is not defined");
-#endif
- }
-
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- /* If interlaced and we do not need a new row, combine row and return */
- if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
- {
- switch (png_ptr->pass)
- {
- case 0:
- if (png_ptr->row_number & 0x07)
- {
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
- png_read_finish_row(png_ptr);
- return;
- }
- break;
-
- case 1:
- if ((png_ptr->row_number & 0x07) || png_ptr->width < 5)
- {
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
-
- png_read_finish_row(png_ptr);
- return;
- }
- break;
-
- case 2:
- if ((png_ptr->row_number & 0x07) != 4)
- {
- if (dsp_row != NULL && (png_ptr->row_number & 4))
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
-
- png_read_finish_row(png_ptr);
- return;
- }
- break;
-
- case 3:
- if ((png_ptr->row_number & 3) || png_ptr->width < 3)
- {
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
-
- png_read_finish_row(png_ptr);
- return;
- }
- break;
-
- case 4:
- if ((png_ptr->row_number & 3) != 2)
- {
- if (dsp_row != NULL && (png_ptr->row_number & 2))
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
-
- png_read_finish_row(png_ptr);
- return;
- }
- break;
- case 5:
- if ((png_ptr->row_number & 1) || png_ptr->width < 2)
- {
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
-
- png_read_finish_row(png_ptr);
- return;
- }
- break;
-
- default:
- case 6:
- if (!(png_ptr->row_number & 1))
- {
- png_read_finish_row(png_ptr);
- return;
- }
- break;
- }
- }
-#endif
-
- if (!(png_ptr->mode & PNG_HAVE_IDAT))
- png_error(png_ptr, "Invalid attempt to read row data");
-
- png_ptr->zstream.next_out = png_ptr->row_buf;
- png_ptr->zstream.avail_out =
- (uInt)(PNG_ROWBYTES(png_ptr->pixel_depth,
- png_ptr->iwidth) + 1);
-
- do
- {
- if (!(png_ptr->zstream.avail_in))
- {
- while (!png_ptr->idat_size)
- {
- png_crc_finish(png_ptr, 0);
-
- png_ptr->idat_size = png_read_chunk_header(png_ptr);
- if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
- png_error(png_ptr, "Not enough image data");
- }
- png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size;
- png_ptr->zstream.next_in = png_ptr->zbuf;
- if (png_ptr->zbuf_size > png_ptr->idat_size)
- png_ptr->zstream.avail_in = (uInt)png_ptr->idat_size;
- png_crc_read(png_ptr, png_ptr->zbuf,
- (png_size_t)png_ptr->zstream.avail_in);
- png_ptr->idat_size -= png_ptr->zstream.avail_in;
- }
-
- ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
-
- if (ret == Z_STREAM_END)
- {
- if (png_ptr->zstream.avail_out || png_ptr->zstream.avail_in ||
- png_ptr->idat_size)
- png_benign_error(png_ptr, "Extra compressed data");
- png_ptr->mode |= PNG_AFTER_IDAT;
- png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
- break;
- }
-
- if (ret != Z_OK)
- png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg :
- "Decompression error");
-
- } while (png_ptr->zstream.avail_out);
-
- png_ptr->row_info.color_type = png_ptr->color_type;
- png_ptr->row_info.width = png_ptr->iwidth;
- png_ptr->row_info.channels = png_ptr->channels;
- png_ptr->row_info.bit_depth = png_ptr->bit_depth;
- png_ptr->row_info.pixel_depth = png_ptr->pixel_depth;
- png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
- png_ptr->row_info.width);
-
- if (png_ptr->row_buf[0])
- png_read_filter_row(png_ptr, &(png_ptr->row_info),
- png_ptr->row_buf + 1, png_ptr->prev_row + 1,
- (int)(png_ptr->row_buf[0]));
-
- png_memcpy(png_ptr->prev_row, png_ptr->row_buf, png_ptr->rowbytes + 1);
-
-#ifdef PNG_MNG_FEATURES_SUPPORTED
- if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
- (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
- {
- /* Intrapixel differencing */
- png_do_read_intrapixel(&(png_ptr->row_info), png_ptr->row_buf + 1);
- }
-#endif
-
-
- if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
- png_do_read_transformations(png_ptr);
-
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- /* Blow up interlaced rows to full size */
- if (png_ptr->interlaced &&
- (png_ptr->transformations & PNG_INTERLACE))
- {
- if (png_ptr->pass < 6)
- /* Old interface (pre-1.0.9):
- * png_do_read_interlace(&(png_ptr->row_info),
- * png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations);
- */
- png_do_read_interlace(png_ptr);
-
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row, png_pass_dsp_mask[png_ptr->pass]);
-
- if (row != NULL)
- png_combine_row(png_ptr, row, png_pass_mask[png_ptr->pass]);
- }
-
- else
-#endif
- {
- if (row != NULL)
- png_combine_row(png_ptr, row, 0xff);
-
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row, 0xff);
- }
- png_read_finish_row(png_ptr);
-
- if (png_ptr->read_row_fn != NULL)
- (*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);
-}
-#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-/* Read one or more rows of image data. If the image is interlaced,
- * and png_set_interlace_handling() has been called, the rows need to
- * contain the contents of the rows from the previous pass. If the
- * image has alpha or transparency, and png_handle_alpha()[*] has been
- * called, the rows contents must be initialized to the contents of the
- * screen.
- *
- * "row" holds the actual image, and pixels are placed in it
- * as they arrive. If the image is displayed after each pass, it will
- * appear to "sparkle" in. "display_row" can be used to display a
- * "chunky" progressive image, with finer detail added as it becomes
- * available. If you do not want this "chunky" display, you may pass
- * NULL for display_row. If you do not want the sparkle display, and
- * you have not called png_handle_alpha(), you may pass NULL for rows.
- * If you have called png_handle_alpha(), and the image has either an
- * alpha channel or a transparency chunk, you must provide a buffer for
- * rows. In this case, you do not have to provide a display_row buffer
- * also, but you may. If the image is not interlaced, or if you have
- * not called png_set_interlace_handling(), the display_row buffer will
- * be ignored, so pass NULL to it.
- *
- * [*] png_handle_alpha() does not exist yet, as of this version of libpng
- */
-
-void PNGAPI
-png_read_rows(png_structp png_ptr, png_bytepp row,
- png_bytepp display_row, png_uint_32 num_rows)
-{
- png_uint_32 i;
- png_bytepp rp;
- png_bytepp dp;
-
- png_debug(1, "in png_read_rows");
-
- if (png_ptr == NULL)
- return;
-
- rp = row;
- dp = display_row;
- if (rp != NULL && dp != NULL)
- for (i = 0; i < num_rows; i++)
- {
- png_bytep rptr = *rp++;
- png_bytep dptr = *dp++;
-
- png_read_row(png_ptr, rptr, dptr);
- }
-
- else if (rp != NULL)
- for (i = 0; i < num_rows; i++)
- {
- png_bytep rptr = *rp;
- png_read_row(png_ptr, rptr, NULL);
- rp++;
- }
-
- else if (dp != NULL)
- for (i = 0; i < num_rows; i++)
- {
- png_bytep dptr = *dp;
- png_read_row(png_ptr, NULL, dptr);
- dp++;
- }
-}
-#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-/* Read the entire image. If the image has an alpha channel or a tRNS
- * chunk, and you have called png_handle_alpha()[*], you will need to
- * initialize the image to the current image that PNG will be overlaying.
- * We set the num_rows again here, in case it was incorrectly set in
- * png_read_start_row() by a call to png_read_update_info() or
- * png_start_read_image() if png_set_interlace_handling() wasn't called
- * prior to either of these functions like it should have been. You can
- * only call this function once. If you desire to have an image for
- * each pass of a interlaced image, use png_read_rows() instead.
- *
- * [*] png_handle_alpha() does not exist yet, as of this version of libpng
- */
-void PNGAPI
-png_read_image(png_structp png_ptr, png_bytepp image)
-{
- png_uint_32 i, image_height;
- int pass, j;
- png_bytepp rp;
-
- png_debug(1, "in png_read_image");
-
- if (png_ptr == NULL)
- return;
-
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
- {
- pass = png_set_interlace_handling(png_ptr);
- /* And make sure transforms are initialized. */
- png_start_read_image(png_ptr);
- }
- else
- {
- if (png_ptr->interlaced && !(png_ptr->transformations & PNG_INTERLACE))
- {
- /* Caller called png_start_read_image or png_read_update_info without
- * first turning on the PNG_INTERLACE transform. We can fix this here,
- * but the caller should do it!
- */
- png_warning(png_ptr, "Interlace handling should be turned on when "
- "using png_read_image");
- /* Make sure this is set correctly */
- png_ptr->num_rows = png_ptr->height;
- }
-
- /* Obtain the pass number, which also turns on the PNG_INTERLACE flag in
- * the above error case.
- */
- pass = png_set_interlace_handling(png_ptr);
- }
-#else
- if (png_ptr->interlaced)
- png_error(png_ptr,
- "Cannot read interlaced image -- interlace handler disabled");
-
- pass = 1;
-#endif
-
- image_height=png_ptr->height;
-
- for (j = 0; j < pass; j++)
- {
- rp = image;
- for (i = 0; i < image_height; i++)
- {
- png_read_row(png_ptr, *rp, NULL);
- rp++;
- }
- }
-}
-#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-/* Read the end of the PNG file. Will not read past the end of the
- * file, will verify the end is accurate, and will read any comments
- * or time information at the end of the file, if info is not NULL.
- */
-void PNGAPI
-png_read_end(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_read_end");
-
- if (png_ptr == NULL)
- return;
-
- png_crc_finish(png_ptr, 0); /* Finish off CRC from last IDAT chunk */
-
- do
- {
- PNG_IHDR;
- PNG_IDAT;
- PNG_IEND;
- PNG_PLTE;
-#ifdef PNG_READ_bKGD_SUPPORTED
- PNG_bKGD;
-#endif
-#ifdef PNG_READ_cHRM_SUPPORTED
- PNG_cHRM;
-#endif
-#ifdef PNG_READ_gAMA_SUPPORTED
- PNG_gAMA;
-#endif
-#ifdef PNG_READ_hIST_SUPPORTED
- PNG_hIST;
-#endif
-#ifdef PNG_READ_iCCP_SUPPORTED
- PNG_iCCP;
-#endif
-#ifdef PNG_READ_iTXt_SUPPORTED
- PNG_iTXt;
-#endif
-#ifdef PNG_READ_oFFs_SUPPORTED
- PNG_oFFs;
-#endif
-#ifdef PNG_READ_pCAL_SUPPORTED
- PNG_pCAL;
-#endif
-#ifdef PNG_READ_pHYs_SUPPORTED
- PNG_pHYs;
-#endif
-#ifdef PNG_READ_sBIT_SUPPORTED
- PNG_sBIT;
-#endif
-#ifdef PNG_READ_sCAL_SUPPORTED
- PNG_sCAL;
-#endif
-#ifdef PNG_READ_sPLT_SUPPORTED
- PNG_sPLT;
-#endif
-#ifdef PNG_READ_sRGB_SUPPORTED
- PNG_sRGB;
-#endif
-#ifdef PNG_READ_tEXt_SUPPORTED
- PNG_tEXt;
-#endif
-#ifdef PNG_READ_tIME_SUPPORTED
- PNG_tIME;
-#endif
-#ifdef PNG_READ_tRNS_SUPPORTED
- PNG_tRNS;
-#endif
-#ifdef PNG_READ_zTXt_SUPPORTED
- PNG_zTXt;
-#endif
- png_uint_32 length = png_read_chunk_header(png_ptr);
- PNG_CONST png_bytep chunk_name = png_ptr->chunk_name;
-
- if (!png_memcmp(chunk_name, png_IHDR, 4))
- png_handle_IHDR(png_ptr, info_ptr, length);
-
- else if (!png_memcmp(chunk_name, png_IEND, 4))
- png_handle_IEND(png_ptr, info_ptr, length);
-
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
- else if (png_handle_as_unknown(png_ptr, chunk_name))
- {
- if (!png_memcmp(chunk_name, png_IDAT, 4))
- {
- if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
- png_benign_error(png_ptr, "Too many IDATs found");
- }
- png_handle_unknown(png_ptr, info_ptr, length);
- if (!png_memcmp(chunk_name, png_PLTE, 4))
- png_ptr->mode |= PNG_HAVE_PLTE;
- }
-#endif
-
- else if (!png_memcmp(chunk_name, png_IDAT, 4))
- {
- /* Zero length IDATs are legal after the last IDAT has been
- * read, but not after other chunks have been read.
- */
- if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
- png_benign_error(png_ptr, "Too many IDATs found");
-
- png_crc_finish(png_ptr, length);
- }
- else if (!png_memcmp(chunk_name, png_PLTE, 4))
- png_handle_PLTE(png_ptr, info_ptr, length);
-
-#ifdef PNG_READ_bKGD_SUPPORTED
- else if (!png_memcmp(chunk_name, png_bKGD, 4))
- png_handle_bKGD(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_cHRM_SUPPORTED
- else if (!png_memcmp(chunk_name, png_cHRM, 4))
- png_handle_cHRM(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_gAMA_SUPPORTED
- else if (!png_memcmp(chunk_name, png_gAMA, 4))
- png_handle_gAMA(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_hIST_SUPPORTED
- else if (!png_memcmp(chunk_name, png_hIST, 4))
- png_handle_hIST(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_oFFs_SUPPORTED
- else if (!png_memcmp(chunk_name, png_oFFs, 4))
- png_handle_oFFs(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_pCAL_SUPPORTED
- else if (!png_memcmp(chunk_name, png_pCAL, 4))
- png_handle_pCAL(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_sCAL_SUPPORTED
- else if (!png_memcmp(chunk_name, png_sCAL, 4))
- png_handle_sCAL(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_pHYs_SUPPORTED
- else if (!png_memcmp(chunk_name, png_pHYs, 4))
- png_handle_pHYs(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_sBIT_SUPPORTED
- else if (!png_memcmp(chunk_name, png_sBIT, 4))
- png_handle_sBIT(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_sRGB_SUPPORTED
- else if (!png_memcmp(chunk_name, png_sRGB, 4))
- png_handle_sRGB(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_iCCP_SUPPORTED
- else if (!png_memcmp(chunk_name, png_iCCP, 4))
- png_handle_iCCP(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_sPLT_SUPPORTED
- else if (!png_memcmp(chunk_name, png_sPLT, 4))
- png_handle_sPLT(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_tEXt_SUPPORTED
- else if (!png_memcmp(chunk_name, png_tEXt, 4))
- png_handle_tEXt(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_tIME_SUPPORTED
- else if (!png_memcmp(chunk_name, png_tIME, 4))
- png_handle_tIME(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_tRNS_SUPPORTED
- else if (!png_memcmp(chunk_name, png_tRNS, 4))
- png_handle_tRNS(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_zTXt_SUPPORTED
- else if (!png_memcmp(chunk_name, png_zTXt, 4))
- png_handle_zTXt(png_ptr, info_ptr, length);
-#endif
-
-#ifdef PNG_READ_iTXt_SUPPORTED
- else if (!png_memcmp(chunk_name, png_iTXt, 4))
- png_handle_iTXt(png_ptr, info_ptr, length);
-#endif
-
- else
- png_handle_unknown(png_ptr, info_ptr, length);
- } while (!(png_ptr->mode & PNG_HAVE_IEND));
-}
-#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
-
-/* Free all memory used by the read */
-void PNGAPI
-png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
- png_infopp end_info_ptr_ptr)
-{
- png_structp png_ptr = NULL;
- png_infop info_ptr = NULL, end_info_ptr = NULL;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_free_ptr free_fn = NULL;
- png_voidp mem_ptr = NULL;
-#endif
-
- png_debug(1, "in png_destroy_read_struct");
-
- if (png_ptr_ptr != NULL)
- png_ptr = *png_ptr_ptr;
- if (png_ptr == NULL)
- return;
-
-#ifdef PNG_USER_MEM_SUPPORTED
- free_fn = png_ptr->free_fn;
- mem_ptr = png_ptr->mem_ptr;
-#endif
-
- if (info_ptr_ptr != NULL)
- info_ptr = *info_ptr_ptr;
-
- if (end_info_ptr_ptr != NULL)
- end_info_ptr = *end_info_ptr_ptr;
-
- png_read_destroy(png_ptr, info_ptr, end_info_ptr);
-
- if (info_ptr != NULL)
- {
-#ifdef PNG_TEXT_SUPPORTED
- png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, -1);
-#endif
-
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)info_ptr, (png_free_ptr)free_fn,
- (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)info_ptr);
-#endif
- *info_ptr_ptr = NULL;
- }
-
- if (end_info_ptr != NULL)
- {
-#ifdef PNG_READ_TEXT_SUPPORTED
- png_free_data(png_ptr, end_info_ptr, PNG_FREE_TEXT, -1);
-#endif
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)end_info_ptr, (png_free_ptr)free_fn,
- (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)end_info_ptr);
-#endif
- *end_info_ptr_ptr = NULL;
- }
-
- if (png_ptr != NULL)
- {
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn,
- (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)png_ptr);
-#endif
- *png_ptr_ptr = NULL;
- }
-}
-
-/* Free all memory used by the read (old method) */
-void /* PRIVATE */
-png_read_destroy(png_structp png_ptr, png_infop info_ptr,
- png_infop end_info_ptr)
-{
-#ifdef PNG_SETJMP_SUPPORTED
- jmp_buf tmp_jmp;
-#endif
- png_error_ptr error_fn;
- png_error_ptr warning_fn;
- png_voidp error_ptr;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_free_ptr free_fn;
-#endif
-
- png_debug(1, "in png_read_destroy");
-
- if (info_ptr != NULL)
- png_info_destroy(png_ptr, info_ptr);
-
- if (end_info_ptr != NULL)
- png_info_destroy(png_ptr, end_info_ptr);
-
- png_free(png_ptr, png_ptr->zbuf);
- png_free(png_ptr, png_ptr->big_row_buf);
- png_free(png_ptr, png_ptr->prev_row);
- png_free(png_ptr, png_ptr->chunkdata);
-
-#ifdef PNG_READ_QUANTIZE_SUPPORTED
- png_free(png_ptr, png_ptr->palette_lookup);
- png_free(png_ptr, png_ptr->quantize_index);
-#endif
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
- png_free(png_ptr, png_ptr->gamma_table);
-#endif
-
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
- png_free(png_ptr, png_ptr->gamma_from_1);
- png_free(png_ptr, png_ptr->gamma_to_1);
-#endif
-
- if (png_ptr->free_me & PNG_FREE_PLTE)
- png_zfree(png_ptr, png_ptr->palette);
- png_ptr->free_me &= ~PNG_FREE_PLTE;
-
-#if defined(PNG_tRNS_SUPPORTED) || \
- defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->free_me & PNG_FREE_TRNS)
- png_free(png_ptr, png_ptr->trans_alpha);
- png_ptr->free_me &= ~PNG_FREE_TRNS;
-#endif
-
-#ifdef PNG_READ_hIST_SUPPORTED
- if (png_ptr->free_me & PNG_FREE_HIST)
- png_free(png_ptr, png_ptr->hist);
- png_ptr->free_me &= ~PNG_FREE_HIST;
-#endif
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (png_ptr->gamma_16_table != NULL)
- {
- int i;
- int istop = (1 << (8 - png_ptr->gamma_shift));
- for (i = 0; i < istop; i++)
- {
- png_free(png_ptr, png_ptr->gamma_16_table[i]);
- }
- png_free(png_ptr, png_ptr->gamma_16_table);
- }
-
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
- if (png_ptr->gamma_16_from_1 != NULL)
- {
- int i;
- int istop = (1 << (8 - png_ptr->gamma_shift));
- for (i = 0; i < istop; i++)
- {
- png_free(png_ptr, png_ptr->gamma_16_from_1[i]);
- }
- png_free(png_ptr, png_ptr->gamma_16_from_1);
- }
- if (png_ptr->gamma_16_to_1 != NULL)
- {
- int i;
- int istop = (1 << (8 - png_ptr->gamma_shift));
- for (i = 0; i < istop; i++)
- {
- png_free(png_ptr, png_ptr->gamma_16_to_1[i]);
- }
- png_free(png_ptr, png_ptr->gamma_16_to_1);
- }
-#endif
-#endif
-
-#ifdef PNG_TIME_RFC1123_SUPPORTED
- png_free(png_ptr, png_ptr->time_buffer);
-#endif
-
- inflateEnd(&png_ptr->zstream);
-
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
- png_free(png_ptr, png_ptr->save_buffer);
-#endif
-
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-#ifdef PNG_TEXT_SUPPORTED
- png_free(png_ptr, png_ptr->current_text);
-#endif /* PNG_TEXT_SUPPORTED */
-#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
-
- /* Save the important info out of the png_struct, in case it is
- * being used again.
- */
-#ifdef PNG_SETJMP_SUPPORTED
- png_memcpy(tmp_jmp, png_ptr->png_jmpbuf, png_sizeof(jmp_buf));
-#endif
-
- error_fn = png_ptr->error_fn;
- warning_fn = png_ptr->warning_fn;
- error_ptr = png_ptr->error_ptr;
-#ifdef PNG_USER_MEM_SUPPORTED
- free_fn = png_ptr->free_fn;
-#endif
-
- png_memset(png_ptr, 0, png_sizeof(png_struct));
-
- png_ptr->error_fn = error_fn;
- png_ptr->warning_fn = warning_fn;
- png_ptr->error_ptr = error_ptr;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_ptr->free_fn = free_fn;
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
- png_memcpy(png_ptr->png_jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
-#endif
-
-}
-
-void PNGAPI
-png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn)
-{
- if (png_ptr == NULL)
- return;
-
- png_ptr->read_row_fn = read_row_fn;
-}
-
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-#ifdef PNG_INFO_IMAGE_SUPPORTED
-void PNGAPI
-png_read_png(png_structp png_ptr, png_infop info_ptr,
- int transforms,
- voidp params)
-{
- int row;
-
- if (png_ptr == NULL)
- return;
-
- /* png_read_info() gives us all of the information from the
- * PNG file before the first IDAT (image data chunk).
- */
- png_read_info(png_ptr, info_ptr);
- if (info_ptr->height > PNG_UINT_32_MAX/png_sizeof(png_bytep))
- png_error(png_ptr, "Image is too high to process with png_read_png()");
-
- /* -------------- image transformations start here ------------------- */
-
-#ifdef PNG_READ_16_TO_8_SUPPORTED
- /* Tell libpng to strip 16 bit/color files down to 8 bits per color.
- */
- if (transforms & PNG_TRANSFORM_STRIP_16)
- png_set_strip_16(png_ptr);
-#endif
-
-#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
- /* Strip alpha bytes from the input data without combining with
- * the background (not recommended).
- */
- if (transforms & PNG_TRANSFORM_STRIP_ALPHA)
- png_set_strip_alpha(png_ptr);
-#endif
-
-#if defined(PNG_READ_PACK_SUPPORTED) && !defined(PNG_READ_EXPAND_SUPPORTED)
- /* Extract multiple pixels with bit depths of 1, 2, or 4 from a single
- * byte into separate bytes (useful for paletted and grayscale images).
- */
- if (transforms & PNG_TRANSFORM_PACKING)
- png_set_packing(png_ptr);
-#endif
-
-#ifdef PNG_READ_PACKSWAP_SUPPORTED
- /* Change the order of packed pixels to least significant bit first
- * (not useful if you are using png_set_packing).
- */
- if (transforms & PNG_TRANSFORM_PACKSWAP)
- png_set_packswap(png_ptr);
-#endif
-
-#ifdef PNG_READ_EXPAND_SUPPORTED
- /* Expand paletted colors into true RGB triplets
- * Expand grayscale images to full 8 bits from 1, 2, or 4 bits/pixel
- * Expand paletted or RGB images with transparency to full alpha
- * channels so the data will be available as RGBA quartets.
- */
- if (transforms & PNG_TRANSFORM_EXPAND)
- if ((png_ptr->bit_depth < 8) ||
- (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ||
- (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)))
- png_set_expand(png_ptr);
-#endif
-
- /* We don't handle background color or gamma transformation or quantizing.
- */
-
-#ifdef PNG_READ_INVERT_SUPPORTED
- /* Invert monochrome files to have 0 as white and 1 as black
- */
- if (transforms & PNG_TRANSFORM_INVERT_MONO)
- png_set_invert_mono(png_ptr);
-#endif
-
-#ifdef PNG_READ_SHIFT_SUPPORTED
- /* If you want to shift the pixel values from the range [0,255] or
- * [0,65535] to the original [0,7] or [0,31], or whatever range the
- * colors were originally in:
- */
- if ((transforms & PNG_TRANSFORM_SHIFT)
- && png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT))
- {
- png_color_8p sig_bit;
-
- png_get_sBIT(png_ptr, info_ptr, &sig_bit);
- png_set_shift(png_ptr, sig_bit);
- }
-#endif
-
-#ifdef PNG_READ_BGR_SUPPORTED
- /* Flip the RGB pixels to BGR (or RGBA to BGRA) */
- if (transforms & PNG_TRANSFORM_BGR)
- png_set_bgr(png_ptr);
-#endif
-
-#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED
- /* Swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR) */
- if (transforms & PNG_TRANSFORM_SWAP_ALPHA)
- png_set_swap_alpha(png_ptr);
-#endif
-
-#ifdef PNG_READ_SWAP_SUPPORTED
- /* Swap bytes of 16 bit files to least significant byte first */
- if (transforms & PNG_TRANSFORM_SWAP_ENDIAN)
- png_set_swap(png_ptr);
-#endif
-
-/* Added at libpng-1.2.41 */
-#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
- /* Invert the alpha channel from opacity to transparency */
- if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
- png_set_invert_alpha(png_ptr);
-#endif
-
-/* Added at libpng-1.2.41 */
-#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
- /* Expand grayscale image to RGB */
- if (transforms & PNG_TRANSFORM_GRAY_TO_RGB)
- png_set_gray_to_rgb(png_ptr);
-#endif
-
- /* We don't handle adding filler bytes */
-
- /* Optional call to gamma correct and add the background to the palette
- * and update info structure. REQUIRED if you are expecting libpng to
- * update the palette for you (i.e., you selected such a transform above).
- */
- png_read_update_info(png_ptr, info_ptr);
-
- /* -------------- image transformations end here ------------------- */
-
- png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
- if (info_ptr->row_pointers == NULL)
- {
- png_uint_32 iptr;
-
- info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr,
- info_ptr->height * png_sizeof(png_bytep));
- for (iptr=0; iptrheight; iptr++)
- info_ptr->row_pointers[iptr] = NULL;
-
- info_ptr->free_me |= PNG_FREE_ROWS;
-
- for (row = 0; row < (int)info_ptr->height; row++)
- info_ptr->row_pointers[row] = (png_bytep)png_malloc(png_ptr,
- png_get_rowbytes(png_ptr, info_ptr));
- }
-
- png_read_image(png_ptr, info_ptr->row_pointers);
- info_ptr->valid |= PNG_INFO_IDAT;
-
- /* Read rest of file, and get additional chunks in info_ptr - REQUIRED */
- png_read_end(png_ptr, info_ptr);
-
- PNG_UNUSED(transforms) /* Quiet compiler warnings */
- PNG_UNUSED(params)
-
-}
-#endif /* PNG_INFO_IMAGE_SUPPORTED */
-#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
-#endif /* PNG_READ_SUPPORTED */
+
+/* pngread.c - read a PNG file
+ *
+ * Last changed in libpng 1.2.48 [March 8, 2012]
+ * Copyright (c) 1998-2012 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * This file contains routines that an application calls directly to
+ * read a PNG file or stream.
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#ifdef PNG_READ_SUPPORTED
+
+/* Create a PNG structure for reading, and allocate any memory needed. */
+png_structp PNGAPI
+png_create_read_struct(png_const_charp user_png_ver, png_voidp error_ptr,
+ png_error_ptr error_fn, png_error_ptr warn_fn)
+{
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ return (png_create_read_struct_2(user_png_ver, error_ptr, error_fn,
+ warn_fn, png_voidp_NULL, png_malloc_ptr_NULL, png_free_ptr_NULL));
+}
+
+/* Alternate create PNG structure for reading, and allocate any memory
+ * needed.
+ */
+png_structp PNGAPI
+png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
+ png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
+ png_malloc_ptr malloc_fn, png_free_ptr free_fn)
+{
+#endif /* PNG_USER_MEM_SUPPORTED */
+
+#ifdef PNG_SETJMP_SUPPORTED
+ volatile
+#endif
+ png_structp png_ptr;
+
+#ifdef PNG_SETJMP_SUPPORTED
+#ifdef USE_FAR_KEYWORD
+ jmp_buf jmpbuf;
+#endif
+#endif
+
+ int i;
+
+ png_debug(1, "in png_create_read_struct");
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
+ (png_malloc_ptr)malloc_fn, (png_voidp)mem_ptr);
+#else
+ png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
+#endif
+ if (png_ptr == NULL)
+ return (NULL);
+
+ /* Added at libpng-1.2.6 */
+#ifdef PNG_USER_LIMITS_SUPPORTED
+ png_ptr->user_width_max = PNG_USER_WIDTH_MAX;
+ png_ptr->user_height_max = PNG_USER_HEIGHT_MAX;
+ /* Added at libpng-1.2.43 and 1.4.0 */
+ png_ptr->user_chunk_cache_max = PNG_USER_CHUNK_CACHE_MAX;
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+#ifdef USE_FAR_KEYWORD
+ if (setjmp(jmpbuf))
+#else
+ if (setjmp(png_ptr->jmpbuf))
+#endif
+ {
+ png_free(png_ptr, png_ptr->zbuf);
+ png_ptr->zbuf = NULL;
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_destroy_struct_2((png_voidp)png_ptr,
+ (png_free_ptr)free_fn, (png_voidp)mem_ptr);
+#else
+ png_destroy_struct((png_voidp)png_ptr);
+#endif
+ return (NULL);
+ }
+#ifdef USE_FAR_KEYWORD
+ png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf));
+#endif
+#endif /* PNG_SETJMP_SUPPORTED */
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_set_mem_fn(png_ptr, mem_ptr, malloc_fn, free_fn);
+#endif
+
+ png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
+
+ if (user_png_ver)
+ {
+ i = 0;
+ do
+ {
+ if (user_png_ver[i] != png_libpng_ver[i])
+ png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
+ } while (png_libpng_ver[i++]);
+ }
+ else
+ png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
+
+
+ if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
+ {
+ /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so
+ * we must recompile any applications that use any older library version.
+ * For versions after libpng 1.0, we will be compatible, so we need
+ * only check the first digit.
+ */
+ if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||
+ (user_png_ver[0] == '1' && user_png_ver[2] != png_libpng_ver[2]) ||
+ (user_png_ver[0] == '0' && user_png_ver[2] < '9'))
+ {
+#if defined(PNG_STDIO_SUPPORTED) && !defined(_WIN32_WCE)
+ char msg[80];
+ if (user_png_ver)
+ {
+ png_snprintf(msg, 80,
+ "Application was compiled with png.h from libpng-%.20s",
+ user_png_ver);
+ png_warning(png_ptr, msg);
+ }
+ png_snprintf(msg, 80,
+ "Application is running with png.c from libpng-%.20s",
+ png_libpng_ver);
+ png_warning(png_ptr, msg);
+#endif
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+ png_ptr->flags = 0;
+#endif
+ png_error(png_ptr,
+ "Incompatible libpng version in application and library");
+ }
+ }
+
+ /* Initialize zbuf - compression buffer */
+ png_ptr->zbuf_size = PNG_ZBUF_SIZE;
+ png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)png_ptr->zbuf_size);
+ png_ptr->zstream.zalloc = png_zalloc;
+ png_ptr->zstream.zfree = png_zfree;
+ png_ptr->zstream.opaque = (voidpf)png_ptr;
+
+ switch (inflateInit(&png_ptr->zstream))
+ {
+ case Z_OK: /* Do nothing */ break;
+ case Z_MEM_ERROR:
+ case Z_STREAM_ERROR: png_error(png_ptr, "zlib memory error");
+ break;
+ case Z_VERSION_ERROR: png_error(png_ptr, "zlib version error");
+ break;
+ default: png_error(png_ptr, "Unknown zlib error");
+ }
+
+
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+
+ png_set_read_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL);
+
+#ifdef PNG_SETJMP_SUPPORTED
+/* Applications that neglect to set up their own setjmp() and then
+ encounter a png_error() will longjmp here. Since the jmpbuf is
+ then meaningless we abort instead of returning. */
+#ifdef USE_FAR_KEYWORD
+ if (setjmp(jmpbuf))
+ PNG_ABORT();
+ png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf));
+#else
+ if (setjmp(png_ptr->jmpbuf))
+ PNG_ABORT();
+#endif
+#endif /* PNG_SETJMP_SUPPORTED */
+
+ return (png_ptr);
+}
+
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
+/* Initialize PNG structure for reading, and allocate any memory needed.
+ * This interface is deprecated in favour of the png_create_read_struct(),
+ * and it will disappear as of libpng-1.3.0.
+ */
+#undef png_read_init
+void PNGAPI
+png_read_init(png_structp png_ptr)
+{
+ /* We only come here via pre-1.0.7-compiled applications */
+ png_read_init_2(png_ptr, "1.0.6 or earlier", 0, 0);
+}
+
+void PNGAPI
+png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
+ png_size_t png_struct_size, png_size_t png_info_size)
+{
+ /* We only come here via pre-1.0.12-compiled applications */
+ if (png_ptr == NULL)
+ return;
+#if defined(PNG_STDIO_SUPPORTED) && !defined(_WIN32_WCE)
+ if (png_sizeof(png_struct) > png_struct_size ||
+ png_sizeof(png_info) > png_info_size)
+ {
+ char msg[80];
+ png_ptr->warning_fn = NULL;
+ if (user_png_ver)
+ {
+ png_snprintf(msg, 80,
+ "Application was compiled with png.h from libpng-%.20s",
+ user_png_ver);
+ png_warning(png_ptr, msg);
+ }
+ png_snprintf(msg, 80,
+ "Application is running with png.c from libpng-%.20s",
+ png_libpng_ver);
+ png_warning(png_ptr, msg);
+ }
+#endif
+ if (png_sizeof(png_struct) > png_struct_size)
+ {
+ png_ptr->error_fn = NULL;
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+ png_ptr->flags = 0;
+#endif
+ png_error(png_ptr,
+ "The png struct allocated by the application for reading is"
+ " too small.");
+ }
+ if (png_sizeof(png_info) > png_info_size)
+ {
+ png_ptr->error_fn = NULL;
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+ png_ptr->flags = 0;
+#endif
+ png_error(png_ptr,
+ "The info struct allocated by application for reading is"
+ " too small.");
+ }
+ png_read_init_3(&png_ptr, user_png_ver, png_struct_size);
+}
+#endif /* PNG_1_0_X || PNG_1_2_X */
+
+void PNGAPI
+png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
+ png_size_t png_struct_size)
+{
+#ifdef PNG_SETJMP_SUPPORTED
+ jmp_buf tmp_jmp; /* to save current jump buffer */
+#endif
+
+ int i = 0;
+
+ png_structp png_ptr=*ptr_ptr;
+
+ if (png_ptr == NULL)
+ return;
+
+ do
+ {
+ if (user_png_ver[i] != png_libpng_ver[i])
+ {
+#ifdef PNG_LEGACY_SUPPORTED
+ png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
+#else
+ png_ptr->warning_fn = NULL;
+ png_warning(png_ptr,
+ "Application uses deprecated png_read_init() and should be"
+ " recompiled.");
+ break;
+#endif
+ }
+ } while (png_libpng_ver[i++]);
+
+ png_debug(1, "in png_read_init_3");
+
+#ifdef PNG_SETJMP_SUPPORTED
+ /* Save jump buffer and error functions */
+ png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
+#endif
+
+ if (png_sizeof(png_struct) > png_struct_size)
+ {
+ png_destroy_struct(png_ptr);
+ *ptr_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
+ png_ptr = *ptr_ptr;
+ }
+
+ /* Reset all variables to 0 */
+ png_memset(png_ptr, 0, png_sizeof(png_struct));
+
+#ifdef PNG_SETJMP_SUPPORTED
+ /* Restore jump buffer */
+ png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
+#endif
+
+ /* Added at libpng-1.2.6 */
+#ifdef PNG_SET_USER_LIMITS_SUPPORTED
+ png_ptr->user_width_max = PNG_USER_WIDTH_MAX;
+ png_ptr->user_height_max = PNG_USER_HEIGHT_MAX;
+#endif
+
+ /* Initialize zbuf - compression buffer */
+ png_ptr->zbuf_size = PNG_ZBUF_SIZE;
+ png_ptr->zstream.zalloc = png_zalloc;
+ png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)png_ptr->zbuf_size);
+ png_ptr->zstream.zalloc = png_zalloc;
+ png_ptr->zstream.zfree = png_zfree;
+ png_ptr->zstream.opaque = (voidpf)png_ptr;
+
+ switch (inflateInit(&png_ptr->zstream))
+ {
+ case Z_OK: /* Do nothing */ break;
+ case Z_STREAM_ERROR: png_error(png_ptr, "zlib memory error"); break;
+ case Z_VERSION_ERROR: png_error(png_ptr, "zlib version error");
+ break;
+ default: png_error(png_ptr, "Unknown zlib error");
+ }
+
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+
+ png_set_read_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL);
+}
+
+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
+/* Read the information before the actual image data. This has been
+ * changed in v0.90 to allow reading a file that already has the magic
+ * bytes read from the stream. You can tell libpng how many bytes have
+ * been read from the beginning of the stream (up to the maximum of 8)
+ * via png_set_sig_bytes(), and we will only check the remaining bytes
+ * here. The application can then have access to the signature bytes we
+ * read if it is determined that this isn't a valid PNG file.
+ */
+void PNGAPI
+png_read_info(png_structp png_ptr, png_infop info_ptr)
+{
+ png_debug(1, "in png_read_info");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ /* If we haven't checked all of the PNG signature bytes, do so now. */
+ if (png_ptr->sig_bytes < 8)
+ {
+ png_size_t num_checked = png_ptr->sig_bytes,
+ num_to_check = 8 - num_checked;
+
+ png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check);
+ png_ptr->sig_bytes = 8;
+
+ if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check))
+ {
+ if (num_checked < 4 &&
+ png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4))
+ png_error(png_ptr, "Not a PNG file");
+ else
+ png_error(png_ptr, "PNG file corrupted by ASCII conversion");
+ }
+ if (num_checked < 3)
+ png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
+ }
+
+ for (;;)
+ {
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_CONST PNG_IHDR;
+ PNG_CONST PNG_IDAT;
+ PNG_CONST PNG_IEND;
+ PNG_CONST PNG_PLTE;
+#ifdef PNG_READ_bKGD_SUPPORTED
+ PNG_CONST PNG_bKGD;
+#endif
+#ifdef PNG_READ_cHRM_SUPPORTED
+ PNG_CONST PNG_cHRM;
+#endif
+#ifdef PNG_READ_gAMA_SUPPORTED
+ PNG_CONST PNG_gAMA;
+#endif
+#ifdef PNG_READ_hIST_SUPPORTED
+ PNG_CONST PNG_hIST;
+#endif
+#ifdef PNG_READ_iCCP_SUPPORTED
+ PNG_CONST PNG_iCCP;
+#endif
+#ifdef PNG_READ_iTXt_SUPPORTED
+ PNG_CONST PNG_iTXt;
+#endif
+#ifdef PNG_READ_oFFs_SUPPORTED
+ PNG_CONST PNG_oFFs;
+#endif
+#ifdef PNG_READ_pCAL_SUPPORTED
+ PNG_CONST PNG_pCAL;
+#endif
+#ifdef PNG_READ_pHYs_SUPPORTED
+ PNG_CONST PNG_pHYs;
+#endif
+#ifdef PNG_READ_sBIT_SUPPORTED
+ PNG_CONST PNG_sBIT;
+#endif
+#ifdef PNG_READ_sCAL_SUPPORTED
+ PNG_CONST PNG_sCAL;
+#endif
+#ifdef PNG_READ_sPLT_SUPPORTED
+ PNG_CONST PNG_sPLT;
+#endif
+#ifdef PNG_READ_sRGB_SUPPORTED
+ PNG_CONST PNG_sRGB;
+#endif
+#ifdef PNG_READ_tEXt_SUPPORTED
+ PNG_CONST PNG_tEXt;
+#endif
+#ifdef PNG_READ_tIME_SUPPORTED
+ PNG_CONST PNG_tIME;
+#endif
+#ifdef PNG_READ_tRNS_SUPPORTED
+ PNG_CONST PNG_tRNS;
+#endif
+#ifdef PNG_READ_zTXt_SUPPORTED
+ PNG_CONST PNG_zTXt;
+#endif
+#endif /* PNG_USE_LOCAL_ARRAYS */
+ png_uint_32 length = png_read_chunk_header(png_ptr);
+ PNG_CONST png_bytep chunk_name = png_ptr->chunk_name;
+
+ /* This should be a binary subdivision search or a hash for
+ * matching the chunk name rather than a linear search.
+ */
+ if (!png_memcmp(chunk_name, png_IDAT, 4))
+ if (png_ptr->mode & PNG_AFTER_IDAT)
+ png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
+
+ if (!png_memcmp(chunk_name, png_IHDR, 4))
+ png_handle_IHDR(png_ptr, info_ptr, length);
+ else if (!png_memcmp(chunk_name, png_IEND, 4))
+ png_handle_IEND(png_ptr, info_ptr, length);
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+ else if (png_handle_as_unknown(png_ptr, chunk_name))
+ {
+ if (!png_memcmp(chunk_name, png_IDAT, 4))
+ png_ptr->mode |= PNG_HAVE_IDAT;
+ png_handle_unknown(png_ptr, info_ptr, length);
+ if (!png_memcmp(chunk_name, png_PLTE, 4))
+ png_ptr->mode |= PNG_HAVE_PLTE;
+ else if (!png_memcmp(chunk_name, png_IDAT, 4))
+ {
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before IDAT");
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
+ !(png_ptr->mode & PNG_HAVE_PLTE))
+ png_error(png_ptr, "Missing PLTE before IDAT");
+ break;
+ }
+ }
+#endif
+ else if (!png_memcmp(chunk_name, png_PLTE, 4))
+ png_handle_PLTE(png_ptr, info_ptr, length);
+ else if (!png_memcmp(chunk_name, png_IDAT, 4))
+ {
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before IDAT");
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
+ !(png_ptr->mode & PNG_HAVE_PLTE))
+ png_error(png_ptr, "Missing PLTE before IDAT");
+
+ png_ptr->idat_size = length;
+ png_ptr->mode |= PNG_HAVE_IDAT;
+ break;
+ }
+#ifdef PNG_READ_bKGD_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_bKGD, 4))
+ png_handle_bKGD(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_cHRM_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_cHRM, 4))
+ png_handle_cHRM(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_gAMA_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_gAMA, 4))
+ png_handle_gAMA(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_hIST_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_hIST, 4))
+ png_handle_hIST(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_oFFs_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_oFFs, 4))
+ png_handle_oFFs(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_pCAL_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_pCAL, 4))
+ png_handle_pCAL(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_sCAL_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_sCAL, 4))
+ png_handle_sCAL(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_pHYs_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_pHYs, 4))
+ png_handle_pHYs(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_sBIT_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_sBIT, 4))
+ png_handle_sBIT(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_sRGB_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_sRGB, 4))
+ png_handle_sRGB(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_iCCP_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_iCCP, 4))
+ png_handle_iCCP(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_sPLT_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_sPLT, 4))
+ png_handle_sPLT(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_tEXt_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_tEXt, 4))
+ png_handle_tEXt(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_tIME_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_tIME, 4))
+ png_handle_tIME(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_tRNS_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_tRNS, 4))
+ png_handle_tRNS(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_zTXt_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_zTXt, 4))
+ png_handle_zTXt(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_iTXt_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_iTXt, 4))
+ png_handle_iTXt(png_ptr, info_ptr, length);
+#endif
+ else
+ png_handle_unknown(png_ptr, info_ptr, length);
+ }
+}
+#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
+
+/* Optional call to update the users info_ptr structure */
+void PNGAPI
+png_read_update_info(png_structp png_ptr, png_infop info_ptr)
+{
+ png_debug(1, "in png_read_update_info");
+
+ if (png_ptr == NULL)
+ return;
+ if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
+ png_read_start_row(png_ptr);
+ else
+ png_warning(png_ptr,
+ "Ignoring extra png_read_update_info() call; row buffer not reallocated");
+
+ png_read_transform_info(png_ptr, info_ptr);
+}
+
+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
+/* Initialize palette, background, etc, after transformations
+ * are set, but before any reading takes place. This allows
+ * the user to obtain a gamma-corrected palette, for example.
+ * If the user doesn't call this, we will do it ourselves.
+ */
+void PNGAPI
+png_start_read_image(png_structp png_ptr)
+{
+ png_debug(1, "in png_start_read_image");
+
+ if (png_ptr == NULL)
+ return;
+ if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
+ png_read_start_row(png_ptr);
+}
+#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
+
+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
+void PNGAPI
+png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
+{
+ PNG_CONST PNG_IDAT;
+ PNG_CONST int png_pass_dsp_mask[7] = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55,
+ 0xff};
+ PNG_CONST int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
+ int ret;
+
+ if (png_ptr == NULL)
+ return;
+
+ png_debug2(1, "in png_read_row (row %lu, pass %d)",
+ png_ptr->row_number, png_ptr->pass);
+
+ if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
+ png_read_start_row(png_ptr);
+ if (png_ptr->row_number == 0 && png_ptr->pass == 0)
+ {
+ /* Check for transforms that have been set but were defined out */
+#if defined(PNG_WRITE_INVERT_SUPPORTED) && !defined(PNG_READ_INVERT_SUPPORTED)
+ if (png_ptr->transformations & PNG_INVERT_MONO)
+ png_warning(png_ptr, "PNG_READ_INVERT_SUPPORTED is not defined.");
+#endif
+#if defined(PNG_WRITE_FILLER_SUPPORTED) && !defined(PNG_READ_FILLER_SUPPORTED)
+ if (png_ptr->transformations & PNG_FILLER)
+ png_warning(png_ptr, "PNG_READ_FILLER_SUPPORTED is not defined.");
+#endif
+#if defined(PNG_WRITE_PACKSWAP_SUPPORTED) && \
+ !defined(PNG_READ_PACKSWAP_SUPPORTED)
+ if (png_ptr->transformations & PNG_PACKSWAP)
+ png_warning(png_ptr, "PNG_READ_PACKSWAP_SUPPORTED is not defined.");
+#endif
+#if defined(PNG_WRITE_PACK_SUPPORTED) && !defined(PNG_READ_PACK_SUPPORTED)
+ if (png_ptr->transformations & PNG_PACK)
+ png_warning(png_ptr, "PNG_READ_PACK_SUPPORTED is not defined.");
+#endif
+#if defined(PNG_WRITE_SHIFT_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED)
+ if (png_ptr->transformations & PNG_SHIFT)
+ png_warning(png_ptr, "PNG_READ_SHIFT_SUPPORTED is not defined.");
+#endif
+#if defined(PNG_WRITE_BGR_SUPPORTED) && !defined(PNG_READ_BGR_SUPPORTED)
+ if (png_ptr->transformations & PNG_BGR)
+ png_warning(png_ptr, "PNG_READ_BGR_SUPPORTED is not defined.");
+#endif
+#if defined(PNG_WRITE_SWAP_SUPPORTED) && !defined(PNG_READ_SWAP_SUPPORTED)
+ if (png_ptr->transformations & PNG_SWAP_BYTES)
+ png_warning(png_ptr, "PNG_READ_SWAP_SUPPORTED is not defined.");
+#endif
+ }
+
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+ /* If interlaced and we do not need a new row, combine row and return */
+ if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
+ {
+ switch (png_ptr->pass)
+ {
+ case 0:
+ if (png_ptr->row_number & 0x07)
+ {
+ if (dsp_row != NULL)
+ png_combine_row(png_ptr, dsp_row,
+ png_pass_dsp_mask[png_ptr->pass]);
+ png_read_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 1:
+ if ((png_ptr->row_number & 0x07) || png_ptr->width < 5)
+ {
+ if (dsp_row != NULL)
+ png_combine_row(png_ptr, dsp_row,
+ png_pass_dsp_mask[png_ptr->pass]);
+ png_read_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 2:
+ if ((png_ptr->row_number & 0x07) != 4)
+ {
+ if (dsp_row != NULL && (png_ptr->row_number & 4))
+ png_combine_row(png_ptr, dsp_row,
+ png_pass_dsp_mask[png_ptr->pass]);
+ png_read_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 3:
+ if ((png_ptr->row_number & 3) || png_ptr->width < 3)
+ {
+ if (dsp_row != NULL)
+ png_combine_row(png_ptr, dsp_row,
+ png_pass_dsp_mask[png_ptr->pass]);
+ png_read_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 4:
+ if ((png_ptr->row_number & 3) != 2)
+ {
+ if (dsp_row != NULL && (png_ptr->row_number & 2))
+ png_combine_row(png_ptr, dsp_row,
+ png_pass_dsp_mask[png_ptr->pass]);
+ png_read_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 5:
+ if ((png_ptr->row_number & 1) || png_ptr->width < 2)
+ {
+ if (dsp_row != NULL)
+ png_combine_row(png_ptr, dsp_row,
+ png_pass_dsp_mask[png_ptr->pass]);
+ png_read_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 6:
+ if (!(png_ptr->row_number & 1))
+ {
+ png_read_finish_row(png_ptr);
+ return;
+ }
+ break;
+ }
+ }
+#endif
+
+ if (!(png_ptr->mode & PNG_HAVE_IDAT))
+ png_error(png_ptr, "Invalid attempt to read row data");
+
+ png_ptr->zstream.next_out = png_ptr->row_buf;
+ png_ptr->zstream.avail_out =
+ (uInt)(PNG_ROWBYTES(png_ptr->pixel_depth,
+ png_ptr->iwidth) + 1);
+ do
+ {
+ if (!(png_ptr->zstream.avail_in))
+ {
+ while (!png_ptr->idat_size)
+ {
+ png_crc_finish(png_ptr, 0);
+
+ png_ptr->idat_size = png_read_chunk_header(png_ptr);
+ if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+ png_error(png_ptr, "Not enough image data");
+ }
+ png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size;
+ png_ptr->zstream.next_in = png_ptr->zbuf;
+ if (png_ptr->zbuf_size > png_ptr->idat_size)
+ png_ptr->zstream.avail_in = (uInt)png_ptr->idat_size;
+ png_crc_read(png_ptr, png_ptr->zbuf,
+ (png_size_t)png_ptr->zstream.avail_in);
+ png_ptr->idat_size -= png_ptr->zstream.avail_in;
+ }
+ ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
+ if (ret == Z_STREAM_END)
+ {
+ if (png_ptr->zstream.avail_out || png_ptr->zstream.avail_in ||
+ png_ptr->idat_size)
+ png_error(png_ptr, "Extra compressed data");
+ png_ptr->mode |= PNG_AFTER_IDAT;
+ png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
+ break;
+ }
+ if (ret != Z_OK)
+ png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg :
+ "Decompression error");
+
+ } while (png_ptr->zstream.avail_out);
+
+ png_ptr->row_info.color_type = png_ptr->color_type;
+ png_ptr->row_info.width = png_ptr->iwidth;
+ png_ptr->row_info.channels = png_ptr->channels;
+ png_ptr->row_info.bit_depth = png_ptr->bit_depth;
+ png_ptr->row_info.pixel_depth = png_ptr->pixel_depth;
+ png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
+ png_ptr->row_info.width);
+
+ if (png_ptr->row_buf[0])
+ png_read_filter_row(png_ptr, &(png_ptr->row_info),
+ png_ptr->row_buf + 1, png_ptr->prev_row + 1,
+ (int)(png_ptr->row_buf[0]));
+
+ png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf,
+ png_ptr->rowbytes + 1);
+
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
+ (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
+ {
+ /* Intrapixel differencing */
+ png_do_read_intrapixel(&(png_ptr->row_info), png_ptr->row_buf + 1);
+ }
+#endif
+
+
+ if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
+ png_do_read_transformations(png_ptr);
+
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+ /* Blow up interlaced rows to full size */
+ if (png_ptr->interlaced &&
+ (png_ptr->transformations & PNG_INTERLACE))
+ {
+ if (png_ptr->pass < 6)
+ /* Old interface (pre-1.0.9):
+ * png_do_read_interlace(&(png_ptr->row_info),
+ * png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations);
+ */
+ png_do_read_interlace(png_ptr);
+
+ if (dsp_row != NULL)
+ png_combine_row(png_ptr, dsp_row,
+ png_pass_dsp_mask[png_ptr->pass]);
+ if (row != NULL)
+ png_combine_row(png_ptr, row,
+ png_pass_mask[png_ptr->pass]);
+ }
+ else
+#endif
+ {
+ if (row != NULL)
+ png_combine_row(png_ptr, row, 0xff);
+ if (dsp_row != NULL)
+ png_combine_row(png_ptr, dsp_row, 0xff);
+ }
+ png_read_finish_row(png_ptr);
+
+ if (png_ptr->read_row_fn != NULL)
+ (*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);
+}
+#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
+
+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
+/* Read one or more rows of image data. If the image is interlaced,
+ * and png_set_interlace_handling() has been called, the rows need to
+ * contain the contents of the rows from the previous pass. If the
+ * image has alpha or transparency, and png_handle_alpha()[*] has been
+ * called, the rows contents must be initialized to the contents of the
+ * screen.
+ *
+ * "row" holds the actual image, and pixels are placed in it
+ * as they arrive. If the image is displayed after each pass, it will
+ * appear to "sparkle" in. "display_row" can be used to display a
+ * "chunky" progressive image, with finer detail added as it becomes
+ * available. If you do not want this "chunky" display, you may pass
+ * NULL for display_row. If you do not want the sparkle display, and
+ * you have not called png_handle_alpha(), you may pass NULL for rows.
+ * If you have called png_handle_alpha(), and the image has either an
+ * alpha channel or a transparency chunk, you must provide a buffer for
+ * rows. In this case, you do not have to provide a display_row buffer
+ * also, but you may. If the image is not interlaced, or if you have
+ * not called png_set_interlace_handling(), the display_row buffer will
+ * be ignored, so pass NULL to it.
+ *
+ * [*] png_handle_alpha() does not exist yet, as of this version of libpng
+ */
+
+void PNGAPI
+png_read_rows(png_structp png_ptr, png_bytepp row,
+ png_bytepp display_row, png_uint_32 num_rows)
+{
+ png_uint_32 i;
+ png_bytepp rp;
+ png_bytepp dp;
+
+ png_debug(1, "in png_read_rows");
+
+ if (png_ptr == NULL)
+ return;
+ rp = row;
+ dp = display_row;
+ if (rp != NULL && dp != NULL)
+ for (i = 0; i < num_rows; i++)
+ {
+ png_bytep rptr = *rp++;
+ png_bytep dptr = *dp++;
+
+ png_read_row(png_ptr, rptr, dptr);
+ }
+ else if (rp != NULL)
+ for (i = 0; i < num_rows; i++)
+ {
+ png_bytep rptr = *rp;
+ png_read_row(png_ptr, rptr, png_bytep_NULL);
+ rp++;
+ }
+ else if (dp != NULL)
+ for (i = 0; i < num_rows; i++)
+ {
+ png_bytep dptr = *dp;
+ png_read_row(png_ptr, png_bytep_NULL, dptr);
+ dp++;
+ }
+}
+#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
+
+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
+/* Read the entire image. If the image has an alpha channel or a tRNS
+ * chunk, and you have called png_handle_alpha()[*], you will need to
+ * initialize the image to the current image that PNG will be overlaying.
+ * We set the num_rows again here, in case it was incorrectly set in
+ * png_read_start_row() by a call to png_read_update_info() or
+ * png_start_read_image() if png_set_interlace_handling() wasn't called
+ * prior to either of these functions like it should have been. You can
+ * only call this function once. If you desire to have an image for
+ * each pass of a interlaced image, use png_read_rows() instead.
+ *
+ * [*] png_handle_alpha() does not exist yet, as of this version of libpng
+ */
+void PNGAPI
+png_read_image(png_structp png_ptr, png_bytepp image)
+{
+ png_uint_32 i, image_height;
+ int pass, j;
+ png_bytepp rp;
+
+ png_debug(1, "in png_read_image");
+
+ if (png_ptr == NULL)
+ return;
+
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+ pass = png_set_interlace_handling(png_ptr);
+#else
+ if (png_ptr->interlaced)
+ png_error(png_ptr,
+ "Cannot read interlaced image -- interlace handler disabled.");
+ pass = 1;
+#endif
+
+
+ image_height=png_ptr->height;
+ png_ptr->num_rows = image_height; /* Make sure this is set correctly */
+
+ for (j = 0; j < pass; j++)
+ {
+ rp = image;
+ for (i = 0; i < image_height; i++)
+ {
+ png_read_row(png_ptr, *rp, png_bytep_NULL);
+ rp++;
+ }
+ }
+}
+#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
+
+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
+/* Read the end of the PNG file. Will not read past the end of the
+ * file, will verify the end is accurate, and will read any comments
+ * or time information at the end of the file, if info is not NULL.
+ */
+void PNGAPI
+png_read_end(png_structp png_ptr, png_infop info_ptr)
+{
+ png_debug(1, "in png_read_end");
+
+ if (png_ptr == NULL)
+ return;
+ png_crc_finish(png_ptr, 0); /* Finish off CRC from last IDAT chunk */
+
+ do
+ {
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_CONST PNG_IHDR;
+ PNG_CONST PNG_IDAT;
+ PNG_CONST PNG_IEND;
+ PNG_CONST PNG_PLTE;
+#ifdef PNG_READ_bKGD_SUPPORTED
+ PNG_CONST PNG_bKGD;
+#endif
+#ifdef PNG_READ_cHRM_SUPPORTED
+ PNG_CONST PNG_cHRM;
+#endif
+#ifdef PNG_READ_gAMA_SUPPORTED
+ PNG_CONST PNG_gAMA;
+#endif
+#ifdef PNG_READ_hIST_SUPPORTED
+ PNG_CONST PNG_hIST;
+#endif
+#ifdef PNG_READ_iCCP_SUPPORTED
+ PNG_CONST PNG_iCCP;
+#endif
+#ifdef PNG_READ_iTXt_SUPPORTED
+ PNG_CONST PNG_iTXt;
+#endif
+#ifdef PNG_READ_oFFs_SUPPORTED
+ PNG_CONST PNG_oFFs;
+#endif
+#ifdef PNG_READ_pCAL_SUPPORTED
+ PNG_CONST PNG_pCAL;
+#endif
+#ifdef PNG_READ_pHYs_SUPPORTED
+ PNG_CONST PNG_pHYs;
+#endif
+#ifdef PNG_READ_sBIT_SUPPORTED
+ PNG_CONST PNG_sBIT;
+#endif
+#ifdef PNG_READ_sCAL_SUPPORTED
+ PNG_CONST PNG_sCAL;
+#endif
+#ifdef PNG_READ_sPLT_SUPPORTED
+ PNG_CONST PNG_sPLT;
+#endif
+#ifdef PNG_READ_sRGB_SUPPORTED
+ PNG_CONST PNG_sRGB;
+#endif
+#ifdef PNG_READ_tEXt_SUPPORTED
+ PNG_CONST PNG_tEXt;
+#endif
+#ifdef PNG_READ_tIME_SUPPORTED
+ PNG_CONST PNG_tIME;
+#endif
+#ifdef PNG_READ_tRNS_SUPPORTED
+ PNG_CONST PNG_tRNS;
+#endif
+#ifdef PNG_READ_zTXt_SUPPORTED
+ PNG_CONST PNG_zTXt;
+#endif
+#endif /* PNG_USE_LOCAL_ARRAYS */
+ png_uint_32 length = png_read_chunk_header(png_ptr);
+ PNG_CONST png_bytep chunk_name = png_ptr->chunk_name;
+
+ if (!png_memcmp(chunk_name, png_IHDR, 4))
+ png_handle_IHDR(png_ptr, info_ptr, length);
+ else if (!png_memcmp(chunk_name, png_IEND, 4))
+ png_handle_IEND(png_ptr, info_ptr, length);
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+ else if (png_handle_as_unknown(png_ptr, chunk_name))
+ {
+ if (!png_memcmp(chunk_name, png_IDAT, 4))
+ {
+ if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
+ png_error(png_ptr, "Too many IDAT's found");
+ }
+ png_handle_unknown(png_ptr, info_ptr, length);
+ if (!png_memcmp(chunk_name, png_PLTE, 4))
+ png_ptr->mode |= PNG_HAVE_PLTE;
+ }
+#endif
+ else if (!png_memcmp(chunk_name, png_IDAT, 4))
+ {
+ /* Zero length IDATs are legal after the last IDAT has been
+ * read, but not after other chunks have been read.
+ */
+ if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
+ png_error(png_ptr, "Too many IDAT's found");
+ png_crc_finish(png_ptr, length);
+ }
+ else if (!png_memcmp(chunk_name, png_PLTE, 4))
+ png_handle_PLTE(png_ptr, info_ptr, length);
+#ifdef PNG_READ_bKGD_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_bKGD, 4))
+ png_handle_bKGD(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_cHRM_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_cHRM, 4))
+ png_handle_cHRM(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_gAMA_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_gAMA, 4))
+ png_handle_gAMA(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_hIST_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_hIST, 4))
+ png_handle_hIST(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_oFFs_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_oFFs, 4))
+ png_handle_oFFs(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_pCAL_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_pCAL, 4))
+ png_handle_pCAL(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_sCAL_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_sCAL, 4))
+ png_handle_sCAL(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_pHYs_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_pHYs, 4))
+ png_handle_pHYs(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_sBIT_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_sBIT, 4))
+ png_handle_sBIT(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_sRGB_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_sRGB, 4))
+ png_handle_sRGB(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_iCCP_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_iCCP, 4))
+ png_handle_iCCP(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_sPLT_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_sPLT, 4))
+ png_handle_sPLT(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_tEXt_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_tEXt, 4))
+ png_handle_tEXt(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_tIME_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_tIME, 4))
+ png_handle_tIME(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_tRNS_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_tRNS, 4))
+ png_handle_tRNS(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_zTXt_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_zTXt, 4))
+ png_handle_zTXt(png_ptr, info_ptr, length);
+#endif
+#ifdef PNG_READ_iTXt_SUPPORTED
+ else if (!png_memcmp(chunk_name, png_iTXt, 4))
+ png_handle_iTXt(png_ptr, info_ptr, length);
+#endif
+ else
+ png_handle_unknown(png_ptr, info_ptr, length);
+ } while (!(png_ptr->mode & PNG_HAVE_IEND));
+}
+#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
+
+/* Free all memory used by the read */
+void PNGAPI
+png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
+ png_infopp end_info_ptr_ptr)
+{
+ png_structp png_ptr = NULL;
+ png_infop info_ptr = NULL, end_info_ptr = NULL;
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_free_ptr free_fn = NULL;
+ png_voidp mem_ptr = NULL;
+#endif
+
+ png_debug(1, "in png_destroy_read_struct");
+
+ if (png_ptr_ptr != NULL)
+ png_ptr = *png_ptr_ptr;
+ if (png_ptr == NULL)
+ return;
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ free_fn = png_ptr->free_fn;
+ mem_ptr = png_ptr->mem_ptr;
+#endif
+
+ if (info_ptr_ptr != NULL)
+ info_ptr = *info_ptr_ptr;
+
+ if (end_info_ptr_ptr != NULL)
+ end_info_ptr = *end_info_ptr_ptr;
+
+ png_read_destroy(png_ptr, info_ptr, end_info_ptr);
+
+ if (info_ptr != NULL)
+ {
+#ifdef PNG_TEXT_SUPPORTED
+ png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, -1);
+#endif
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_destroy_struct_2((png_voidp)info_ptr, (png_free_ptr)free_fn,
+ (png_voidp)mem_ptr);
+#else
+ png_destroy_struct((png_voidp)info_ptr);
+#endif
+ *info_ptr_ptr = NULL;
+ }
+
+ if (end_info_ptr != NULL)
+ {
+#ifdef PNG_READ_TEXT_SUPPORTED
+ png_free_data(png_ptr, end_info_ptr, PNG_FREE_TEXT, -1);
+#endif
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_destroy_struct_2((png_voidp)end_info_ptr, (png_free_ptr)free_fn,
+ (png_voidp)mem_ptr);
+#else
+ png_destroy_struct((png_voidp)end_info_ptr);
+#endif
+ *end_info_ptr_ptr = NULL;
+ }
+
+ if (png_ptr != NULL)
+ {
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn,
+ (png_voidp)mem_ptr);
+#else
+ png_destroy_struct((png_voidp)png_ptr);
+#endif
+ *png_ptr_ptr = NULL;
+ }
+}
+
+/* Free all memory used by the read (old method) */
+void /* PRIVATE */
+png_read_destroy(png_structp png_ptr, png_infop info_ptr,
+ png_infop end_info_ptr)
+{
+#ifdef PNG_SETJMP_SUPPORTED
+ jmp_buf tmp_jmp;
+#endif
+ png_error_ptr error_fn;
+ png_error_ptr warning_fn;
+ png_voidp error_ptr;
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_free_ptr free_fn;
+#endif
+
+ png_debug(1, "in png_read_destroy");
+
+ if (info_ptr != NULL)
+ png_info_destroy(png_ptr, info_ptr);
+
+ if (end_info_ptr != NULL)
+ png_info_destroy(png_ptr, end_info_ptr);
+
+ png_free(png_ptr, png_ptr->zbuf);
+ png_free(png_ptr, png_ptr->big_row_buf);
+ png_free(png_ptr, png_ptr->prev_row);
+ png_free(png_ptr, png_ptr->chunkdata);
+#ifdef PNG_READ_DITHER_SUPPORTED
+ png_free(png_ptr, png_ptr->palette_lookup);
+ png_free(png_ptr, png_ptr->dither_index);
+#endif
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ png_free(png_ptr, png_ptr->gamma_table);
+#endif
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+ png_free(png_ptr, png_ptr->gamma_from_1);
+ png_free(png_ptr, png_ptr->gamma_to_1);
+#endif
+#ifdef PNG_FREE_ME_SUPPORTED
+ if (png_ptr->free_me & PNG_FREE_PLTE)
+ png_zfree(png_ptr, png_ptr->palette);
+ png_ptr->free_me &= ~PNG_FREE_PLTE;
+#else
+ if (png_ptr->flags & PNG_FLAG_FREE_PLTE)
+ png_zfree(png_ptr, png_ptr->palette);
+ png_ptr->flags &= ~PNG_FLAG_FREE_PLTE;
+#endif
+#if defined(PNG_tRNS_SUPPORTED) || \
+ defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
+#ifdef PNG_FREE_ME_SUPPORTED
+ if (png_ptr->free_me & PNG_FREE_TRNS)
+ png_free(png_ptr, png_ptr->trans);
+ png_ptr->free_me &= ~PNG_FREE_TRNS;
+#else
+ if (png_ptr->flags & PNG_FLAG_FREE_TRNS)
+ png_free(png_ptr, png_ptr->trans);
+ png_ptr->flags &= ~PNG_FLAG_FREE_TRNS;
+#endif
+#endif
+#ifdef PNG_READ_hIST_SUPPORTED
+#ifdef PNG_FREE_ME_SUPPORTED
+ if (png_ptr->free_me & PNG_FREE_HIST)
+ png_free(png_ptr, png_ptr->hist);
+ png_ptr->free_me &= ~PNG_FREE_HIST;
+#else
+ if (png_ptr->flags & PNG_FLAG_FREE_HIST)
+ png_free(png_ptr, png_ptr->hist);
+ png_ptr->flags &= ~PNG_FLAG_FREE_HIST;
+#endif
+#endif
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (png_ptr->gamma_16_table != NULL)
+ {
+ int i;
+ int istop = (1 << (8 - png_ptr->gamma_shift));
+ for (i = 0; i < istop; i++)
+ {
+ png_free(png_ptr, png_ptr->gamma_16_table[i]);
+ }
+ png_free(png_ptr, png_ptr->gamma_16_table);
+ }
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+ if (png_ptr->gamma_16_from_1 != NULL)
+ {
+ int i;
+ int istop = (1 << (8 - png_ptr->gamma_shift));
+ for (i = 0; i < istop; i++)
+ {
+ png_free(png_ptr, png_ptr->gamma_16_from_1[i]);
+ }
+ png_free(png_ptr, png_ptr->gamma_16_from_1);
+ }
+ if (png_ptr->gamma_16_to_1 != NULL)
+ {
+ int i;
+ int istop = (1 << (8 - png_ptr->gamma_shift));
+ for (i = 0; i < istop; i++)
+ {
+ png_free(png_ptr, png_ptr->gamma_16_to_1[i]);
+ }
+ png_free(png_ptr, png_ptr->gamma_16_to_1);
+ }
+#endif
+#endif
+#ifdef PNG_TIME_RFC1123_SUPPORTED
+ png_free(png_ptr, png_ptr->time_buffer);
+#endif
+
+ inflateEnd(&png_ptr->zstream);
+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+ png_free(png_ptr, png_ptr->save_buffer);
+#endif
+
+ /* Save the important info out of the png_struct, in case it is
+ * being used again.
+ */
+#ifdef PNG_SETJMP_SUPPORTED
+ png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
+#endif
+
+ error_fn = png_ptr->error_fn;
+ warning_fn = png_ptr->warning_fn;
+ error_ptr = png_ptr->error_ptr;
+#ifdef PNG_USER_MEM_SUPPORTED
+ free_fn = png_ptr->free_fn;
+#endif
+
+ png_memset(png_ptr, 0, png_sizeof(png_struct));
+
+ png_ptr->error_fn = error_fn;
+ png_ptr->warning_fn = warning_fn;
+ png_ptr->error_ptr = error_ptr;
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_ptr->free_fn = free_fn;
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+ png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
+#endif
+
+}
+
+void PNGAPI
+png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn)
+{
+ if (png_ptr == NULL)
+ return;
+ png_ptr->read_row_fn = read_row_fn;
+}
+
+
+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
+#ifdef PNG_INFO_IMAGE_SUPPORTED
+void PNGAPI
+png_read_png(png_structp png_ptr, png_infop info_ptr,
+ int transforms,
+ voidp params)
+{
+ int row;
+
+ if (png_ptr == NULL)
+ return;
+#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
+ /* Invert the alpha channel from opacity to transparency
+ */
+ if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
+ png_set_invert_alpha(png_ptr);
+#endif
+
+ /* png_read_info() gives us all of the information from the
+ * PNG file before the first IDAT (image data chunk).
+ */
+ png_read_info(png_ptr, info_ptr);
+ if (info_ptr->height > PNG_UINT_32_MAX/png_sizeof(png_bytep))
+ png_error(png_ptr, "Image is too high to process with png_read_png()");
+
+ /* -------------- image transformations start here ------------------- */
+
+#ifdef PNG_READ_16_TO_8_SUPPORTED
+ /* Tell libpng to strip 16 bit/color files down to 8 bits per color.
+ */
+ if (transforms & PNG_TRANSFORM_STRIP_16)
+ png_set_strip_16(png_ptr);
+#endif
+
+#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
+ /* Strip alpha bytes from the input data without combining with
+ * the background (not recommended).
+ */
+ if (transforms & PNG_TRANSFORM_STRIP_ALPHA)
+ png_set_strip_alpha(png_ptr);
+#endif
+
+#if defined(PNG_READ_PACK_SUPPORTED) && !defined(PNG_READ_EXPAND_SUPPORTED)
+ /* Extract multiple pixels with bit depths of 1, 2, or 4 from a single
+ * byte into separate bytes (useful for paletted and grayscale images).
+ */
+ if (transforms & PNG_TRANSFORM_PACKING)
+ png_set_packing(png_ptr);
+#endif
+
+#ifdef PNG_READ_PACKSWAP_SUPPORTED
+ /* Change the order of packed pixels to least significant bit first
+ * (not useful if you are using png_set_packing).
+ */
+ if (transforms & PNG_TRANSFORM_PACKSWAP)
+ png_set_packswap(png_ptr);
+#endif
+
+#ifdef PNG_READ_EXPAND_SUPPORTED
+ /* Expand paletted colors into true RGB triplets
+ * Expand grayscale images to full 8 bits from 1, 2, or 4 bits/pixel
+ * Expand paletted or RGB images with transparency to full alpha
+ * channels so the data will be available as RGBA quartets.
+ */
+ if (transforms & PNG_TRANSFORM_EXPAND)
+ if ((png_ptr->bit_depth < 8) ||
+ (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ||
+ (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)))
+ png_set_expand(png_ptr);
+#endif
+
+ /* We don't handle background color or gamma transformation or dithering.
+ */
+
+#ifdef PNG_READ_INVERT_SUPPORTED
+ /* Invert monochrome files to have 0 as white and 1 as black
+ */
+ if (transforms & PNG_TRANSFORM_INVERT_MONO)
+ png_set_invert_mono(png_ptr);
+#endif
+
+#ifdef PNG_READ_SHIFT_SUPPORTED
+ /* If you want to shift the pixel values from the range [0,255] or
+ * [0,65535] to the original [0,7] or [0,31], or whatever range the
+ * colors were originally in:
+ */
+ if ((transforms & PNG_TRANSFORM_SHIFT)
+ && png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT))
+ {
+ png_color_8p sig_bit;
+
+ png_get_sBIT(png_ptr, info_ptr, &sig_bit);
+ png_set_shift(png_ptr, sig_bit);
+ }
+#endif
+
+#ifdef PNG_READ_BGR_SUPPORTED
+ /* Flip the RGB pixels to BGR (or RGBA to BGRA)
+ */
+ if (transforms & PNG_TRANSFORM_BGR)
+ png_set_bgr(png_ptr);
+#endif
+
+#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED
+ /* Swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR)
+ */
+ if (transforms & PNG_TRANSFORM_SWAP_ALPHA)
+ png_set_swap_alpha(png_ptr);
+#endif
+
+#ifdef PNG_READ_SWAP_SUPPORTED
+ /* Swap bytes of 16 bit files to least significant byte first
+ */
+ if (transforms & PNG_TRANSFORM_SWAP_ENDIAN)
+ png_set_swap(png_ptr);
+#endif
+
+/* Added at libpng-1.2.41 */
+#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
+ /* Invert the alpha channel from opacity to transparency
+ */
+ if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
+ png_set_invert_alpha(png_ptr);
+#endif
+
+/* Added at libpng-1.2.41 */
+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
+ /* Expand grayscale image to RGB
+ */
+ if (transforms & PNG_TRANSFORM_GRAY_TO_RGB)
+ png_set_gray_to_rgb(png_ptr);
+#endif
+
+ /* We don't handle adding filler bytes */
+
+ /* Optional call to gamma correct and add the background to the palette
+ * and update info structure. REQUIRED if you are expecting libpng to
+ * update the palette for you (i.e., you selected such a transform above).
+ */
+ png_read_update_info(png_ptr, info_ptr);
+
+ /* -------------- image transformations end here ------------------- */
+
+#ifdef PNG_FREE_ME_SUPPORTED
+ png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
+#endif
+ if (info_ptr->row_pointers == NULL)
+ {
+ info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr,
+ info_ptr->height * png_sizeof(png_bytep));
+ png_memset(info_ptr->row_pointers, 0, info_ptr->height
+ * png_sizeof(png_bytep));
+
+#ifdef PNG_FREE_ME_SUPPORTED
+ info_ptr->free_me |= PNG_FREE_ROWS;
+#endif
+
+ for (row = 0; row < (int)info_ptr->height; row++)
+ info_ptr->row_pointers[row] = (png_bytep)png_malloc(png_ptr,
+ png_get_rowbytes(png_ptr, info_ptr));
+ }
+
+ png_read_image(png_ptr, info_ptr->row_pointers);
+ info_ptr->valid |= PNG_INFO_IDAT;
+
+ /* Read rest of file, and get additional chunks in info_ptr - REQUIRED */
+ png_read_end(png_ptr, info_ptr);
+
+ transforms = transforms; /* Quiet compiler warnings */
+ params = params;
+
+}
+#endif /* PNG_INFO_IMAGE_SUPPORTED */
+#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
+#endif /* PNG_READ_SUPPORTED */
diff --git a/Externals/libpng/pngrio.c b/Externals/libpng/pngrio.c
index e9c381c5ba..e84380e200 100644
--- a/Externals/libpng/pngrio.c
+++ b/Externals/libpng/pngrio.c
@@ -1,176 +1,180 @@
-
-/* pngrio.c - functions for data input
- *
- * Last changed in libpng 1.5.0 [January 6, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- * This file provides a location for all input. Users who need
- * special handling are expected to write a function that has the same
- * arguments as this and performs a similar function, but that possibly
- * has a different input method. Note that you shouldn't change this
- * function, but rather write a replacement function and then make
- * libpng use it at run time with png_set_read_fn(...).
- */
-
-#include "pngpriv.h"
-
-#ifdef PNG_READ_SUPPORTED
-
-/* Read the data from whatever input you are using. The default routine
- * reads from a file pointer. Note that this routine sometimes gets called
- * with very small lengths, so you should implement some kind of simple
- * buffering if you are using unbuffered reads. This should never be asked
- * to read more then 64K on a 16 bit machine.
- */
-void /* PRIVATE */
-png_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
-{
- png_debug1(4, "reading %d bytes", (int)length);
-
- if (png_ptr->read_data_fn != NULL)
- (*(png_ptr->read_data_fn))(png_ptr, data, length);
-
- else
- png_error(png_ptr, "Call to NULL read function");
-}
-
-#ifdef PNG_STDIO_SUPPORTED
-/* This is the function that does the actual reading of data. If you are
- * not reading from a standard C stream, you should create a replacement
- * read_data function and use it at run time with png_set_read_fn(), rather
- * than changing the library.
- */
-# ifndef USE_FAR_KEYWORD
-void PNGCBAPI
-png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
-{
- png_size_t check;
-
- if (png_ptr == NULL)
- return;
-
- /* fread() returns 0 on error, so it is OK to store this in a png_size_t
- * instead of an int, which is what fread() actually returns.
- */
- check = fread(data, 1, length, (png_FILE_p)png_ptr->io_ptr);
-
- if (check != length)
- png_error(png_ptr, "Read Error");
-}
-# else
-/* This is the model-independent version. Since the standard I/O library
- can't handle far buffers in the medium and small models, we have to copy
- the data.
-*/
-
-#define NEAR_BUF_SIZE 1024
-#define MIN(a,b) (a <= b ? a : b)
-
-static void PNGCBAPI
-png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
-{
- png_size_t check;
- png_byte *n_data;
- png_FILE_p io_ptr;
-
- if (png_ptr == NULL)
- return;
-
- /* Check if data really is near. If so, use usual code. */
- n_data = (png_byte *)CVT_PTR_NOCHECK(data);
- io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
-
- if ((png_bytep)n_data == data)
- {
- check = fread(n_data, 1, length, io_ptr);
- }
-
- else
- {
- png_byte buf[NEAR_BUF_SIZE];
- png_size_t read, remaining, err;
- check = 0;
- remaining = length;
-
- do
- {
- read = MIN(NEAR_BUF_SIZE, remaining);
- err = fread(buf, 1, read, io_ptr);
- png_memcpy(data, buf, read); /* copy far buffer to near buffer */
-
- if (err != read)
- break;
-
- else
- check += err;
-
- data += read;
- remaining -= read;
- }
- while (remaining != 0);
- }
-
- if ((png_uint_32)check != (png_uint_32)length)
- png_error(png_ptr, "read Error");
-}
-# endif
-#endif
-
-/* This function allows the application to supply a new input function
- * for libpng if standard C streams aren't being used.
- *
- * This function takes as its arguments:
- *
- * png_ptr - pointer to a png input data structure
- *
- * io_ptr - pointer to user supplied structure containing info about
- * the input functions. May be NULL.
- *
- * read_data_fn - pointer to a new input function that takes as its
- * arguments a pointer to a png_struct, a pointer to
- * a location where input data can be stored, and a 32-bit
- * unsigned int that is the number of bytes to be read.
- * To exit and output any fatal error messages the new write
- * function should call png_error(png_ptr, "Error msg").
- * May be NULL, in which case libpng's default function will
- * be used.
- */
-void PNGAPI
-png_set_read_fn(png_structp png_ptr, png_voidp io_ptr,
- png_rw_ptr read_data_fn)
-{
- if (png_ptr == NULL)
- return;
-
- png_ptr->io_ptr = io_ptr;
-
-#ifdef PNG_STDIO_SUPPORTED
- if (read_data_fn != NULL)
- png_ptr->read_data_fn = read_data_fn;
-
- else
- png_ptr->read_data_fn = png_default_read_data;
-#else
- png_ptr->read_data_fn = read_data_fn;
-#endif
-
- /* It is an error to write to a read device */
- if (png_ptr->write_data_fn != NULL)
- {
- png_ptr->write_data_fn = NULL;
- png_warning(png_ptr,
- "Can't set both read_data_fn and write_data_fn in the"
- " same structure");
- }
-
-#ifdef PNG_WRITE_FLUSH_SUPPORTED
- png_ptr->output_flush_fn = NULL;
-#endif
-}
-#endif /* PNG_READ_SUPPORTED */
+
+/* pngrio.c - functions for data input
+ *
+ * Last changed in libpng 1.2.43 [February 25, 2010]
+ * Copyright (c) 1998-2010 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * This file provides a location for all input. Users who need
+ * special handling are expected to write a function that has the same
+ * arguments as this and performs a similar function, but that possibly
+ * has a different input method. Note that you shouldn't change this
+ * function, but rather write a replacement function and then make
+ * libpng use it at run time with png_set_read_fn(...).
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#ifdef PNG_READ_SUPPORTED
+
+/* Read the data from whatever input you are using. The default routine
+ * reads from a file pointer. Note that this routine sometimes gets called
+ * with very small lengths, so you should implement some kind of simple
+ * buffering if you are using unbuffered reads. This should never be asked
+ * to read more then 64K on a 16 bit machine.
+ */
+void /* PRIVATE */
+png_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ png_debug1(4, "reading %d bytes", (int)length);
+
+ if (png_ptr->read_data_fn != NULL)
+ (*(png_ptr->read_data_fn))(png_ptr, data, length);
+ else
+ png_error(png_ptr, "Call to NULL read function");
+}
+
+#ifdef PNG_STDIO_SUPPORTED
+/* This is the function that does the actual reading of data. If you are
+ * not reading from a standard C stream, you should create a replacement
+ * read_data function and use it at run time with png_set_read_fn(), rather
+ * than changing the library.
+ */
+#ifndef USE_FAR_KEYWORD
+void PNGAPI
+png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ png_size_t check;
+
+ if (png_ptr == NULL)
+ return;
+ /* fread() returns 0 on error, so it is OK to store this in a png_size_t
+ * instead of an int, which is what fread() actually returns.
+ */
+#ifdef _WIN32_WCE
+ if ( !ReadFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )
+ check = 0;
+#else
+ check = (png_size_t)fread(data, (png_size_t)1, length,
+ (png_FILE_p)png_ptr->io_ptr);
+#endif
+
+ if (check != length)
+ png_error(png_ptr, "Read Error");
+}
+#else
+/* This is the model-independent version. Since the standard I/O library
+ can't handle far buffers in the medium and small models, we have to copy
+ the data.
+*/
+
+#define NEAR_BUF_SIZE 1024
+#define MIN(a,b) (a <= b ? a : b)
+
+static void PNGAPI
+png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ int check;
+ png_byte *n_data;
+ png_FILE_p io_ptr;
+
+ if (png_ptr == NULL)
+ return;
+ /* Check if data really is near. If so, use usual code. */
+ n_data = (png_byte *)CVT_PTR_NOCHECK(data);
+ io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
+ if ((png_bytep)n_data == data)
+ {
+#ifdef _WIN32_WCE
+ if ( !ReadFile((HANDLE)(png_ptr->io_ptr), data, length, &check,
+ NULL) )
+ check = 0;
+#else
+ check = fread(n_data, 1, length, io_ptr);
+#endif
+ }
+ else
+ {
+ png_byte buf[NEAR_BUF_SIZE];
+ png_size_t read, remaining, err;
+ check = 0;
+ remaining = length;
+ do
+ {
+ read = MIN(NEAR_BUF_SIZE, remaining);
+#ifdef _WIN32_WCE
+ if ( !ReadFile((HANDLE)(io_ptr), buf, read, &err, NULL) )
+ err = 0;
+#else
+ err = fread(buf, (png_size_t)1, read, io_ptr);
+#endif
+ png_memcpy(data, buf, read); /* copy far buffer to near buffer */
+ if (err != read)
+ break;
+ else
+ check += err;
+ data += read;
+ remaining -= read;
+ }
+ while (remaining != 0);
+ }
+ if ((png_uint_32)check != (png_uint_32)length)
+ png_error(png_ptr, "read Error");
+}
+#endif
+#endif
+
+/* This function allows the application to supply a new input function
+ * for libpng if standard C streams aren't being used.
+ *
+ * This function takes as its arguments:
+ * png_ptr - pointer to a png input data structure
+ * io_ptr - pointer to user supplied structure containing info about
+ * the input functions. May be NULL.
+ * read_data_fn - pointer to a new input function that takes as its
+ * arguments a pointer to a png_struct, a pointer to
+ * a location where input data can be stored, and a 32-bit
+ * unsigned int that is the number of bytes to be read.
+ * To exit and output any fatal error messages the new write
+ * function should call png_error(png_ptr, "Error msg").
+ * May be NULL, in which case libpng's default function will
+ * be used.
+ */
+void PNGAPI
+png_set_read_fn(png_structp png_ptr, png_voidp io_ptr,
+ png_rw_ptr read_data_fn)
+{
+ if (png_ptr == NULL)
+ return;
+ png_ptr->io_ptr = io_ptr;
+
+#ifdef PNG_STDIO_SUPPORTED
+ if (read_data_fn != NULL)
+ png_ptr->read_data_fn = read_data_fn;
+ else
+ png_ptr->read_data_fn = png_default_read_data;
+#else
+ png_ptr->read_data_fn = read_data_fn;
+#endif
+
+ /* It is an error to write to a read device */
+ if (png_ptr->write_data_fn != NULL)
+ {
+ png_ptr->write_data_fn = NULL;
+ png_warning(png_ptr,
+ "It's an error to set both read_data_fn and write_data_fn in the ");
+ png_warning(png_ptr,
+ "same structure. Resetting write_data_fn to NULL.");
+ }
+
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+ png_ptr->output_flush_fn = NULL;
+#endif
+}
+#endif /* PNG_READ_SUPPORTED */
diff --git a/Externals/libpng/pngrtran.c b/Externals/libpng/pngrtran.c
index e6e0c46b4d..baaa395255 100644
--- a/Externals/libpng/pngrtran.c
+++ b/Externals/libpng/pngrtran.c
@@ -1,4224 +1,4470 @@
-
-/* pngrtran.c - transforms the data in a row for PNG readers
- *
- * Last changed in libpng 1.5.1 [February 3, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- * This file contains functions optionally called by an application
- * in order to tell libpng how to handle data when reading a PNG.
- * Transformations that are used in both reading and writing are
- * in pngtrans.c.
- */
-
-#include "pngpriv.h"
-
-#ifdef PNG_READ_SUPPORTED
-
-/* Set the action on getting a CRC error for an ancillary or critical chunk. */
-void PNGAPI
-png_set_crc_action(png_structp png_ptr, int crit_action, int ancil_action)
-{
- png_debug(1, "in png_set_crc_action");
-
- if (png_ptr == NULL)
- return;
-
- /* Tell libpng how we react to CRC errors in critical chunks */
- switch (crit_action)
- {
- case PNG_CRC_NO_CHANGE: /* Leave setting as is */
- break;
-
- case PNG_CRC_WARN_USE: /* Warn/use data */
- png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
- png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE;
- break;
-
- case PNG_CRC_QUIET_USE: /* Quiet/use data */
- png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
- png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE |
- PNG_FLAG_CRC_CRITICAL_IGNORE;
- break;
-
- case PNG_CRC_WARN_DISCARD: /* Not a valid action for critical data */
- png_warning(png_ptr,
- "Can't discard critical data on CRC error");
- case PNG_CRC_ERROR_QUIT: /* Error/quit */
-
- case PNG_CRC_DEFAULT:
- default:
- png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
- break;
- }
-
- /* Tell libpng how we react to CRC errors in ancillary chunks */
- switch (ancil_action)
- {
- case PNG_CRC_NO_CHANGE: /* Leave setting as is */
- break;
-
- case PNG_CRC_WARN_USE: /* Warn/use data */
- png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
- png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE;
- break;
-
- case PNG_CRC_QUIET_USE: /* Quiet/use data */
- png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
- png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE |
- PNG_FLAG_CRC_ANCILLARY_NOWARN;
- break;
-
- case PNG_CRC_ERROR_QUIT: /* Error/quit */
- png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
- png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_NOWARN;
- break;
-
- case PNG_CRC_WARN_DISCARD: /* Warn/discard data */
-
- case PNG_CRC_DEFAULT:
- default:
- png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
- break;
- }
-}
-
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
-/* Handle alpha and tRNS via a background color */
-void PNGFAPI
-png_set_background_fixed(png_structp png_ptr,
- png_const_color_16p background_color, int background_gamma_code,
- int need_expand, png_fixed_point background_gamma)
-{
- png_debug(1, "in png_set_background_fixed");
-
- if (png_ptr == NULL)
- return;
-
- if (background_gamma_code == PNG_BACKGROUND_GAMMA_UNKNOWN)
- {
- png_warning(png_ptr, "Application must supply a known background gamma");
- return;
- }
-
- png_ptr->transformations |= PNG_BACKGROUND;
- png_memcpy(&(png_ptr->background), background_color,
- png_sizeof(png_color_16));
- png_ptr->background_gamma = background_gamma;
- png_ptr->background_gamma_type = (png_byte)(background_gamma_code);
- png_ptr->transformations |= (need_expand ? PNG_BACKGROUND_EXPAND : 0);
-}
-
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-void PNGAPI
-png_set_background(png_structp png_ptr,
- png_const_color_16p background_color, int background_gamma_code,
- int need_expand, double background_gamma)
-{
- png_set_background_fixed(png_ptr, background_color, background_gamma_code,
- need_expand, png_fixed(png_ptr, background_gamma, "png_set_background"));
-}
-# endif /* FLOATING_POINT */
-#endif /* READ_BACKGROUND */
-
-#ifdef PNG_READ_16_TO_8_SUPPORTED
-/* Strip 16 bit depth files to 8 bit depth */
-void PNGAPI
-png_set_strip_16(png_structp png_ptr)
-{
- png_debug(1, "in png_set_strip_16");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= PNG_16_TO_8;
-}
-#endif
-
-#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
-void PNGAPI
-png_set_strip_alpha(png_structp png_ptr)
-{
- png_debug(1, "in png_set_strip_alpha");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->flags |= PNG_FLAG_STRIP_ALPHA;
-}
-#endif
-
-#ifdef PNG_READ_QUANTIZE_SUPPORTED
-/* Dither file to 8 bit. Supply a palette, the current number
- * of elements in the palette, the maximum number of elements
- * allowed, and a histogram if possible. If the current number
- * of colors is greater then the maximum number, the palette will be
- * modified to fit in the maximum number. "full_quantize" indicates
- * whether we need a quantizing cube set up for RGB images, or if we
- * simply are reducing the number of colors in a paletted image.
- */
-
-typedef struct png_dsort_struct
-{
- struct png_dsort_struct FAR * next;
- png_byte left;
- png_byte right;
-} png_dsort;
-typedef png_dsort FAR * png_dsortp;
-typedef png_dsort FAR * FAR * png_dsortpp;
-
-void PNGAPI
-png_set_quantize(png_structp png_ptr, png_colorp palette,
- int num_palette, int maximum_colors, png_const_uint_16p histogram,
- int full_quantize)
-{
- png_debug(1, "in png_set_quantize");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= PNG_QUANTIZE;
-
- if (!full_quantize)
- {
- int i;
-
- png_ptr->quantize_index = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)(num_palette * png_sizeof(png_byte)));
- for (i = 0; i < num_palette; i++)
- png_ptr->quantize_index[i] = (png_byte)i;
- }
-
- if (num_palette > maximum_colors)
- {
- if (histogram != NULL)
- {
- /* This is easy enough, just throw out the least used colors.
- * Perhaps not the best solution, but good enough.
- */
-
- int i;
-
- /* Initialize an array to sort colors */
- png_ptr->quantize_sort = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)(num_palette * png_sizeof(png_byte)));
-
- /* Initialize the quantize_sort array */
- for (i = 0; i < num_palette; i++)
- png_ptr->quantize_sort[i] = (png_byte)i;
-
- /* Find the least used palette entries by starting a
- * bubble sort, and running it until we have sorted
- * out enough colors. Note that we don't care about
- * sorting all the colors, just finding which are
- * least used.
- */
-
- for (i = num_palette - 1; i >= maximum_colors; i--)
- {
- int done; /* To stop early if the list is pre-sorted */
- int j;
-
- done = 1;
- for (j = 0; j < i; j++)
- {
- if (histogram[png_ptr->quantize_sort[j]]
- < histogram[png_ptr->quantize_sort[j + 1]])
- {
- png_byte t;
-
- t = png_ptr->quantize_sort[j];
- png_ptr->quantize_sort[j] = png_ptr->quantize_sort[j + 1];
- png_ptr->quantize_sort[j + 1] = t;
- done = 0;
- }
- }
-
- if (done)
- break;
- }
-
- /* Swap the palette around, and set up a table, if necessary */
- if (full_quantize)
- {
- int j = num_palette;
-
- /* Put all the useful colors within the max, but don't
- * move the others.
- */
- for (i = 0; i < maximum_colors; i++)
- {
- if ((int)png_ptr->quantize_sort[i] >= maximum_colors)
- {
- do
- j--;
- while ((int)png_ptr->quantize_sort[j] >= maximum_colors);
-
- palette[i] = palette[j];
- }
- }
- }
- else
- {
- int j = num_palette;
-
- /* Move all the used colors inside the max limit, and
- * develop a translation table.
- */
- for (i = 0; i < maximum_colors; i++)
- {
- /* Only move the colors we need to */
- if ((int)png_ptr->quantize_sort[i] >= maximum_colors)
- {
- png_color tmp_color;
-
- do
- j--;
- while ((int)png_ptr->quantize_sort[j] >= maximum_colors);
-
- tmp_color = palette[j];
- palette[j] = palette[i];
- palette[i] = tmp_color;
- /* Indicate where the color went */
- png_ptr->quantize_index[j] = (png_byte)i;
- png_ptr->quantize_index[i] = (png_byte)j;
- }
- }
-
- /* Find closest color for those colors we are not using */
- for (i = 0; i < num_palette; i++)
- {
- if ((int)png_ptr->quantize_index[i] >= maximum_colors)
- {
- int min_d, k, min_k, d_index;
-
- /* Find the closest color to one we threw out */
- d_index = png_ptr->quantize_index[i];
- min_d = PNG_COLOR_DIST(palette[d_index], palette[0]);
- for (k = 1, min_k = 0; k < maximum_colors; k++)
- {
- int d;
-
- d = PNG_COLOR_DIST(palette[d_index], palette[k]);
-
- if (d < min_d)
- {
- min_d = d;
- min_k = k;
- }
- }
- /* Point to closest color */
- png_ptr->quantize_index[i] = (png_byte)min_k;
- }
- }
- }
- png_free(png_ptr, png_ptr->quantize_sort);
- png_ptr->quantize_sort = NULL;
- }
- else
- {
- /* This is much harder to do simply (and quickly). Perhaps
- * we need to go through a median cut routine, but those
- * don't always behave themselves with only a few colors
- * as input. So we will just find the closest two colors,
- * and throw out one of them (chosen somewhat randomly).
- * [We don't understand this at all, so if someone wants to
- * work on improving it, be our guest - AED, GRP]
- */
- int i;
- int max_d;
- int num_new_palette;
- png_dsortp t;
- png_dsortpp hash;
-
- t = NULL;
-
- /* Initialize palette index arrays */
- png_ptr->index_to_palette = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)(num_palette * png_sizeof(png_byte)));
- png_ptr->palette_to_index = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)(num_palette * png_sizeof(png_byte)));
-
- /* Initialize the sort array */
- for (i = 0; i < num_palette; i++)
- {
- png_ptr->index_to_palette[i] = (png_byte)i;
- png_ptr->palette_to_index[i] = (png_byte)i;
- }
-
- hash = (png_dsortpp)png_calloc(png_ptr, (png_uint_32)(769 *
- png_sizeof(png_dsortp)));
-
- num_new_palette = num_palette;
-
- /* Initial wild guess at how far apart the farthest pixel
- * pair we will be eliminating will be. Larger
- * numbers mean more areas will be allocated, Smaller
- * numbers run the risk of not saving enough data, and
- * having to do this all over again.
- *
- * I have not done extensive checking on this number.
- */
- max_d = 96;
-
- while (num_new_palette > maximum_colors)
- {
- for (i = 0; i < num_new_palette - 1; i++)
- {
- int j;
-
- for (j = i + 1; j < num_new_palette; j++)
- {
- int d;
-
- d = PNG_COLOR_DIST(palette[i], palette[j]);
-
- if (d <= max_d)
- {
-
- t = (png_dsortp)png_malloc_warn(png_ptr,
- (png_uint_32)(png_sizeof(png_dsort)));
-
- if (t == NULL)
- break;
-
- t->next = hash[d];
- t->left = (png_byte)i;
- t->right = (png_byte)j;
- hash[d] = t;
- }
- }
- if (t == NULL)
- break;
- }
-
- if (t != NULL)
- for (i = 0; i <= max_d; i++)
- {
- if (hash[i] != NULL)
- {
- png_dsortp p;
-
- for (p = hash[i]; p; p = p->next)
- {
- if ((int)png_ptr->index_to_palette[p->left]
- < num_new_palette &&
- (int)png_ptr->index_to_palette[p->right]
- < num_new_palette)
- {
- int j, next_j;
-
- if (num_new_palette & 0x01)
- {
- j = p->left;
- next_j = p->right;
- }
- else
- {
- j = p->right;
- next_j = p->left;
- }
-
- num_new_palette--;
- palette[png_ptr->index_to_palette[j]]
- = palette[num_new_palette];
- if (!full_quantize)
- {
- int k;
-
- for (k = 0; k < num_palette; k++)
- {
- if (png_ptr->quantize_index[k] ==
- png_ptr->index_to_palette[j])
- png_ptr->quantize_index[k] =
- png_ptr->index_to_palette[next_j];
-
- if ((int)png_ptr->quantize_index[k] ==
- num_new_palette)
- png_ptr->quantize_index[k] =
- png_ptr->index_to_palette[j];
- }
- }
-
- png_ptr->index_to_palette[png_ptr->palette_to_index
- [num_new_palette]] = png_ptr->index_to_palette[j];
-
- png_ptr->palette_to_index[png_ptr->index_to_palette[j]]
- = png_ptr->palette_to_index[num_new_palette];
-
- png_ptr->index_to_palette[j] =
- (png_byte)num_new_palette;
-
- png_ptr->palette_to_index[num_new_palette] =
- (png_byte)j;
- }
- if (num_new_palette <= maximum_colors)
- break;
- }
- if (num_new_palette <= maximum_colors)
- break;
- }
- }
-
- for (i = 0; i < 769; i++)
- {
- if (hash[i] != NULL)
- {
- png_dsortp p = hash[i];
- while (p)
- {
- t = p->next;
- png_free(png_ptr, p);
- p = t;
- }
- }
- hash[i] = 0;
- }
- max_d += 96;
- }
- png_free(png_ptr, hash);
- png_free(png_ptr, png_ptr->palette_to_index);
- png_free(png_ptr, png_ptr->index_to_palette);
- png_ptr->palette_to_index = NULL;
- png_ptr->index_to_palette = NULL;
- }
- num_palette = maximum_colors;
- }
- if (png_ptr->palette == NULL)
- {
- png_ptr->palette = palette;
- }
- png_ptr->num_palette = (png_uint_16)num_palette;
-
- if (full_quantize)
- {
- int i;
- png_bytep distance;
- int total_bits = PNG_QUANTIZE_RED_BITS + PNG_QUANTIZE_GREEN_BITS +
- PNG_QUANTIZE_BLUE_BITS;
- int num_red = (1 << PNG_QUANTIZE_RED_BITS);
- int num_green = (1 << PNG_QUANTIZE_GREEN_BITS);
- int num_blue = (1 << PNG_QUANTIZE_BLUE_BITS);
- png_size_t num_entries = ((png_size_t)1 << total_bits);
-
- png_ptr->palette_lookup = (png_bytep)png_calloc(png_ptr,
- (png_uint_32)(num_entries * png_sizeof(png_byte)));
-
- distance = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_entries *
- png_sizeof(png_byte)));
-
- png_memset(distance, 0xff, num_entries * png_sizeof(png_byte));
-
- for (i = 0; i < num_palette; i++)
- {
- int ir, ig, ib;
- int r = (palette[i].red >> (8 - PNG_QUANTIZE_RED_BITS));
- int g = (palette[i].green >> (8 - PNG_QUANTIZE_GREEN_BITS));
- int b = (palette[i].blue >> (8 - PNG_QUANTIZE_BLUE_BITS));
-
- for (ir = 0; ir < num_red; ir++)
- {
- /* int dr = abs(ir - r); */
- int dr = ((ir > r) ? ir - r : r - ir);
- int index_r = (ir << (PNG_QUANTIZE_BLUE_BITS +
- PNG_QUANTIZE_GREEN_BITS));
-
- for (ig = 0; ig < num_green; ig++)
- {
- /* int dg = abs(ig - g); */
- int dg = ((ig > g) ? ig - g : g - ig);
- int dt = dr + dg;
- int dm = ((dr > dg) ? dr : dg);
- int index_g = index_r | (ig << PNG_QUANTIZE_BLUE_BITS);
-
- for (ib = 0; ib < num_blue; ib++)
- {
- int d_index = index_g | ib;
- /* int db = abs(ib - b); */
- int db = ((ib > b) ? ib - b : b - ib);
- int dmax = ((dm > db) ? dm : db);
- int d = dmax + dt + db;
-
- if (d < (int)distance[d_index])
- {
- distance[d_index] = (png_byte)d;
- png_ptr->palette_lookup[d_index] = (png_byte)i;
- }
- }
- }
- }
- }
-
- png_free(png_ptr, distance);
- }
-}
-#endif /* PNG_READ_QUANTIZE_SUPPORTED */
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
-/* Transform the image from the file_gamma to the screen_gamma. We
- * only do transformations on images where the file_gamma and screen_gamma
- * are not close reciprocals, otherwise it slows things down slightly, and
- * also needlessly introduces small errors.
- *
- * We will turn off gamma transformation later if no semitransparent entries
- * are present in the tRNS array for palette images. We can't do it here
- * because we don't necessarily have the tRNS chunk yet.
- */
-static int /* PRIVATE */
-png_gamma_threshold(png_fixed_point scrn_gamma, png_fixed_point file_gamma)
-{
- /* PNG_GAMMA_THRESHOLD is the threshold for performing gamma
- * correction as a difference of the overall transform from 1.0
- *
- * We want to compare the threshold with s*f - 1, if we get
- * overflow here it is because of wacky gamma values so we
- * turn on processing anyway.
- */
- png_fixed_point gtest;
- return !png_muldiv(>est, scrn_gamma, file_gamma, PNG_FP_1) ||
- png_gamma_significant(gtest);
-}
-
-void PNGFAPI
-png_set_gamma_fixed(png_structp png_ptr, png_fixed_point scrn_gamma,
- png_fixed_point file_gamma)
-{
- png_debug(1, "in png_set_gamma_fixed");
-
- if (png_ptr == NULL)
- return;
-
- if ((png_ptr->color_type & PNG_COLOR_MASK_ALPHA) ||
- (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ||
- png_gamma_threshold(scrn_gamma, file_gamma))
- png_ptr->transformations |= PNG_GAMMA;
- png_ptr->gamma = file_gamma;
- png_ptr->screen_gamma = scrn_gamma;
-}
-
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-void PNGAPI
-png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma)
-{
- png_set_gamma_fixed(png_ptr,
- png_fixed(png_ptr, scrn_gamma, "png_set_gamma screen gamma"),
- png_fixed(png_ptr, file_gamma, "png_set_gamma file gamma"));
-}
-# endif /* FLOATING_POINT_SUPPORTED */
-#endif /* READ_GAMMA */
-
-#ifdef PNG_READ_EXPAND_SUPPORTED
-/* Expand paletted images to RGB, expand grayscale images of
- * less than 8-bit depth to 8-bit depth, and expand tRNS chunks
- * to alpha channels.
- */
-void PNGAPI
-png_set_expand(png_structp png_ptr)
-{
- png_debug(1, "in png_set_expand");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
- png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
-}
-
-/* GRR 19990627: the following three functions currently are identical
- * to png_set_expand(). However, it is entirely reasonable that someone
- * might wish to expand an indexed image to RGB but *not* expand a single,
- * fully transparent palette entry to a full alpha channel--perhaps instead
- * convert tRNS to the grayscale/RGB format (16-bit RGB value), or replace
- * the transparent color with a particular RGB value, or drop tRNS entirely.
- * IOW, a future version of the library may make the transformations flag
- * a bit more fine-grained, with separate bits for each of these three
- * functions.
- *
- * More to the point, these functions make it obvious what libpng will be
- * doing, whereas "expand" can (and does) mean any number of things.
- *
- * GRP 20060307: In libpng-1.2.9, png_set_gray_1_2_4_to_8() was modified
- * to expand only the sample depth but not to expand the tRNS to alpha
- * and its name was changed to png_set_expand_gray_1_2_4_to_8().
- */
-
-/* Expand paletted images to RGB. */
-void PNGAPI
-png_set_palette_to_rgb(png_structp png_ptr)
-{
- png_debug(1, "in png_set_palette_to_rgb");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
- png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
-}
-
-/* Expand grayscale images of less than 8-bit depth to 8 bits. */
-void PNGAPI
-png_set_expand_gray_1_2_4_to_8(png_structp png_ptr)
-{
- png_debug(1, "in png_set_expand_gray_1_2_4_to_8");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= PNG_EXPAND;
- png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
-}
-
-
-
-/* Expand tRNS chunks to alpha channels. */
-void PNGAPI
-png_set_tRNS_to_alpha(png_structp png_ptr)
-{
- png_debug(1, "in png_set_tRNS_to_alpha");
-
- png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
- png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
-}
-#endif /* defined(PNG_READ_EXPAND_SUPPORTED) */
-
-#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
-void PNGAPI
-png_set_gray_to_rgb(png_structp png_ptr)
-{
- png_debug(1, "in png_set_gray_to_rgb");
-
- if (png_ptr != NULL)
- {
- /* Because rgb must be 8 bits or more: */
- png_set_expand_gray_1_2_4_to_8(png_ptr);
- png_ptr->transformations |= PNG_GRAY_TO_RGB;
- png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
- }
-}
-#endif
-
-#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
-void PNGFAPI
-png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action,
- png_fixed_point red, png_fixed_point green)
-{
- png_debug(1, "in png_set_rgb_to_gray");
-
- if (png_ptr == NULL)
- return;
-
- switch(error_action)
- {
- case 1:
- png_ptr->transformations |= PNG_RGB_TO_GRAY;
- break;
-
- case 2:
- png_ptr->transformations |= PNG_RGB_TO_GRAY_WARN;
- break;
-
- case 3:
- png_ptr->transformations |= PNG_RGB_TO_GRAY_ERR;
- break;
-
- default:
- png_error(png_ptr, "invalid error action to rgb_to_gray");
- break;
- }
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
-#ifdef PNG_READ_EXPAND_SUPPORTED
- png_ptr->transformations |= PNG_EXPAND;
-#else
- {
- png_warning(png_ptr,
- "Cannot do RGB_TO_GRAY without EXPAND_SUPPORTED");
-
- png_ptr->transformations &= ~PNG_RGB_TO_GRAY;
- }
-#endif
- {
- png_uint_16 red_int, green_int;
- if (red < 0 || green < 0)
- {
- red_int = 6968; /* .212671 * 32768 + .5 */
- green_int = 23434; /* .715160 * 32768 + .5 */
- }
-
- else if (red + green < 100000L)
- {
- red_int = (png_uint_16)(((png_uint_32)red*32768L)/100000L);
- green_int = (png_uint_16)(((png_uint_32)green*32768L)/100000L);
- }
-
- else
- {
- png_warning(png_ptr, "ignoring out of range rgb_to_gray coefficients");
- red_int = 6968;
- green_int = 23434;
- }
-
- png_ptr->rgb_to_gray_red_coeff = red_int;
- png_ptr->rgb_to_gray_green_coeff = green_int;
- png_ptr->rgb_to_gray_blue_coeff =
- (png_uint_16)(32768 - red_int - green_int);
- }
-}
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-/* Convert a RGB image to a grayscale of the same width. This allows us,
- * for example, to convert a 24 bpp RGB image into an 8 bpp grayscale image.
- */
-
-void PNGAPI
-png_set_rgb_to_gray(png_structp png_ptr, int error_action, double red,
- double green)
-{
- if (png_ptr == NULL)
- return;
-
- png_set_rgb_to_gray_fixed(png_ptr, error_action,
- png_fixed(png_ptr, red, "rgb to gray red coefficient"),
- png_fixed(png_ptr, green, "rgb to gray green coefficient"));
-}
-#endif /* FLOATING POINT */
-
-#endif
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
-void PNGAPI
-png_set_read_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
- read_user_transform_fn)
-{
- png_debug(1, "in png_set_read_user_transform_fn");
-
- if (png_ptr == NULL)
- return;
-
-#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
- png_ptr->transformations |= PNG_USER_TRANSFORM;
- png_ptr->read_user_transform_fn = read_user_transform_fn;
-#endif
-}
-#endif
-
-/* Initialize everything needed for the read. This includes modifying
- * the palette.
- */
-void /* PRIVATE */
-png_init_read_transformations(png_structp png_ptr)
-{
- png_debug(1, "in png_init_read_transformations");
-
- {
-#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
- defined(PNG_READ_SHIFT_SUPPORTED) || \
- defined(PNG_READ_GAMMA_SUPPORTED)
- int color_type = png_ptr->color_type;
-#endif
-
-#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED)
-
-#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
- /* Detect gray background and attempt to enable optimization
- * for gray --> RGB case
- *
- * Note: if PNG_BACKGROUND_EXPAND is set and color_type is either RGB or
- * RGB_ALPHA (in which case need_expand is superfluous anyway), the
- * background color might actually be gray yet not be flagged as such.
- * This is not a problem for the current code, which uses
- * PNG_BACKGROUND_IS_GRAY only to decide when to do the
- * png_do_gray_to_rgb() transformation.
- */
- if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
- !(color_type & PNG_COLOR_MASK_COLOR))
- {
- png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
- }
-
- else if ((png_ptr->transformations & PNG_BACKGROUND) &&
- !(png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
- (png_ptr->transformations & PNG_GRAY_TO_RGB) &&
- png_ptr->background.red == png_ptr->background.green &&
- png_ptr->background.red == png_ptr->background.blue)
- {
- png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
- png_ptr->background.gray = png_ptr->background.red;
- }
-#endif
-
- if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
- (png_ptr->transformations & PNG_EXPAND))
- {
- if (!(color_type & PNG_COLOR_MASK_COLOR)) /* i.e., GRAY or GRAY_ALPHA */
- {
- /* Expand background and tRNS chunks */
- switch (png_ptr->bit_depth)
- {
- case 1:
- png_ptr->background.gray *= (png_uint_16)0xff;
- png_ptr->background.red = png_ptr->background.green
- = png_ptr->background.blue = png_ptr->background.gray;
- if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
- {
- png_ptr->trans_color.gray *= (png_uint_16)0xff;
- png_ptr->trans_color.red = png_ptr->trans_color.green
- = png_ptr->trans_color.blue = png_ptr->trans_color.gray;
- }
- break;
-
- case 2:
- png_ptr->background.gray *= (png_uint_16)0x55;
- png_ptr->background.red = png_ptr->background.green
- = png_ptr->background.blue = png_ptr->background.gray;
- if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
- {
- png_ptr->trans_color.gray *= (png_uint_16)0x55;
- png_ptr->trans_color.red = png_ptr->trans_color.green
- = png_ptr->trans_color.blue = png_ptr->trans_color.gray;
- }
- break;
-
- case 4:
- png_ptr->background.gray *= (png_uint_16)0x11;
- png_ptr->background.red = png_ptr->background.green
- = png_ptr->background.blue = png_ptr->background.gray;
- if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
- {
- png_ptr->trans_color.gray *= (png_uint_16)0x11;
- png_ptr->trans_color.red = png_ptr->trans_color.green
- = png_ptr->trans_color.blue = png_ptr->trans_color.gray;
- }
- break;
-
- default:
-
- case 8:
-
- case 16:
- png_ptr->background.red = png_ptr->background.green
- = png_ptr->background.blue = png_ptr->background.gray;
- break;
- }
- }
- else if (color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_ptr->background.red =
- png_ptr->palette[png_ptr->background.index].red;
- png_ptr->background.green =
- png_ptr->palette[png_ptr->background.index].green;
- png_ptr->background.blue =
- png_ptr->palette[png_ptr->background.index].blue;
-
-#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
- if (png_ptr->transformations & PNG_INVERT_ALPHA)
- {
-#ifdef PNG_READ_EXPAND_SUPPORTED
- if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
-#endif
- {
- /* Invert the alpha channel (in tRNS) unless the pixels are
- * going to be expanded, in which case leave it for later
- */
- int i, istop;
- istop=(int)png_ptr->num_trans;
- for (i=0; itrans_alpha[i] = (png_byte)(255 -
- png_ptr->trans_alpha[i]);
- }
- }
-#endif
-
- }
- }
-#endif
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED)
- png_ptr->background_1 = png_ptr->background;
-#endif
-#ifdef PNG_READ_GAMMA_SUPPORTED
-
- if ((color_type == PNG_COLOR_TYPE_PALETTE && png_ptr->num_trans != 0)
- && png_gamma_threshold(png_ptr->screen_gamma, png_ptr->gamma))
- {
- int i, k;
- k=0;
- for (i=0; inum_trans; i++)
- {
- if (png_ptr->trans_alpha[i] != 0 && png_ptr->trans_alpha[i] != 0xff)
- k=1; /* Partial transparency is present */
- }
- if (k == 0)
- png_ptr->transformations &= ~PNG_GAMMA;
- }
-
- if ((png_ptr->transformations & (PNG_GAMMA | PNG_RGB_TO_GRAY)) &&
- png_ptr->gamma != 0)
- {
- png_build_gamma_table(png_ptr, png_ptr->bit_depth);
-
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
- if (png_ptr->transformations & PNG_BACKGROUND)
- {
- if (color_type == PNG_COLOR_TYPE_PALETTE)
- {
- /* Could skip if no transparency */
- png_color back, back_1;
- png_colorp palette = png_ptr->palette;
- int num_palette = png_ptr->num_palette;
- int i;
- if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE)
- {
-
- back.red = png_ptr->gamma_table[png_ptr->background.red];
- back.green = png_ptr->gamma_table[png_ptr->background.green];
- back.blue = png_ptr->gamma_table[png_ptr->background.blue];
-
- back_1.red = png_ptr->gamma_to_1[png_ptr->background.red];
- back_1.green = png_ptr->gamma_to_1[png_ptr->background.green];
- back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue];
- }
- else
- {
- png_fixed_point g, gs;
-
- switch (png_ptr->background_gamma_type)
- {
- case PNG_BACKGROUND_GAMMA_SCREEN:
- g = (png_ptr->screen_gamma);
- gs = PNG_FP_1;
- break;
-
- case PNG_BACKGROUND_GAMMA_FILE:
- g = png_reciprocal(png_ptr->gamma);
- gs = png_reciprocal2(png_ptr->gamma,
- png_ptr->screen_gamma);
- break;
-
- case PNG_BACKGROUND_GAMMA_UNIQUE:
- g = png_reciprocal(png_ptr->background_gamma);
- gs = png_reciprocal2(png_ptr->background_gamma,
- png_ptr->screen_gamma);
- break;
- default:
- g = PNG_FP_1; /* back_1 */
- gs = PNG_FP_1; /* back */
- break;
- }
-
- if (png_gamma_significant(gs))
- {
- back.red = (png_byte)png_ptr->background.red;
- back.green = (png_byte)png_ptr->background.green;
- back.blue = (png_byte)png_ptr->background.blue;
- }
-
- else
- {
- back.red = png_gamma_8bit_correct(png_ptr->background.red,
- gs);
- back.green = png_gamma_8bit_correct(png_ptr->background.green,
- gs);
- back.blue = png_gamma_8bit_correct(png_ptr->background.blue,
- gs);
- }
- back_1.red = png_gamma_8bit_correct(png_ptr->background.red, g);
- back_1.green = png_gamma_8bit_correct(png_ptr->background.green,
- g);
- back_1.blue = png_gamma_8bit_correct(png_ptr->background.blue,
- g);
- }
- for (i = 0; i < num_palette; i++)
- {
- if (i < (int)png_ptr->num_trans &&
- png_ptr->trans_alpha[i] != 0xff)
- {
- if (png_ptr->trans_alpha[i] == 0)
- {
- palette[i] = back;
- }
- else /* if (png_ptr->trans_alpha[i] != 0xff) */
- {
- png_byte v, w;
-
- v = png_ptr->gamma_to_1[palette[i].red];
- png_composite(w, v, png_ptr->trans_alpha[i], back_1.red);
- palette[i].red = png_ptr->gamma_from_1[w];
-
- v = png_ptr->gamma_to_1[palette[i].green];
- png_composite(w, v, png_ptr->trans_alpha[i], back_1.green);
- palette[i].green = png_ptr->gamma_from_1[w];
-
- v = png_ptr->gamma_to_1[palette[i].blue];
- png_composite(w, v, png_ptr->trans_alpha[i], back_1.blue);
- palette[i].blue = png_ptr->gamma_from_1[w];
- }
- }
- else
- {
- palette[i].red = png_ptr->gamma_table[palette[i].red];
- palette[i].green = png_ptr->gamma_table[palette[i].green];
- palette[i].blue = png_ptr->gamma_table[palette[i].blue];
- }
- }
- /* Prevent the transformations being done again, and make sure
- * that the now spurious alpha channel is stripped - the code
- * has just reduced background composition and gamma correction
- * to a simple alpha channel strip.
- */
- png_ptr->transformations &= ~PNG_BACKGROUND;
- png_ptr->transformations &= ~PNG_GAMMA;
- png_ptr->flags |= PNG_FLAG_STRIP_ALPHA;
- }
-
- /* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN) */
- else
- /* color_type != PNG_COLOR_TYPE_PALETTE */
- {
- png_fixed_point g = PNG_FP_1;
- png_fixed_point gs = PNG_FP_1;
-
- switch (png_ptr->background_gamma_type)
- {
- case PNG_BACKGROUND_GAMMA_SCREEN:
- g = png_ptr->screen_gamma;
- /* gs = PNG_FP_1; */
- break;
-
- case PNG_BACKGROUND_GAMMA_FILE:
- g = png_reciprocal(png_ptr->gamma);
- gs = png_reciprocal2(png_ptr->gamma, png_ptr->screen_gamma);
- break;
-
- case PNG_BACKGROUND_GAMMA_UNIQUE:
- g = png_reciprocal(png_ptr->background_gamma);
- gs = png_reciprocal2(png_ptr->background_gamma,
- png_ptr->screen_gamma);
- break;
-
- default:
- png_error(png_ptr, "invalid background gamma type");
- }
-
- png_ptr->background_1.gray = png_gamma_correct(png_ptr,
- png_ptr->background.gray, g);
-
- png_ptr->background.gray = png_gamma_correct(png_ptr,
- png_ptr->background.gray, gs);
-
- if ((png_ptr->background.red != png_ptr->background.green) ||
- (png_ptr->background.red != png_ptr->background.blue) ||
- (png_ptr->background.red != png_ptr->background.gray))
- {
- /* RGB or RGBA with color background */
- png_ptr->background_1.red = png_gamma_correct(png_ptr,
- png_ptr->background.red, g);
-
- png_ptr->background_1.green = png_gamma_correct(png_ptr,
- png_ptr->background.green, g);
-
- png_ptr->background_1.blue = png_gamma_correct(png_ptr,
- png_ptr->background.blue, g);
-
- png_ptr->background.red = png_gamma_correct(png_ptr,
- png_ptr->background.red, gs);
-
- png_ptr->background.green = png_gamma_correct(png_ptr,
- png_ptr->background.green, gs);
-
- png_ptr->background.blue = png_gamma_correct(png_ptr,
- png_ptr->background.blue, gs);
- }
-
- else
- {
- /* GRAY, GRAY ALPHA, RGB, or RGBA with gray background */
- png_ptr->background_1.red = png_ptr->background_1.green
- = png_ptr->background_1.blue = png_ptr->background_1.gray;
-
- png_ptr->background.red = png_ptr->background.green
- = png_ptr->background.blue = png_ptr->background.gray;
- }
- }
- }
- else
- /* Transformation does not include PNG_BACKGROUND */
-#endif /* PNG_READ_BACKGROUND_SUPPORTED */
- if (color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_colorp palette = png_ptr->palette;
- int num_palette = png_ptr->num_palette;
- int i;
-
- for (i = 0; i < num_palette; i++)
- {
- palette[i].red = png_ptr->gamma_table[palette[i].red];
- palette[i].green = png_ptr->gamma_table[palette[i].green];
- palette[i].blue = png_ptr->gamma_table[palette[i].blue];
- }
-
- /* Done the gamma correction. */
- png_ptr->transformations &= ~PNG_GAMMA;
- }
- }
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
- else
-#endif
-#endif /* PNG_READ_GAMMA_SUPPORTED */
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
- /* No GAMMA transformation */
- if ((png_ptr->transformations & PNG_BACKGROUND) &&
- (color_type == PNG_COLOR_TYPE_PALETTE))
- {
- int i;
- int istop = (int)png_ptr->num_trans;
- png_color back;
- png_colorp palette = png_ptr->palette;
-
- back.red = (png_byte)png_ptr->background.red;
- back.green = (png_byte)png_ptr->background.green;
- back.blue = (png_byte)png_ptr->background.blue;
-
- for (i = 0; i < istop; i++)
- {
- if (png_ptr->trans_alpha[i] == 0)
- {
- palette[i] = back;
- }
-
- else if (png_ptr->trans_alpha[i] != 0xff)
- {
- /* The png_composite() macro is defined in png.h */
- png_composite(palette[i].red, palette[i].red,
- png_ptr->trans_alpha[i], back.red);
-
- png_composite(palette[i].green, palette[i].green,
- png_ptr->trans_alpha[i], back.green);
-
- png_composite(palette[i].blue, palette[i].blue,
- png_ptr->trans_alpha[i], back.blue);
- }
- }
-
- /* Handled alpha, still need to strip the channel. */
- png_ptr->transformations &= ~PNG_BACKGROUND;
- png_ptr->flags |= PNG_FLAG_STRIP_ALPHA;
- }
-#endif /* PNG_READ_BACKGROUND_SUPPORTED */
-
-#ifdef PNG_READ_SHIFT_SUPPORTED
- if ((png_ptr->transformations & PNG_SHIFT) &&
- (color_type == PNG_COLOR_TYPE_PALETTE))
- {
- png_uint_16 i;
- png_uint_16 istop = png_ptr->num_palette;
- int sr = 8 - png_ptr->sig_bit.red;
- int sg = 8 - png_ptr->sig_bit.green;
- int sb = 8 - png_ptr->sig_bit.blue;
-
- if (sr < 0 || sr > 8)
- sr = 0;
-
- if (sg < 0 || sg > 8)
- sg = 0;
-
- if (sb < 0 || sb > 8)
- sb = 0;
-
- for (i = 0; i < istop; i++)
- {
- png_ptr->palette[i].red >>= sr;
- png_ptr->palette[i].green >>= sg;
- png_ptr->palette[i].blue >>= sb;
- }
- }
-#endif /* PNG_READ_SHIFT_SUPPORTED */
- }
-#if !defined(PNG_READ_GAMMA_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED) \
- && !defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr)
- return;
-#endif
-}
-
-/* Modify the info structure to reflect the transformations. The
- * info should be updated so a PNG file could be written with it,
- * assuming the transformations result in valid PNG data.
- */
-void /* PRIVATE */
-png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_read_transform_info");
-
-#ifdef PNG_READ_EXPAND_SUPPORTED
- if (png_ptr->transformations & PNG_EXPAND)
- {
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (png_ptr->num_trans &&
- (png_ptr->transformations & PNG_EXPAND_tRNS))
- info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
-
- else
- info_ptr->color_type = PNG_COLOR_TYPE_RGB;
-
- info_ptr->bit_depth = 8;
- info_ptr->num_trans = 0;
- }
- else
- {
- if (png_ptr->num_trans)
- {
- if (png_ptr->transformations & PNG_EXPAND_tRNS)
- info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
- }
- if (info_ptr->bit_depth < 8)
- info_ptr->bit_depth = 8;
-
- info_ptr->num_trans = 0;
- }
- }
-#endif
-
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
- if (png_ptr->transformations & PNG_BACKGROUND)
- {
- info_ptr->color_type = (png_byte)(info_ptr->color_type &
- ~PNG_COLOR_MASK_ALPHA);
- info_ptr->num_trans = 0;
- info_ptr->background = png_ptr->background;
- }
-#endif
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (png_ptr->transformations & PNG_GAMMA)
- {
- info_ptr->gamma = png_ptr->gamma;
- }
-#endif
-
-#ifdef PNG_READ_16_TO_8_SUPPORTED
-#ifdef PNG_READ_16BIT_SUPPORTED
- if ((png_ptr->transformations & PNG_16_TO_8) && (info_ptr->bit_depth == 16))
- info_ptr->bit_depth = 8;
-#else
- /* Force chopping 16-bit input down to 8 */
- if (info_ptr->bit_depth == 16)
- {
- png_ptr->transformations |=PNG_16_TO_8;
- info_ptr->bit_depth = 8;
- }
-#endif
-#endif
-
-#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
- if (png_ptr->transformations & PNG_GRAY_TO_RGB)
- info_ptr->color_type |= PNG_COLOR_MASK_COLOR;
-#endif
-
-#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
- if (png_ptr->transformations & PNG_RGB_TO_GRAY)
- info_ptr->color_type &= ~PNG_COLOR_MASK_COLOR;
-#endif
-
-#ifdef PNG_READ_QUANTIZE_SUPPORTED
- if (png_ptr->transformations & PNG_QUANTIZE)
- {
- if (((info_ptr->color_type == PNG_COLOR_TYPE_RGB) ||
- (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)) &&
- png_ptr->palette_lookup && info_ptr->bit_depth == 8)
- {
- info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
- }
- }
-#endif
-
-#ifdef PNG_READ_PACK_SUPPORTED
- if ((png_ptr->transformations & PNG_PACK) && (info_ptr->bit_depth < 8))
- info_ptr->bit_depth = 8;
-#endif
-
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- info_ptr->channels = 1;
-
- else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR)
- info_ptr->channels = 3;
-
- else
- info_ptr->channels = 1;
-
-#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
- if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)
- info_ptr->color_type &= ~PNG_COLOR_MASK_ALPHA;
-#endif
-
- if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA)
- info_ptr->channels++;
-
-#ifdef PNG_READ_FILLER_SUPPORTED
- /* STRIP_ALPHA and FILLER allowed: MASK_ALPHA bit stripped above */
- if ((png_ptr->transformations & PNG_FILLER) &&
- ((info_ptr->color_type == PNG_COLOR_TYPE_RGB) ||
- (info_ptr->color_type == PNG_COLOR_TYPE_GRAY)))
- {
- info_ptr->channels++;
- /* If adding a true alpha channel not just filler */
- if (png_ptr->transformations & PNG_ADD_ALPHA)
- info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
- }
-#endif
-
-#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) && \
-defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
- if (png_ptr->transformations & PNG_USER_TRANSFORM)
- {
- if (info_ptr->bit_depth < png_ptr->user_transform_depth)
- info_ptr->bit_depth = png_ptr->user_transform_depth;
-
- if (info_ptr->channels < png_ptr->user_transform_channels)
- info_ptr->channels = png_ptr->user_transform_channels;
- }
-#endif
-
- info_ptr->pixel_depth = (png_byte)(info_ptr->channels *
- info_ptr->bit_depth);
-
- info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, info_ptr->width);
-
-#ifndef PNG_READ_EXPAND_SUPPORTED
- if (png_ptr)
- return;
-#endif
-}
-
-/* Transform the row. The order of transformations is significant,
- * and is very touchy. If you add a transformation, take care to
- * decide how it fits in with the other transformations here.
- */
-void /* PRIVATE */
-png_do_read_transformations(png_structp png_ptr)
-{
- png_debug(1, "in png_do_read_transformations");
-
- if (png_ptr->row_buf == NULL)
- {
-#ifdef PNG_CONSOLE_IO_SUPPORTED
- char msg[50];
-
- png_snprintf2(msg, 50,
- "NULL row buffer for row %ld, pass %d", (long)png_ptr->row_number,
- png_ptr->pass);
- png_error(png_ptr, msg);
-#else
- png_error(png_ptr, "NULL row buffer");
-#endif
- }
-#ifdef PNG_WARN_UNINITIALIZED_ROW
- if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
- /* Application has failed to call either png_read_start_image()
- * or png_read_update_info() after setting transforms that expand
- * pixels. This check added to libpng-1.2.19
- */
-#if (PNG_WARN_UNINITIALIZED_ROW==1)
- png_error(png_ptr, "Uninitialized row");
-#else
- png_warning(png_ptr, "Uninitialized row");
-#endif
-#endif
-
-#ifdef PNG_READ_EXPAND_SUPPORTED
- if (png_ptr->transformations & PNG_EXPAND)
- {
- if (png_ptr->row_info.color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_do_expand_palette(&(png_ptr->row_info), png_ptr->row_buf + 1,
- png_ptr->palette, png_ptr->trans_alpha, png_ptr->num_trans);
- }
- else
- {
- if (png_ptr->num_trans &&
- (png_ptr->transformations & PNG_EXPAND_tRNS))
- png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1,
- &(png_ptr->trans_color));
- else
-
- png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1,
- NULL);
- }
- }
-#endif
-
-#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
- if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)
- png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
- PNG_FLAG_FILLER_AFTER | (png_ptr->flags & PNG_FLAG_STRIP_ALPHA));
-#endif
-
-#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
- if (png_ptr->transformations & PNG_RGB_TO_GRAY)
- {
- int rgb_error =
- png_do_rgb_to_gray(png_ptr, &(png_ptr->row_info),
- png_ptr->row_buf + 1);
-
- if (rgb_error)
- {
- png_ptr->rgb_to_gray_status=1;
- if ((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
- PNG_RGB_TO_GRAY_WARN)
- png_warning(png_ptr, "png_do_rgb_to_gray found nongray pixel");
-
- if ((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
- PNG_RGB_TO_GRAY_ERR)
- png_error(png_ptr, "png_do_rgb_to_gray found nongray pixel");
- }
- }
-#endif
-
-/* From Andreas Dilger e-mail to png-implement, 26 March 1998:
- *
- * In most cases, the "simple transparency" should be done prior to doing
- * gray-to-RGB, or you will have to test 3x as many bytes to check if a
- * pixel is transparent. You would also need to make sure that the
- * transparency information is upgraded to RGB.
- *
- * To summarize, the current flow is:
- * - Gray + simple transparency -> compare 1 or 2 gray bytes and composite
- * with background "in place" if transparent,
- * convert to RGB if necessary
- * - Gray + alpha -> composite with gray background and remove alpha bytes,
- * convert to RGB if necessary
- *
- * To support RGB backgrounds for gray images we need:
- * - Gray + simple transparency -> convert to RGB + simple transparency,
- * compare 3 or 6 bytes and composite with
- * background "in place" if transparent
- * (3x compare/pixel compared to doing
- * composite with gray bkgrnd)
- * - Gray + alpha -> convert to RGB + alpha, composite with background and
- * remove alpha bytes (3x float
- * operations/pixel compared with composite
- * on gray background)
- *
- * Greg's change will do this. The reason it wasn't done before is for
- * performance, as this increases the per-pixel operations. If we would check
- * in advance if the background was gray or RGB, and position the gray-to-RGB
- * transform appropriately, then it would save a lot of work/time.
- */
-
-#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
- /* If gray -> RGB, do so now only if background is non-gray; else do later
- * for performance reasons
- */
- if ((png_ptr->transformations & PNG_GRAY_TO_RGB) &&
- !(png_ptr->mode & PNG_BACKGROUND_IS_GRAY))
- png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
- if ((png_ptr->transformations & PNG_BACKGROUND) &&
- ((png_ptr->num_trans != 0) ||
- (png_ptr->color_type & PNG_COLOR_MASK_ALPHA)))
- png_do_background(&(png_ptr->row_info), png_ptr->row_buf + 1,
- &(png_ptr->trans_color), &(png_ptr->background)
-#ifdef PNG_READ_GAMMA_SUPPORTED
- , &(png_ptr->background_1),
- png_ptr->gamma_table, png_ptr->gamma_from_1,
- png_ptr->gamma_to_1, png_ptr->gamma_16_table,
- png_ptr->gamma_16_from_1, png_ptr->gamma_16_to_1,
- png_ptr->gamma_shift
-#endif
- );
-#endif
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if ((png_ptr->transformations & PNG_GAMMA) &&
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
- !((png_ptr->transformations & PNG_BACKGROUND) &&
- ((png_ptr->num_trans != 0) ||
- (png_ptr->color_type & PNG_COLOR_MASK_ALPHA))) &&
-#endif
- (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE))
- png_do_gamma(&(png_ptr->row_info), png_ptr->row_buf + 1,
- png_ptr->gamma_table, png_ptr->gamma_16_table,
- png_ptr->gamma_shift);
-#endif
-
-#ifdef PNG_READ_16_TO_8_SUPPORTED
- if (png_ptr->transformations & PNG_16_TO_8)
- png_do_chop(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_READ_QUANTIZE_SUPPORTED
- if (png_ptr->transformations & PNG_QUANTIZE)
- {
- png_do_quantize(&(png_ptr->row_info), png_ptr->row_buf + 1,
- png_ptr->palette_lookup, png_ptr->quantize_index);
-
- if (png_ptr->row_info.rowbytes == 0)
- png_error(png_ptr, "png_do_quantize returned rowbytes=0");
- }
-#endif /* PNG_READ_QUANTIZE_SUPPORTED */
-
-#ifdef PNG_READ_INVERT_SUPPORTED
- if (png_ptr->transformations & PNG_INVERT_MONO)
- png_do_invert(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_READ_SHIFT_SUPPORTED
- if (png_ptr->transformations & PNG_SHIFT)
- png_do_unshift(&(png_ptr->row_info), png_ptr->row_buf + 1,
- &(png_ptr->shift));
-#endif
-
-#ifdef PNG_READ_PACK_SUPPORTED
- if (png_ptr->transformations & PNG_PACK)
- png_do_unpack(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_READ_BGR_SUPPORTED
- if (png_ptr->transformations & PNG_BGR)
- png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_READ_PACKSWAP_SUPPORTED
- if (png_ptr->transformations & PNG_PACKSWAP)
- png_do_packswap(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
- /* If gray -> RGB, do so now only if we did not do so above */
- if ((png_ptr->transformations & PNG_GRAY_TO_RGB) &&
- (png_ptr->mode & PNG_BACKGROUND_IS_GRAY))
- png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_READ_FILLER_SUPPORTED
- if (png_ptr->transformations & PNG_FILLER)
- png_do_read_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
- (png_uint_32)png_ptr->filler, png_ptr->flags);
-#endif
-
-#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
- if (png_ptr->transformations & PNG_INVERT_ALPHA)
- png_do_read_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED
- if (png_ptr->transformations & PNG_SWAP_ALPHA)
- png_do_read_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_READ_16BIT_SUPPORTED
-#ifdef PNG_READ_SWAP_SUPPORTED
- if (png_ptr->transformations & PNG_SWAP_BYTES)
- png_do_swap(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-#endif
-
-#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
- if (png_ptr->transformations & PNG_USER_TRANSFORM)
- {
- if (png_ptr->read_user_transform_fn != NULL)
- (*(png_ptr->read_user_transform_fn)) /* User read transform function */
- (png_ptr, /* png_ptr */
- &(png_ptr->row_info), /* row_info: */
- /* png_uint_32 width; width of row */
- /* png_size_t rowbytes; number of bytes in row */
- /* png_byte color_type; color type of pixels */
- /* png_byte bit_depth; bit depth of samples */
- /* png_byte channels; number of channels (1-4) */
- /* png_byte pixel_depth; bits per pixel (depth*channels) */
- png_ptr->row_buf + 1); /* start of pixel data for row */
-#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
- if (png_ptr->user_transform_depth)
- png_ptr->row_info.bit_depth = png_ptr->user_transform_depth;
-
- if (png_ptr->user_transform_channels)
- png_ptr->row_info.channels = png_ptr->user_transform_channels;
-#endif
- png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth *
- png_ptr->row_info.channels);
-
- png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
- png_ptr->row_info.width);
- }
-#endif
-
-}
-
-#ifdef PNG_READ_PACK_SUPPORTED
-/* Unpack pixels of 1, 2, or 4 bits per pixel into 1 byte per pixel,
- * without changing the actual values. Thus, if you had a row with
- * a bit depth of 1, you would end up with bytes that only contained
- * the numbers 0 or 1. If you would rather they contain 0 and 255, use
- * png_do_shift() after this.
- */
-void /* PRIVATE */
-png_do_unpack(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_unpack");
-
- if (row_info->bit_depth < 8)
- {
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
-
- switch (row_info->bit_depth)
- {
- case 1:
- {
- png_bytep sp = row + (png_size_t)((row_width - 1) >> 3);
- png_bytep dp = row + (png_size_t)row_width - 1;
- png_uint_32 shift = 7 - (int)((row_width + 7) & 0x07);
- for (i = 0; i < row_width; i++)
- {
- *dp = (png_byte)((*sp >> shift) & 0x01);
-
- if (shift == 7)
- {
- shift = 0;
- sp--;
- }
-
- else
- shift++;
-
- dp--;
- }
- break;
- }
-
- case 2:
- {
-
- png_bytep sp = row + (png_size_t)((row_width - 1) >> 2);
- png_bytep dp = row + (png_size_t)row_width - 1;
- png_uint_32 shift = (int)((3 - ((row_width + 3) & 0x03)) << 1);
- for (i = 0; i < row_width; i++)
- {
- *dp = (png_byte)((*sp >> shift) & 0x03);
-
- if (shift == 6)
- {
- shift = 0;
- sp--;
- }
-
- else
- shift += 2;
-
- dp--;
- }
- break;
- }
-
- case 4:
- {
- png_bytep sp = row + (png_size_t)((row_width - 1) >> 1);
- png_bytep dp = row + (png_size_t)row_width - 1;
- png_uint_32 shift = (int)((1 - ((row_width + 1) & 0x01)) << 2);
- for (i = 0; i < row_width; i++)
- {
- *dp = (png_byte)((*sp >> shift) & 0x0f);
-
- if (shift == 4)
- {
- shift = 0;
- sp--;
- }
-
- else
- shift = 4;
-
- dp--;
- }
- break;
- }
-
- default:
- break;
- }
- row_info->bit_depth = 8;
- row_info->pixel_depth = (png_byte)(8 * row_info->channels);
- row_info->rowbytes = row_width * row_info->channels;
- }
-}
-#endif
-
-#ifdef PNG_READ_SHIFT_SUPPORTED
-/* Reverse the effects of png_do_shift. This routine merely shifts the
- * pixels back to their significant bits values. Thus, if you have
- * a row of bit depth 8, but only 5 are significant, this will shift
- * the values back to 0 through 31.
- */
-void /* PRIVATE */
-png_do_unshift(png_row_infop row_info, png_bytep row,
- png_const_color_8p sig_bits)
-{
- png_debug(1, "in png_do_unshift");
-
- if (
- row_info->color_type != PNG_COLOR_TYPE_PALETTE)
- {
- int shift[4];
- int channels = 0;
- int c;
- png_uint_16 value = 0;
- png_uint_32 row_width = row_info->width;
-
- if (row_info->color_type & PNG_COLOR_MASK_COLOR)
- {
- shift[channels++] = row_info->bit_depth - sig_bits->red;
- shift[channels++] = row_info->bit_depth - sig_bits->green;
- shift[channels++] = row_info->bit_depth - sig_bits->blue;
- }
-
- else
- {
- shift[channels++] = row_info->bit_depth - sig_bits->gray;
- }
-
- if (row_info->color_type & PNG_COLOR_MASK_ALPHA)
- {
- shift[channels++] = row_info->bit_depth - sig_bits->alpha;
- }
-
- for (c = 0; c < channels; c++)
- {
- if (shift[c] <= 0)
- shift[c] = 0;
-
- else
- value = 1;
- }
-
- if (!value)
- return;
-
- switch (row_info->bit_depth)
- {
- default:
- break;
-
- case 2:
- {
- png_bytep bp;
- png_size_t i;
- png_size_t istop = row_info->rowbytes;
-
- for (bp = row, i = 0; i < istop; i++)
- {
- *bp >>= 1;
- *bp++ &= 0x55;
- }
- break;
- }
-
- case 4:
- {
- png_bytep bp = row;
- png_size_t i;
- png_size_t istop = row_info->rowbytes;
- png_byte mask = (png_byte)((((int)0xf0 >> shift[0]) & (int)0xf0) |
- (png_byte)((int)0xf >> shift[0]));
-
- for (i = 0; i < istop; i++)
- {
- *bp >>= shift[0];
- *bp++ &= mask;
- }
- break;
- }
-
- case 8:
- {
- png_bytep bp = row;
- png_uint_32 i;
- png_uint_32 istop = row_width * channels;
-
- for (i = 0; i < istop; i++)
- {
- *bp++ >>= shift[i%channels];
- }
- break;
- }
-
-#ifdef PNG_READ_16BIT_SUPPORTED
- case 16:
- {
- png_bytep bp = row;
- png_uint_32 i;
- png_uint_32 istop = channels * row_width;
-
- for (i = 0; i < istop; i++)
- {
- value = (png_uint_16)((*bp << 8) + *(bp + 1));
- value >>= shift[i%channels];
- *bp++ = (png_byte)(value >> 8);
- *bp++ = (png_byte)(value & 0xff);
- }
- break;
- }
-#endif
- }
- }
-}
-#endif
-
-#ifdef PNG_READ_16_TO_8_SUPPORTED
-/* Chop rows of bit depth 16 down to 8 */
-void /* PRIVATE */
-png_do_chop(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_chop");
-
- if (row_info->bit_depth == 16)
- {
- png_bytep sp = row;
- png_bytep dp = row;
- png_uint_32 i;
- png_uint_32 istop = row_info->width * row_info->channels;
-
- for (i = 0; i> 8)) >> 8;
- *
- * Approximate calculation with shift/add instead of multiply/divide:
- * *dp = ((((png_uint_32)(*sp) << 8) |
- * (png_uint_32)((int)(*(sp + 1)) - *sp)) + 128) >> 8;
- *
- * What we actually do to avoid extra shifting and conversion:
- */
-
- *dp = *sp + ((((int)(*(sp + 1)) - *sp) > 128) ? 1 : 0);
-#else
- /* Simply discard the low order byte */
- *dp = *sp;
-#endif
- }
- row_info->bit_depth = 8;
- row_info->pixel_depth = (png_byte)(8 * row_info->channels);
- row_info->rowbytes = row_info->width * row_info->channels;
- }
-}
-#endif
-
-#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED
-void /* PRIVATE */
-png_do_read_swap_alpha(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_read_swap_alpha");
-
- {
- png_uint_32 row_width = row_info->width;
- if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- /* This converts from RGBA to ARGB */
- if (row_info->bit_depth == 8)
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_byte save;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- save = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = save;
- }
- }
-
-#ifdef PNG_READ_16BIT_SUPPORTED
- /* This converts from RRGGBBAA to AARRGGBB */
- else
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_byte save[2];
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- save[0] = *(--sp);
- save[1] = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = save[0];
- *(--dp) = save[1];
- }
- }
-#endif
- }
-
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- /* This converts from GA to AG */
- if (row_info->bit_depth == 8)
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_byte save;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- save = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = save;
- }
- }
-
-#ifdef PNG_READ_16BIT_SUPPORTED
- /* This converts from GGAA to AAGG */
- else
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_byte save[2];
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- save[0] = *(--sp);
- save[1] = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = save[0];
- *(--dp) = save[1];
- }
- }
-#endif
- }
- }
-}
-#endif
-
-#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
-void /* PRIVATE */
-png_do_read_invert_alpha(png_row_infop row_info, png_bytep row)
-{
- png_uint_32 row_width;
- png_debug(1, "in png_do_read_invert_alpha");
-
- row_width = row_info->width;
- if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- if (row_info->bit_depth == 8)
- {
- /* This inverts the alpha channel in RGBA */
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = (png_byte)(255 - *(--sp));
-
-/* This does nothing:
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- We can replace it with:
-*/
- sp-=3;
- dp=sp;
- }
- }
-
-#ifdef PNG_READ_16BIT_SUPPORTED
- /* This inverts the alpha channel in RRGGBBAA */
- else
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = (png_byte)(255 - *(--sp));
- *(--dp) = (png_byte)(255 - *(--sp));
-
-/* This does nothing:
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- We can replace it with:
-*/
- sp-=6;
- dp=sp;
- }
- }
-#endif
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- if (row_info->bit_depth == 8)
- {
- /* This inverts the alpha channel in GA */
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = (png_byte)(255 - *(--sp));
- *(--dp) = *(--sp);
- }
- }
-
-#ifdef PNG_READ_16BIT_SUPPORTED
- else
- {
- /* This inverts the alpha channel in GGAA */
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = (png_byte)(255 - *(--sp));
- *(--dp) = (png_byte)(255 - *(--sp));
-/*
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
-*/
- sp-=2;
- dp=sp;
- }
- }
-#endif
- }
-}
-#endif
-
-#ifdef PNG_READ_FILLER_SUPPORTED
-/* Add filler channel if we have RGB color */
-void /* PRIVATE */
-png_do_read_filler(png_row_infop row_info, png_bytep row,
- png_uint_32 filler, png_uint_32 flags)
-{
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
-#ifdef PNG_READ_16BIT_SUPPORTED
- png_byte hi_filler = (png_byte)((filler>>8) & 0xff);
-#endif
- png_byte lo_filler = (png_byte)(filler & 0xff);
-
- png_debug(1, "in png_do_read_filler");
-
- if (
- row_info->color_type == PNG_COLOR_TYPE_GRAY)
- {
- if (row_info->bit_depth == 8)
- {
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- /* This changes the data from G to GX */
- png_bytep sp = row + (png_size_t)row_width;
- png_bytep dp = sp + (png_size_t)row_width;
- for (i = 1; i < row_width; i++)
- {
- *(--dp) = lo_filler;
- *(--dp) = *(--sp);
- }
- *(--dp) = lo_filler;
- row_info->channels = 2;
- row_info->pixel_depth = 16;
- row_info->rowbytes = row_width * 2;
- }
-
- else
- {
- /* This changes the data from G to XG */
- png_bytep sp = row + (png_size_t)row_width;
- png_bytep dp = sp + (png_size_t)row_width;
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = *(--sp);
- *(--dp) = lo_filler;
- }
- row_info->channels = 2;
- row_info->pixel_depth = 16;
- row_info->rowbytes = row_width * 2;
- }
- }
-
-#ifdef PNG_READ_16BIT_SUPPORTED
- else if (row_info->bit_depth == 16)
- {
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- /* This changes the data from GG to GGXX */
- png_bytep sp = row + (png_size_t)row_width * 2;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 1; i < row_width; i++)
- {
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- }
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- row_info->channels = 2;
- row_info->pixel_depth = 32;
- row_info->rowbytes = row_width * 4;
- }
-
- else
- {
- /* This changes the data from GG to XXGG */
- png_bytep sp = row + (png_size_t)row_width * 2;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- }
- row_info->channels = 2;
- row_info->pixel_depth = 32;
- row_info->rowbytes = row_width * 4;
- }
- }
-#endif
- } /* COLOR_TYPE == GRAY */
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- {
- if (row_info->bit_depth == 8)
- {
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- /* This changes the data from RGB to RGBX */
- png_bytep sp = row + (png_size_t)row_width * 3;
- png_bytep dp = sp + (png_size_t)row_width;
- for (i = 1; i < row_width; i++)
- {
- *(--dp) = lo_filler;
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- }
- *(--dp) = lo_filler;
- row_info->channels = 4;
- row_info->pixel_depth = 32;
- row_info->rowbytes = row_width * 4;
- }
-
- else
- {
- /* This changes the data from RGB to XRGB */
- png_bytep sp = row + (png_size_t)row_width * 3;
- png_bytep dp = sp + (png_size_t)row_width;
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = lo_filler;
- }
- row_info->channels = 4;
- row_info->pixel_depth = 32;
- row_info->rowbytes = row_width * 4;
- }
- }
-
-#ifdef PNG_READ_16BIT_SUPPORTED
- else if (row_info->bit_depth == 16)
- {
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- /* This changes the data from RRGGBB to RRGGBBXX */
- png_bytep sp = row + (png_size_t)row_width * 6;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 1; i < row_width; i++)
- {
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- }
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- row_info->channels = 4;
- row_info->pixel_depth = 64;
- row_info->rowbytes = row_width * 8;
- }
-
- else
- {
- /* This changes the data from RRGGBB to XXRRGGBB */
- png_bytep sp = row + (png_size_t)row_width * 6;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- }
-
- row_info->channels = 4;
- row_info->pixel_depth = 64;
- row_info->rowbytes = row_width * 8;
- }
- }
-#endif
- } /* COLOR_TYPE == RGB */
-}
-#endif
-
-#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
-/* Expand grayscale files to RGB, with or without alpha */
-void /* PRIVATE */
-png_do_gray_to_rgb(png_row_infop row_info, png_bytep row)
-{
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- png_debug(1, "in png_do_gray_to_rgb");
-
- if (row_info->bit_depth >= 8 &&
- !(row_info->color_type & PNG_COLOR_MASK_COLOR))
- {
- if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
- {
- if (row_info->bit_depth == 8)
- {
- /* This changes G to RGB */
- png_bytep sp = row + (png_size_t)row_width - 1;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 0; i < row_width; i++)
- {
- *(dp--) = *sp;
- *(dp--) = *sp;
- *(dp--) = *(sp--);
- }
- }
-
- else
- {
- /* This changes GG to RRGGBB */
- png_bytep sp = row + (png_size_t)row_width * 2 - 1;
- png_bytep dp = sp + (png_size_t)row_width * 4;
- for (i = 0; i < row_width; i++)
- {
- *(dp--) = *sp;
- *(dp--) = *(sp - 1);
- *(dp--) = *sp;
- *(dp--) = *(sp - 1);
- *(dp--) = *(sp--);
- *(dp--) = *(sp--);
- }
- }
- }
-
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- if (row_info->bit_depth == 8)
- {
- /* This changes GA to RGBA */
- png_bytep sp = row + (png_size_t)row_width * 2 - 1;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 0; i < row_width; i++)
- {
- *(dp--) = *(sp--);
- *(dp--) = *sp;
- *(dp--) = *sp;
- *(dp--) = *(sp--);
- }
- }
-
- else
- {
- /* This changes GGAA to RRGGBBAA */
- png_bytep sp = row + (png_size_t)row_width * 4 - 1;
- png_bytep dp = sp + (png_size_t)row_width * 4;
- for (i = 0; i < row_width; i++)
- {
- *(dp--) = *(sp--);
- *(dp--) = *(sp--);
- *(dp--) = *sp;
- *(dp--) = *(sp - 1);
- *(dp--) = *sp;
- *(dp--) = *(sp - 1);
- *(dp--) = *(sp--);
- *(dp--) = *(sp--);
- }
- }
- }
- row_info->channels += (png_byte)2;
- row_info->color_type |= PNG_COLOR_MASK_COLOR;
- row_info->pixel_depth = (png_byte)(row_info->channels *
- row_info->bit_depth);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
-}
-#endif
-
-#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
-/* Reduce RGB files to grayscale, with or without alpha
- * using the equation given in Poynton's ColorFAQ at
- * (THIS LINK IS DEAD June 2008)
- * New link:
- *
- * Charles Poynton poynton at poynton.com
- *
- * Y = 0.212671 * R + 0.715160 * G + 0.072169 * B
- *
- * We approximate this with
- *
- * Y = 0.21268 * R + 0.7151 * G + 0.07217 * B
- *
- * which can be expressed with integers as
- *
- * Y = (6969 * R + 23434 * G + 2365 * B)/32768
- *
- * The calculation is to be done in a linear colorspace.
- *
- * Other integer coefficents can be used via png_set_rgb_to_gray().
- */
-int /* PRIVATE */
-png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
-
-{
- png_uint_32 i;
-
- png_uint_32 row_width = row_info->width;
- int rgb_error = 0;
-
- png_debug(1, "in png_do_rgb_to_gray");
-
- if (!(row_info->color_type & PNG_COLOR_MASK_PALETTE) &&
- (row_info->color_type & PNG_COLOR_MASK_COLOR))
- {
- png_uint_32 rc = png_ptr->rgb_to_gray_red_coeff;
- png_uint_32 gc = png_ptr->rgb_to_gray_green_coeff;
- png_uint_32 bc = png_ptr->rgb_to_gray_blue_coeff;
-
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- {
- if (row_info->bit_depth == 8)
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL)
- {
- png_bytep sp = row;
- png_bytep dp = row;
-
- for (i = 0; i < row_width; i++)
- {
- png_byte red = png_ptr->gamma_to_1[*(sp++)];
- png_byte green = png_ptr->gamma_to_1[*(sp++)];
- png_byte blue = png_ptr->gamma_to_1[*(sp++)];
-
- if (red != green || red != blue)
- {
- rgb_error |= 1;
- *(dp++) = png_ptr->gamma_from_1[
- (rc*red + gc*green + bc*blue)>>15];
- }
-
- else
- *(dp++) = *(sp - 1);
- }
- }
- else
-#endif
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_byte red = *(sp++);
- png_byte green = *(sp++);
- png_byte blue = *(sp++);
-
- if (red != green || red != blue)
- {
- rgb_error |= 1;
- *(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15);
- }
-
- else
- *(dp++) = *(sp - 1);
- }
- }
- }
-
- else /* RGB bit_depth == 16 */
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->gamma_16_to_1 != NULL &&
- png_ptr->gamma_16_from_1 != NULL)
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 red, green, blue, w;
-
- red = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
- green = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
- blue = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
-
- if (red == green && red == blue)
- w = red;
-
- else
- {
- png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff)
- >> png_ptr->gamma_shift][red>>8];
- png_uint_16 green_1 =
- png_ptr->gamma_16_to_1[(green&0xff) >>
- png_ptr->gamma_shift][green>>8];
- png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff)
- >> png_ptr->gamma_shift][blue>>8];
- png_uint_16 gray16 = (png_uint_16)((rc*red_1 + gc*green_1
- + bc*blue_1)>>15);
- w = png_ptr->gamma_16_from_1[(gray16&0xff) >>
- png_ptr->gamma_shift][gray16 >> 8];
- rgb_error |= 1;
- }
-
- *(dp++) = (png_byte)((w>>8) & 0xff);
- *(dp++) = (png_byte)(w & 0xff);
- }
- }
- else
-#endif
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 red, green, blue, gray16;
-
- red = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
- green = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
- blue = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
-
- if (red != green || red != blue)
- rgb_error |= 1;
-
- gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15);
- *(dp++) = (png_byte)((gray16>>8) & 0xff);
- *(dp++) = (png_byte)(gray16 & 0xff);
- }
- }
- }
- }
- if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- if (row_info->bit_depth == 8)
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL)
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_byte red = png_ptr->gamma_to_1[*(sp++)];
- png_byte green = png_ptr->gamma_to_1[*(sp++)];
- png_byte blue = png_ptr->gamma_to_1[*(sp++)];
-
- if (red != green || red != blue)
- rgb_error |= 1;
-
- *(dp++) = png_ptr->gamma_from_1
- [(rc*red + gc*green + bc*blue)>>15];
-
- *(dp++) = *(sp++); /* alpha */
- }
- }
- else
-#endif
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_byte red = *(sp++);
- png_byte green = *(sp++);
- png_byte blue = *(sp++);
- if (red != green || red != blue)
- rgb_error |= 1;
-
- *(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15);
- *(dp++) = *(sp++); /* alpha */
- }
- }
- }
- else /* RGBA bit_depth == 16 */
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->gamma_16_to_1 != NULL &&
- png_ptr->gamma_16_from_1 != NULL)
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 red, green, blue, w;
-
- red = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
- green = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
- blue = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
-
- if (red == green && red == blue)
- w = red;
-
- else
- {
- png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >>
- png_ptr->gamma_shift][red>>8];
-
- png_uint_16 green_1 =
- png_ptr->gamma_16_to_1[(green&0xff) >>
- png_ptr->gamma_shift][green>>8];
-
- png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff) >>
- png_ptr->gamma_shift][blue>>8];
-
- png_uint_16 gray16 = (png_uint_16)((rc * red_1
- + gc * green_1 + bc * blue_1)>>15);
-
- w = png_ptr->gamma_16_from_1[(gray16&0xff) >>
- png_ptr->gamma_shift][gray16 >> 8];
-
- rgb_error |= 1;
- }
-
- *(dp++) = (png_byte)((w>>8) & 0xff);
- *(dp++) = (png_byte)(w & 0xff);
- *(dp++) = *(sp++); /* alpha */
- *(dp++) = *(sp++);
- }
- }
- else
-#endif
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 red, green, blue, gray16;
- red = (png_uint_16)((*(sp)<<8) | *(sp + 1)); sp += 2;
- green = (png_uint_16)((*(sp)<<8) | *(sp + 1)); sp += 2;
- blue = (png_uint_16)((*(sp)<<8) | *(sp + 1)); sp += 2;
-
- if (red != green || red != blue)
- rgb_error |= 1;
-
- gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15);
- *(dp++) = (png_byte)((gray16>>8) & 0xff);
- *(dp++) = (png_byte)(gray16 & 0xff);
- *(dp++) = *(sp++); /* alpha */
- *(dp++) = *(sp++);
- }
- }
- }
- }
- row_info->channels -= 2;
- row_info->color_type = (png_byte)(row_info->color_type &
- ~PNG_COLOR_MASK_COLOR);
- row_info->pixel_depth = (png_byte)(row_info->channels *
- row_info->bit_depth);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
- return rgb_error;
-}
-#endif
-
-/* Build a grayscale palette. Palette is assumed to be 1 << bit_depth
- * large of png_color. This lets grayscale images be treated as
- * paletted. Most useful for gamma correction and simplification
- * of code.
- */
-void PNGAPI
-png_build_grayscale_palette(int bit_depth, png_colorp palette)
-{
- int num_palette;
- int color_inc;
- int i;
- int v;
-
- png_debug(1, "in png_do_build_grayscale_palette");
-
- if (palette == NULL)
- return;
-
- switch (bit_depth)
- {
- case 1:
- num_palette = 2;
- color_inc = 0xff;
- break;
-
- case 2:
- num_palette = 4;
- color_inc = 0x55;
- break;
-
- case 4:
- num_palette = 16;
- color_inc = 0x11;
- break;
-
- case 8:
- num_palette = 256;
- color_inc = 1;
- break;
-
- default:
- num_palette = 0;
- color_inc = 0;
- break;
- }
-
- for (i = 0, v = 0; i < num_palette; i++, v += color_inc)
- {
- palette[i].red = (png_byte)v;
- palette[i].green = (png_byte)v;
- palette[i].blue = (png_byte)v;
- }
-}
-
-
-#ifdef PNG_READ_BACKGROUND_SUPPORTED
-/* Replace any alpha or transparency with the supplied background color.
- * "background" is already in the screen gamma, while "background_1" is
- * at a gamma of 1.0. Paletted files have already been taken care of.
- */
-void /* PRIVATE */
-png_do_background(png_row_infop row_info, png_bytep row,
- png_const_color_16p trans_color, png_const_color_16p background
-#ifdef PNG_READ_GAMMA_SUPPORTED
- , png_const_color_16p background_1, png_const_bytep gamma_table,
- png_const_bytep gamma_from_1, png_const_bytep gamma_to_1,
- png_const_uint_16pp gamma_16, png_const_uint_16pp gamma_16_from_1,
- png_const_uint_16pp gamma_16_to_1, int gamma_shift
-#endif
- )
-{
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
- int shift;
-
- png_debug(1, "in png_do_background");
-
- if (background != NULL &&
- (!(row_info->color_type & PNG_COLOR_MASK_ALPHA) ||
- (row_info->color_type != PNG_COLOR_TYPE_PALETTE && trans_color)))
- {
- switch (row_info->color_type)
- {
- case PNG_COLOR_TYPE_GRAY:
- {
- switch (row_info->bit_depth)
- {
- case 1:
- {
- sp = row;
- shift = 7;
- for (i = 0; i < row_width; i++)
- {
- if ((png_uint_16)((*sp >> shift) & 0x01)
- == trans_color->gray)
- {
- *sp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff);
- *sp |= (png_byte)(background->gray << shift);
- }
-
- if (!shift)
- {
- shift = 7;
- sp++;
- }
-
- else
- shift--;
- }
- break;
- }
-
- case 2:
- {
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (gamma_table != NULL)
- {
- sp = row;
- shift = 6;
- for (i = 0; i < row_width; i++)
- {
- if ((png_uint_16)((*sp >> shift) & 0x03)
- == trans_color->gray)
- {
- *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
- *sp |= (png_byte)(background->gray << shift);
- }
-
- else
- {
- png_byte p = (png_byte)((*sp >> shift) & 0x03);
- png_byte g = (png_byte)((gamma_table [p | (p << 2) |
- (p << 4) | (p << 6)] >> 6) & 0x03);
- *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
- *sp |= (png_byte)(g << shift);
- }
-
- if (!shift)
- {
- shift = 6;
- sp++;
- }
-
- else
- shift -= 2;
- }
- }
-
- else
-#endif
- {
- sp = row;
- shift = 6;
- for (i = 0; i < row_width; i++)
- {
- if ((png_uint_16)((*sp >> shift) & 0x03)
- == trans_color->gray)
- {
- *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
- *sp |= (png_byte)(background->gray << shift);
- }
-
- if (!shift)
- {
- shift = 6;
- sp++;
- }
-
- else
- shift -= 2;
- }
- }
- break;
- }
-
- case 4:
- {
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (gamma_table != NULL)
- {
- sp = row;
- shift = 4;
- for (i = 0; i < row_width; i++)
- {
- if ((png_uint_16)((*sp >> shift) & 0x0f)
- == trans_color->gray)
- {
- *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
- *sp |= (png_byte)(background->gray << shift);
- }
-
- else
- {
- png_byte p = (png_byte)((*sp >> shift) & 0x0f);
- png_byte g = (png_byte)((gamma_table[p |
- (p << 4)] >> 4) & 0x0f);
- *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
- *sp |= (png_byte)(g << shift);
- }
-
- if (!shift)
- {
- shift = 4;
- sp++;
- }
-
- else
- shift -= 4;
- }
- }
-
- else
-#endif
- {
- sp = row;
- shift = 4;
- for (i = 0; i < row_width; i++)
- {
- if ((png_uint_16)((*sp >> shift) & 0x0f)
- == trans_color->gray)
- {
- *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
- *sp |= (png_byte)(background->gray << shift);
- }
-
- if (!shift)
- {
- shift = 4;
- sp++;
- }
-
- else
- shift -= 4;
- }
- }
- break;
- }
-
- case 8:
- {
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (gamma_table != NULL)
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp++)
- {
- if (*sp == trans_color->gray)
- *sp = (png_byte)background->gray;
-
- else
- *sp = gamma_table[*sp];
- }
- }
- else
-#endif
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp++)
- {
- if (*sp == trans_color->gray)
- *sp = (png_byte)background->gray;
- }
- }
- break;
- }
-
- case 16:
- {
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (gamma_16 != NULL)
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 2)
- {
- png_uint_16 v;
-
- v = (png_uint_16)(((*sp) << 8) + *(sp + 1));
-
- if (v == trans_color->gray)
- {
- /* Background is already in screen gamma */
- *sp = (png_byte)((background->gray >> 8) & 0xff);
- *(sp + 1) = (png_byte)(background->gray & 0xff);
- }
-
- else
- {
- v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- }
- }
- }
- else
-#endif
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 2)
- {
- png_uint_16 v;
-
- v = (png_uint_16)(((*sp) << 8) + *(sp + 1));
-
- if (v == trans_color->gray)
- {
- *sp = (png_byte)((background->gray >> 8) & 0xff);
- *(sp + 1) = (png_byte)(background->gray & 0xff);
- }
- }
- }
- break;
- }
-
- default:
- break;
- }
- break;
- }
-
- case PNG_COLOR_TYPE_RGB:
- {
- if (row_info->bit_depth == 8)
- {
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (gamma_table != NULL)
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 3)
- {
- if (*sp == trans_color->red &&
- *(sp + 1) == trans_color->green &&
- *(sp + 2) == trans_color->blue)
- {
- *sp = (png_byte)background->red;
- *(sp + 1) = (png_byte)background->green;
- *(sp + 2) = (png_byte)background->blue;
- }
-
- else
- {
- *sp = gamma_table[*sp];
- *(sp + 1) = gamma_table[*(sp + 1)];
- *(sp + 2) = gamma_table[*(sp + 2)];
- }
- }
- }
- else
-#endif
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 3)
- {
- if (*sp == trans_color->red &&
- *(sp + 1) == trans_color->green &&
- *(sp + 2) == trans_color->blue)
- {
- *sp = (png_byte)background->red;
- *(sp + 1) = (png_byte)background->green;
- *(sp + 2) = (png_byte)background->blue;
- }
- }
- }
- }
- else /* if (row_info->bit_depth == 16) */
- {
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (gamma_16 != NULL)
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 6)
- {
- png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1));
-
- png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8)
- + *(sp + 3));
-
- png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8)
- + *(sp + 5));
-
- if (r == trans_color->red && g == trans_color->green &&
- b == trans_color->blue)
- {
- /* Background is already in screen gamma */
- *sp = (png_byte)((background->red >> 8) & 0xff);
- *(sp + 1) = (png_byte)(background->red & 0xff);
- *(sp + 2) = (png_byte)((background->green >> 8) & 0xff);
- *(sp + 3) = (png_byte)(background->green & 0xff);
- *(sp + 4) = (png_byte)((background->blue >> 8) & 0xff);
- *(sp + 5) = (png_byte)(background->blue & 0xff);
- }
-
- else
- {
- png_uint_16 v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
-
- v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)];
- *(sp + 2) = (png_byte)((v >> 8) & 0xff);
- *(sp + 3) = (png_byte)(v & 0xff);
-
- v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)];
- *(sp + 4) = (png_byte)((v >> 8) & 0xff);
- *(sp + 5) = (png_byte)(v & 0xff);
- }
- }
- }
-
- else
-#endif
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 6)
- {
- png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1));
-
- png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8)
- + *(sp + 3));
-
- png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8)
- + *(sp + 5));
-
- if (r == trans_color->red && g == trans_color->green &&
- b == trans_color->blue)
- {
- *sp = (png_byte)((background->red >> 8) & 0xff);
- *(sp + 1) = (png_byte)(background->red & 0xff);
- *(sp + 2) = (png_byte)((background->green >> 8) & 0xff);
- *(sp + 3) = (png_byte)(background->green & 0xff);
- *(sp + 4) = (png_byte)((background->blue >> 8) & 0xff);
- *(sp + 5) = (png_byte)(background->blue & 0xff);
- }
- }
- }
- }
- break;
- }
-
- case PNG_COLOR_TYPE_GRAY_ALPHA:
- {
- if (row_info->bit_depth == 8)
- {
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (gamma_to_1 != NULL && gamma_from_1 != NULL &&
- gamma_table != NULL)
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 2, dp++)
- {
- png_uint_16 a = *(sp + 1);
-
- if (a == 0xff)
- *dp = gamma_table[*sp];
-
- else if (a == 0)
- {
- /* Background is already in screen gamma */
- *dp = (png_byte)background->gray;
- }
-
- else
- {
- png_byte v, w;
-
- v = gamma_to_1[*sp];
- png_composite(w, v, a, background_1->gray);
- *dp = gamma_from_1[w];
- }
- }
- }
- else
-#endif
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 2, dp++)
- {
- png_byte a = *(sp + 1);
-
- if (a == 0xff)
- *dp = *sp;
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
- else if (a == 0)
- *dp = (png_byte)background->gray;
-
- else
- png_composite(*dp, *sp, a, background_1->gray);
-
-#else
- *dp = (png_byte)background->gray;
-#endif
- }
- }
- }
- else /* if (png_ptr->bit_depth == 16) */
- {
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (gamma_16 != NULL && gamma_16_from_1 != NULL &&
- gamma_16_to_1 != NULL)
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 4, dp += 2)
- {
- png_uint_16 a = (png_uint_16)(((*(sp + 2)) << 8)
- + *(sp + 3));
-
- if (a == (png_uint_16)0xffff)
- {
- png_uint_16 v;
-
- v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
- *dp = (png_byte)((v >> 8) & 0xff);
- *(dp + 1) = (png_byte)(v & 0xff);
- }
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
- else if (a == 0)
-#else
- else
-#endif
- {
- /* Background is already in screen gamma */
- *dp = (png_byte)((background->gray >> 8) & 0xff);
- *(dp + 1) = (png_byte)(background->gray & 0xff);
- }
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
- else
- {
- png_uint_16 g, v, w;
-
- g = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp];
- png_composite_16(v, g, a, background_1->gray);
- w = gamma_16_from_1[(v&0xff) >> gamma_shift][v >> 8];
- *dp = (png_byte)((w >> 8) & 0xff);
- *(dp + 1) = (png_byte)(w & 0xff);
- }
-#endif
- }
- }
- else
-#endif
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 4, dp += 2)
- {
- png_uint_16 a = (png_uint_16)(((*(sp + 2)) << 8)
- + *(sp + 3));
-
- if (a == (png_uint_16)0xffff)
- png_memcpy(dp, sp, 2);
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
- else if (a == 0)
-#else
- else
-#endif
- {
- *dp = (png_byte)((background->gray >> 8) & 0xff);
- *(dp + 1) = (png_byte)(background->gray & 0xff);
- }
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
- else
- {
- png_uint_16 g, v;
-
- g = (png_uint_16)(((*sp) << 8) + *(sp + 1));
- png_composite_16(v, g, a, background_1->gray);
- *dp = (png_byte)((v >> 8) & 0xff);
- *(dp + 1) = (png_byte)(v & 0xff);
- }
-#endif
- }
- }
- }
- break;
- }
-
- case PNG_COLOR_TYPE_RGB_ALPHA:
- {
- if (row_info->bit_depth == 8)
- {
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (gamma_to_1 != NULL && gamma_from_1 != NULL &&
- gamma_table != NULL)
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 4, dp += 3)
- {
- png_byte a = *(sp + 3);
-
- if (a == 0xff)
- {
- *dp = gamma_table[*sp];
- *(dp + 1) = gamma_table[*(sp + 1)];
- *(dp + 2) = gamma_table[*(sp + 2)];
- }
-
- else if (a == 0)
- {
- /* Background is already in screen gamma */
- *dp = (png_byte)background->red;
- *(dp + 1) = (png_byte)background->green;
- *(dp + 2) = (png_byte)background->blue;
- }
-
- else
- {
- png_byte v, w;
-
- v = gamma_to_1[*sp];
- png_composite(w, v, a, background_1->red);
- *dp = gamma_from_1[w];
-
- v = gamma_to_1[*(sp + 1)];
- png_composite(w, v, a, background_1->green);
- *(dp + 1) = gamma_from_1[w];
-
- v = gamma_to_1[*(sp + 2)];
- png_composite(w, v, a, background_1->blue);
- *(dp + 2) = gamma_from_1[w];
- }
- }
- }
- else
-#endif
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 4, dp += 3)
- {
- png_byte a = *(sp + 3);
-
- if (a == 0xff)
- {
- *dp = *sp;
- *(dp + 1) = *(sp + 1);
- *(dp + 2) = *(sp + 2);
- }
-
- else if (a == 0)
- {
- *dp = (png_byte)background->red;
- *(dp + 1) = (png_byte)background->green;
- *(dp + 2) = (png_byte)background->blue;
- }
-
- else
- {
- png_composite(*dp, *sp, a, background->red);
-
- png_composite(*(dp + 1), *(sp + 1), a,
- background->green);
-
- png_composite(*(dp + 2), *(sp + 2), a,
- background->blue);
- }
- }
- }
- }
- else /* if (row_info->bit_depth == 16) */
- {
-#ifdef PNG_READ_GAMMA_SUPPORTED
- if (gamma_16 != NULL && gamma_16_from_1 != NULL &&
- gamma_16_to_1 != NULL)
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 8, dp += 6)
- {
- png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6))
- << 8) + (png_uint_16)(*(sp + 7)));
-
- if (a == (png_uint_16)0xffff)
- {
- png_uint_16 v;
-
- v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
- *dp = (png_byte)((v >> 8) & 0xff);
- *(dp + 1) = (png_byte)(v & 0xff);
-
- v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)];
- *(dp + 2) = (png_byte)((v >> 8) & 0xff);
- *(dp + 3) = (png_byte)(v & 0xff);
-
- v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)];
- *(dp + 4) = (png_byte)((v >> 8) & 0xff);
- *(dp + 5) = (png_byte)(v & 0xff);
- }
-
- else if (a == 0)
- {
- /* Background is already in screen gamma */
- *dp = (png_byte)((background->red >> 8) & 0xff);
- *(dp + 1) = (png_byte)(background->red & 0xff);
- *(dp + 2) = (png_byte)((background->green >> 8) & 0xff);
- *(dp + 3) = (png_byte)(background->green & 0xff);
- *(dp + 4) = (png_byte)((background->blue >> 8) & 0xff);
- *(dp + 5) = (png_byte)(background->blue & 0xff);
- }
-
- else
- {
- png_uint_16 v, w, x;
-
- v = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp];
- png_composite_16(w, v, a, background_1->red);
-
- x = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> 8];
- *dp = (png_byte)((x >> 8) & 0xff);
- *(dp + 1) = (png_byte)(x & 0xff);
-
- v = gamma_16_to_1[*(sp + 3) >> gamma_shift][*(sp + 2)];
- png_composite_16(w, v, a, background_1->green);
-
- x = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> 8];
- *(dp + 2) = (png_byte)((x >> 8) & 0xff);
- *(dp + 3) = (png_byte)(x & 0xff);
-
- v = gamma_16_to_1[*(sp + 5) >> gamma_shift][*(sp + 4)];
- png_composite_16(w, v, a, background_1->blue);
-
- x = gamma_16_from_1[(w & 0xff) >> gamma_shift][w >> 8];
- *(dp + 4) = (png_byte)((x >> 8) & 0xff);
- *(dp + 5) = (png_byte)(x & 0xff);
- }
- }
- }
-
- else
-#endif
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 8, dp += 6)
- {
- png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6))
- << 8) + (png_uint_16)(*(sp + 7)));
-
- if (a == (png_uint_16)0xffff)
- {
- png_memcpy(dp, sp, 6);
- }
-
- else if (a == 0)
- {
- *dp = (png_byte)((background->red >> 8) & 0xff);
- *(dp + 1) = (png_byte)(background->red & 0xff);
- *(dp + 2) = (png_byte)((background->green >> 8) & 0xff);
- *(dp + 3) = (png_byte)(background->green & 0xff);
- *(dp + 4) = (png_byte)((background->blue >> 8) & 0xff);
- *(dp + 5) = (png_byte)(background->blue & 0xff);
- }
-
- else
- {
- png_uint_16 v;
-
- png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1));
- png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8)
- + *(sp + 3));
- png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8)
- + *(sp + 5));
-
- png_composite_16(v, r, a, background->red);
- *dp = (png_byte)((v >> 8) & 0xff);
- *(dp + 1) = (png_byte)(v & 0xff);
-
- png_composite_16(v, g, a, background->green);
- *(dp + 2) = (png_byte)((v >> 8) & 0xff);
- *(dp + 3) = (png_byte)(v & 0xff);
-
- png_composite_16(v, b, a, background->blue);
- *(dp + 4) = (png_byte)((v >> 8) & 0xff);
- *(dp + 5) = (png_byte)(v & 0xff);
- }
- }
- }
- }
- break;
- }
-
- default:
- break;
- }
-
- if (row_info->color_type & PNG_COLOR_MASK_ALPHA)
- {
- row_info->color_type = (png_byte)(row_info->color_type &
- ~PNG_COLOR_MASK_ALPHA);
- row_info->channels--;
- row_info->pixel_depth = (png_byte)(row_info->channels *
- row_info->bit_depth);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
- }
-}
-#endif
-
-#ifdef PNG_READ_GAMMA_SUPPORTED
-/* Gamma correct the image, avoiding the alpha channel. Make sure
- * you do this after you deal with the transparency issue on grayscale
- * or RGB images. If your bit depth is 8, use gamma_table, if it
- * is 16, use gamma_16_table and gamma_shift. Build these with
- * build_gamma_table().
- */
-void /* PRIVATE */
-png_do_gamma(png_row_infop row_info, png_bytep row,
- png_const_bytep gamma_table, png_const_uint_16pp gamma_16_table,
- int gamma_shift)
-{
- png_bytep sp;
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
-
- png_debug(1, "in png_do_gamma");
-
- if (((row_info->bit_depth <= 8 && gamma_table != NULL) ||
- (row_info->bit_depth == 16 && gamma_16_table != NULL)))
- {
- switch (row_info->color_type)
- {
- case PNG_COLOR_TYPE_RGB:
- {
- if (row_info->bit_depth == 8)
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- *sp = gamma_table[*sp];
- sp++;
- *sp = gamma_table[*sp];
- sp++;
- *sp = gamma_table[*sp];
- sp++;
- }
- }
-
- else /* if (row_info->bit_depth == 16) */
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 v;
-
- v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
-
- v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
-
- v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
- }
- }
- break;
- }
-
- case PNG_COLOR_TYPE_RGB_ALPHA:
- {
- if (row_info->bit_depth == 8)
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- *sp = gamma_table[*sp];
- sp++;
-
- *sp = gamma_table[*sp];
- sp++;
-
- *sp = gamma_table[*sp];
- sp++;
-
- sp++;
- }
- }
-
- else /* if (row_info->bit_depth == 16) */
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
-
- v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
-
- v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 4;
- }
- }
- break;
- }
-
- case PNG_COLOR_TYPE_GRAY_ALPHA:
- {
- if (row_info->bit_depth == 8)
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- *sp = gamma_table[*sp];
- sp += 2;
- }
- }
-
- else /* if (row_info->bit_depth == 16) */
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 4;
- }
- }
- break;
- }
-
- case PNG_COLOR_TYPE_GRAY:
- {
- if (row_info->bit_depth == 2)
- {
- sp = row;
- for (i = 0; i < row_width; i += 4)
- {
- int a = *sp & 0xc0;
- int b = *sp & 0x30;
- int c = *sp & 0x0c;
- int d = *sp & 0x03;
-
- *sp = (png_byte)(
- ((((int)gamma_table[a|(a>>2)|(a>>4)|(a>>6)]) ) & 0xc0)|
- ((((int)gamma_table[(b<<2)|b|(b>>2)|(b>>4)])>>2) & 0x30)|
- ((((int)gamma_table[(c<<4)|(c<<2)|c|(c>>2)])>>4) & 0x0c)|
- ((((int)gamma_table[(d<<6)|(d<<4)|(d<<2)|d])>>6) ));
- sp++;
- }
- }
-
- if (row_info->bit_depth == 4)
- {
- sp = row;
- for (i = 0; i < row_width; i += 2)
- {
- int msb = *sp & 0xf0;
- int lsb = *sp & 0x0f;
-
- *sp = (png_byte)((((int)gamma_table[msb | (msb >> 4)]) & 0xf0)
- | (((int)gamma_table[(lsb << 4) | lsb]) >> 4));
- sp++;
- }
- }
-
- else if (row_info->bit_depth == 8)
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- *sp = gamma_table[*sp];
- sp++;
- }
- }
-
- else if (row_info->bit_depth == 16)
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
- }
- }
- break;
- }
-
- default:
- break;
- }
- }
-}
-#endif
-
-#ifdef PNG_READ_EXPAND_SUPPORTED
-/* Expands a palette row to an RGB or RGBA row depending
- * upon whether you supply trans and num_trans.
- */
-void /* PRIVATE */
-png_do_expand_palette(png_row_infop row_info, png_bytep row,
- png_const_colorp palette, png_const_bytep trans_alpha, int num_trans)
-{
- int shift, value;
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
-
- png_debug(1, "in png_do_expand_palette");
-
- if (row_info->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (row_info->bit_depth < 8)
- {
- switch (row_info->bit_depth)
- {
- case 1:
- {
- sp = row + (png_size_t)((row_width - 1) >> 3);
- dp = row + (png_size_t)row_width - 1;
- shift = 7 - (int)((row_width + 7) & 0x07);
- for (i = 0; i < row_width; i++)
- {
- if ((*sp >> shift) & 0x01)
- *dp = 1;
-
- else
- *dp = 0;
-
- if (shift == 7)
- {
- shift = 0;
- sp--;
- }
-
- else
- shift++;
-
- dp--;
- }
- break;
- }
-
- case 2:
- {
- sp = row + (png_size_t)((row_width - 1) >> 2);
- dp = row + (png_size_t)row_width - 1;
- shift = (int)((3 - ((row_width + 3) & 0x03)) << 1);
- for (i = 0; i < row_width; i++)
- {
- value = (*sp >> shift) & 0x03;
- *dp = (png_byte)value;
- if (shift == 6)
- {
- shift = 0;
- sp--;
- }
-
- else
- shift += 2;
-
- dp--;
- }
- break;
- }
-
- case 4:
- {
- sp = row + (png_size_t)((row_width - 1) >> 1);
- dp = row + (png_size_t)row_width - 1;
- shift = (int)((row_width & 0x01) << 2);
- for (i = 0; i < row_width; i++)
- {
- value = (*sp >> shift) & 0x0f;
- *dp = (png_byte)value;
- if (shift == 4)
- {
- shift = 0;
- sp--;
- }
-
- else
- shift += 4;
-
- dp--;
- }
- break;
- }
-
- default:
- break;
- }
- row_info->bit_depth = 8;
- row_info->pixel_depth = 8;
- row_info->rowbytes = row_width;
- }
-
- if (row_info->bit_depth == 8)
- {
- {
- if (trans_alpha != NULL)
- {
- sp = row + (png_size_t)row_width - 1;
- dp = row + (png_size_t)(row_width << 2) - 1;
-
- for (i = 0; i < row_width; i++)
- {
- if ((int)(*sp) >= num_trans)
- *dp-- = 0xff;
-
- else
- *dp-- = trans_alpha[*sp];
-
- *dp-- = palette[*sp].blue;
- *dp-- = palette[*sp].green;
- *dp-- = palette[*sp].red;
- sp--;
- }
- row_info->bit_depth = 8;
- row_info->pixel_depth = 32;
- row_info->rowbytes = row_width * 4;
- row_info->color_type = 6;
- row_info->channels = 4;
- }
-
- else
- {
- sp = row + (png_size_t)row_width - 1;
- dp = row + (png_size_t)(row_width * 3) - 1;
-
- for (i = 0; i < row_width; i++)
- {
- *dp-- = palette[*sp].blue;
- *dp-- = palette[*sp].green;
- *dp-- = palette[*sp].red;
- sp--;
- }
-
- row_info->bit_depth = 8;
- row_info->pixel_depth = 24;
- row_info->rowbytes = row_width * 3;
- row_info->color_type = 2;
- row_info->channels = 3;
- }
- }
- }
- }
-}
-
-/* If the bit depth < 8, it is expanded to 8. Also, if the already
- * expanded transparency value is supplied, an alpha channel is built.
- */
-void /* PRIVATE */
-png_do_expand(png_row_infop row_info, png_bytep row,
- png_const_color_16p trans_value)
-{
- int shift, value;
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
-
- png_debug(1, "in png_do_expand");
-
- {
- if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
- {
- png_uint_16 gray = (png_uint_16)(trans_value ? trans_value->gray : 0);
-
- if (row_info->bit_depth < 8)
- {
- switch (row_info->bit_depth)
- {
- case 1:
- {
- gray = (png_uint_16)((gray & 0x01) * 0xff);
- sp = row + (png_size_t)((row_width - 1) >> 3);
- dp = row + (png_size_t)row_width - 1;
- shift = 7 - (int)((row_width + 7) & 0x07);
- for (i = 0; i < row_width; i++)
- {
- if ((*sp >> shift) & 0x01)
- *dp = 0xff;
-
- else
- *dp = 0;
-
- if (shift == 7)
- {
- shift = 0;
- sp--;
- }
-
- else
- shift++;
-
- dp--;
- }
- break;
- }
-
- case 2:
- {
- gray = (png_uint_16)((gray & 0x03) * 0x55);
- sp = row + (png_size_t)((row_width - 1) >> 2);
- dp = row + (png_size_t)row_width - 1;
- shift = (int)((3 - ((row_width + 3) & 0x03)) << 1);
- for (i = 0; i < row_width; i++)
- {
- value = (*sp >> shift) & 0x03;
- *dp = (png_byte)(value | (value << 2) | (value << 4) |
- (value << 6));
- if (shift == 6)
- {
- shift = 0;
- sp--;
- }
-
- else
- shift += 2;
-
- dp--;
- }
- break;
- }
-
- case 4:
- {
- gray = (png_uint_16)((gray & 0x0f) * 0x11);
- sp = row + (png_size_t)((row_width - 1) >> 1);
- dp = row + (png_size_t)row_width - 1;
- shift = (int)((1 - ((row_width + 1) & 0x01)) << 2);
- for (i = 0; i < row_width; i++)
- {
- value = (*sp >> shift) & 0x0f;
- *dp = (png_byte)(value | (value << 4));
- if (shift == 4)
- {
- shift = 0;
- sp--;
- }
-
- else
- shift = 4;
-
- dp--;
- }
- break;
- }
-
- default:
- break;
- }
-
- row_info->bit_depth = 8;
- row_info->pixel_depth = 8;
- row_info->rowbytes = row_width;
- }
-
- if (trans_value != NULL)
- {
- if (row_info->bit_depth == 8)
- {
- gray = gray & 0xff;
- sp = row + (png_size_t)row_width - 1;
- dp = row + (png_size_t)(row_width << 1) - 1;
-
- for (i = 0; i < row_width; i++)
- {
- if (*sp == gray)
- *dp-- = 0;
-
- else
- *dp-- = 0xff;
-
- *dp-- = *sp--;
- }
- }
-
- else if (row_info->bit_depth == 16)
- {
- png_byte gray_high = (png_byte)((gray >> 8) & 0xff);
- png_byte gray_low = (png_byte)(gray & 0xff);
- sp = row + row_info->rowbytes - 1;
- dp = row + (row_info->rowbytes << 1) - 1;
- for (i = 0; i < row_width; i++)
- {
- if (*(sp - 1) == gray_high && *(sp) == gray_low)
- {
- *dp-- = 0;
- *dp-- = 0;
- }
-
- else
- {
- *dp-- = 0xff;
- *dp-- = 0xff;
- }
-
- *dp-- = *sp--;
- *dp-- = *sp--;
- }
- }
-
- row_info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
- row_info->channels = 2;
- row_info->pixel_depth = (png_byte)(row_info->bit_depth << 1);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth,
- row_width);
- }
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB && trans_value)
- {
- if (row_info->bit_depth == 8)
- {
- png_byte red = (png_byte)(trans_value->red & 0xff);
- png_byte green = (png_byte)(trans_value->green & 0xff);
- png_byte blue = (png_byte)(trans_value->blue & 0xff);
- sp = row + (png_size_t)row_info->rowbytes - 1;
- dp = row + (png_size_t)(row_width << 2) - 1;
- for (i = 0; i < row_width; i++)
- {
- if (*(sp - 2) == red && *(sp - 1) == green && *(sp) == blue)
- *dp-- = 0;
-
- else
- *dp-- = 0xff;
-
- *dp-- = *sp--;
- *dp-- = *sp--;
- *dp-- = *sp--;
- }
- }
- else if (row_info->bit_depth == 16)
- {
- png_byte red_high = (png_byte)((trans_value->red >> 8) & 0xff);
- png_byte green_high = (png_byte)((trans_value->green >> 8) & 0xff);
- png_byte blue_high = (png_byte)((trans_value->blue >> 8) & 0xff);
- png_byte red_low = (png_byte)(trans_value->red & 0xff);
- png_byte green_low = (png_byte)(trans_value->green & 0xff);
- png_byte blue_low = (png_byte)(trans_value->blue & 0xff);
- sp = row + row_info->rowbytes - 1;
- dp = row + (png_size_t)(row_width << 3) - 1;
- for (i = 0; i < row_width; i++)
- {
- if (*(sp - 5) == red_high &&
- *(sp - 4) == red_low &&
- *(sp - 3) == green_high &&
- *(sp - 2) == green_low &&
- *(sp - 1) == blue_high &&
- *(sp ) == blue_low)
- {
- *dp-- = 0;
- *dp-- = 0;
- }
-
- else
- {
- *dp-- = 0xff;
- *dp-- = 0xff;
- }
-
- *dp-- = *sp--;
- *dp-- = *sp--;
- *dp-- = *sp--;
- *dp-- = *sp--;
- *dp-- = *sp--;
- *dp-- = *sp--;
- }
- }
- row_info->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
- row_info->channels = 4;
- row_info->pixel_depth = (png_byte)(row_info->bit_depth << 2);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
- }
-}
-#endif
-
-#ifdef PNG_READ_QUANTIZE_SUPPORTED
-void /* PRIVATE */
-png_do_quantize(png_row_infop row_info, png_bytep row,
- png_const_bytep palette_lookup, png_const_bytep quantize_lookup)
-{
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
-
- png_debug(1, "in png_do_quantize");
-
- if (row_info->bit_depth == 8)
- {
- if (row_info->color_type == PNG_COLOR_TYPE_RGB && palette_lookup)
- {
- int r, g, b, p;
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++)
- {
- r = *sp++;
- g = *sp++;
- b = *sp++;
-
- /* This looks real messy, but the compiler will reduce
- * it down to a reasonable formula. For example, with
- * 5 bits per color, we get:
- * p = (((r >> 3) & 0x1f) << 10) |
- * (((g >> 3) & 0x1f) << 5) |
- * ((b >> 3) & 0x1f);
- */
- p = (((r >> (8 - PNG_QUANTIZE_RED_BITS)) &
- ((1 << PNG_QUANTIZE_RED_BITS) - 1)) <<
- (PNG_QUANTIZE_GREEN_BITS + PNG_QUANTIZE_BLUE_BITS)) |
- (((g >> (8 - PNG_QUANTIZE_GREEN_BITS)) &
- ((1 << PNG_QUANTIZE_GREEN_BITS) - 1)) <<
- (PNG_QUANTIZE_BLUE_BITS)) |
- ((b >> (8 - PNG_QUANTIZE_BLUE_BITS)) &
- ((1 << PNG_QUANTIZE_BLUE_BITS) - 1));
-
- *dp++ = palette_lookup[p];
- }
-
- row_info->color_type = PNG_COLOR_TYPE_PALETTE;
- row_info->channels = 1;
- row_info->pixel_depth = row_info->bit_depth;
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
-
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
- palette_lookup != NULL)
- {
- int r, g, b, p;
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++)
- {
- r = *sp++;
- g = *sp++;
- b = *sp++;
- sp++;
-
- p = (((r >> (8 - PNG_QUANTIZE_RED_BITS)) &
- ((1 << PNG_QUANTIZE_RED_BITS) - 1)) <<
- (PNG_QUANTIZE_GREEN_BITS + PNG_QUANTIZE_BLUE_BITS)) |
- (((g >> (8 - PNG_QUANTIZE_GREEN_BITS)) &
- ((1 << PNG_QUANTIZE_GREEN_BITS) - 1)) <<
- (PNG_QUANTIZE_BLUE_BITS)) |
- ((b >> (8 - PNG_QUANTIZE_BLUE_BITS)) &
- ((1 << PNG_QUANTIZE_BLUE_BITS) - 1));
-
- *dp++ = palette_lookup[p];
- }
-
- row_info->color_type = PNG_COLOR_TYPE_PALETTE;
- row_info->channels = 1;
- row_info->pixel_depth = row_info->bit_depth;
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
-
- else if (row_info->color_type == PNG_COLOR_TYPE_PALETTE &&
- quantize_lookup)
- {
- sp = row;
-
- for (i = 0; i < row_width; i++, sp++)
- {
- *sp = quantize_lookup[*sp];
- }
- }
- }
-}
-#endif /* PNG_READ_QUANTIZE_SUPPORTED */
-
-#ifdef PNG_MNG_FEATURES_SUPPORTED
-/* Undoes intrapixel differencing */
-void /* PRIVATE */
-png_do_read_intrapixel(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_read_intrapixel");
-
- if (
- (row_info->color_type & PNG_COLOR_MASK_COLOR))
- {
- int bytes_per_pixel;
- png_uint_32 row_width = row_info->width;
-
- if (row_info->bit_depth == 8)
- {
- png_bytep rp;
- png_uint_32 i;
-
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- bytes_per_pixel = 3;
-
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- bytes_per_pixel = 4;
-
- else
- return;
-
- for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
- {
- *(rp) = (png_byte)((256 + *rp + *(rp + 1)) & 0xff);
- *(rp+2) = (png_byte)((256 + *(rp + 2) + *(rp + 1)) & 0xff);
- }
- }
- else if (row_info->bit_depth == 16)
- {
- png_bytep rp;
- png_uint_32 i;
-
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- bytes_per_pixel = 6;
-
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- bytes_per_pixel = 8;
-
- else
- return;
-
- for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
- {
- png_uint_32 s0 = (*(rp ) << 8) | *(rp + 1);
- png_uint_32 s1 = (*(rp + 2) << 8) | *(rp + 3);
- png_uint_32 s2 = (*(rp + 4) << 8) | *(rp + 5);
- png_uint_32 red = (png_uint_32)((s0 + s1 + 65536L) & 0xffffL);
- png_uint_32 blue = (png_uint_32)((s2 + s1 + 65536L) & 0xffffL);
- *(rp ) = (png_byte)((red >> 8) & 0xff);
- *(rp + 1) = (png_byte)(red & 0xff);
- *(rp + 4) = (png_byte)((blue >> 8) & 0xff);
- *(rp + 5) = (png_byte)(blue & 0xff);
- }
- }
- }
-}
-#endif /* PNG_MNG_FEATURES_SUPPORTED */
-#endif /* PNG_READ_SUPPORTED */
+
+/* pngrtran.c - transforms the data in a row for PNG readers
+ *
+ * Last changed in libpng 1.2.49 [March 29, 2012]
+ * Copyright (c) 1998-2012 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * This file contains functions optionally called by an application
+ * in order to tell libpng how to handle data when reading a PNG.
+ * Transformations that are used in both reading and writing are
+ * in pngtrans.c.
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#ifdef PNG_READ_SUPPORTED
+
+/* Set the action on getting a CRC error for an ancillary or critical chunk. */
+void PNGAPI
+png_set_crc_action(png_structp png_ptr, int crit_action, int ancil_action)
+{
+ png_debug(1, "in png_set_crc_action");
+
+ if (png_ptr == NULL)
+ return;
+
+ /* Tell libpng how we react to CRC errors in critical chunks */
+ switch (crit_action)
+ {
+ case PNG_CRC_NO_CHANGE: /* Leave setting as is */
+ break;
+
+ case PNG_CRC_WARN_USE: /* Warn/use data */
+ png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
+ png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE;
+ break;
+
+ case PNG_CRC_QUIET_USE: /* Quiet/use data */
+ png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
+ png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE |
+ PNG_FLAG_CRC_CRITICAL_IGNORE;
+ break;
+
+ case PNG_CRC_WARN_DISCARD: /* Not a valid action for critical data */
+ png_warning(png_ptr,
+ "Can't discard critical data on CRC error.");
+ case PNG_CRC_ERROR_QUIT: /* Error/quit */
+
+ case PNG_CRC_DEFAULT:
+ default:
+ png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
+ break;
+ }
+
+ /* Tell libpng how we react to CRC errors in ancillary chunks */
+ switch (ancil_action)
+ {
+ case PNG_CRC_NO_CHANGE: /* Leave setting as is */
+ break;
+
+ case PNG_CRC_WARN_USE: /* Warn/use data */
+ png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
+ png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE;
+ break;
+
+ case PNG_CRC_QUIET_USE: /* Quiet/use data */
+ png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
+ png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE |
+ PNG_FLAG_CRC_ANCILLARY_NOWARN;
+ break;
+
+ case PNG_CRC_ERROR_QUIT: /* Error/quit */
+ png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
+ png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_NOWARN;
+ break;
+
+ case PNG_CRC_WARN_DISCARD: /* Warn/discard data */
+
+ case PNG_CRC_DEFAULT:
+ default:
+ png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
+ break;
+ }
+}
+
+#if defined(PNG_READ_BACKGROUND_SUPPORTED) && \
+ defined(PNG_FLOATING_POINT_SUPPORTED)
+/* Handle alpha and tRNS via a background color */
+void PNGAPI
+png_set_background(png_structp png_ptr,
+ png_color_16p background_color, int background_gamma_code,
+ int need_expand, double background_gamma)
+{
+ png_debug(1, "in png_set_background");
+
+ if (png_ptr == NULL)
+ return;
+ if (background_gamma_code == PNG_BACKGROUND_GAMMA_UNKNOWN)
+ {
+ png_warning(png_ptr, "Application must supply a known background gamma");
+ return;
+ }
+
+ png_ptr->transformations |= PNG_BACKGROUND;
+ png_memcpy(&(png_ptr->background), background_color,
+ png_sizeof(png_color_16));
+ png_ptr->background_gamma = (float)background_gamma;
+ png_ptr->background_gamma_type = (png_byte)(background_gamma_code);
+ png_ptr->transformations |= (need_expand ? PNG_BACKGROUND_EXPAND : 0);
+}
+#endif
+
+#ifdef PNG_READ_16_TO_8_SUPPORTED
+/* Strip 16 bit depth files to 8 bit depth */
+void PNGAPI
+png_set_strip_16(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_strip_16");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->transformations |= PNG_16_TO_8;
+}
+#endif
+
+#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
+void PNGAPI
+png_set_strip_alpha(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_strip_alpha");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->flags |= PNG_FLAG_STRIP_ALPHA;
+}
+#endif
+
+#ifdef PNG_READ_DITHER_SUPPORTED
+/* Dither file to 8 bit. Supply a palette, the current number
+ * of elements in the palette, the maximum number of elements
+ * allowed, and a histogram if possible. If the current number
+ * of colors is greater then the maximum number, the palette will be
+ * modified to fit in the maximum number. "full_dither" indicates
+ * whether we need a dithering cube set up for RGB images, or if we
+ * simply are reducing the number of colors in a paletted image.
+ */
+
+typedef struct png_dsort_struct
+{
+ struct png_dsort_struct FAR * next;
+ png_byte left;
+ png_byte right;
+} png_dsort;
+typedef png_dsort FAR * png_dsortp;
+typedef png_dsort FAR * FAR * png_dsortpp;
+
+void PNGAPI
+png_set_dither(png_structp png_ptr, png_colorp palette,
+ int num_palette, int maximum_colors, png_uint_16p histogram,
+ int full_dither)
+{
+ png_debug(1, "in png_set_dither");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->transformations |= PNG_DITHER;
+
+ if (!full_dither)
+ {
+ int i;
+
+ png_ptr->dither_index = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)(num_palette * png_sizeof(png_byte)));
+ for (i = 0; i < num_palette; i++)
+ png_ptr->dither_index[i] = (png_byte)i;
+ }
+
+ if (num_palette > maximum_colors)
+ {
+ if (histogram != NULL)
+ {
+ /* This is easy enough, just throw out the least used colors.
+ * Perhaps not the best solution, but good enough.
+ */
+
+ int i;
+
+ /* Initialize an array to sort colors */
+ png_ptr->dither_sort = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)(num_palette * png_sizeof(png_byte)));
+
+ /* Initialize the dither_sort array */
+ for (i = 0; i < num_palette; i++)
+ png_ptr->dither_sort[i] = (png_byte)i;
+
+ /* Find the least used palette entries by starting a
+ * bubble sort, and running it until we have sorted
+ * out enough colors. Note that we don't care about
+ * sorting all the colors, just finding which are
+ * least used.
+ */
+
+ for (i = num_palette - 1; i >= maximum_colors; i--)
+ {
+ int done; /* To stop early if the list is pre-sorted */
+ int j;
+
+ done = 1;
+ for (j = 0; j < i; j++)
+ {
+ if (histogram[png_ptr->dither_sort[j]]
+ < histogram[png_ptr->dither_sort[j + 1]])
+ {
+ png_byte t;
+
+ t = png_ptr->dither_sort[j];
+ png_ptr->dither_sort[j] = png_ptr->dither_sort[j + 1];
+ png_ptr->dither_sort[j + 1] = t;
+ done = 0;
+ }
+ }
+ if (done)
+ break;
+ }
+
+ /* Swap the palette around, and set up a table, if necessary */
+ if (full_dither)
+ {
+ int j = num_palette;
+
+ /* Put all the useful colors within the max, but don't
+ * move the others.
+ */
+ for (i = 0; i < maximum_colors; i++)
+ {
+ if ((int)png_ptr->dither_sort[i] >= maximum_colors)
+ {
+ do
+ j--;
+ while ((int)png_ptr->dither_sort[j] >= maximum_colors);
+ palette[i] = palette[j];
+ }
+ }
+ }
+ else
+ {
+ int j = num_palette;
+
+ /* Move all the used colors inside the max limit, and
+ * develop a translation table.
+ */
+ for (i = 0; i < maximum_colors; i++)
+ {
+ /* Only move the colors we need to */
+ if ((int)png_ptr->dither_sort[i] >= maximum_colors)
+ {
+ png_color tmp_color;
+
+ do
+ j--;
+ while ((int)png_ptr->dither_sort[j] >= maximum_colors);
+
+ tmp_color = palette[j];
+ palette[j] = palette[i];
+ palette[i] = tmp_color;
+ /* Indicate where the color went */
+ png_ptr->dither_index[j] = (png_byte)i;
+ png_ptr->dither_index[i] = (png_byte)j;
+ }
+ }
+
+ /* Find closest color for those colors we are not using */
+ for (i = 0; i < num_palette; i++)
+ {
+ if ((int)png_ptr->dither_index[i] >= maximum_colors)
+ {
+ int min_d, k, min_k, d_index;
+
+ /* Find the closest color to one we threw out */
+ d_index = png_ptr->dither_index[i];
+ min_d = PNG_COLOR_DIST(palette[d_index], palette[0]);
+ for (k = 1, min_k = 0; k < maximum_colors; k++)
+ {
+ int d;
+
+ d = PNG_COLOR_DIST(palette[d_index], palette[k]);
+
+ if (d < min_d)
+ {
+ min_d = d;
+ min_k = k;
+ }
+ }
+ /* Point to closest color */
+ png_ptr->dither_index[i] = (png_byte)min_k;
+ }
+ }
+ }
+ png_free(png_ptr, png_ptr->dither_sort);
+ png_ptr->dither_sort = NULL;
+ }
+ else
+ {
+ /* This is much harder to do simply (and quickly). Perhaps
+ * we need to go through a median cut routine, but those
+ * don't always behave themselves with only a few colors
+ * as input. So we will just find the closest two colors,
+ * and throw out one of them (chosen somewhat randomly).
+ * [We don't understand this at all, so if someone wants to
+ * work on improving it, be our guest - AED, GRP]
+ */
+ int i;
+ int max_d;
+ int num_new_palette;
+ png_dsortp t;
+ png_dsortpp hash;
+
+ t = NULL;
+
+ /* Initialize palette index arrays */
+ png_ptr->index_to_palette = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)(num_palette * png_sizeof(png_byte)));
+ png_ptr->palette_to_index = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)(num_palette * png_sizeof(png_byte)));
+
+ /* Initialize the sort array */
+ for (i = 0; i < num_palette; i++)
+ {
+ png_ptr->index_to_palette[i] = (png_byte)i;
+ png_ptr->palette_to_index[i] = (png_byte)i;
+ }
+
+ hash = (png_dsortpp)png_calloc(png_ptr, (png_uint_32)(769 *
+ png_sizeof(png_dsortp)));
+
+ num_new_palette = num_palette;
+
+ /* Initial wild guess at how far apart the farthest pixel
+ * pair we will be eliminating will be. Larger
+ * numbers mean more areas will be allocated, Smaller
+ * numbers run the risk of not saving enough data, and
+ * having to do this all over again.
+ *
+ * I have not done extensive checking on this number.
+ */
+ max_d = 96;
+
+ while (num_new_palette > maximum_colors)
+ {
+ for (i = 0; i < num_new_palette - 1; i++)
+ {
+ int j;
+
+ for (j = i + 1; j < num_new_palette; j++)
+ {
+ int d;
+
+ d = PNG_COLOR_DIST(palette[i], palette[j]);
+
+ if (d <= max_d)
+ {
+
+ t = (png_dsortp)png_malloc_warn(png_ptr,
+ (png_uint_32)(png_sizeof(png_dsort)));
+ if (t == NULL)
+ break;
+ t->next = hash[d];
+ t->left = (png_byte)i;
+ t->right = (png_byte)j;
+ hash[d] = t;
+ }
+ }
+ if (t == NULL)
+ break;
+ }
+
+ if (t != NULL)
+ for (i = 0; i <= max_d; i++)
+ {
+ if (hash[i] != NULL)
+ {
+ png_dsortp p;
+
+ for (p = hash[i]; p; p = p->next)
+ {
+ if ((int)png_ptr->index_to_palette[p->left]
+ < num_new_palette &&
+ (int)png_ptr->index_to_palette[p->right]
+ < num_new_palette)
+ {
+ int j, next_j;
+
+ if (num_new_palette & 0x01)
+ {
+ j = p->left;
+ next_j = p->right;
+ }
+ else
+ {
+ j = p->right;
+ next_j = p->left;
+ }
+
+ num_new_palette--;
+ palette[png_ptr->index_to_palette[j]]
+ = palette[num_new_palette];
+ if (!full_dither)
+ {
+ int k;
+
+ for (k = 0; k < num_palette; k++)
+ {
+ if (png_ptr->dither_index[k] ==
+ png_ptr->index_to_palette[j])
+ png_ptr->dither_index[k] =
+ png_ptr->index_to_palette[next_j];
+ if ((int)png_ptr->dither_index[k] ==
+ num_new_palette)
+ png_ptr->dither_index[k] =
+ png_ptr->index_to_palette[j];
+ }
+ }
+
+ png_ptr->index_to_palette[png_ptr->palette_to_index
+ [num_new_palette]] = png_ptr->index_to_palette[j];
+ png_ptr->palette_to_index[png_ptr->index_to_palette[j]]
+ = png_ptr->palette_to_index[num_new_palette];
+
+ png_ptr->index_to_palette[j] =
+ (png_byte)num_new_palette;
+ png_ptr->palette_to_index[num_new_palette] =
+ (png_byte)j;
+ }
+ if (num_new_palette <= maximum_colors)
+ break;
+ }
+ if (num_new_palette <= maximum_colors)
+ break;
+ }
+ }
+
+ for (i = 0; i < 769; i++)
+ {
+ if (hash[i] != NULL)
+ {
+ png_dsortp p = hash[i];
+ while (p)
+ {
+ t = p->next;
+ png_free(png_ptr, p);
+ p = t;
+ }
+ }
+ hash[i] = 0;
+ }
+ max_d += 96;
+ }
+ png_free(png_ptr, hash);
+ png_free(png_ptr, png_ptr->palette_to_index);
+ png_free(png_ptr, png_ptr->index_to_palette);
+ png_ptr->palette_to_index = NULL;
+ png_ptr->index_to_palette = NULL;
+ }
+ num_palette = maximum_colors;
+ }
+ if (png_ptr->palette == NULL)
+ {
+ png_ptr->palette = palette;
+ }
+ png_ptr->num_palette = (png_uint_16)num_palette;
+
+ if (full_dither)
+ {
+ int i;
+ png_bytep distance;
+ int total_bits = PNG_DITHER_RED_BITS + PNG_DITHER_GREEN_BITS +
+ PNG_DITHER_BLUE_BITS;
+ int num_red = (1 << PNG_DITHER_RED_BITS);
+ int num_green = (1 << PNG_DITHER_GREEN_BITS);
+ int num_blue = (1 << PNG_DITHER_BLUE_BITS);
+ png_size_t num_entries = ((png_size_t)1 << total_bits);
+
+ png_ptr->palette_lookup = (png_bytep )png_calloc(png_ptr,
+ (png_uint_32)(num_entries * png_sizeof(png_byte)));
+
+ distance = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_entries *
+ png_sizeof(png_byte)));
+ png_memset(distance, 0xff, num_entries * png_sizeof(png_byte));
+
+ for (i = 0; i < num_palette; i++)
+ {
+ int ir, ig, ib;
+ int r = (palette[i].red >> (8 - PNG_DITHER_RED_BITS));
+ int g = (palette[i].green >> (8 - PNG_DITHER_GREEN_BITS));
+ int b = (palette[i].blue >> (8 - PNG_DITHER_BLUE_BITS));
+
+ for (ir = 0; ir < num_red; ir++)
+ {
+ /* int dr = abs(ir - r); */
+ int dr = ((ir > r) ? ir - r : r - ir);
+ int index_r = (ir << (PNG_DITHER_BLUE_BITS +
+ PNG_DITHER_GREEN_BITS));
+
+ for (ig = 0; ig < num_green; ig++)
+ {
+ /* int dg = abs(ig - g); */
+ int dg = ((ig > g) ? ig - g : g - ig);
+ int dt = dr + dg;
+ int dm = ((dr > dg) ? dr : dg);
+ int index_g = index_r | (ig << PNG_DITHER_BLUE_BITS);
+
+ for (ib = 0; ib < num_blue; ib++)
+ {
+ int d_index = index_g | ib;
+ /* int db = abs(ib - b); */
+ int db = ((ib > b) ? ib - b : b - ib);
+ int dmax = ((dm > db) ? dm : db);
+ int d = dmax + dt + db;
+
+ if (d < (int)distance[d_index])
+ {
+ distance[d_index] = (png_byte)d;
+ png_ptr->palette_lookup[d_index] = (png_byte)i;
+ }
+ }
+ }
+ }
+ }
+
+ png_free(png_ptr, distance);
+ }
+}
+#endif
+
+#if defined(PNG_READ_GAMMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED)
+/* Transform the image from the file_gamma to the screen_gamma. We
+ * only do transformations on images where the file_gamma and screen_gamma
+ * are not close reciprocals, otherwise it slows things down slightly, and
+ * also needlessly introduces small errors.
+ *
+ * We will turn off gamma transformation later if no semitransparent entries
+ * are present in the tRNS array for palette images. We can't do it here
+ * because we don't necessarily have the tRNS chunk yet.
+ */
+void PNGAPI
+png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma)
+{
+ png_debug(1, "in png_set_gamma");
+
+ if (png_ptr == NULL)
+ return;
+
+ if ((fabs(scrn_gamma * file_gamma - 1.0) > PNG_GAMMA_THRESHOLD) ||
+ (png_ptr->color_type & PNG_COLOR_MASK_ALPHA) ||
+ (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE))
+ png_ptr->transformations |= PNG_GAMMA;
+ png_ptr->gamma = (float)file_gamma;
+ png_ptr->screen_gamma = (float)scrn_gamma;
+}
+#endif
+
+#ifdef PNG_READ_EXPAND_SUPPORTED
+/* Expand paletted images to RGB, expand grayscale images of
+ * less than 8-bit depth to 8-bit depth, and expand tRNS chunks
+ * to alpha channels.
+ */
+void PNGAPI
+png_set_expand(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_expand");
+
+ if (png_ptr == NULL)
+ return;
+
+ png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
+ png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
+}
+
+/* GRR 19990627: the following three functions currently are identical
+ * to png_set_expand(). However, it is entirely reasonable that someone
+ * might wish to expand an indexed image to RGB but *not* expand a single,
+ * fully transparent palette entry to a full alpha channel--perhaps instead
+ * convert tRNS to the grayscale/RGB format (16-bit RGB value), or replace
+ * the transparent color with a particular RGB value, or drop tRNS entirely.
+ * IOW, a future version of the library may make the transformations flag
+ * a bit more fine-grained, with separate bits for each of these three
+ * functions.
+ *
+ * More to the point, these functions make it obvious what libpng will be
+ * doing, whereas "expand" can (and does) mean any number of things.
+ *
+ * GRP 20060307: In libpng-1.2.9, png_set_gray_1_2_4_to_8() was modified
+ * to expand only the sample depth but not to expand the tRNS to alpha
+ * and its name was changed to png_set_expand_gray_1_2_4_to_8().
+ */
+
+/* Expand paletted images to RGB. */
+void PNGAPI
+png_set_palette_to_rgb(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_palette_to_rgb");
+
+ if (png_ptr == NULL)
+ return;
+
+ png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
+ png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
+}
+
+#ifndef PNG_1_0_X
+/* Expand grayscale images of less than 8-bit depth to 8 bits. */
+void PNGAPI
+png_set_expand_gray_1_2_4_to_8(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_expand_gray_1_2_4_to_8");
+
+ if (png_ptr == NULL)
+ return;
+
+ png_ptr->transformations |= PNG_EXPAND;
+ png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
+}
+#endif
+
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
+/* Expand grayscale images of less than 8-bit depth to 8 bits. */
+/* Deprecated as of libpng-1.2.9 */
+void PNGAPI
+png_set_gray_1_2_4_to_8(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_gray_1_2_4_to_8");
+
+ if (png_ptr == NULL)
+ return;
+
+ png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
+}
+#endif
+
+
+/* Expand tRNS chunks to alpha channels. */
+void PNGAPI
+png_set_tRNS_to_alpha(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_tRNS_to_alpha");
+
+ png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
+ png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
+}
+#endif /* defined(PNG_READ_EXPAND_SUPPORTED) */
+
+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
+void PNGAPI
+png_set_gray_to_rgb(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_gray_to_rgb");
+
+ png_ptr->transformations |= PNG_GRAY_TO_RGB;
+ png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
+}
+#endif
+
+#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+/* Convert a RGB image to a grayscale of the same width. This allows us,
+ * for example, to convert a 24 bpp RGB image into an 8 bpp grayscale image.
+ */
+
+void PNGAPI
+png_set_rgb_to_gray(png_structp png_ptr, int error_action, double red,
+ double green)
+{
+ int red_fixed, green_fixed;
+ if (png_ptr == NULL)
+ return;
+ if (red > 21474.83647 || red < -21474.83648 ||
+ green > 21474.83647 || green < -21474.83648)
+ {
+ png_warning(png_ptr, "ignoring out of range rgb_to_gray coefficients");
+ red_fixed = -1;
+ green_fixed = -1;
+ }
+ else
+ {
+ red_fixed = (int)((float)red*100000.0 + 0.5);
+ green_fixed = (int)((float)green*100000.0 + 0.5);
+ }
+ png_set_rgb_to_gray_fixed(png_ptr, error_action, red_fixed, green_fixed);
+}
+#endif
+
+void PNGAPI
+png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action,
+ png_fixed_point red, png_fixed_point green)
+{
+ png_debug(1, "in png_set_rgb_to_gray");
+
+ if (png_ptr == NULL)
+ return;
+
+ switch(error_action)
+ {
+ case 1: png_ptr->transformations |= PNG_RGB_TO_GRAY;
+ break;
+
+ case 2: png_ptr->transformations |= PNG_RGB_TO_GRAY_WARN;
+ break;
+
+ case 3: png_ptr->transformations |= PNG_RGB_TO_GRAY_ERR;
+ }
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+#ifdef PNG_READ_EXPAND_SUPPORTED
+ png_ptr->transformations |= PNG_EXPAND;
+#else
+ {
+ png_warning(png_ptr,
+ "Cannot do RGB_TO_GRAY without EXPAND_SUPPORTED.");
+ png_ptr->transformations &= ~PNG_RGB_TO_GRAY;
+ }
+#endif
+ {
+ png_uint_16 red_int, green_int;
+ if (red < 0 || green < 0)
+ {
+ red_int = 6968; /* .212671 * 32768 + .5 */
+ green_int = 23434; /* .715160 * 32768 + .5 */
+ }
+ else if (red + green < 100000L)
+ {
+ red_int = (png_uint_16)(((png_uint_32)red*32768L)/100000L);
+ green_int = (png_uint_16)(((png_uint_32)green*32768L)/100000L);
+ }
+ else
+ {
+ png_warning(png_ptr, "ignoring out of range rgb_to_gray coefficients");
+ red_int = 6968;
+ green_int = 23434;
+ }
+ png_ptr->rgb_to_gray_red_coeff = red_int;
+ png_ptr->rgb_to_gray_green_coeff = green_int;
+ png_ptr->rgb_to_gray_blue_coeff =
+ (png_uint_16)(32768 - red_int - green_int);
+ }
+}
+#endif
+
+#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
+ defined(PNG_LEGACY_SUPPORTED) || \
+ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
+void PNGAPI
+png_set_read_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
+ read_user_transform_fn)
+{
+ png_debug(1, "in png_set_read_user_transform_fn");
+
+ if (png_ptr == NULL)
+ return;
+
+#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
+ png_ptr->transformations |= PNG_USER_TRANSFORM;
+ png_ptr->read_user_transform_fn = read_user_transform_fn;
+#endif
+#ifdef PNG_LEGACY_SUPPORTED
+ if (read_user_transform_fn)
+ png_warning(png_ptr,
+ "This version of libpng does not support user transforms");
+#endif
+}
+#endif
+
+/* Initialize everything needed for the read. This includes modifying
+ * the palette.
+ */
+void /* PRIVATE */
+png_init_read_transformations(png_structp png_ptr)
+{
+ png_debug(1, "in png_init_read_transformations");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (png_ptr != NULL)
+#endif
+ {
+#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
+ defined(PNG_READ_SHIFT_SUPPORTED) || \
+ defined(PNG_READ_GAMMA_SUPPORTED)
+ int color_type = png_ptr->color_type;
+#endif
+
+#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED)
+
+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
+ /* Detect gray background and attempt to enable optimization
+ * for gray --> RGB case
+ *
+ * Note: if PNG_BACKGROUND_EXPAND is set and color_type is either RGB or
+ * RGB_ALPHA (in which case need_expand is superfluous anyway), the
+ * background color might actually be gray yet not be flagged as such.
+ * This is not a problem for the current code, which uses
+ * PNG_BACKGROUND_IS_GRAY only to decide when to do the
+ * png_do_gray_to_rgb() transformation.
+ */
+ if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
+ !(color_type & PNG_COLOR_MASK_COLOR))
+ {
+ png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
+ } else if ((png_ptr->transformations & PNG_BACKGROUND) &&
+ !(png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
+ (png_ptr->transformations & PNG_GRAY_TO_RGB) &&
+ png_ptr->background.red == png_ptr->background.green &&
+ png_ptr->background.red == png_ptr->background.blue)
+ {
+ png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
+ png_ptr->background.gray = png_ptr->background.red;
+ }
+#endif
+
+ if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
+ (png_ptr->transformations & PNG_EXPAND))
+ {
+ if (!(color_type & PNG_COLOR_MASK_COLOR)) /* i.e., GRAY or GRAY_ALPHA */
+ {
+ /* Expand background and tRNS chunks */
+ switch (png_ptr->bit_depth)
+ {
+ case 1:
+ png_ptr->background.gray *= (png_uint_16)0xff;
+ png_ptr->background.red = png_ptr->background.green
+ = png_ptr->background.blue = png_ptr->background.gray;
+ if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
+ {
+ png_ptr->trans_values.gray *= (png_uint_16)0xff;
+ png_ptr->trans_values.red = png_ptr->trans_values.green
+ = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
+ }
+ break;
+
+ case 2:
+ png_ptr->background.gray *= (png_uint_16)0x55;
+ png_ptr->background.red = png_ptr->background.green
+ = png_ptr->background.blue = png_ptr->background.gray;
+ if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
+ {
+ png_ptr->trans_values.gray *= (png_uint_16)0x55;
+ png_ptr->trans_values.red = png_ptr->trans_values.green
+ = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
+ }
+ break;
+
+ case 4:
+ png_ptr->background.gray *= (png_uint_16)0x11;
+ png_ptr->background.red = png_ptr->background.green
+ = png_ptr->background.blue = png_ptr->background.gray;
+ if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
+ {
+ png_ptr->trans_values.gray *= (png_uint_16)0x11;
+ png_ptr->trans_values.red = png_ptr->trans_values.green
+ = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
+ }
+ break;
+
+ case 8:
+
+ case 16:
+ png_ptr->background.red = png_ptr->background.green
+ = png_ptr->background.blue = png_ptr->background.gray;
+ break;
+ }
+ }
+ else if (color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_ptr->background.red =
+ png_ptr->palette[png_ptr->background.index].red;
+ png_ptr->background.green =
+ png_ptr->palette[png_ptr->background.index].green;
+ png_ptr->background.blue =
+ png_ptr->palette[png_ptr->background.index].blue;
+
+#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
+ if (png_ptr->transformations & PNG_INVERT_ALPHA)
+ {
+#ifdef PNG_READ_EXPAND_SUPPORTED
+ if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
+#endif
+ {
+ /* Invert the alpha channel (in tRNS) unless the pixels are
+ * going to be expanded, in which case leave it for later
+ */
+ int i, istop;
+ istop=(int)png_ptr->num_trans;
+ for (i=0; itrans[i] = (png_byte)(255 - png_ptr->trans[i]);
+ }
+ }
+#endif
+
+ }
+ }
+#endif
+
+#if defined(PNG_READ_BACKGROUND_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED)
+ png_ptr->background_1 = png_ptr->background;
+#endif
+#if defined(PNG_READ_GAMMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED)
+
+ if ((color_type == PNG_COLOR_TYPE_PALETTE && png_ptr->num_trans != 0)
+ && (fabs(png_ptr->screen_gamma * png_ptr->gamma - 1.0)
+ < PNG_GAMMA_THRESHOLD))
+ {
+ int i, k;
+ k=0;
+ for (i=0; inum_trans; i++)
+ {
+ if (png_ptr->trans[i] != 0 && png_ptr->trans[i] != 0xff)
+ k=1; /* Partial transparency is present */
+ }
+ if (k == 0)
+ png_ptr->transformations &= ~PNG_GAMMA;
+ }
+
+ if ((png_ptr->transformations & (PNG_GAMMA | PNG_RGB_TO_GRAY)) &&
+ png_ptr->gamma != 0.0)
+ {
+ png_build_gamma_table(png_ptr);
+
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+ if (png_ptr->transformations & PNG_BACKGROUND)
+ {
+ if (color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ /* Could skip if no transparency */
+ png_color back, back_1;
+ png_colorp palette = png_ptr->palette;
+ int num_palette = png_ptr->num_palette;
+ int i;
+ if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE)
+ {
+ back.red = png_ptr->gamma_table[png_ptr->background.red];
+ back.green = png_ptr->gamma_table[png_ptr->background.green];
+ back.blue = png_ptr->gamma_table[png_ptr->background.blue];
+
+ back_1.red = png_ptr->gamma_to_1[png_ptr->background.red];
+ back_1.green = png_ptr->gamma_to_1[png_ptr->background.green];
+ back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue];
+ }
+ else
+ {
+ double g, gs;
+
+ switch (png_ptr->background_gamma_type)
+ {
+ case PNG_BACKGROUND_GAMMA_SCREEN:
+ g = (png_ptr->screen_gamma);
+ gs = 1.0;
+ break;
+
+ case PNG_BACKGROUND_GAMMA_FILE:
+ g = 1.0 / (png_ptr->gamma);
+ gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
+ break;
+
+ case PNG_BACKGROUND_GAMMA_UNIQUE:
+ g = 1.0 / (png_ptr->background_gamma);
+ gs = 1.0 / (png_ptr->background_gamma *
+ png_ptr->screen_gamma);
+ break;
+ default:
+ g = 1.0; /* back_1 */
+ gs = 1.0; /* back */
+ }
+
+ if ( fabs(gs - 1.0) < PNG_GAMMA_THRESHOLD)
+ {
+ back.red = (png_byte)png_ptr->background.red;
+ back.green = (png_byte)png_ptr->background.green;
+ back.blue = (png_byte)png_ptr->background.blue;
+ }
+ else
+ {
+ back.red = (png_byte)(pow(
+ (double)png_ptr->background.red/255, gs) * 255.0 + .5);
+ back.green = (png_byte)(pow(
+ (double)png_ptr->background.green/255, gs) * 255.0
+ + .5);
+ back.blue = (png_byte)(pow(
+ (double)png_ptr->background.blue/255, gs) * 255.0 + .5);
+ }
+
+ back_1.red = (png_byte)(pow(
+ (double)png_ptr->background.red/255, g) * 255.0 + .5);
+ back_1.green = (png_byte)(pow(
+ (double)png_ptr->background.green/255, g) * 255.0 + .5);
+ back_1.blue = (png_byte)(pow(
+ (double)png_ptr->background.blue/255, g) * 255.0 + .5);
+ }
+ for (i = 0; i < num_palette; i++)
+ {
+ if (i < (int)png_ptr->num_trans && png_ptr->trans[i] != 0xff)
+ {
+ if (png_ptr->trans[i] == 0)
+ {
+ palette[i] = back;
+ }
+ else /* if (png_ptr->trans[i] != 0xff) */
+ {
+ png_byte v, w;
+
+ v = png_ptr->gamma_to_1[palette[i].red];
+ png_composite(w, v, png_ptr->trans[i], back_1.red);
+ palette[i].red = png_ptr->gamma_from_1[w];
+
+ v = png_ptr->gamma_to_1[palette[i].green];
+ png_composite(w, v, png_ptr->trans[i], back_1.green);
+ palette[i].green = png_ptr->gamma_from_1[w];
+
+ v = png_ptr->gamma_to_1[palette[i].blue];
+ png_composite(w, v, png_ptr->trans[i], back_1.blue);
+ palette[i].blue = png_ptr->gamma_from_1[w];
+ }
+ }
+ else
+ {
+ palette[i].red = png_ptr->gamma_table[palette[i].red];
+ palette[i].green = png_ptr->gamma_table[palette[i].green];
+ palette[i].blue = png_ptr->gamma_table[palette[i].blue];
+ }
+ }
+ /* Prevent the transformations being done again, and make sure
+ * that the now spurious alpha channel is stripped - the code
+ * has just reduced background composition and gamma correction
+ * to a simple alpha channel strip.
+ */
+ png_ptr->transformations &= ~PNG_BACKGROUND;
+ png_ptr->transformations &= ~PNG_GAMMA;
+ png_ptr->transformations |= PNG_STRIP_ALPHA;
+ }
+ /* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN) */
+ else
+ /* color_type != PNG_COLOR_TYPE_PALETTE */
+ {
+ double m = (double)(((png_uint_32)1 << png_ptr->bit_depth) - 1);
+ double g = 1.0;
+ double gs = 1.0;
+
+ switch (png_ptr->background_gamma_type)
+ {
+ case PNG_BACKGROUND_GAMMA_SCREEN:
+ g = (png_ptr->screen_gamma);
+ gs = 1.0;
+ break;
+
+ case PNG_BACKGROUND_GAMMA_FILE:
+ g = 1.0 / (png_ptr->gamma);
+ gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
+ break;
+
+ case PNG_BACKGROUND_GAMMA_UNIQUE:
+ g = 1.0 / (png_ptr->background_gamma);
+ gs = 1.0 / (png_ptr->background_gamma *
+ png_ptr->screen_gamma);
+ break;
+ }
+
+ png_ptr->background_1.gray = (png_uint_16)(pow(
+ (double)png_ptr->background.gray / m, g) * m + .5);
+ png_ptr->background.gray = (png_uint_16)(pow(
+ (double)png_ptr->background.gray / m, gs) * m + .5);
+
+ if ((png_ptr->background.red != png_ptr->background.green) ||
+ (png_ptr->background.red != png_ptr->background.blue) ||
+ (png_ptr->background.red != png_ptr->background.gray))
+ {
+ /* RGB or RGBA with color background */
+ png_ptr->background_1.red = (png_uint_16)(pow(
+ (double)png_ptr->background.red / m, g) * m + .5);
+ png_ptr->background_1.green = (png_uint_16)(pow(
+ (double)png_ptr->background.green / m, g) * m + .5);
+ png_ptr->background_1.blue = (png_uint_16)(pow(
+ (double)png_ptr->background.blue / m, g) * m + .5);
+ png_ptr->background.red = (png_uint_16)(pow(
+ (double)png_ptr->background.red / m, gs) * m + .5);
+ png_ptr->background.green = (png_uint_16)(pow(
+ (double)png_ptr->background.green / m, gs) * m + .5);
+ png_ptr->background.blue = (png_uint_16)(pow(
+ (double)png_ptr->background.blue / m, gs) * m + .5);
+ }
+ else
+ {
+ /* GRAY, GRAY ALPHA, RGB, or RGBA with gray background */
+ png_ptr->background_1.red = png_ptr->background_1.green
+ = png_ptr->background_1.blue = png_ptr->background_1.gray;
+ png_ptr->background.red = png_ptr->background.green
+ = png_ptr->background.blue = png_ptr->background.gray;
+ }
+ }
+ }
+ else
+ /* Transformation does not include PNG_BACKGROUND */
+#endif /* PNG_READ_BACKGROUND_SUPPORTED */
+ if (color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_colorp palette = png_ptr->palette;
+ int num_palette = png_ptr->num_palette;
+ int i;
+
+ for (i = 0; i < num_palette; i++)
+ {
+ palette[i].red = png_ptr->gamma_table[palette[i].red];
+ palette[i].green = png_ptr->gamma_table[palette[i].green];
+ palette[i].blue = png_ptr->gamma_table[palette[i].blue];
+ }
+
+ /* Done the gamma correction. */
+ png_ptr->transformations &= ~PNG_GAMMA;
+ }
+ }
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+ else
+#endif
+#endif /* PNG_READ_GAMMA_SUPPORTED && PNG_FLOATING_POINT_SUPPORTED */
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+ /* No GAMMA transformation */
+ if ((png_ptr->transformations & PNG_BACKGROUND) &&
+ (color_type == PNG_COLOR_TYPE_PALETTE))
+ {
+ int i;
+ int istop = (int)png_ptr->num_trans;
+ png_color back;
+ png_colorp palette = png_ptr->palette;
+
+ back.red = (png_byte)png_ptr->background.red;
+ back.green = (png_byte)png_ptr->background.green;
+ back.blue = (png_byte)png_ptr->background.blue;
+
+ for (i = 0; i < istop; i++)
+ {
+ if (png_ptr->trans[i] == 0)
+ {
+ palette[i] = back;
+ }
+ else if (png_ptr->trans[i] != 0xff)
+ {
+ /* The png_composite() macro is defined in png.h */
+ png_composite(palette[i].red, palette[i].red,
+ png_ptr->trans[i], back.red);
+ png_composite(palette[i].green, palette[i].green,
+ png_ptr->trans[i], back.green);
+ png_composite(palette[i].blue, palette[i].blue,
+ png_ptr->trans[i], back.blue);
+ }
+ }
+
+ /* Handled alpha, still need to strip the channel. */
+ png_ptr->transformations &= ~PNG_BACKGROUND;
+ png_ptr->transformations |= PNG_STRIP_ALPHA;
+ }
+#endif /* PNG_READ_BACKGROUND_SUPPORTED */
+
+#ifdef PNG_READ_SHIFT_SUPPORTED
+ if ((png_ptr->transformations & PNG_SHIFT) &&
+ !(png_ptr->transformations & PNG_EXPAND) &&
+ (color_type == PNG_COLOR_TYPE_PALETTE))
+ {
+ png_uint_16 i;
+ png_uint_16 istop = png_ptr->num_palette;
+ int sr = 8 - png_ptr->sig_bit.red;
+ int sg = 8 - png_ptr->sig_bit.green;
+ int sb = 8 - png_ptr->sig_bit.blue;
+
+ if (sr < 0 || sr > 8)
+ sr = 0;
+ if (sg < 0 || sg > 8)
+ sg = 0;
+ if (sb < 0 || sb > 8)
+ sb = 0;
+ for (i = 0; i < istop; i++)
+ {
+ png_ptr->palette[i].red >>= sr;
+ png_ptr->palette[i].green >>= sg;
+ png_ptr->palette[i].blue >>= sb;
+ }
+
+ png_ptr->transformations &= ~PNG_SHIFT;
+ }
+#endif /* PNG_READ_SHIFT_SUPPORTED */
+ }
+#if !defined(PNG_READ_GAMMA_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED) \
+ && !defined(PNG_READ_BACKGROUND_SUPPORTED)
+ if (png_ptr)
+ return;
+#endif
+}
+
+/* Modify the info structure to reflect the transformations. The
+ * info should be updated so a PNG file could be written with it,
+ * assuming the transformations result in valid PNG data.
+ */
+void /* PRIVATE */
+png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
+{
+ png_debug(1, "in png_read_transform_info");
+
+#ifdef PNG_READ_EXPAND_SUPPORTED
+ if (png_ptr->transformations & PNG_EXPAND)
+ {
+ if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ if (png_ptr->num_trans)
+ info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
+ else
+ info_ptr->color_type = PNG_COLOR_TYPE_RGB;
+ info_ptr->bit_depth = 8;
+ info_ptr->num_trans = 0;
+ }
+ else
+ {
+ if (png_ptr->num_trans)
+ {
+ if (png_ptr->transformations & PNG_EXPAND_tRNS)
+ info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
+ }
+ if (info_ptr->bit_depth < 8)
+ info_ptr->bit_depth = 8;
+ info_ptr->num_trans = 0;
+ }
+ }
+#endif
+
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+ if (png_ptr->transformations & PNG_BACKGROUND)
+ {
+ info_ptr->color_type &= ~PNG_COLOR_MASK_ALPHA;
+ info_ptr->num_trans = 0;
+ info_ptr->background = png_ptr->background;
+ }
+#endif
+
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (png_ptr->transformations & PNG_GAMMA)
+ {
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ info_ptr->gamma = png_ptr->gamma;
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ info_ptr->int_gamma = png_ptr->int_gamma;
+#endif
+ }
+#endif
+
+#ifdef PNG_READ_16_TO_8_SUPPORTED
+ if ((png_ptr->transformations & PNG_16_TO_8) && (info_ptr->bit_depth == 16))
+ info_ptr->bit_depth = 8;
+#endif
+
+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
+ if (png_ptr->transformations & PNG_GRAY_TO_RGB)
+ info_ptr->color_type |= PNG_COLOR_MASK_COLOR;
+#endif
+
+#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
+ if (png_ptr->transformations & PNG_RGB_TO_GRAY)
+ info_ptr->color_type &= ~PNG_COLOR_MASK_COLOR;
+#endif
+
+#ifdef PNG_READ_DITHER_SUPPORTED
+ if (png_ptr->transformations & PNG_DITHER)
+ {
+ if (((info_ptr->color_type == PNG_COLOR_TYPE_RGB) ||
+ (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)) &&
+ png_ptr->palette_lookup && info_ptr->bit_depth == 8)
+ {
+ info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
+ }
+ }
+#endif
+
+#ifdef PNG_READ_PACK_SUPPORTED
+ if ((png_ptr->transformations & PNG_PACK) && (info_ptr->bit_depth < 8))
+ info_ptr->bit_depth = 8;
+#endif
+
+ if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ info_ptr->channels = 1;
+ else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR)
+ info_ptr->channels = 3;
+ else
+ info_ptr->channels = 1;
+
+#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
+ if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)
+ info_ptr->color_type &= ~PNG_COLOR_MASK_ALPHA;
+#endif
+
+ if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA)
+ info_ptr->channels++;
+
+#ifdef PNG_READ_FILLER_SUPPORTED
+ /* STRIP_ALPHA and FILLER allowed: MASK_ALPHA bit stripped above */
+ if ((png_ptr->transformations & PNG_FILLER) &&
+ ((info_ptr->color_type == PNG_COLOR_TYPE_RGB) ||
+ (info_ptr->color_type == PNG_COLOR_TYPE_GRAY)))
+ {
+ info_ptr->channels++;
+ /* If adding a true alpha channel not just filler */
+#ifndef PNG_1_0_X
+ if (png_ptr->transformations & PNG_ADD_ALPHA)
+ info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
+#endif
+ }
+#endif
+
+#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) && \
+defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
+ if (png_ptr->transformations & PNG_USER_TRANSFORM)
+ {
+ if (info_ptr->bit_depth < png_ptr->user_transform_depth)
+ info_ptr->bit_depth = png_ptr->user_transform_depth;
+ if (info_ptr->channels < png_ptr->user_transform_channels)
+ info_ptr->channels = png_ptr->user_transform_channels;
+ }
+#endif
+
+ info_ptr->pixel_depth = (png_byte)(info_ptr->channels *
+ info_ptr->bit_depth);
+
+ info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, info_ptr->width);
+
+#ifndef PNG_READ_EXPAND_SUPPORTED
+ if (png_ptr)
+ return;
+#endif
+}
+
+/* Transform the row. The order of transformations is significant,
+ * and is very touchy. If you add a transformation, take care to
+ * decide how it fits in with the other transformations here.
+ */
+void /* PRIVATE */
+png_do_read_transformations(png_structp png_ptr)
+{
+ png_debug(1, "in png_do_read_transformations");
+
+ if (png_ptr->row_buf == NULL)
+ {
+#if defined(PNG_STDIO_SUPPORTED) && !defined(_WIN32_WCE)
+ char msg[50];
+
+ png_snprintf2(msg, 50,
+ "NULL row buffer for row %ld, pass %d", (long)png_ptr->row_number,
+ png_ptr->pass);
+ png_error(png_ptr, msg);
+#else
+ png_error(png_ptr, "NULL row buffer");
+#endif
+ }
+#ifdef PNG_WARN_UNINITIALIZED_ROW
+ if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
+ /* Application has failed to call either png_read_start_image()
+ * or png_read_update_info() after setting transforms that expand
+ * pixels. This check added to libpng-1.2.19
+ */
+#if (PNG_WARN_UNINITIALIZED_ROW==1)
+ png_error(png_ptr, "Uninitialized row");
+#else
+ png_warning(png_ptr, "Uninitialized row");
+#endif
+#endif
+
+#ifdef PNG_READ_EXPAND_SUPPORTED
+ if (png_ptr->transformations & PNG_EXPAND)
+ {
+ if (png_ptr->row_info.color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_do_expand_palette(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ png_ptr->palette, png_ptr->trans, png_ptr->num_trans);
+ }
+ else
+ {
+ if (png_ptr->num_trans &&
+ (png_ptr->transformations & PNG_EXPAND_tRNS))
+ png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ &(png_ptr->trans_values));
+ else
+ png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ NULL);
+ }
+ }
+#endif
+
+#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
+ if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)
+ png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ PNG_FLAG_FILLER_AFTER | (png_ptr->flags & PNG_FLAG_STRIP_ALPHA));
+#endif
+
+#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
+ if (png_ptr->transformations & PNG_RGB_TO_GRAY)
+ {
+ int rgb_error =
+ png_do_rgb_to_gray(png_ptr, &(png_ptr->row_info),
+ png_ptr->row_buf + 1);
+ if (rgb_error)
+ {
+ png_ptr->rgb_to_gray_status=1;
+ if ((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
+ PNG_RGB_TO_GRAY_WARN)
+ png_warning(png_ptr, "png_do_rgb_to_gray found nongray pixel");
+ if ((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
+ PNG_RGB_TO_GRAY_ERR)
+ png_error(png_ptr, "png_do_rgb_to_gray found nongray pixel");
+ }
+ }
+#endif
+
+/* From Andreas Dilger e-mail to png-implement, 26 March 1998:
+ *
+ * In most cases, the "simple transparency" should be done prior to doing
+ * gray-to-RGB, or you will have to test 3x as many bytes to check if a
+ * pixel is transparent. You would also need to make sure that the
+ * transparency information is upgraded to RGB.
+ *
+ * To summarize, the current flow is:
+ * - Gray + simple transparency -> compare 1 or 2 gray bytes and composite
+ * with background "in place" if transparent,
+ * convert to RGB if necessary
+ * - Gray + alpha -> composite with gray background and remove alpha bytes,
+ * convert to RGB if necessary
+ *
+ * To support RGB backgrounds for gray images we need:
+ * - Gray + simple transparency -> convert to RGB + simple transparency,
+ * compare 3 or 6 bytes and composite with
+ * background "in place" if transparent
+ * (3x compare/pixel compared to doing
+ * composite with gray bkgrnd)
+ * - Gray + alpha -> convert to RGB + alpha, composite with background and
+ * remove alpha bytes (3x float
+ * operations/pixel compared with composite
+ * on gray background)
+ *
+ * Greg's change will do this. The reason it wasn't done before is for
+ * performance, as this increases the per-pixel operations. If we would check
+ * in advance if the background was gray or RGB, and position the gray-to-RGB
+ * transform appropriately, then it would save a lot of work/time.
+ */
+
+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
+ /* If gray -> RGB, do so now only if background is non-gray; else do later
+ * for performance reasons
+ */
+ if ((png_ptr->transformations & PNG_GRAY_TO_RGB) &&
+ !(png_ptr->mode & PNG_BACKGROUND_IS_GRAY))
+ png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+ if ((png_ptr->transformations & PNG_BACKGROUND) &&
+ ((png_ptr->num_trans != 0 ) ||
+ (png_ptr->color_type & PNG_COLOR_MASK_ALPHA)))
+ png_do_background(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ &(png_ptr->trans_values), &(png_ptr->background)
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ , &(png_ptr->background_1),
+ png_ptr->gamma_table, png_ptr->gamma_from_1,
+ png_ptr->gamma_to_1, png_ptr->gamma_16_table,
+ png_ptr->gamma_16_from_1, png_ptr->gamma_16_to_1,
+ png_ptr->gamma_shift
+#endif
+);
+#endif
+
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if ((png_ptr->transformations & PNG_GAMMA) &&
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+ !((png_ptr->transformations & PNG_BACKGROUND) &&
+ ((png_ptr->num_trans != 0) ||
+ (png_ptr->color_type & PNG_COLOR_MASK_ALPHA))) &&
+#endif
+ (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE))
+ png_do_gamma(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ png_ptr->gamma_table, png_ptr->gamma_16_table,
+ png_ptr->gamma_shift);
+#endif
+
+#ifdef PNG_READ_16_TO_8_SUPPORTED
+ if (png_ptr->transformations & PNG_16_TO_8)
+ png_do_chop(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+
+#ifdef PNG_READ_DITHER_SUPPORTED
+ if (png_ptr->transformations & PNG_DITHER)
+ {
+ png_do_dither((png_row_infop)&(png_ptr->row_info), png_ptr->row_buf + 1,
+ png_ptr->palette_lookup, png_ptr->dither_index);
+ if (png_ptr->row_info.rowbytes == (png_uint_32)0)
+ png_error(png_ptr, "png_do_dither returned rowbytes=0");
+ }
+#endif
+
+#ifdef PNG_READ_INVERT_SUPPORTED
+ if (png_ptr->transformations & PNG_INVERT_MONO)
+ png_do_invert(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+
+#ifdef PNG_READ_SHIFT_SUPPORTED
+ if (png_ptr->transformations & PNG_SHIFT)
+ png_do_unshift(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ &(png_ptr->shift));
+#endif
+
+#ifdef PNG_READ_PACK_SUPPORTED
+ if (png_ptr->transformations & PNG_PACK)
+ png_do_unpack(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+
+#ifdef PNG_READ_BGR_SUPPORTED
+ if (png_ptr->transformations & PNG_BGR)
+ png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+
+#ifdef PNG_READ_PACKSWAP_SUPPORTED
+ if (png_ptr->transformations & PNG_PACKSWAP)
+ png_do_packswap(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+
+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
+ /* If gray -> RGB, do so now only if we did not do so above */
+ if ((png_ptr->transformations & PNG_GRAY_TO_RGB) &&
+ (png_ptr->mode & PNG_BACKGROUND_IS_GRAY))
+ png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+
+#ifdef PNG_READ_FILLER_SUPPORTED
+ if (png_ptr->transformations & PNG_FILLER)
+ png_do_read_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ (png_uint_32)png_ptr->filler, png_ptr->flags);
+#endif
+
+#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
+ if (png_ptr->transformations & PNG_INVERT_ALPHA)
+ png_do_read_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+
+#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED
+ if (png_ptr->transformations & PNG_SWAP_ALPHA)
+ png_do_read_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+
+#ifdef PNG_READ_SWAP_SUPPORTED
+ if (png_ptr->transformations & PNG_SWAP_BYTES)
+ png_do_swap(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+
+#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
+ if (png_ptr->transformations & PNG_USER_TRANSFORM)
+ {
+ if (png_ptr->read_user_transform_fn != NULL)
+ (*(png_ptr->read_user_transform_fn)) /* User read transform function */
+ (png_ptr, /* png_ptr */
+ &(png_ptr->row_info), /* row_info: */
+ /* png_uint_32 width; width of row */
+ /* png_uint_32 rowbytes; number of bytes in row */
+ /* png_byte color_type; color type of pixels */
+ /* png_byte bit_depth; bit depth of samples */
+ /* png_byte channels; number of channels (1-4) */
+ /* png_byte pixel_depth; bits per pixel (depth*channels) */
+ png_ptr->row_buf + 1); /* start of pixel data for row */
+#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
+ if (png_ptr->user_transform_depth)
+ png_ptr->row_info.bit_depth = png_ptr->user_transform_depth;
+ if (png_ptr->user_transform_channels)
+ png_ptr->row_info.channels = png_ptr->user_transform_channels;
+#endif
+ png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth *
+ png_ptr->row_info.channels);
+ png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
+ png_ptr->row_info.width);
+ }
+#endif
+
+}
+
+#ifdef PNG_READ_PACK_SUPPORTED
+/* Unpack pixels of 1, 2, or 4 bits per pixel into 1 byte per pixel,
+ * without changing the actual values. Thus, if you had a row with
+ * a bit depth of 1, you would end up with bytes that only contained
+ * the numbers 0 or 1. If you would rather they contain 0 and 255, use
+ * png_do_shift() after this.
+ */
+void /* PRIVATE */
+png_do_unpack(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_unpack");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL && row_info->bit_depth < 8)
+#else
+ if (row_info->bit_depth < 8)
+#endif
+ {
+ png_uint_32 i;
+ png_uint_32 row_width=row_info->width;
+
+ switch (row_info->bit_depth)
+ {
+ case 1:
+ {
+ png_bytep sp = row + (png_size_t)((row_width - 1) >> 3);
+ png_bytep dp = row + (png_size_t)row_width - 1;
+ png_uint_32 shift = 7 - (int)((row_width + 7) & 0x07);
+ for (i = 0; i < row_width; i++)
+ {
+ *dp = (png_byte)((*sp >> shift) & 0x01);
+ if (shift == 7)
+ {
+ shift = 0;
+ sp--;
+ }
+ else
+ shift++;
+
+ dp--;
+ }
+ break;
+ }
+
+ case 2:
+ {
+
+ png_bytep sp = row + (png_size_t)((row_width - 1) >> 2);
+ png_bytep dp = row + (png_size_t)row_width - 1;
+ png_uint_32 shift = (int)((3 - ((row_width + 3) & 0x03)) << 1);
+ for (i = 0; i < row_width; i++)
+ {
+ *dp = (png_byte)((*sp >> shift) & 0x03);
+ if (shift == 6)
+ {
+ shift = 0;
+ sp--;
+ }
+ else
+ shift += 2;
+
+ dp--;
+ }
+ break;
+ }
+
+ case 4:
+ {
+ png_bytep sp = row + (png_size_t)((row_width - 1) >> 1);
+ png_bytep dp = row + (png_size_t)row_width - 1;
+ png_uint_32 shift = (int)((1 - ((row_width + 1) & 0x01)) << 2);
+ for (i = 0; i < row_width; i++)
+ {
+ *dp = (png_byte)((*sp >> shift) & 0x0f);
+ if (shift == 4)
+ {
+ shift = 0;
+ sp--;
+ }
+ else
+ shift = 4;
+
+ dp--;
+ }
+ break;
+ }
+ }
+ row_info->bit_depth = 8;
+ row_info->pixel_depth = (png_byte)(8 * row_info->channels);
+ row_info->rowbytes = row_width * row_info->channels;
+ }
+}
+#endif
+
+#ifdef PNG_READ_SHIFT_SUPPORTED
+/* Reverse the effects of png_do_shift. This routine merely shifts the
+ * pixels back to their significant bits values. Thus, if you have
+ * a row of bit depth 8, but only 5 are significant, this will shift
+ * the values back to 0 through 31.
+ */
+void /* PRIVATE */
+png_do_unshift(png_row_infop row_info, png_bytep row, png_color_8p sig_bits)
+{
+ png_debug(1, "in png_do_unshift");
+
+ if (
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL && sig_bits != NULL &&
+#endif
+ row_info->color_type != PNG_COLOR_TYPE_PALETTE)
+ {
+ int shift[4];
+ int channels = 0;
+ int c;
+ png_uint_16 value = 0;
+ png_uint_32 row_width = row_info->width;
+
+ if (row_info->color_type & PNG_COLOR_MASK_COLOR)
+ {
+ shift[channels++] = row_info->bit_depth - sig_bits->red;
+ shift[channels++] = row_info->bit_depth - sig_bits->green;
+ shift[channels++] = row_info->bit_depth - sig_bits->blue;
+ }
+ else
+ {
+ shift[channels++] = row_info->bit_depth - sig_bits->gray;
+ }
+ if (row_info->color_type & PNG_COLOR_MASK_ALPHA)
+ {
+ shift[channels++] = row_info->bit_depth - sig_bits->alpha;
+ }
+
+ for (c = 0; c < channels; c++)
+ {
+ if (shift[c] <= 0)
+ shift[c] = 0;
+ else
+ value = 1;
+ }
+
+ if (!value)
+ return;
+
+ switch (row_info->bit_depth)
+ {
+ case 2:
+ {
+ png_bytep bp;
+ png_uint_32 i;
+ png_uint_32 istop = row_info->rowbytes;
+
+ for (bp = row, i = 0; i < istop; i++)
+ {
+ *bp >>= 1;
+ *bp++ &= 0x55;
+ }
+ break;
+ }
+
+ case 4:
+ {
+ png_bytep bp = row;
+ png_uint_32 i;
+ png_uint_32 istop = row_info->rowbytes;
+ png_byte mask = (png_byte)((((int)0xf0 >> shift[0]) & (int)0xf0) |
+ (png_byte)((int)0xf >> shift[0]));
+
+ for (i = 0; i < istop; i++)
+ {
+ *bp >>= shift[0];
+ *bp++ &= mask;
+ }
+ break;
+ }
+
+ case 8:
+ {
+ png_bytep bp = row;
+ png_uint_32 i;
+ png_uint_32 istop = row_width * channels;
+
+ for (i = 0; i < istop; i++)
+ {
+ *bp++ >>= shift[i%channels];
+ }
+ break;
+ }
+
+ case 16:
+ {
+ png_bytep bp = row;
+ png_uint_32 i;
+ png_uint_32 istop = channels * row_width;
+
+ for (i = 0; i < istop; i++)
+ {
+ value = (png_uint_16)((*bp << 8) + *(bp + 1));
+ value >>= shift[i%channels];
+ *bp++ = (png_byte)(value >> 8);
+ *bp++ = (png_byte)(value & 0xff);
+ }
+ break;
+ }
+ }
+ }
+}
+#endif
+
+#ifdef PNG_READ_16_TO_8_SUPPORTED
+/* Chop rows of bit depth 16 down to 8 */
+void /* PRIVATE */
+png_do_chop(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_chop");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL && row_info->bit_depth == 16)
+#else
+ if (row_info->bit_depth == 16)
+#endif
+ {
+ png_bytep sp = row;
+ png_bytep dp = row;
+ png_uint_32 i;
+ png_uint_32 istop = row_info->width * row_info->channels;
+
+ for (i = 0; i> 8)) >> 8;
+ *
+ * Approximate calculation with shift/add instead of multiply/divide:
+ * *dp = ((((png_uint_32)(*sp) << 8) |
+ * (png_uint_32)((int)(*(sp + 1)) - *sp)) + 128) >> 8;
+ *
+ * What we actually do to avoid extra shifting and conversion:
+ */
+
+ *dp = *sp + ((((int)(*(sp + 1)) - *sp) > 128) ? 1 : 0);
+#else
+ /* Simply discard the low order byte */
+ *dp = *sp;
+#endif
+ }
+ row_info->bit_depth = 8;
+ row_info->pixel_depth = (png_byte)(8 * row_info->channels);
+ row_info->rowbytes = row_info->width * row_info->channels;
+ }
+}
+#endif
+
+#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED
+void /* PRIVATE */
+png_do_read_swap_alpha(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_read_swap_alpha");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL)
+#endif
+ {
+ png_uint_32 row_width = row_info->width;
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ /* This converts from RGBA to ARGB */
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep sp = row + row_info->rowbytes;
+ png_bytep dp = sp;
+ png_byte save;
+ png_uint_32 i;
+
+ for (i = 0; i < row_width; i++)
+ {
+ save = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = save;
+ }
+ }
+ /* This converts from RRGGBBAA to AARRGGBB */
+ else
+ {
+ png_bytep sp = row + row_info->rowbytes;
+ png_bytep dp = sp;
+ png_byte save[2];
+ png_uint_32 i;
+
+ for (i = 0; i < row_width; i++)
+ {
+ save[0] = *(--sp);
+ save[1] = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = save[0];
+ *(--dp) = save[1];
+ }
+ }
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ {
+ /* This converts from GA to AG */
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep sp = row + row_info->rowbytes;
+ png_bytep dp = sp;
+ png_byte save;
+ png_uint_32 i;
+
+ for (i = 0; i < row_width; i++)
+ {
+ save = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = save;
+ }
+ }
+ /* This converts from GGAA to AAGG */
+ else
+ {
+ png_bytep sp = row + row_info->rowbytes;
+ png_bytep dp = sp;
+ png_byte save[2];
+ png_uint_32 i;
+
+ for (i = 0; i < row_width; i++)
+ {
+ save[0] = *(--sp);
+ save[1] = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = save[0];
+ *(--dp) = save[1];
+ }
+ }
+ }
+ }
+}
+#endif
+
+#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
+void /* PRIVATE */
+png_do_read_invert_alpha(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_read_invert_alpha");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL)
+#endif
+ {
+ png_uint_32 row_width = row_info->width;
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ /* This inverts the alpha channel in RGBA */
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep sp = row + row_info->rowbytes;
+ png_bytep dp = sp;
+ png_uint_32 i;
+
+ for (i = 0; i < row_width; i++)
+ {
+ *(--dp) = (png_byte)(255 - *(--sp));
+
+/* This does nothing:
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ We can replace it with:
+*/
+ sp-=3;
+ dp=sp;
+ }
+ }
+ /* This inverts the alpha channel in RRGGBBAA */
+ else
+ {
+ png_bytep sp = row + row_info->rowbytes;
+ png_bytep dp = sp;
+ png_uint_32 i;
+
+ for (i = 0; i < row_width; i++)
+ {
+ *(--dp) = (png_byte)(255 - *(--sp));
+ *(--dp) = (png_byte)(255 - *(--sp));
+
+/* This does nothing:
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ We can replace it with:
+*/
+ sp-=6;
+ dp=sp;
+ }
+ }
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ {
+ /* This inverts the alpha channel in GA */
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep sp = row + row_info->rowbytes;
+ png_bytep dp = sp;
+ png_uint_32 i;
+
+ for (i = 0; i < row_width; i++)
+ {
+ *(--dp) = (png_byte)(255 - *(--sp));
+ *(--dp) = *(--sp);
+ }
+ }
+ /* This inverts the alpha channel in GGAA */
+ else
+ {
+ png_bytep sp = row + row_info->rowbytes;
+ png_bytep dp = sp;
+ png_uint_32 i;
+
+ for (i = 0; i < row_width; i++)
+ {
+ *(--dp) = (png_byte)(255 - *(--sp));
+ *(--dp) = (png_byte)(255 - *(--sp));
+/*
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+*/
+ sp-=2;
+ dp=sp;
+ }
+ }
+ }
+ }
+}
+#endif
+
+#ifdef PNG_READ_FILLER_SUPPORTED
+/* Add filler channel if we have RGB color */
+void /* PRIVATE */
+png_do_read_filler(png_row_infop row_info, png_bytep row,
+ png_uint_32 filler, png_uint_32 flags)
+{
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ png_byte hi_filler = (png_byte)((filler>>8) & 0xff);
+ png_byte lo_filler = (png_byte)(filler & 0xff);
+
+ png_debug(1, "in png_do_read_filler");
+
+ if (
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ row_info->color_type == PNG_COLOR_TYPE_GRAY)
+ {
+ if (row_info->bit_depth == 8)
+ {
+ /* This changes the data from G to GX */
+ if (flags & PNG_FLAG_FILLER_AFTER)
+ {
+ png_bytep sp = row + (png_size_t)row_width;
+ png_bytep dp = sp + (png_size_t)row_width;
+ for (i = 1; i < row_width; i++)
+ {
+ *(--dp) = lo_filler;
+ *(--dp) = *(--sp);
+ }
+ *(--dp) = lo_filler;
+ row_info->channels = 2;
+ row_info->pixel_depth = 16;
+ row_info->rowbytes = row_width * 2;
+ }
+ /* This changes the data from G to XG */
+ else
+ {
+ png_bytep sp = row + (png_size_t)row_width;
+ png_bytep dp = sp + (png_size_t)row_width;
+ for (i = 0; i < row_width; i++)
+ {
+ *(--dp) = *(--sp);
+ *(--dp) = lo_filler;
+ }
+ row_info->channels = 2;
+ row_info->pixel_depth = 16;
+ row_info->rowbytes = row_width * 2;
+ }
+ }
+ else if (row_info->bit_depth == 16)
+ {
+ /* This changes the data from GG to GGXX */
+ if (flags & PNG_FLAG_FILLER_AFTER)
+ {
+ png_bytep sp = row + (png_size_t)row_width * 2;
+ png_bytep dp = sp + (png_size_t)row_width * 2;
+ for (i = 1; i < row_width; i++)
+ {
+ *(--dp) = hi_filler;
+ *(--dp) = lo_filler;
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ }
+ *(--dp) = hi_filler;
+ *(--dp) = lo_filler;
+ row_info->channels = 2;
+ row_info->pixel_depth = 32;
+ row_info->rowbytes = row_width * 4;
+ }
+ /* This changes the data from GG to XXGG */
+ else
+ {
+ png_bytep sp = row + (png_size_t)row_width * 2;
+ png_bytep dp = sp + (png_size_t)row_width * 2;
+ for (i = 0; i < row_width; i++)
+ {
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = hi_filler;
+ *(--dp) = lo_filler;
+ }
+ row_info->channels = 2;
+ row_info->pixel_depth = 32;
+ row_info->rowbytes = row_width * 4;
+ }
+ }
+ } /* COLOR_TYPE == GRAY */
+ else if (row_info->color_type == PNG_COLOR_TYPE_RGB)
+ {
+ if (row_info->bit_depth == 8)
+ {
+ /* This changes the data from RGB to RGBX */
+ if (flags & PNG_FLAG_FILLER_AFTER)
+ {
+ png_bytep sp = row + (png_size_t)row_width * 3;
+ png_bytep dp = sp + (png_size_t)row_width;
+ for (i = 1; i < row_width; i++)
+ {
+ *(--dp) = lo_filler;
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ }
+ *(--dp) = lo_filler;
+ row_info->channels = 4;
+ row_info->pixel_depth = 32;
+ row_info->rowbytes = row_width * 4;
+ }
+ /* This changes the data from RGB to XRGB */
+ else
+ {
+ png_bytep sp = row + (png_size_t)row_width * 3;
+ png_bytep dp = sp + (png_size_t)row_width;
+ for (i = 0; i < row_width; i++)
+ {
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = lo_filler;
+ }
+ row_info->channels = 4;
+ row_info->pixel_depth = 32;
+ row_info->rowbytes = row_width * 4;
+ }
+ }
+ else if (row_info->bit_depth == 16)
+ {
+ /* This changes the data from RRGGBB to RRGGBBXX */
+ if (flags & PNG_FLAG_FILLER_AFTER)
+ {
+ png_bytep sp = row + (png_size_t)row_width * 6;
+ png_bytep dp = sp + (png_size_t)row_width * 2;
+ for (i = 1; i < row_width; i++)
+ {
+ *(--dp) = hi_filler;
+ *(--dp) = lo_filler;
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ }
+ *(--dp) = hi_filler;
+ *(--dp) = lo_filler;
+ row_info->channels = 4;
+ row_info->pixel_depth = 64;
+ row_info->rowbytes = row_width * 8;
+ }
+ /* This changes the data from RRGGBB to XXRRGGBB */
+ else
+ {
+ png_bytep sp = row + (png_size_t)row_width * 6;
+ png_bytep dp = sp + (png_size_t)row_width * 2;
+ for (i = 0; i < row_width; i++)
+ {
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = *(--sp);
+ *(--dp) = hi_filler;
+ *(--dp) = lo_filler;
+ }
+ row_info->channels = 4;
+ row_info->pixel_depth = 64;
+ row_info->rowbytes = row_width * 8;
+ }
+ }
+ } /* COLOR_TYPE == RGB */
+}
+#endif
+
+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
+/* Expand grayscale files to RGB, with or without alpha */
+void /* PRIVATE */
+png_do_gray_to_rgb(png_row_infop row_info, png_bytep row)
+{
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ png_debug(1, "in png_do_gray_to_rgb");
+
+ if (row_info->bit_depth >= 8 &&
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ !(row_info->color_type & PNG_COLOR_MASK_COLOR))
+ {
+ if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
+ {
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep sp = row + (png_size_t)row_width - 1;
+ png_bytep dp = sp + (png_size_t)row_width * 2;
+ for (i = 0; i < row_width; i++)
+ {
+ *(dp--) = *sp;
+ *(dp--) = *sp;
+ *(dp--) = *(sp--);
+ }
+ }
+ else
+ {
+ png_bytep sp = row + (png_size_t)row_width * 2 - 1;
+ png_bytep dp = sp + (png_size_t)row_width * 4;
+ for (i = 0; i < row_width; i++)
+ {
+ *(dp--) = *sp;
+ *(dp--) = *(sp - 1);
+ *(dp--) = *sp;
+ *(dp--) = *(sp - 1);
+ *(dp--) = *(sp--);
+ *(dp--) = *(sp--);
+ }
+ }
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ {
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep sp = row + (png_size_t)row_width * 2 - 1;
+ png_bytep dp = sp + (png_size_t)row_width * 2;
+ for (i = 0; i < row_width; i++)
+ {
+ *(dp--) = *(sp--);
+ *(dp--) = *sp;
+ *(dp--) = *sp;
+ *(dp--) = *(sp--);
+ }
+ }
+ else
+ {
+ png_bytep sp = row + (png_size_t)row_width * 4 - 1;
+ png_bytep dp = sp + (png_size_t)row_width * 4;
+ for (i = 0; i < row_width; i++)
+ {
+ *(dp--) = *(sp--);
+ *(dp--) = *(sp--);
+ *(dp--) = *sp;
+ *(dp--) = *(sp - 1);
+ *(dp--) = *sp;
+ *(dp--) = *(sp - 1);
+ *(dp--) = *(sp--);
+ *(dp--) = *(sp--);
+ }
+ }
+ }
+ row_info->channels += (png_byte)2;
+ row_info->color_type |= PNG_COLOR_MASK_COLOR;
+ row_info->pixel_depth = (png_byte)(row_info->channels *
+ row_info->bit_depth);
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
+ }
+}
+#endif
+
+#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
+/* Reduce RGB files to grayscale, with or without alpha
+ * using the equation given in Poynton's ColorFAQ at
+ * (THIS LINK IS DEAD June 2008)
+ * New link:
+ *
+ * Charles Poynton poynton at poynton.com
+ *
+ * Y = 0.212671 * R + 0.715160 * G + 0.072169 * B
+ *
+ * We approximate this with
+ *
+ * Y = 0.21268 * R + 0.7151 * G + 0.07217 * B
+ *
+ * which can be expressed with integers as
+ *
+ * Y = (6969 * R + 23434 * G + 2365 * B)/32768
+ *
+ * The calculation is to be done in a linear colorspace.
+ *
+ * Other integer coefficents can be used via png_set_rgb_to_gray().
+ */
+int /* PRIVATE */
+png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
+
+{
+ png_uint_32 i;
+
+ png_uint_32 row_width = row_info->width;
+ int rgb_error = 0;
+
+ png_debug(1, "in png_do_rgb_to_gray");
+
+ if (
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ (row_info->color_type & PNG_COLOR_MASK_COLOR))
+ {
+ png_uint_32 rc = png_ptr->rgb_to_gray_red_coeff;
+ png_uint_32 gc = png_ptr->rgb_to_gray_green_coeff;
+ png_uint_32 bc = png_ptr->rgb_to_gray_blue_coeff;
+
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB)
+ {
+ if (row_info->bit_depth == 8)
+ {
+#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
+ if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL)
+ {
+ png_bytep sp = row;
+ png_bytep dp = row;
+
+ for (i = 0; i < row_width; i++)
+ {
+ png_byte red = png_ptr->gamma_to_1[*(sp++)];
+ png_byte green = png_ptr->gamma_to_1[*(sp++)];
+ png_byte blue = png_ptr->gamma_to_1[*(sp++)];
+ if (red != green || red != blue)
+ {
+ rgb_error |= 1;
+ *(dp++) = png_ptr->gamma_from_1[
+ (rc*red + gc*green + bc*blue)>>15];
+ }
+ else
+ *(dp++) = *(sp - 1);
+ }
+ }
+ else
+#endif
+ {
+ png_bytep sp = row;
+ png_bytep dp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_byte red = *(sp++);
+ png_byte green = *(sp++);
+ png_byte blue = *(sp++);
+ if (red != green || red != blue)
+ {
+ rgb_error |= 1;
+ *(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15);
+ }
+ else
+ *(dp++) = *(sp - 1);
+ }
+ }
+ }
+
+ else /* RGB bit_depth == 16 */
+ {
+#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
+ if (png_ptr->gamma_16_to_1 != NULL &&
+ png_ptr->gamma_16_from_1 != NULL)
+ {
+ png_bytep sp = row;
+ png_bytep dp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_uint_16 red, green, blue, w;
+
+ red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
+ green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
+ blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
+
+ if (red == green && red == blue)
+ w = red;
+ else
+ {
+ png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >>
+ png_ptr->gamma_shift][red>>8];
+ png_uint_16 green_1 =
+ png_ptr->gamma_16_to_1[(green&0xff) >>
+ png_ptr->gamma_shift][green>>8];
+ png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff) >>
+ png_ptr->gamma_shift][blue>>8];
+ png_uint_16 gray16 = (png_uint_16)((rc*red_1 + gc*green_1
+ + bc*blue_1)>>15);
+ w = png_ptr->gamma_16_from_1[(gray16&0xff) >>
+ png_ptr->gamma_shift][gray16 >> 8];
+ rgb_error |= 1;
+ }
+
+ *(dp++) = (png_byte)((w>>8) & 0xff);
+ *(dp++) = (png_byte)(w & 0xff);
+ }
+ }
+ else
+#endif
+ {
+ png_bytep sp = row;
+ png_bytep dp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_uint_16 red, green, blue, gray16;
+
+ red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
+ green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
+ blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
+
+ if (red != green || red != blue)
+ rgb_error |= 1;
+ gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15);
+ *(dp++) = (png_byte)((gray16>>8) & 0xff);
+ *(dp++) = (png_byte)(gray16 & 0xff);
+ }
+ }
+ }
+ }
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ if (row_info->bit_depth == 8)
+ {
+#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
+ if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL)
+ {
+ png_bytep sp = row;
+ png_bytep dp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_byte red = png_ptr->gamma_to_1[*(sp++)];
+ png_byte green = png_ptr->gamma_to_1[*(sp++)];
+ png_byte blue = png_ptr->gamma_to_1[*(sp++)];
+ if (red != green || red != blue)
+ rgb_error |= 1;
+ *(dp++) = png_ptr->gamma_from_1
+ [(rc*red + gc*green + bc*blue)>>15];
+ *(dp++) = *(sp++); /* alpha */
+ }
+ }
+ else
+#endif
+ {
+ png_bytep sp = row;
+ png_bytep dp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_byte red = *(sp++);
+ png_byte green = *(sp++);
+ png_byte blue = *(sp++);
+ if (red != green || red != blue)
+ rgb_error |= 1;
+ *(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15);
+ *(dp++) = *(sp++); /* alpha */
+ }
+ }
+ }
+ else /* RGBA bit_depth == 16 */
+ {
+#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
+ if (png_ptr->gamma_16_to_1 != NULL &&
+ png_ptr->gamma_16_from_1 != NULL)
+ {
+ png_bytep sp = row;
+ png_bytep dp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_uint_16 red, green, blue, w;
+
+ red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
+ green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
+ blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
+
+ if (red == green && red == blue)
+ w = red;
+ else
+ {
+ png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >>
+ png_ptr->gamma_shift][red>>8];
+ png_uint_16 green_1 =
+ png_ptr->gamma_16_to_1[(green&0xff) >>
+ png_ptr->gamma_shift][green>>8];
+ png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff) >>
+ png_ptr->gamma_shift][blue>>8];
+ png_uint_16 gray16 = (png_uint_16)((rc * red_1
+ + gc * green_1 + bc * blue_1)>>15);
+ w = png_ptr->gamma_16_from_1[(gray16&0xff) >>
+ png_ptr->gamma_shift][gray16 >> 8];
+ rgb_error |= 1;
+ }
+
+ *(dp++) = (png_byte)((w>>8) & 0xff);
+ *(dp++) = (png_byte)(w & 0xff);
+ *(dp++) = *(sp++); /* alpha */
+ *(dp++) = *(sp++);
+ }
+ }
+ else
+#endif
+ {
+ png_bytep sp = row;
+ png_bytep dp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_uint_16 red, green, blue, gray16;
+ red = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
+ green = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
+ blue = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
+ if (red != green || red != blue)
+ rgb_error |= 1;
+ gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15);
+ *(dp++) = (png_byte)((gray16>>8) & 0xff);
+ *(dp++) = (png_byte)(gray16 & 0xff);
+ *(dp++) = *(sp++); /* alpha */
+ *(dp++) = *(sp++);
+ }
+ }
+ }
+ }
+ row_info->channels -= (png_byte)2;
+ row_info->color_type &= ~PNG_COLOR_MASK_COLOR;
+ row_info->pixel_depth = (png_byte)(row_info->channels *
+ row_info->bit_depth);
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
+ }
+ return rgb_error;
+}
+#endif
+
+/* Build a grayscale palette. Palette is assumed to be 1 << bit_depth
+ * large of png_color. This lets grayscale images be treated as
+ * paletted. Most useful for gamma correction and simplification
+ * of code.
+ */
+void PNGAPI
+png_build_grayscale_palette(int bit_depth, png_colorp palette)
+{
+ int num_palette;
+ int color_inc;
+ int i;
+ int v;
+
+ png_debug(1, "in png_do_build_grayscale_palette");
+
+ if (palette == NULL)
+ return;
+
+ switch (bit_depth)
+ {
+ case 1:
+ num_palette = 2;
+ color_inc = 0xff;
+ break;
+
+ case 2:
+ num_palette = 4;
+ color_inc = 0x55;
+ break;
+
+ case 4:
+ num_palette = 16;
+ color_inc = 0x11;
+ break;
+
+ case 8:
+ num_palette = 256;
+ color_inc = 1;
+ break;
+
+ default:
+ num_palette = 0;
+ color_inc = 0;
+ break;
+ }
+
+ for (i = 0, v = 0; i < num_palette; i++, v += color_inc)
+ {
+ palette[i].red = (png_byte)v;
+ palette[i].green = (png_byte)v;
+ palette[i].blue = (png_byte)v;
+ }
+}
+
+/* This function is currently unused. Do we really need it? */
+#if defined(PNG_READ_DITHER_SUPPORTED) && \
+ defined(PNG_CORRECT_PALETTE_SUPPORTED)
+void /* PRIVATE */
+png_correct_palette(png_structp png_ptr, png_colorp palette,
+ int num_palette)
+{
+ png_debug(1, "in png_correct_palette");
+
+#if defined(PNG_READ_BACKGROUND_SUPPORTED) && \
+ defined(PNG_READ_GAMMA_SUPPORTED) && \
+ defined(PNG_FLOATING_POINT_SUPPORTED)
+ if (png_ptr->transformations & (PNG_GAMMA | PNG_BACKGROUND))
+ {
+ png_color back, back_1;
+
+ if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE)
+ {
+ back.red = png_ptr->gamma_table[png_ptr->background.red];
+ back.green = png_ptr->gamma_table[png_ptr->background.green];
+ back.blue = png_ptr->gamma_table[png_ptr->background.blue];
+
+ back_1.red = png_ptr->gamma_to_1[png_ptr->background.red];
+ back_1.green = png_ptr->gamma_to_1[png_ptr->background.green];
+ back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue];
+ }
+ else
+ {
+ double g;
+
+ g = 1.0 / (png_ptr->background_gamma * png_ptr->screen_gamma);
+
+ if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_SCREEN
+ || fabs(g - 1.0) < PNG_GAMMA_THRESHOLD)
+ {
+ back.red = png_ptr->background.red;
+ back.green = png_ptr->background.green;
+ back.blue = png_ptr->background.blue;
+ }
+ else
+ {
+ back.red =
+ (png_byte)(pow((double)png_ptr->background.red/255, g) *
+ 255.0 + 0.5);
+ back.green =
+ (png_byte)(pow((double)png_ptr->background.green/255, g) *
+ 255.0 + 0.5);
+ back.blue =
+ (png_byte)(pow((double)png_ptr->background.blue/255, g) *
+ 255.0 + 0.5);
+ }
+
+ g = 1.0 / png_ptr->background_gamma;
+
+ back_1.red =
+ (png_byte)(pow((double)png_ptr->background.red/255, g) *
+ 255.0 + 0.5);
+ back_1.green =
+ (png_byte)(pow((double)png_ptr->background.green/255, g) *
+ 255.0 + 0.5);
+ back_1.blue =
+ (png_byte)(pow((double)png_ptr->background.blue/255, g) *
+ 255.0 + 0.5);
+ }
+
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_uint_32 i;
+
+ for (i = 0; i < (png_uint_32)num_palette; i++)
+ {
+ if (i < png_ptr->num_trans && png_ptr->trans[i] == 0)
+ {
+ palette[i] = back;
+ }
+ else if (i < png_ptr->num_trans && png_ptr->trans[i] != 0xff)
+ {
+ png_byte v, w;
+
+ v = png_ptr->gamma_to_1[png_ptr->palette[i].red];
+ png_composite(w, v, png_ptr->trans[i], back_1.red);
+ palette[i].red = png_ptr->gamma_from_1[w];
+
+ v = png_ptr->gamma_to_1[png_ptr->palette[i].green];
+ png_composite(w, v, png_ptr->trans[i], back_1.green);
+ palette[i].green = png_ptr->gamma_from_1[w];
+
+ v = png_ptr->gamma_to_1[png_ptr->palette[i].blue];
+ png_composite(w, v, png_ptr->trans[i], back_1.blue);
+ palette[i].blue = png_ptr->gamma_from_1[w];
+ }
+ else
+ {
+ palette[i].red = png_ptr->gamma_table[palette[i].red];
+ palette[i].green = png_ptr->gamma_table[palette[i].green];
+ palette[i].blue = png_ptr->gamma_table[palette[i].blue];
+ }
+ }
+ }
+ else
+ {
+ int i;
+
+ for (i = 0; i < num_palette; i++)
+ {
+ if (palette[i].red == (png_byte)png_ptr->trans_values.gray)
+ {
+ palette[i] = back;
+ }
+ else
+ {
+ palette[i].red = png_ptr->gamma_table[palette[i].red];
+ palette[i].green = png_ptr->gamma_table[palette[i].green];
+ palette[i].blue = png_ptr->gamma_table[palette[i].blue];
+ }
+ }
+ }
+ }
+ else
+#endif
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (png_ptr->transformations & PNG_GAMMA)
+ {
+ int i;
+
+ for (i = 0; i < num_palette; i++)
+ {
+ palette[i].red = png_ptr->gamma_table[palette[i].red];
+ palette[i].green = png_ptr->gamma_table[palette[i].green];
+ palette[i].blue = png_ptr->gamma_table[palette[i].blue];
+ }
+ }
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+ else
+#endif
+#endif
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+ if (png_ptr->transformations & PNG_BACKGROUND)
+ {
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_color back;
+
+ back.red = (png_byte)png_ptr->background.red;
+ back.green = (png_byte)png_ptr->background.green;
+ back.blue = (png_byte)png_ptr->background.blue;
+
+ for (i = 0; i < (int)png_ptr->num_trans; i++)
+ {
+ if (png_ptr->trans[i] == 0)
+ {
+ palette[i].red = back.red;
+ palette[i].green = back.green;
+ palette[i].blue = back.blue;
+ }
+ else if (png_ptr->trans[i] != 0xff)
+ {
+ png_composite(palette[i].red, png_ptr->palette[i].red,
+ png_ptr->trans[i], back.red);
+ png_composite(palette[i].green, png_ptr->palette[i].green,
+ png_ptr->trans[i], back.green);
+ png_composite(palette[i].blue, png_ptr->palette[i].blue,
+ png_ptr->trans[i], back.blue);
+ }
+ }
+ }
+ else /* Assume grayscale palette (what else could it be?) */
+ {
+ int i;
+
+ for (i = 0; i < num_palette; i++)
+ {
+ if (i == (png_byte)png_ptr->trans_values.gray)
+ {
+ palette[i].red = (png_byte)png_ptr->background.red;
+ palette[i].green = (png_byte)png_ptr->background.green;
+ palette[i].blue = (png_byte)png_ptr->background.blue;
+ }
+ }
+ }
+ }
+#endif
+}
+#endif
+
+#ifdef PNG_READ_BACKGROUND_SUPPORTED
+/* Replace any alpha or transparency with the supplied background color.
+ * "background" is already in the screen gamma, while "background_1" is
+ * at a gamma of 1.0. Paletted files have already been taken care of.
+ */
+void /* PRIVATE */
+png_do_background(png_row_infop row_info, png_bytep row,
+ png_color_16p trans_values, png_color_16p background
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ , png_color_16p background_1,
+ png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1,
+ png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1,
+ png_uint_16pp gamma_16_to_1, int gamma_shift
+#endif
+ )
+{
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width=row_info->width;
+ int shift;
+
+ png_debug(1, "in png_do_background");
+
+ if (background != NULL &&
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ (!(row_info->color_type & PNG_COLOR_MASK_ALPHA) ||
+ (row_info->color_type != PNG_COLOR_TYPE_PALETTE && trans_values)))
+ {
+ switch (row_info->color_type)
+ {
+ case PNG_COLOR_TYPE_GRAY:
+ {
+ switch (row_info->bit_depth)
+ {
+ case 1:
+ {
+ sp = row;
+ shift = 7;
+ for (i = 0; i < row_width; i++)
+ {
+ if ((png_uint_16)((*sp >> shift) & 0x01)
+ == trans_values->gray)
+ {
+ *sp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff);
+ *sp |= (png_byte)(background->gray << shift);
+ }
+ if (!shift)
+ {
+ shift = 7;
+ sp++;
+ }
+ else
+ shift--;
+ }
+ break;
+ }
+
+ case 2:
+ {
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (gamma_table != NULL)
+ {
+ sp = row;
+ shift = 6;
+ for (i = 0; i < row_width; i++)
+ {
+ if ((png_uint_16)((*sp >> shift) & 0x03)
+ == trans_values->gray)
+ {
+ *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
+ *sp |= (png_byte)(background->gray << shift);
+ }
+ else
+ {
+ png_byte p = (png_byte)((*sp >> shift) & 0x03);
+ png_byte g = (png_byte)((gamma_table [p | (p << 2) |
+ (p << 4) | (p << 6)] >> 6) & 0x03);
+ *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
+ *sp |= (png_byte)(g << shift);
+ }
+ if (!shift)
+ {
+ shift = 6;
+ sp++;
+ }
+ else
+ shift -= 2;
+ }
+ }
+ else
+#endif
+ {
+ sp = row;
+ shift = 6;
+ for (i = 0; i < row_width; i++)
+ {
+ if ((png_uint_16)((*sp >> shift) & 0x03)
+ == trans_values->gray)
+ {
+ *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
+ *sp |= (png_byte)(background->gray << shift);
+ }
+ if (!shift)
+ {
+ shift = 6;
+ sp++;
+ }
+ else
+ shift -= 2;
+ }
+ }
+ break;
+ }
+
+ case 4:
+ {
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (gamma_table != NULL)
+ {
+ sp = row;
+ shift = 4;
+ for (i = 0; i < row_width; i++)
+ {
+ if ((png_uint_16)((*sp >> shift) & 0x0f)
+ == trans_values->gray)
+ {
+ *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
+ *sp |= (png_byte)(background->gray << shift);
+ }
+ else
+ {
+ png_byte p = (png_byte)((*sp >> shift) & 0x0f);
+ png_byte g = (png_byte)((gamma_table[p |
+ (p << 4)] >> 4) & 0x0f);
+ *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
+ *sp |= (png_byte)(g << shift);
+ }
+ if (!shift)
+ {
+ shift = 4;
+ sp++;
+ }
+ else
+ shift -= 4;
+ }
+ }
+ else
+#endif
+ {
+ sp = row;
+ shift = 4;
+ for (i = 0; i < row_width; i++)
+ {
+ if ((png_uint_16)((*sp >> shift) & 0x0f)
+ == trans_values->gray)
+ {
+ *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
+ *sp |= (png_byte)(background->gray << shift);
+ }
+ if (!shift)
+ {
+ shift = 4;
+ sp++;
+ }
+ else
+ shift -= 4;
+ }
+ }
+ break;
+ }
+
+ case 8:
+ {
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (gamma_table != NULL)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++, sp++)
+ {
+ if (*sp == trans_values->gray)
+ {
+ *sp = (png_byte)background->gray;
+ }
+ else
+ {
+ *sp = gamma_table[*sp];
+ }
+ }
+ }
+ else
+#endif
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++, sp++)
+ {
+ if (*sp == trans_values->gray)
+ {
+ *sp = (png_byte)background->gray;
+ }
+ }
+ }
+ break;
+ }
+
+ case 16:
+ {
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (gamma_16 != NULL)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++, sp += 2)
+ {
+ png_uint_16 v;
+
+ v = (png_uint_16)(((*sp) << 8) + *(sp + 1));
+ if (v == trans_values->gray)
+ {
+ /* Background is already in screen gamma */
+ *sp = (png_byte)((background->gray >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(background->gray & 0xff);
+ }
+ else
+ {
+ v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
+ *sp = (png_byte)((v >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(v & 0xff);
+ }
+ }
+ }
+ else
+#endif
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++, sp += 2)
+ {
+ png_uint_16 v;
+
+ v = (png_uint_16)(((*sp) << 8) + *(sp + 1));
+ if (v == trans_values->gray)
+ {
+ *sp = (png_byte)((background->gray >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(background->gray & 0xff);
+ }
+ }
+ }
+ break;
+ }
+ }
+ break;
+ }
+
+ case PNG_COLOR_TYPE_RGB:
+ {
+ if (row_info->bit_depth == 8)
+ {
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (gamma_table != NULL)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++, sp += 3)
+ {
+ if (*sp == trans_values->red &&
+ *(sp + 1) == trans_values->green &&
+ *(sp + 2) == trans_values->blue)
+ {
+ *sp = (png_byte)background->red;
+ *(sp + 1) = (png_byte)background->green;
+ *(sp + 2) = (png_byte)background->blue;
+ }
+ else
+ {
+ *sp = gamma_table[*sp];
+ *(sp + 1) = gamma_table[*(sp + 1)];
+ *(sp + 2) = gamma_table[*(sp + 2)];
+ }
+ }
+ }
+ else
+#endif
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++, sp += 3)
+ {
+ if (*sp == trans_values->red &&
+ *(sp + 1) == trans_values->green &&
+ *(sp + 2) == trans_values->blue)
+ {
+ *sp = (png_byte)background->red;
+ *(sp + 1) = (png_byte)background->green;
+ *(sp + 2) = (png_byte)background->blue;
+ }
+ }
+ }
+ }
+ else /* if (row_info->bit_depth == 16) */
+ {
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (gamma_16 != NULL)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++, sp += 6)
+ {
+ png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1));
+ png_uint_16 g = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3));
+ png_uint_16 b = (png_uint_16)(((*(sp+4)) << 8) + *(sp+5));
+ if (r == trans_values->red && g == trans_values->green &&
+ b == trans_values->blue)
+ {
+ /* Background is already in screen gamma */
+ *sp = (png_byte)((background->red >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(background->red & 0xff);
+ *(sp + 2) = (png_byte)((background->green >> 8) & 0xff);
+ *(sp + 3) = (png_byte)(background->green & 0xff);
+ *(sp + 4) = (png_byte)((background->blue >> 8) & 0xff);
+ *(sp + 5) = (png_byte)(background->blue & 0xff);
+ }
+ else
+ {
+ png_uint_16 v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
+ *sp = (png_byte)((v >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(v & 0xff);
+ v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)];
+ *(sp + 2) = (png_byte)((v >> 8) & 0xff);
+ *(sp + 3) = (png_byte)(v & 0xff);
+ v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)];
+ *(sp + 4) = (png_byte)((v >> 8) & 0xff);
+ *(sp + 5) = (png_byte)(v & 0xff);
+ }
+ }
+ }
+ else
+#endif
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++, sp += 6)
+ {
+ png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp+1));
+ png_uint_16 g = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3));
+ png_uint_16 b = (png_uint_16)(((*(sp+4)) << 8) + *(sp+5));
+
+ if (r == trans_values->red && g == trans_values->green &&
+ b == trans_values->blue)
+ {
+ *sp = (png_byte)((background->red >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(background->red & 0xff);
+ *(sp + 2) = (png_byte)((background->green >> 8) & 0xff);
+ *(sp + 3) = (png_byte)(background->green & 0xff);
+ *(sp + 4) = (png_byte)((background->blue >> 8) & 0xff);
+ *(sp + 5) = (png_byte)(background->blue & 0xff);
+ }
+ }
+ }
+ }
+ break;
+ }
+
+ case PNG_COLOR_TYPE_GRAY_ALPHA:
+ {
+ if (row_info->bit_depth == 8)
+ {
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (gamma_to_1 != NULL && gamma_from_1 != NULL &&
+ gamma_table != NULL)
+ {
+ sp = row;
+ dp = row;
+ for (i = 0; i < row_width; i++, sp += 2, dp++)
+ {
+ png_uint_16 a = *(sp + 1);
+
+ if (a == 0xff)
+ {
+ *dp = gamma_table[*sp];
+ }
+ else if (a == 0)
+ {
+ /* Background is already in screen gamma */
+ *dp = (png_byte)background->gray;
+ }
+ else
+ {
+ png_byte v, w;
+
+ v = gamma_to_1[*sp];
+ png_composite(w, v, a, background_1->gray);
+ *dp = gamma_from_1[w];
+ }
+ }
+ }
+ else
+#endif
+ {
+ sp = row;
+ dp = row;
+ for (i = 0; i < row_width; i++, sp += 2, dp++)
+ {
+ png_byte a = *(sp + 1);
+
+ if (a == 0xff)
+ {
+ *dp = *sp;
+ }
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ else if (a == 0)
+ {
+ *dp = (png_byte)background->gray;
+ }
+ else
+ {
+ png_composite(*dp, *sp, a, background_1->gray);
+ }
+#else
+ *dp = (png_byte)background->gray;
+#endif
+ }
+ }
+ }
+ else /* if (png_ptr->bit_depth == 16) */
+ {
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (gamma_16 != NULL && gamma_16_from_1 != NULL &&
+ gamma_16_to_1 != NULL)
+ {
+ sp = row;
+ dp = row;
+ for (i = 0; i < row_width; i++, sp += 4, dp += 2)
+ {
+ png_uint_16 a = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3));
+
+ if (a == (png_uint_16)0xffff)
+ {
+ png_uint_16 v;
+
+ v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
+ *dp = (png_byte)((v >> 8) & 0xff);
+ *(dp + 1) = (png_byte)(v & 0xff);
+ }
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ else if (a == 0)
+#else
+ else
+#endif
+ {
+ /* Background is already in screen gamma */
+ *dp = (png_byte)((background->gray >> 8) & 0xff);
+ *(dp + 1) = (png_byte)(background->gray & 0xff);
+ }
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ else
+ {
+ png_uint_16 g, v, w;
+
+ g = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp];
+ png_composite_16(v, g, a, background_1->gray);
+ w = gamma_16_from_1[(v&0xff) >> gamma_shift][v >> 8];
+ *dp = (png_byte)((w >> 8) & 0xff);
+ *(dp + 1) = (png_byte)(w & 0xff);
+ }
+#endif
+ }
+ }
+ else
+#endif
+ {
+ sp = row;
+ dp = row;
+ for (i = 0; i < row_width; i++, sp += 4, dp += 2)
+ {
+ png_uint_16 a = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3));
+ if (a == (png_uint_16)0xffff)
+ {
+ png_memcpy(dp, sp, 2);
+ }
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ else if (a == 0)
+#else
+ else
+#endif
+ {
+ *dp = (png_byte)((background->gray >> 8) & 0xff);
+ *(dp + 1) = (png_byte)(background->gray & 0xff);
+ }
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ else
+ {
+ png_uint_16 g, v;
+
+ g = (png_uint_16)(((*sp) << 8) + *(sp + 1));
+ png_composite_16(v, g, a, background_1->gray);
+ *dp = (png_byte)((v >> 8) & 0xff);
+ *(dp + 1) = (png_byte)(v & 0xff);
+ }
+#endif
+ }
+ }
+ }
+ break;
+ }
+
+ case PNG_COLOR_TYPE_RGB_ALPHA:
+ {
+ if (row_info->bit_depth == 8)
+ {
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (gamma_to_1 != NULL && gamma_from_1 != NULL &&
+ gamma_table != NULL)
+ {
+ sp = row;
+ dp = row;
+ for (i = 0; i < row_width; i++, sp += 4, dp += 3)
+ {
+ png_byte a = *(sp + 3);
+
+ if (a == 0xff)
+ {
+ *dp = gamma_table[*sp];
+ *(dp + 1) = gamma_table[*(sp + 1)];
+ *(dp + 2) = gamma_table[*(sp + 2)];
+ }
+ else if (a == 0)
+ {
+ /* Background is already in screen gamma */
+ *dp = (png_byte)background->red;
+ *(dp + 1) = (png_byte)background->green;
+ *(dp + 2) = (png_byte)background->blue;
+ }
+ else
+ {
+ png_byte v, w;
+
+ v = gamma_to_1[*sp];
+ png_composite(w, v, a, background_1->red);
+ *dp = gamma_from_1[w];
+ v = gamma_to_1[*(sp + 1)];
+ png_composite(w, v, a, background_1->green);
+ *(dp + 1) = gamma_from_1[w];
+ v = gamma_to_1[*(sp + 2)];
+ png_composite(w, v, a, background_1->blue);
+ *(dp + 2) = gamma_from_1[w];
+ }
+ }
+ }
+ else
+#endif
+ {
+ sp = row;
+ dp = row;
+ for (i = 0; i < row_width; i++, sp += 4, dp += 3)
+ {
+ png_byte a = *(sp + 3);
+
+ if (a == 0xff)
+ {
+ *dp = *sp;
+ *(dp + 1) = *(sp + 1);
+ *(dp + 2) = *(sp + 2);
+ }
+ else if (a == 0)
+ {
+ *dp = (png_byte)background->red;
+ *(dp + 1) = (png_byte)background->green;
+ *(dp + 2) = (png_byte)background->blue;
+ }
+ else
+ {
+ png_composite(*dp, *sp, a, background->red);
+ png_composite(*(dp + 1), *(sp + 1), a,
+ background->green);
+ png_composite(*(dp + 2), *(sp + 2), a,
+ background->blue);
+ }
+ }
+ }
+ }
+ else /* if (row_info->bit_depth == 16) */
+ {
+#ifdef PNG_READ_GAMMA_SUPPORTED
+ if (gamma_16 != NULL && gamma_16_from_1 != NULL &&
+ gamma_16_to_1 != NULL)
+ {
+ sp = row;
+ dp = row;
+ for (i = 0; i < row_width; i++, sp += 8, dp += 6)
+ {
+ png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6))
+ << 8) + (png_uint_16)(*(sp + 7)));
+ if (a == (png_uint_16)0xffff)
+ {
+ png_uint_16 v;
+
+ v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
+ *dp = (png_byte)((v >> 8) & 0xff);
+ *(dp + 1) = (png_byte)(v & 0xff);
+ v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)];
+ *(dp + 2) = (png_byte)((v >> 8) & 0xff);
+ *(dp + 3) = (png_byte)(v & 0xff);
+ v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)];
+ *(dp + 4) = (png_byte)((v >> 8) & 0xff);
+ *(dp + 5) = (png_byte)(v & 0xff);
+ }
+ else if (a == 0)
+ {
+ /* Background is already in screen gamma */
+ *dp = (png_byte)((background->red >> 8) & 0xff);
+ *(dp + 1) = (png_byte)(background->red & 0xff);
+ *(dp + 2) = (png_byte)((background->green >> 8) & 0xff);
+ *(dp + 3) = (png_byte)(background->green & 0xff);
+ *(dp + 4) = (png_byte)((background->blue >> 8) & 0xff);
+ *(dp + 5) = (png_byte)(background->blue & 0xff);
+ }
+ else
+ {
+ png_uint_16 v, w, x;
+
+ v = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp];
+ png_composite_16(w, v, a, background_1->red);
+ x = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> 8];
+ *dp = (png_byte)((x >> 8) & 0xff);
+ *(dp + 1) = (png_byte)(x & 0xff);
+ v = gamma_16_to_1[*(sp + 3) >> gamma_shift][*(sp + 2)];
+ png_composite_16(w, v, a, background_1->green);
+ x = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> 8];
+ *(dp + 2) = (png_byte)((x >> 8) & 0xff);
+ *(dp + 3) = (png_byte)(x & 0xff);
+ v = gamma_16_to_1[*(sp + 5) >> gamma_shift][*(sp + 4)];
+ png_composite_16(w, v, a, background_1->blue);
+ x = gamma_16_from_1[(w & 0xff) >> gamma_shift][w >> 8];
+ *(dp + 4) = (png_byte)((x >> 8) & 0xff);
+ *(dp + 5) = (png_byte)(x & 0xff);
+ }
+ }
+ }
+ else
+#endif
+ {
+ sp = row;
+ dp = row;
+ for (i = 0; i < row_width; i++, sp += 8, dp += 6)
+ {
+ png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6))
+ << 8) + (png_uint_16)(*(sp + 7)));
+ if (a == (png_uint_16)0xffff)
+ {
+ png_memcpy(dp, sp, 6);
+ }
+ else if (a == 0)
+ {
+ *dp = (png_byte)((background->red >> 8) & 0xff);
+ *(dp + 1) = (png_byte)(background->red & 0xff);
+ *(dp + 2) = (png_byte)((background->green >> 8) & 0xff);
+ *(dp + 3) = (png_byte)(background->green & 0xff);
+ *(dp + 4) = (png_byte)((background->blue >> 8) & 0xff);
+ *(dp + 5) = (png_byte)(background->blue & 0xff);
+ }
+ else
+ {
+ png_uint_16 v;
+
+ png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1));
+ png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8)
+ + *(sp + 3));
+ png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8)
+ + *(sp + 5));
+
+ png_composite_16(v, r, a, background->red);
+ *dp = (png_byte)((v >> 8) & 0xff);
+ *(dp + 1) = (png_byte)(v & 0xff);
+ png_composite_16(v, g, a, background->green);
+ *(dp + 2) = (png_byte)((v >> 8) & 0xff);
+ *(dp + 3) = (png_byte)(v & 0xff);
+ png_composite_16(v, b, a, background->blue);
+ *(dp + 4) = (png_byte)((v >> 8) & 0xff);
+ *(dp + 5) = (png_byte)(v & 0xff);
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+
+ if (row_info->color_type & PNG_COLOR_MASK_ALPHA)
+ {
+ row_info->color_type &= ~PNG_COLOR_MASK_ALPHA;
+ row_info->channels--;
+ row_info->pixel_depth = (png_byte)(row_info->channels *
+ row_info->bit_depth);
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
+ }
+ }
+}
+#endif
+
+#ifdef PNG_READ_GAMMA_SUPPORTED
+/* Gamma correct the image, avoiding the alpha channel. Make sure
+ * you do this after you deal with the transparency issue on grayscale
+ * or RGB images. If your bit depth is 8, use gamma_table, if it
+ * is 16, use gamma_16_table and gamma_shift. Build these with
+ * build_gamma_table().
+ */
+void /* PRIVATE */
+png_do_gamma(png_row_infop row_info, png_bytep row,
+ png_bytep gamma_table, png_uint_16pp gamma_16_table,
+ int gamma_shift)
+{
+ png_bytep sp;
+ png_uint_32 i;
+ png_uint_32 row_width=row_info->width;
+
+ png_debug(1, "in png_do_gamma");
+
+ if (
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ ((row_info->bit_depth <= 8 && gamma_table != NULL) ||
+ (row_info->bit_depth == 16 && gamma_16_table != NULL)))
+ {
+ switch (row_info->color_type)
+ {
+ case PNG_COLOR_TYPE_RGB:
+ {
+ if (row_info->bit_depth == 8)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ *sp = gamma_table[*sp];
+ sp++;
+ *sp = gamma_table[*sp];
+ sp++;
+ *sp = gamma_table[*sp];
+ sp++;
+ }
+ }
+ else /* if (row_info->bit_depth == 16) */
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_uint_16 v;
+
+ v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
+ *sp = (png_byte)((v >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(v & 0xff);
+ sp += 2;
+ v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
+ *sp = (png_byte)((v >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(v & 0xff);
+ sp += 2;
+ v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
+ *sp = (png_byte)((v >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(v & 0xff);
+ sp += 2;
+ }
+ }
+ break;
+ }
+
+ case PNG_COLOR_TYPE_RGB_ALPHA:
+ {
+ if (row_info->bit_depth == 8)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ *sp = gamma_table[*sp];
+ sp++;
+ *sp = gamma_table[*sp];
+ sp++;
+ *sp = gamma_table[*sp];
+ sp++;
+ sp++;
+ }
+ }
+ else /* if (row_info->bit_depth == 16) */
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
+ *sp = (png_byte)((v >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(v & 0xff);
+ sp += 2;
+ v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
+ *sp = (png_byte)((v >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(v & 0xff);
+ sp += 2;
+ v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
+ *sp = (png_byte)((v >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(v & 0xff);
+ sp += 4;
+ }
+ }
+ break;
+ }
+
+ case PNG_COLOR_TYPE_GRAY_ALPHA:
+ {
+ if (row_info->bit_depth == 8)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ *sp = gamma_table[*sp];
+ sp += 2;
+ }
+ }
+ else /* if (row_info->bit_depth == 16) */
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
+ *sp = (png_byte)((v >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(v & 0xff);
+ sp += 4;
+ }
+ }
+ break;
+ }
+
+ case PNG_COLOR_TYPE_GRAY:
+ {
+ if (row_info->bit_depth == 2)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i += 4)
+ {
+ int a = *sp & 0xc0;
+ int b = *sp & 0x30;
+ int c = *sp & 0x0c;
+ int d = *sp & 0x03;
+
+ *sp = (png_byte)(
+ ((((int)gamma_table[a|(a>>2)|(a>>4)|(a>>6)]) ) & 0xc0)|
+ ((((int)gamma_table[(b<<2)|b|(b>>2)|(b>>4)])>>2) & 0x30)|
+ ((((int)gamma_table[(c<<4)|(c<<2)|c|(c>>2)])>>4) & 0x0c)|
+ ((((int)gamma_table[(d<<6)|(d<<4)|(d<<2)|d])>>6) ));
+ sp++;
+ }
+ }
+
+ if (row_info->bit_depth == 4)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i += 2)
+ {
+ int msb = *sp & 0xf0;
+ int lsb = *sp & 0x0f;
+
+ *sp = (png_byte)((((int)gamma_table[msb | (msb >> 4)]) & 0xf0)
+ | (((int)gamma_table[(lsb << 4) | lsb]) >> 4));
+ sp++;
+ }
+ }
+
+ else if (row_info->bit_depth == 8)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ *sp = gamma_table[*sp];
+ sp++;
+ }
+ }
+
+ else if (row_info->bit_depth == 16)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
+ *sp = (png_byte)((v >> 8) & 0xff);
+ *(sp + 1) = (png_byte)(v & 0xff);
+ sp += 2;
+ }
+ }
+ break;
+ }
+ }
+ }
+}
+#endif
+
+#ifdef PNG_READ_EXPAND_SUPPORTED
+/* Expands a palette row to an RGB or RGBA row depending
+ * upon whether you supply trans and num_trans.
+ */
+void /* PRIVATE */
+png_do_expand_palette(png_row_infop row_info, png_bytep row,
+ png_colorp palette, png_bytep trans, int num_trans)
+{
+ int shift, value;
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width=row_info->width;
+
+ png_debug(1, "in png_do_expand_palette");
+
+ if (
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ row_info->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ if (row_info->bit_depth < 8)
+ {
+ switch (row_info->bit_depth)
+ {
+ case 1:
+ {
+ sp = row + (png_size_t)((row_width - 1) >> 3);
+ dp = row + (png_size_t)row_width - 1;
+ shift = 7 - (int)((row_width + 7) & 0x07);
+ for (i = 0; i < row_width; i++)
+ {
+ if ((*sp >> shift) & 0x01)
+ *dp = 1;
+ else
+ *dp = 0;
+ if (shift == 7)
+ {
+ shift = 0;
+ sp--;
+ }
+ else
+ shift++;
+
+ dp--;
+ }
+ break;
+ }
+
+ case 2:
+ {
+ sp = row + (png_size_t)((row_width - 1) >> 2);
+ dp = row + (png_size_t)row_width - 1;
+ shift = (int)((3 - ((row_width + 3) & 0x03)) << 1);
+ for (i = 0; i < row_width; i++)
+ {
+ value = (*sp >> shift) & 0x03;
+ *dp = (png_byte)value;
+ if (shift == 6)
+ {
+ shift = 0;
+ sp--;
+ }
+ else
+ shift += 2;
+
+ dp--;
+ }
+ break;
+ }
+
+ case 4:
+ {
+ sp = row + (png_size_t)((row_width - 1) >> 1);
+ dp = row + (png_size_t)row_width - 1;
+ shift = (int)((row_width & 0x01) << 2);
+ for (i = 0; i < row_width; i++)
+ {
+ value = (*sp >> shift) & 0x0f;
+ *dp = (png_byte)value;
+ if (shift == 4)
+ {
+ shift = 0;
+ sp--;
+ }
+ else
+ shift += 4;
+
+ dp--;
+ }
+ break;
+ }
+ }
+ row_info->bit_depth = 8;
+ row_info->pixel_depth = 8;
+ row_info->rowbytes = row_width;
+ }
+ switch (row_info->bit_depth)
+ {
+ case 8:
+ {
+ if (trans != NULL)
+ {
+ sp = row + (png_size_t)row_width - 1;
+ dp = row + (png_size_t)(row_width << 2) - 1;
+
+ for (i = 0; i < row_width; i++)
+ {
+ if ((int)(*sp) >= num_trans)
+ *dp-- = 0xff;
+ else
+ *dp-- = trans[*sp];
+ *dp-- = palette[*sp].blue;
+ *dp-- = palette[*sp].green;
+ *dp-- = palette[*sp].red;
+ sp--;
+ }
+ row_info->bit_depth = 8;
+ row_info->pixel_depth = 32;
+ row_info->rowbytes = row_width * 4;
+ row_info->color_type = 6;
+ row_info->channels = 4;
+ }
+ else
+ {
+ sp = row + (png_size_t)row_width - 1;
+ dp = row + (png_size_t)(row_width * 3) - 1;
+
+ for (i = 0; i < row_width; i++)
+ {
+ *dp-- = palette[*sp].blue;
+ *dp-- = palette[*sp].green;
+ *dp-- = palette[*sp].red;
+ sp--;
+ }
+
+ row_info->bit_depth = 8;
+ row_info->pixel_depth = 24;
+ row_info->rowbytes = row_width * 3;
+ row_info->color_type = 2;
+ row_info->channels = 3;
+ }
+ break;
+ }
+ }
+ }
+}
+
+/* If the bit depth < 8, it is expanded to 8. Also, if the already
+ * expanded transparency value is supplied, an alpha channel is built.
+ */
+void /* PRIVATE */
+png_do_expand(png_row_infop row_info, png_bytep row,
+ png_color_16p trans_value)
+{
+ int shift, value;
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width=row_info->width;
+
+ png_debug(1, "in png_do_expand");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL)
+#endif
+ {
+ if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
+ {
+ png_uint_16 gray = (png_uint_16)(trans_value ? trans_value->gray : 0);
+
+ if (row_info->bit_depth < 8)
+ {
+ switch (row_info->bit_depth)
+ {
+ case 1:
+ {
+ gray = (png_uint_16)((gray&0x01)*0xff);
+ sp = row + (png_size_t)((row_width - 1) >> 3);
+ dp = row + (png_size_t)row_width - 1;
+ shift = 7 - (int)((row_width + 7) & 0x07);
+ for (i = 0; i < row_width; i++)
+ {
+ if ((*sp >> shift) & 0x01)
+ *dp = 0xff;
+ else
+ *dp = 0;
+ if (shift == 7)
+ {
+ shift = 0;
+ sp--;
+ }
+ else
+ shift++;
+
+ dp--;
+ }
+ break;
+ }
+
+ case 2:
+ {
+ gray = (png_uint_16)((gray&0x03)*0x55);
+ sp = row + (png_size_t)((row_width - 1) >> 2);
+ dp = row + (png_size_t)row_width - 1;
+ shift = (int)((3 - ((row_width + 3) & 0x03)) << 1);
+ for (i = 0; i < row_width; i++)
+ {
+ value = (*sp >> shift) & 0x03;
+ *dp = (png_byte)(value | (value << 2) | (value << 4) |
+ (value << 6));
+ if (shift == 6)
+ {
+ shift = 0;
+ sp--;
+ }
+ else
+ shift += 2;
+
+ dp--;
+ }
+ break;
+ }
+
+ case 4:
+ {
+ gray = (png_uint_16)((gray&0x0f)*0x11);
+ sp = row + (png_size_t)((row_width - 1) >> 1);
+ dp = row + (png_size_t)row_width - 1;
+ shift = (int)((1 - ((row_width + 1) & 0x01)) << 2);
+ for (i = 0; i < row_width; i++)
+ {
+ value = (*sp >> shift) & 0x0f;
+ *dp = (png_byte)(value | (value << 4));
+ if (shift == 4)
+ {
+ shift = 0;
+ sp--;
+ }
+ else
+ shift = 4;
+
+ dp--;
+ }
+ break;
+ }
+ }
+
+ row_info->bit_depth = 8;
+ row_info->pixel_depth = 8;
+ row_info->rowbytes = row_width;
+ }
+
+ if (trans_value != NULL)
+ {
+ if (row_info->bit_depth == 8)
+ {
+ gray = gray & 0xff;
+ sp = row + (png_size_t)row_width - 1;
+ dp = row + (png_size_t)(row_width << 1) - 1;
+ for (i = 0; i < row_width; i++)
+ {
+ if (*sp == gray)
+ *dp-- = 0;
+ else
+ *dp-- = 0xff;
+ *dp-- = *sp--;
+ }
+ }
+
+ else if (row_info->bit_depth == 16)
+ {
+ png_byte gray_high = (gray >> 8) & 0xff;
+ png_byte gray_low = gray & 0xff;
+ sp = row + row_info->rowbytes - 1;
+ dp = row + (row_info->rowbytes << 1) - 1;
+ for (i = 0; i < row_width; i++)
+ {
+ if (*(sp - 1) == gray_high && *(sp) == gray_low)
+ {
+ *dp-- = 0;
+ *dp-- = 0;
+ }
+ else
+ {
+ *dp-- = 0xff;
+ *dp-- = 0xff;
+ }
+ *dp-- = *sp--;
+ *dp-- = *sp--;
+ }
+ }
+
+ row_info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
+ row_info->channels = 2;
+ row_info->pixel_depth = (png_byte)(row_info->bit_depth << 1);
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth,
+ row_width);
+ }
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_RGB && trans_value)
+ {
+ if (row_info->bit_depth == 8)
+ {
+ png_byte red = trans_value->red & 0xff;
+ png_byte green = trans_value->green & 0xff;
+ png_byte blue = trans_value->blue & 0xff;
+ sp = row + (png_size_t)row_info->rowbytes - 1;
+ dp = row + (png_size_t)(row_width << 2) - 1;
+ for (i = 0; i < row_width; i++)
+ {
+ if (*(sp - 2) == red && *(sp - 1) == green && *(sp) == blue)
+ *dp-- = 0;
+ else
+ *dp-- = 0xff;
+ *dp-- = *sp--;
+ *dp-- = *sp--;
+ *dp-- = *sp--;
+ }
+ }
+ else if (row_info->bit_depth == 16)
+ {
+ png_byte red_high = (trans_value->red >> 8) & 0xff;
+ png_byte green_high = (trans_value->green >> 8) & 0xff;
+ png_byte blue_high = (trans_value->blue >> 8) & 0xff;
+ png_byte red_low = trans_value->red & 0xff;
+ png_byte green_low = trans_value->green & 0xff;
+ png_byte blue_low = trans_value->blue & 0xff;
+ sp = row + row_info->rowbytes - 1;
+ dp = row + (png_size_t)(row_width << 3) - 1;
+ for (i = 0; i < row_width; i++)
+ {
+ if (*(sp - 5) == red_high &&
+ *(sp - 4) == red_low &&
+ *(sp - 3) == green_high &&
+ *(sp - 2) == green_low &&
+ *(sp - 1) == blue_high &&
+ *(sp ) == blue_low)
+ {
+ *dp-- = 0;
+ *dp-- = 0;
+ }
+ else
+ {
+ *dp-- = 0xff;
+ *dp-- = 0xff;
+ }
+ *dp-- = *sp--;
+ *dp-- = *sp--;
+ *dp-- = *sp--;
+ *dp-- = *sp--;
+ *dp-- = *sp--;
+ *dp-- = *sp--;
+ }
+ }
+ row_info->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
+ row_info->channels = 4;
+ row_info->pixel_depth = (png_byte)(row_info->bit_depth << 2);
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
+ }
+ }
+}
+#endif
+
+#ifdef PNG_READ_DITHER_SUPPORTED
+void /* PRIVATE */
+png_do_dither(png_row_infop row_info, png_bytep row,
+ png_bytep palette_lookup, png_bytep dither_lookup)
+{
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width=row_info->width;
+
+ png_debug(1, "in png_do_dither");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL)
+#endif
+ {
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB &&
+ palette_lookup && row_info->bit_depth == 8)
+ {
+ int r, g, b, p;
+ sp = row;
+ dp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ r = *sp++;
+ g = *sp++;
+ b = *sp++;
+
+ /* This looks real messy, but the compiler will reduce
+ * it down to a reasonable formula. For example, with
+ * 5 bits per color, we get:
+ * p = (((r >> 3) & 0x1f) << 10) |
+ * (((g >> 3) & 0x1f) << 5) |
+ * ((b >> 3) & 0x1f);
+ */
+ p = (((r >> (8 - PNG_DITHER_RED_BITS)) &
+ ((1 << PNG_DITHER_RED_BITS) - 1)) <<
+ (PNG_DITHER_GREEN_BITS + PNG_DITHER_BLUE_BITS)) |
+ (((g >> (8 - PNG_DITHER_GREEN_BITS)) &
+ ((1 << PNG_DITHER_GREEN_BITS) - 1)) <<
+ (PNG_DITHER_BLUE_BITS)) |
+ ((b >> (8 - PNG_DITHER_BLUE_BITS)) &
+ ((1 << PNG_DITHER_BLUE_BITS) - 1));
+
+ *dp++ = palette_lookup[p];
+ }
+ row_info->color_type = PNG_COLOR_TYPE_PALETTE;
+ row_info->channels = 1;
+ row_info->pixel_depth = row_info->bit_depth;
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
+ palette_lookup != NULL && row_info->bit_depth == 8)
+ {
+ int r, g, b, p;
+ sp = row;
+ dp = row;
+ for (i = 0; i < row_width; i++)
+ {
+ r = *sp++;
+ g = *sp++;
+ b = *sp++;
+ sp++;
+
+ p = (((r >> (8 - PNG_DITHER_RED_BITS)) &
+ ((1 << PNG_DITHER_RED_BITS) - 1)) <<
+ (PNG_DITHER_GREEN_BITS + PNG_DITHER_BLUE_BITS)) |
+ (((g >> (8 - PNG_DITHER_GREEN_BITS)) &
+ ((1 << PNG_DITHER_GREEN_BITS) - 1)) <<
+ (PNG_DITHER_BLUE_BITS)) |
+ ((b >> (8 - PNG_DITHER_BLUE_BITS)) &
+ ((1 << PNG_DITHER_BLUE_BITS) - 1));
+
+ *dp++ = palette_lookup[p];
+ }
+ row_info->color_type = PNG_COLOR_TYPE_PALETTE;
+ row_info->channels = 1;
+ row_info->pixel_depth = row_info->bit_depth;
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_PALETTE &&
+ dither_lookup && row_info->bit_depth == 8)
+ {
+ sp = row;
+ for (i = 0; i < row_width; i++, sp++)
+ {
+ *sp = dither_lookup[*sp];
+ }
+ }
+ }
+}
+#endif
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+#ifdef PNG_READ_GAMMA_SUPPORTED
+static PNG_CONST int png_gamma_shift[] =
+ {0x10, 0x21, 0x42, 0x84, 0x110, 0x248, 0x550, 0xff0, 0x00};
+
+/* We build the 8- or 16-bit gamma tables here. Note that for 16-bit
+ * tables, we don't make a full table if we are reducing to 8-bit in
+ * the future. Note also how the gamma_16 tables are segmented so that
+ * we don't need to allocate > 64K chunks for a full 16-bit table.
+ *
+ * See the PNG extensions document for an integer algorithm for creating
+ * the gamma tables. Maybe we will implement that here someday.
+ *
+ * We should only reach this point if
+ *
+ * the file_gamma is known (i.e., the gAMA or sRGB chunk is present,
+ * or the application has provided a file_gamma)
+ *
+ * AND
+ * {
+ * the screen_gamma is known
+ * OR
+ *
+ * RGB_to_gray transformation is being performed
+ * }
+ *
+ * AND
+ * {
+ * the screen_gamma is different from the reciprocal of the
+ * file_gamma by more than the specified threshold
+ *
+ * OR
+ *
+ * a background color has been specified and the file_gamma
+ * and screen_gamma are not 1.0, within the specified threshold.
+ * }
+ */
+
+void /* PRIVATE */
+png_build_gamma_table(png_structp png_ptr)
+{
+ png_debug(1, "in png_build_gamma_table");
+
+ if (png_ptr->bit_depth <= 8)
+ {
+ int i;
+ double g;
+
+ if (png_ptr->screen_gamma > .000001)
+ g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
+
+ else
+ g = 1.0;
+
+ png_ptr->gamma_table = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)256);
+
+ for (i = 0; i < 256; i++)
+ {
+ png_ptr->gamma_table[i] = (png_byte)(pow((double)i / 255.0,
+ g) * 255.0 + .5);
+ }
+
+#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
+ defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
+ if (png_ptr->transformations & ((PNG_BACKGROUND) | PNG_RGB_TO_GRAY))
+ {
+
+ g = 1.0 / (png_ptr->gamma);
+
+ png_ptr->gamma_to_1 = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)256);
+
+ for (i = 0; i < 256; i++)
+ {
+ png_ptr->gamma_to_1[i] = (png_byte)(pow((double)i / 255.0,
+ g) * 255.0 + .5);
+ }
+
+
+ png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)256);
+
+ if (png_ptr->screen_gamma > 0.000001)
+ g = 1.0 / png_ptr->screen_gamma;
+
+ else
+ g = png_ptr->gamma; /* Probably doing rgb_to_gray */
+
+ for (i = 0; i < 256; i++)
+ {
+ png_ptr->gamma_from_1[i] = (png_byte)(pow((double)i / 255.0,
+ g) * 255.0 + .5);
+
+ }
+ }
+#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_RGB_TO_GRAY_SUPPORTED */
+ }
+ else
+ {
+ double g;
+ int i, j, shift, num;
+ int sig_bit;
+ png_uint_32 ig;
+
+ if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
+ {
+ sig_bit = (int)png_ptr->sig_bit.red;
+
+ if ((int)png_ptr->sig_bit.green > sig_bit)
+ sig_bit = png_ptr->sig_bit.green;
+
+ if ((int)png_ptr->sig_bit.blue > sig_bit)
+ sig_bit = png_ptr->sig_bit.blue;
+ }
+ else
+ {
+ sig_bit = (int)png_ptr->sig_bit.gray;
+ }
+
+ if (sig_bit > 0)
+ shift = 16 - sig_bit;
+
+ else
+ shift = 0;
+
+ if (png_ptr->transformations & PNG_16_TO_8)
+ {
+ if (shift < (16 - PNG_MAX_GAMMA_8))
+ shift = (16 - PNG_MAX_GAMMA_8);
+ }
+
+ if (shift > 8)
+ shift = 8;
+
+ if (shift < 0)
+ shift = 0;
+
+ png_ptr->gamma_shift = (png_byte)shift;
+
+ num = (1 << (8 - shift));
+
+ if (png_ptr->screen_gamma > .000001)
+ g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
+ else
+ g = 1.0;
+
+ png_ptr->gamma_16_table = (png_uint_16pp)png_calloc(png_ptr,
+ (png_uint_32)(num * png_sizeof(png_uint_16p)));
+
+ if (png_ptr->transformations & (PNG_16_TO_8 | PNG_BACKGROUND))
+ {
+ double fin, fout;
+ png_uint_32 last, max;
+
+ for (i = 0; i < num; i++)
+ {
+ png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(256 * png_sizeof(png_uint_16)));
+ }
+
+ g = 1.0 / g;
+ last = 0;
+ for (i = 0; i < 256; i++)
+ {
+ fout = ((double)i + 0.5) / 256.0;
+ fin = pow(fout, g);
+ max = (png_uint_32)(fin * (double)((png_uint_32)num << 8));
+ while (last <= max)
+ {
+ png_ptr->gamma_16_table[(int)(last & (0xff >> shift))]
+ [(int)(last >> (8 - shift))] = (png_uint_16)(
+ (png_uint_16)i | ((png_uint_16)i << 8));
+ last++;
+ }
+ }
+ while (last < ((png_uint_32)num << 8))
+ {
+ png_ptr->gamma_16_table[(int)(last & (0xff >> shift))]
+ [(int)(last >> (8 - shift))] = (png_uint_16)65535L;
+ last++;
+ }
+ }
+ else
+ {
+ for (i = 0; i < num; i++)
+ {
+ png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(256 * png_sizeof(png_uint_16)));
+
+ ig = (((png_uint_32)i * (png_uint_32)png_gamma_shift[shift]) >> 4);
+
+ for (j = 0; j < 256; j++)
+ {
+ png_ptr->gamma_16_table[i][j] =
+ (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
+ 65535.0, g) * 65535.0 + .5);
+ }
+ }
+ }
+
+#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
+ defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
+ if (png_ptr->transformations & (PNG_BACKGROUND | PNG_RGB_TO_GRAY))
+ {
+
+ g = 1.0 / (png_ptr->gamma);
+
+ png_ptr->gamma_16_to_1 = (png_uint_16pp)png_calloc(png_ptr,
+ (png_uint_32)(num * png_sizeof(png_uint_16p )));
+
+ for (i = 0; i < num; i++)
+ {
+ png_ptr->gamma_16_to_1[i] = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(256 * png_sizeof(png_uint_16)));
+
+ ig = (((png_uint_32)i *
+ (png_uint_32)png_gamma_shift[shift]) >> 4);
+ for (j = 0; j < 256; j++)
+ {
+ png_ptr->gamma_16_to_1[i][j] =
+ (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
+ 65535.0, g) * 65535.0 + .5);
+ }
+ }
+
+ if (png_ptr->screen_gamma > 0.000001)
+ g = 1.0 / png_ptr->screen_gamma;
+
+ else
+ g = png_ptr->gamma; /* Probably doing rgb_to_gray */
+
+ png_ptr->gamma_16_from_1 = (png_uint_16pp)png_calloc(png_ptr,
+ (png_uint_32)(num * png_sizeof(png_uint_16p)));
+
+ for (i = 0; i < num; i++)
+ {
+ png_ptr->gamma_16_from_1[i] = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(256 * png_sizeof(png_uint_16)));
+
+ ig = (((png_uint_32)i *
+ (png_uint_32)png_gamma_shift[shift]) >> 4);
+
+ for (j = 0; j < 256; j++)
+ {
+ png_ptr->gamma_16_from_1[i][j] =
+ (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
+ 65535.0, g) * 65535.0 + .5);
+ }
+ }
+ }
+#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_RGB_TO_GRAY_SUPPORTED */
+ }
+}
+#endif
+/* To do: install integer version of png_build_gamma_table here */
+#endif
+
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+/* Undoes intrapixel differencing */
+void /* PRIVATE */
+png_do_read_intrapixel(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_read_intrapixel");
+
+ if (
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ (row_info->color_type & PNG_COLOR_MASK_COLOR))
+ {
+ int bytes_per_pixel;
+ png_uint_32 row_width = row_info->width;
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep rp;
+ png_uint_32 i;
+
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB)
+ bytes_per_pixel = 3;
+
+ else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ bytes_per_pixel = 4;
+
+ else
+ return;
+
+ for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
+ {
+ *(rp) = (png_byte)((256 + *rp + *(rp+1))&0xff);
+ *(rp+2) = (png_byte)((256 + *(rp+2) + *(rp+1))&0xff);
+ }
+ }
+ else if (row_info->bit_depth == 16)
+ {
+ png_bytep rp;
+ png_uint_32 i;
+
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB)
+ bytes_per_pixel = 6;
+
+ else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ bytes_per_pixel = 8;
+
+ else
+ return;
+
+ for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
+ {
+ png_uint_32 s0 = (*(rp ) << 8) | *(rp + 1);
+ png_uint_32 s1 = (*(rp + 2) << 8) | *(rp + 3);
+ png_uint_32 s2 = (*(rp + 4) << 8) | *(rp + 5);
+ png_uint_32 red = (png_uint_32)((s0 + s1 + 65536L) & 0xffffL);
+ png_uint_32 blue = (png_uint_32)((s2 + s1 + 65536L) & 0xffffL);
+ *(rp ) = (png_byte)((red >> 8) & 0xff);
+ *(rp+1) = (png_byte)(red & 0xff);
+ *(rp+4) = (png_byte)((blue >> 8) & 0xff);
+ *(rp+5) = (png_byte)(blue & 0xff);
+ }
+ }
+ }
+}
+#endif /* PNG_MNG_FEATURES_SUPPORTED */
+#endif /* PNG_READ_SUPPORTED */
diff --git a/Externals/libpng/pngrutil.c b/Externals/libpng/pngrutil.c
index 4c3cd53813..77a01e5660 100644
--- a/Externals/libpng/pngrutil.c
+++ b/Externals/libpng/pngrutil.c
@@ -1,3616 +1,3386 @@
-
-/* pngrutil.c - utilities to read a PNG file
- *
- * Last changed in libpng 1.5.1 [February 3, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- * This file contains routines that are only called from within
- * libpng itself during the course of reading an image.
- */
-
-#include "pngpriv.h"
-
-#ifdef PNG_READ_SUPPORTED
-
-#define png_strtod(p,a,b) strtod(a,b)
-
-png_uint_32 PNGAPI
-png_get_uint_31(png_structp png_ptr, png_const_bytep buf)
-{
- png_uint_32 uval = png_get_uint_32(buf);
-
- if (uval > PNG_UINT_31_MAX)
- png_error(png_ptr, "PNG unsigned integer out of range");
-
- return (uval);
-}
-
-#if defined(PNG_READ_gAMA_SUPPORTED) || defined(PNG_READ_cHRM_SUPPORTED)
-/* The following is a variation on the above for use with the fixed
- * point values used for gAMA and cHRM. Instead of png_error it
- * issues a warning and returns (-1) - an invalid value because both
- * gAMA and cHRM use *unsigned* integers for fixed point values.
- */
-#define PNG_FIXED_ERROR (-1)
-
-static png_fixed_point /* PRIVATE */
-png_get_fixed_point(png_structp png_ptr, png_const_bytep buf)
-{
- png_uint_32 uval = png_get_uint_32(buf);
-
- if (uval <= PNG_UINT_31_MAX)
- return (png_fixed_point)uval; /* known to be in range */
-
- /* The caller can turn off the warning by passing NULL. */
- if (png_ptr != NULL)
- png_warning(png_ptr, "PNG fixed point integer out of range");
-
- return PNG_FIXED_ERROR;
-}
-#endif
-
-#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED
-/* NOTE: the read macros will obscure these definitions, so that if
- * PNG_USE_READ_MACROS is set the library will not use them internally,
- * but the APIs will still be available externally.
- *
- * The parentheses around "PNGAPI function_name" in the following three
- * functions are necessary because they allow the macros to co-exist with
- * these (unused but exported) functions.
- */
-
-/* Grab an unsigned 32-bit integer from a buffer in big-endian format. */
-png_uint_32 (PNGAPI
-png_get_uint_32)(png_const_bytep buf)
-{
- png_uint_32 uval =
- ((png_uint_32)(*(buf )) << 24) +
- ((png_uint_32)(*(buf + 1)) << 16) +
- ((png_uint_32)(*(buf + 2)) << 8) +
- ((png_uint_32)(*(buf + 3)) ) ;
-
- return uval;
-}
-
-/* Grab a signed 32-bit integer from a buffer in big-endian format. The
- * data is stored in the PNG file in two's complement format and there
- * is no guarantee that a 'png_int_32' is exactly 32 bits, therefore
- * the following code does a two's complement to native conversion.
- */
-png_int_32 (PNGAPI
-png_get_int_32)(png_const_bytep buf)
-{
- png_uint_32 uval = png_get_uint_32(buf);
- if ((uval & 0x80000000L) == 0) /* non-negative */
- return uval;
-
- uval = (uval ^ 0xffffffffL) + 1; /* 2's complement: -x = ~x+1 */
- return -(png_int_32)uval;
-}
-
-/* Grab an unsigned 16-bit integer from a buffer in big-endian format. */
-png_uint_16 (PNGAPI
-png_get_uint_16)(png_const_bytep buf)
-{
- /* ANSI-C requires an int value to accomodate at least 16 bits so this
- * works and allows the compiler not to worry about possible narrowing
- * on 32 bit systems. (Pre-ANSI systems did not make integers smaller
- * than 16 bits either.)
- */
- unsigned int val =
- ((unsigned int)(*buf) << 8) +
- ((unsigned int)(*(buf + 1)));
-
- return (png_uint_16)val;
-}
-
-#endif /* PNG_READ_INT_FUNCTIONS_SUPPORTED */
-
-/* Read and check the PNG file signature */
-void /* PRIVATE */
-png_read_sig(png_structp png_ptr, png_infop info_ptr)
-{
- png_size_t num_checked, num_to_check;
-
- /* Exit if the user application does not expect a signature. */
- if (png_ptr->sig_bytes >= 8)
- return;
-
- num_checked = png_ptr->sig_bytes;
- num_to_check = 8 - num_checked;
-
-#ifdef PNG_IO_STATE_SUPPORTED
- png_ptr->io_state = PNG_IO_READING | PNG_IO_SIGNATURE;
-#endif
-
- /* The signature must be serialized in a single I/O call. */
- png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check);
- png_ptr->sig_bytes = 8;
-
- if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check))
- {
- if (num_checked < 4 &&
- png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4))
- png_error(png_ptr, "Not a PNG file");
- else
- png_error(png_ptr, "PNG file corrupted by ASCII conversion");
- }
- if (num_checked < 3)
- png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
-}
-
-/* Read the chunk header (length + type name).
- * Put the type name into png_ptr->chunk_name, and return the length.
- */
-png_uint_32 /* PRIVATE */
-png_read_chunk_header(png_structp png_ptr)
-{
- png_byte buf[8];
- png_uint_32 length;
-
-#ifdef PNG_IO_STATE_SUPPORTED
- png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_HDR;
-#endif
-
- /* Read the length and the chunk name.
- * This must be performed in a single I/O call.
- */
- png_read_data(png_ptr, buf, 8);
- length = png_get_uint_31(png_ptr, buf);
-
- /* Put the chunk name into png_ptr->chunk_name. */
- png_memcpy(png_ptr->chunk_name, buf + 4, 4);
-
- png_debug2(0, "Reading %s chunk, length = %u",
- png_ptr->chunk_name, length);
-
- /* Reset the crc and run it over the chunk name. */
- png_reset_crc(png_ptr);
- png_calculate_crc(png_ptr, png_ptr->chunk_name, 4);
-
- /* Check to see if chunk name is valid. */
- png_check_chunk_name(png_ptr, png_ptr->chunk_name);
-
-#ifdef PNG_IO_STATE_SUPPORTED
- png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_DATA;
-#endif
-
- return length;
-}
-
-/* Read data, and (optionally) run it through the CRC. */
-void /* PRIVATE */
-png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
-{
- if (png_ptr == NULL)
- return;
-
- png_read_data(png_ptr, buf, length);
- png_calculate_crc(png_ptr, buf, length);
-}
-
-/* Optionally skip data and then check the CRC. Depending on whether we
- * are reading a ancillary or critical chunk, and how the program has set
- * things up, we may calculate the CRC on the data and print a message.
- * Returns '1' if there was a CRC error, '0' otherwise.
- */
-int /* PRIVATE */
-png_crc_finish(png_structp png_ptr, png_uint_32 skip)
-{
- png_size_t i;
- png_size_t istop = png_ptr->zbuf_size;
-
- for (i = (png_size_t)skip; i > istop; i -= istop)
- {
- png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
- }
-
- if (i)
- {
- png_crc_read(png_ptr, png_ptr->zbuf, i);
- }
-
- if (png_crc_error(png_ptr))
- {
- if (((png_ptr->chunk_name[0] & 0x20) && /* Ancillary */
- !(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) ||
- (!(png_ptr->chunk_name[0] & 0x20) && /* Critical */
- (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_USE)))
- {
- png_chunk_warning(png_ptr, "CRC error");
- }
-
- else
- {
- png_chunk_benign_error(png_ptr, "CRC error");
- return (0);
- }
-
- return (1);
- }
-
- return (0);
-}
-
-/* Compare the CRC stored in the PNG file with that calculated by libpng from
- * the data it has read thus far.
- */
-int /* PRIVATE */
-png_crc_error(png_structp png_ptr)
-{
- png_byte crc_bytes[4];
- png_uint_32 crc;
- int need_crc = 1;
-
- if (png_ptr->chunk_name[0] & 0x20) /* ancillary */
- {
- if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) ==
- (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN))
- need_crc = 0;
- }
-
- else /* critical */
- {
- if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE)
- need_crc = 0;
- }
-
-#ifdef PNG_IO_STATE_SUPPORTED
- png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_CRC;
-#endif
-
- /* The chunk CRC must be serialized in a single I/O call. */
- png_read_data(png_ptr, crc_bytes, 4);
-
- if (need_crc)
- {
- crc = png_get_uint_32(crc_bytes);
- return ((int)(crc != png_ptr->crc));
- }
-
- else
- return (0);
-}
-
-#if defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_READ_iTXt_SUPPORTED) || \
- defined(PNG_READ_iCCP_SUPPORTED)
-static png_size_t
-png_inflate(png_structp png_ptr, png_bytep data, png_size_t size,
- png_bytep output, png_size_t output_size)
-{
- png_size_t count = 0;
-
- /* zlib can't necessarily handle more than 65535 bytes at once (i.e. it can't
- * even necessarily handle 65536 bytes) because the type uInt is "16 bits or
- * more". Consequently it is necessary to chunk the input to zlib. This
- * code uses ZLIB_IO_MAX, from pngpriv.h, as the maximum (the maximum value
- * that can be stored in a uInt.) It is possible to set ZLIB_IO_MAX to a
- * lower value in pngpriv.h and this may sometimes have a performance
- * advantage, because it forces access of the input data to be separated from
- * at least some of the use by some period of time.
- */
- png_ptr->zstream.next_in = data;
- /* avail_in is set below from 'size' */
- png_ptr->zstream.avail_in = 0;
-
- while (1)
- {
- int ret, avail;
-
- /* The setting of 'avail_in' used to be outside the loop, by setting it
- * inside it is possible to chunk the input to zlib and simply rely on
- * zlib to advance the 'next_in' pointer. This allows arbitrary amounts o
- * data to be passed through zlib at the unavoidable cost of requiring a
- * window save (memcpy of up to 32768 output bytes) every ZLIB_IO_MAX
- * input bytes.
- */
- if (png_ptr->zstream.avail_in == 0 && size > 0)
- {
- if (size <= ZLIB_IO_MAX)
- {
- /* The value is less than ZLIB_IO_MAX so the cast is safe: */
- png_ptr->zstream.avail_in = (uInt)size;
- size = 0;
- }
-
- else
- {
- png_ptr->zstream.avail_in = ZLIB_IO_MAX;
- size -= ZLIB_IO_MAX;
- }
- }
-
- /* Reset the output buffer each time round - we empty it
- * after every inflate call.
- */
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = png_ptr->zbuf_size;
-
- ret = inflate(&png_ptr->zstream, Z_NO_FLUSH);
- avail = png_ptr->zbuf_size - png_ptr->zstream.avail_out;
-
- /* First copy/count any new output - but only if we didn't
- * get an error code.
- */
- if ((ret == Z_OK || ret == Z_STREAM_END) && avail > 0)
- {
- png_size_t space = avail; /* > 0, see above */
-
- if (output != 0 && output_size > count)
- {
- png_size_t copy = output_size - count;
-
- if (space < copy)
- copy = space;
-
- png_memcpy(output + count, png_ptr->zbuf, copy);
- }
- count += space;
- }
-
- if (ret == Z_OK)
- continue;
-
- /* Termination conditions - always reset the zstream, it
- * must be left in inflateInit state.
- */
- png_ptr->zstream.avail_in = 0;
- inflateReset(&png_ptr->zstream);
-
- if (ret == Z_STREAM_END)
- return count; /* NOTE: may be zero. */
-
- /* Now handle the error codes - the API always returns 0
- * and the error message is dumped into the uncompressed
- * buffer if available.
- */
- {
- PNG_CONST char *msg;
-#ifdef PNG_CONSOLE_IO_SUPPORTED
- char umsg[52];
-#endif
- if (png_ptr->zstream.msg != 0)
- msg = png_ptr->zstream.msg;
-
- else
- {
-#ifdef PNG_CONSOLE_IO_SUPPORTED
- switch (ret)
- {
- case Z_BUF_ERROR:
- msg = "Buffer error in compressed datastream in %s chunk";
- break;
-
- case Z_DATA_ERROR:
- msg = "Data error in compressed datastream in %s chunk";
- break;
-
- default:
- msg = "Incomplete compressed datastream in %s chunk";
- break;
- }
-
- png_snprintf(umsg, sizeof umsg, msg, png_ptr->chunk_name);
- msg = umsg;
-#else
- msg = "Damaged compressed datastream in chunk other than IDAT";
-#endif
- }
-
- png_warning(png_ptr, msg);
- }
-
- /* 0 means an error - notice that this code simply ignores
- * zero length compressed chunks as a result.
- */
- return 0;
- }
-}
-
-/*
- * Decompress trailing data in a chunk. The assumption is that chunkdata
- * points at an allocated area holding the contents of a chunk with a
- * trailing compressed part. What we get back is an allocated area
- * holding the original prefix part and an uncompressed version of the
- * trailing part (the malloc area passed in is freed).
- */
-void /* PRIVATE */
-png_decompress_chunk(png_structp png_ptr, int comp_type,
- png_size_t chunklength,
- png_size_t prefix_size, png_size_t *newlength)
-{
- /* The caller should guarantee this */
- if (prefix_size > chunklength)
- {
- /* The recovery is to delete the chunk. */
- png_warning(png_ptr, "invalid chunklength");
- prefix_size = 0; /* To delete everything */
- }
-
- else if (comp_type == PNG_COMPRESSION_TYPE_BASE)
- {
- png_size_t expanded_size = png_inflate(png_ptr,
- (png_bytep)(png_ptr->chunkdata + prefix_size),
- chunklength - prefix_size,
- 0, /*output*/
- 0); /*output size*/
-
- /* Now check the limits on this chunk - if the limit fails the
- * compressed data will be removed, the prefix will remain.
- */
-#ifdef PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED
- if (png_ptr->user_chunk_malloc_max &&
- (prefix_size + expanded_size >= png_ptr->user_chunk_malloc_max - 1))
-#else
-# ifdef PNG_USER_CHUNK_MALLOC_MAX
- if ((PNG_USER_CHUNK_MALLOC_MAX > 0) &&
- prefix_size + expanded_size >= PNG_USER_CHUNK_MALLOC_MAX - 1)
-# endif
-#endif
- png_warning(png_ptr, "Exceeded size limit while expanding chunk");
-
- /* If the size is zero either there was an error and a message
- * has already been output (warning) or the size really is zero
- * and we have nothing to do - the code will exit through the
- * error case below.
- */
-#if defined(PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED) || \
- defined(PNG_USER_CHUNK_MALLOC_MAX)
- else if (expanded_size > 0)
-#else
- if (expanded_size > 0)
-#endif
- {
- /* Success (maybe) - really uncompress the chunk. */
- png_size_t new_size = 0;
- png_charp text = png_malloc_warn(png_ptr,
- prefix_size + expanded_size + 1);
-
- if (text != NULL)
- {
- png_memcpy(text, png_ptr->chunkdata, prefix_size);
- new_size = png_inflate(png_ptr,
- (png_bytep)(png_ptr->chunkdata + prefix_size),
- chunklength - prefix_size,
- (png_bytep)(text + prefix_size), expanded_size);
- text[prefix_size + expanded_size] = 0; /* just in case */
-
- if (new_size == expanded_size)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = text;
- *newlength = prefix_size + expanded_size;
- return; /* The success return! */
- }
-
- png_warning(png_ptr, "png_inflate logic error");
- png_free(png_ptr, text);
- }
-
- else
- png_warning(png_ptr, "Not enough memory to decompress chunk");
- }
- }
-
- else /* if (comp_type != PNG_COMPRESSION_TYPE_BASE) */
- {
-#ifdef PNG_STDIO_SUPPORTED
- char umsg[50];
-
- png_snprintf(umsg, sizeof umsg,
- "Unknown zTXt compression type %d", comp_type);
- png_warning(png_ptr, umsg);
-#else
- png_warning(png_ptr, "Unknown zTXt compression type");
-#endif
-
- /* The recovery is to simply drop the data. */
- }
-
- /* Generic error return - leave the prefix, delete the compressed
- * data, reallocate the chunkdata to remove the potentially large
- * amount of compressed data.
- */
- {
- png_charp text = png_malloc_warn(png_ptr, prefix_size + 1);
-
- if (text != NULL)
- {
- if (prefix_size > 0)
- png_memcpy(text, png_ptr->chunkdata, prefix_size);
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = text;
-
- /* This is an extra zero in the 'uncompressed' part. */
- *(png_ptr->chunkdata + prefix_size) = 0x00;
- }
- /* Ignore a malloc error here - it is safe. */
- }
-
- *newlength = prefix_size;
-}
-#endif
-
-/* Read and check the IDHR chunk */
-void /* PRIVATE */
-png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte buf[13];
- png_uint_32 width, height;
- int bit_depth, color_type, compression_type, filter_type;
- int interlace_type;
-
- png_debug(1, "in png_handle_IHDR");
-
- if (png_ptr->mode & PNG_HAVE_IHDR)
- png_error(png_ptr, "Out of place IHDR");
-
- /* Check the length */
- if (length != 13)
- png_error(png_ptr, "Invalid IHDR chunk");
-
- png_ptr->mode |= PNG_HAVE_IHDR;
-
- png_crc_read(png_ptr, buf, 13);
- png_crc_finish(png_ptr, 0);
-
- width = png_get_uint_31(png_ptr, buf);
- height = png_get_uint_31(png_ptr, buf + 4);
- bit_depth = buf[8];
- color_type = buf[9];
- compression_type = buf[10];
- filter_type = buf[11];
- interlace_type = buf[12];
-
- /* Set internal variables */
- png_ptr->width = width;
- png_ptr->height = height;
- png_ptr->bit_depth = (png_byte)bit_depth;
- png_ptr->interlaced = (png_byte)interlace_type;
- png_ptr->color_type = (png_byte)color_type;
-#ifdef PNG_MNG_FEATURES_SUPPORTED
- png_ptr->filter_type = (png_byte)filter_type;
-#endif
- png_ptr->compression_type = (png_byte)compression_type;
-
- /* Find number of channels */
- switch (png_ptr->color_type)
- {
- default: /* invalid, png_set_IHDR calls png_error */
- case PNG_COLOR_TYPE_GRAY:
- case PNG_COLOR_TYPE_PALETTE:
- png_ptr->channels = 1;
- break;
-
- case PNG_COLOR_TYPE_RGB:
- png_ptr->channels = 3;
- break;
-
- case PNG_COLOR_TYPE_GRAY_ALPHA:
- png_ptr->channels = 2;
- break;
-
- case PNG_COLOR_TYPE_RGB_ALPHA:
- png_ptr->channels = 4;
- break;
- }
-
- /* Set up other useful info */
- png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth *
- png_ptr->channels);
- png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->width);
- png_debug1(3, "bit_depth = %d", png_ptr->bit_depth);
- png_debug1(3, "channels = %d", png_ptr->channels);
- png_debug1(3, "rowbytes = %lu", (unsigned long)png_ptr->rowbytes);
- png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth,
- color_type, interlace_type, compression_type, filter_type);
-}
-
-/* Read and check the palette */
-void /* PRIVATE */
-png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_color palette[PNG_MAX_PALETTE_LENGTH];
- int num, i;
-#ifdef PNG_POINTER_INDEXING_SUPPORTED
- png_colorp pal_ptr;
-#endif
-
- png_debug(1, "in png_handle_PLTE");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before PLTE");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid PLTE after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- png_error(png_ptr, "Duplicate PLTE chunk");
-
- png_ptr->mode |= PNG_HAVE_PLTE;
-
- if (!(png_ptr->color_type&PNG_COLOR_MASK_COLOR))
- {
- png_warning(png_ptr,
- "Ignoring PLTE chunk in grayscale PNG");
- png_crc_finish(png_ptr, length);
- return;
- }
-
-#ifndef PNG_READ_OPT_PLTE_SUPPORTED
- if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)
- {
- png_crc_finish(png_ptr, length);
- return;
- }
-#endif
-
- if (length > 3*PNG_MAX_PALETTE_LENGTH || length % 3)
- {
- if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)
- {
- png_warning(png_ptr, "Invalid palette chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else
- {
- png_error(png_ptr, "Invalid palette chunk");
- }
- }
-
- num = (int)length / 3;
-
-#ifdef PNG_POINTER_INDEXING_SUPPORTED
- for (i = 0, pal_ptr = palette; i < num; i++, pal_ptr++)
- {
- png_byte buf[3];
-
- png_crc_read(png_ptr, buf, 3);
- pal_ptr->red = buf[0];
- pal_ptr->green = buf[1];
- pal_ptr->blue = buf[2];
- }
-#else
- for (i = 0; i < num; i++)
- {
- png_byte buf[3];
-
- png_crc_read(png_ptr, buf, 3);
- /* Don't depend upon png_color being any order */
- palette[i].red = buf[0];
- palette[i].green = buf[1];
- palette[i].blue = buf[2];
- }
-#endif
-
- /* If we actually need the PLTE chunk (ie for a paletted image), we do
- * whatever the normal CRC configuration tells us. However, if we
- * have an RGB image, the PLTE can be considered ancillary, so
- * we will act as though it is.
- */
-#ifndef PNG_READ_OPT_PLTE_SUPPORTED
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
-#endif
- {
- png_crc_finish(png_ptr, 0);
- }
-
-#ifndef PNG_READ_OPT_PLTE_SUPPORTED
- else if (png_crc_error(png_ptr)) /* Only if we have a CRC error */
- {
- /* If we don't want to use the data from an ancillary chunk,
- * we have two options: an error abort, or a warning and we
- * ignore the data in this chunk (which should be OK, since
- * it's considered ancillary for a RGB or RGBA image).
- */
- if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_USE))
- {
- if (png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)
- {
- png_chunk_benign_error(png_ptr, "CRC error");
- }
-
- else
- {
- png_chunk_warning(png_ptr, "CRC error");
- return;
- }
- }
-
- /* Otherwise, we (optionally) emit a warning and use the chunk. */
- else if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN))
- {
- png_chunk_warning(png_ptr, "CRC error");
- }
- }
-#endif
-
- png_set_PLTE(png_ptr, info_ptr, palette, num);
-
-#ifdef PNG_READ_tRNS_SUPPORTED
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS))
- {
- if (png_ptr->num_trans > (png_uint_16)num)
- {
- png_warning(png_ptr, "Truncating incorrect tRNS chunk length");
- png_ptr->num_trans = (png_uint_16)num;
- }
-
- if (info_ptr->num_trans > (png_uint_16)num)
- {
- png_warning(png_ptr, "Truncating incorrect info tRNS chunk length");
- info_ptr->num_trans = (png_uint_16)num;
- }
- }
- }
-#endif
-
-}
-
-void /* PRIVATE */
-png_handle_IEND(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_debug(1, "in png_handle_IEND");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR) || !(png_ptr->mode & PNG_HAVE_IDAT))
- {
- png_error(png_ptr, "No image in file");
- }
-
- png_ptr->mode |= (PNG_AFTER_IDAT | PNG_HAVE_IEND);
-
- if (length != 0)
- {
- png_warning(png_ptr, "Incorrect IEND chunk length");
- }
-
- png_crc_finish(png_ptr, length);
-
- PNG_UNUSED(info_ptr) /* Quiet compiler warnings about unused info_ptr */
-}
-
-#ifdef PNG_READ_gAMA_SUPPORTED
-void /* PRIVATE */
-png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_fixed_point igamma;
- png_byte buf[4];
-
- png_debug(1, "in png_handle_gAMA");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before gAMA");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid gAMA after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- /* Should be an error, but we can cope with it */
- png_warning(png_ptr, "Out of place gAMA chunk");
-
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
-#ifdef PNG_READ_sRGB_SUPPORTED
- && !(info_ptr->valid & PNG_INFO_sRGB)
-#endif
- )
- {
- png_warning(png_ptr, "Duplicate gAMA chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length != 4)
- {
- png_warning(png_ptr, "Incorrect gAMA chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 4);
-
- if (png_crc_finish(png_ptr, 0))
- return;
-
- igamma = png_get_fixed_point(NULL, buf);
-
- /* Check for zero gamma or an error. */
- if (igamma <= 0)
- {
- png_warning(png_ptr,
- "Ignoring gAMA chunk with out of range gamma");
-
- return;
- }
-
-# ifdef PNG_READ_sRGB_SUPPORTED
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB))
- {
- if (PNG_OUT_OF_RANGE(igamma, 45500L, 500))
- {
- png_warning(png_ptr,
- "Ignoring incorrect gAMA value when sRGB is also present");
-
-# ifdef PNG_CONSOLE_IO_SUPPORTED
- fprintf(stderr, "gamma = (%d/100000)", (int)igamma);
-# endif
- return;
- }
- }
-# endif /* PNG_READ_sRGB_SUPPORTED */
-
-# ifdef PNG_READ_GAMMA_SUPPORTED
- /* Gamma correction on read is supported. */
- png_ptr->gamma = igamma;
-# endif
- /* And set the 'info' structure members. */
- png_set_gAMA_fixed(png_ptr, info_ptr, igamma);
-}
-#endif
-
-#ifdef PNG_READ_sBIT_SUPPORTED
-void /* PRIVATE */
-png_handle_sBIT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_size_t truelen;
- png_byte buf[4];
-
- png_debug(1, "in png_handle_sBIT");
-
- buf[0] = buf[1] = buf[2] = buf[3] = 0;
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before sBIT");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid sBIT after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- {
- /* Should be an error, but we can cope with it */
- png_warning(png_ptr, "Out of place sBIT chunk");
- }
-
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT))
- {
- png_warning(png_ptr, "Duplicate sBIT chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- truelen = 3;
-
- else
- truelen = (png_size_t)png_ptr->channels;
-
- if (length != truelen || length > 4)
- {
- png_warning(png_ptr, "Incorrect sBIT chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, truelen);
-
- if (png_crc_finish(png_ptr, 0))
- return;
-
- if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
- {
- png_ptr->sig_bit.red = buf[0];
- png_ptr->sig_bit.green = buf[1];
- png_ptr->sig_bit.blue = buf[2];
- png_ptr->sig_bit.alpha = buf[3];
- }
-
- else
- {
- png_ptr->sig_bit.gray = buf[0];
- png_ptr->sig_bit.red = buf[0];
- png_ptr->sig_bit.green = buf[0];
- png_ptr->sig_bit.blue = buf[0];
- png_ptr->sig_bit.alpha = buf[1];
- }
-
- png_set_sBIT(png_ptr, info_ptr, &(png_ptr->sig_bit));
-}
-#endif
-
-#ifdef PNG_READ_cHRM_SUPPORTED
-void /* PRIVATE */
-png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte buf[32];
- png_fixed_point x_white, y_white, x_red, y_red, x_green, y_green, x_blue,
- y_blue;
-
- png_debug(1, "in png_handle_cHRM");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before cHRM");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid cHRM after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- /* Should be an error, but we can cope with it */
- png_warning(png_ptr, "Missing PLTE before cHRM");
-
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)
-# ifdef PNG_READ_sRGB_SUPPORTED
- && !(info_ptr->valid & PNG_INFO_sRGB)
-# endif
- )
- {
- png_warning(png_ptr, "Duplicate cHRM chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length != 32)
- {
- png_warning(png_ptr, "Incorrect cHRM chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 32);
-
- if (png_crc_finish(png_ptr, 0))
- return;
-
- x_white = png_get_fixed_point(NULL, buf);
- y_white = png_get_fixed_point(NULL, buf + 4);
- x_red = png_get_fixed_point(NULL, buf + 8);
- y_red = png_get_fixed_point(NULL, buf + 12);
- x_green = png_get_fixed_point(NULL, buf + 16);
- y_green = png_get_fixed_point(NULL, buf + 20);
- x_blue = png_get_fixed_point(NULL, buf + 24);
- y_blue = png_get_fixed_point(NULL, buf + 28);
-
- if (x_white == PNG_FIXED_ERROR ||
- y_white == PNG_FIXED_ERROR ||
- x_red == PNG_FIXED_ERROR ||
- y_red == PNG_FIXED_ERROR ||
- x_green == PNG_FIXED_ERROR ||
- y_green == PNG_FIXED_ERROR ||
- x_blue == PNG_FIXED_ERROR ||
- y_blue == PNG_FIXED_ERROR)
- {
- png_warning(png_ptr, "Ignoring cHRM chunk with negative chromaticities");
- return;
- }
-
-#ifdef PNG_READ_sRGB_SUPPORTED
- if ((info_ptr != NULL) && (info_ptr->valid & PNG_INFO_sRGB))
- {
- if (PNG_OUT_OF_RANGE(x_white, 31270, 1000) ||
- PNG_OUT_OF_RANGE(y_white, 32900, 1000) ||
- PNG_OUT_OF_RANGE(x_red, 64000L, 1000) ||
- PNG_OUT_OF_RANGE(y_red, 33000, 1000) ||
- PNG_OUT_OF_RANGE(x_green, 30000, 1000) ||
- PNG_OUT_OF_RANGE(y_green, 60000L, 1000) ||
- PNG_OUT_OF_RANGE(x_blue, 15000, 1000) ||
- PNG_OUT_OF_RANGE(y_blue, 6000, 1000))
- {
- png_warning(png_ptr,
- "Ignoring incorrect cHRM value when sRGB is also present");
-
-#ifdef PNG_CONSOLE_IO_SUPPORTED
- fprintf(stderr, "wx=%d, wy=%d, rx=%d, ry=%d\n",
- x_white, y_white, x_red, y_red);
-
- fprintf(stderr, "gx=%d, gy=%d, bx=%d, by=%d\n",
- x_green, y_green, x_blue, y_blue);
-#endif /* PNG_CONSOLE_IO_SUPPORTED */
- }
- return;
- }
-#endif /* PNG_READ_sRGB_SUPPORTED */
-
- png_set_cHRM_fixed(png_ptr, info_ptr, x_white, y_white, x_red, y_red,
- x_green, y_green, x_blue, y_blue);
-}
-#endif
-
-#ifdef PNG_READ_sRGB_SUPPORTED
-void /* PRIVATE */
-png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- int intent;
- png_byte buf[1];
-
- png_debug(1, "in png_handle_sRGB");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before sRGB");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid sRGB after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- /* Should be an error, but we can cope with it */
- png_warning(png_ptr, "Out of place sRGB chunk");
-
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB))
- {
- png_warning(png_ptr, "Duplicate sRGB chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length != 1)
- {
- png_warning(png_ptr, "Incorrect sRGB chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 1);
-
- if (png_crc_finish(png_ptr, 0))
- return;
-
- intent = buf[0];
-
- /* Check for bad intent */
- if (intent >= PNG_sRGB_INTENT_LAST)
- {
- png_warning(png_ptr, "Unknown sRGB intent");
- return;
- }
-
-#if defined(PNG_READ_gAMA_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED)
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA))
- {
- if (PNG_OUT_OF_RANGE(info_ptr->gamma, 45500L, 500))
- {
- png_warning(png_ptr,
- "Ignoring incorrect gAMA value when sRGB is also present");
-#ifdef PNG_CONSOLE_IO_SUPPORTED
- fprintf(stderr, "incorrect gamma=(%d/100000)\n", info_ptr->gamma);
-#endif
- }
- }
-#endif /* PNG_READ_gAMA_SUPPORTED */
-
-#ifdef PNG_READ_cHRM_SUPPORTED
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
- if (PNG_OUT_OF_RANGE(info_ptr->x_white, 31270, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->y_white, 32900, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->x_red, 64000L, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->y_red, 33000, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->x_green, 30000, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->y_green, 60000L, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->x_blue, 15000, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->y_blue, 6000, 1000))
- {
- png_warning(png_ptr,
- "Ignoring incorrect cHRM value when sRGB is also present");
- }
-#endif /* PNG_READ_cHRM_SUPPORTED */
-
- png_set_sRGB_gAMA_and_cHRM(png_ptr, info_ptr, intent);
-}
-#endif /* PNG_READ_sRGB_SUPPORTED */
-
-#ifdef PNG_READ_iCCP_SUPPORTED
-void /* PRIVATE */
-png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-/* Note: this does not properly handle chunks that are > 64K under DOS */
-{
- png_byte compression_type;
- png_bytep pC;
- png_charp profile;
- png_uint_32 skip = 0;
- png_uint_32 profile_size;
- png_alloc_size_t profile_length;
- png_size_t slength, prefix_length, data_length;
-
- png_debug(1, "in png_handle_iCCP");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before iCCP");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid iCCP after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- /* Should be an error, but we can cope with it */
- png_warning(png_ptr, "Out of place iCCP chunk");
-
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP))
- {
- png_warning(png_ptr, "Duplicate iCCP chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
-#ifdef PNG_MAX_MALLOC_64K
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "iCCP chunk too large to fit in memory");
- skip = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = (png_charp)png_malloc(png_ptr, length + 1);
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, skip))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00;
-
- for (profile = png_ptr->chunkdata; *profile; profile++)
- /* Empty loop to find end of name */ ;
-
- ++profile;
-
- /* There should be at least one zero (the compression type byte)
- * following the separator, and we should be on it
- */
- if (profile >= png_ptr->chunkdata + slength - 1)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "Malformed iCCP chunk");
- return;
- }
-
- /* Compression_type should always be zero */
- compression_type = *profile++;
-
- if (compression_type)
- {
- png_warning(png_ptr, "Ignoring nonzero compression type in iCCP chunk");
- compression_type = 0x00; /* Reset it to zero (libpng-1.0.6 through 1.0.8
- wrote nonzero) */
- }
-
- prefix_length = profile - png_ptr->chunkdata;
- png_decompress_chunk(png_ptr, compression_type,
- slength, prefix_length, &data_length);
-
- profile_length = data_length - prefix_length;
-
- if (prefix_length > data_length || profile_length < 4)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "Profile size field missing from iCCP chunk");
- return;
- }
-
- /* Check the profile_size recorded in the first 32 bits of the ICC profile */
- pC = (png_bytep)(png_ptr->chunkdata + prefix_length);
- profile_size = ((*(pC )) << 24) |
- ((*(pC + 1)) << 16) |
- ((*(pC + 2)) << 8) |
- ((*(pC + 3)) );
-
- /* NOTE: the following guarantees that 'profile_length' fits into 32 bits,
- * because profile_size is a 32 bit value.
- */
- if (profile_size < profile_length)
- profile_length = profile_size;
-
- /* And the following guarantees that profile_size == profile_length. */
- if (profile_size > profile_length)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
-#ifdef PNG_STDIO_SUPPORTED
- {
- char umsg[80];
-
- png_snprintf2(umsg, 80,
- "Ignoring iCCP chunk with declared size = %u "
- "and actual length = %u",
- (unsigned int) profile_size,
- (unsigned int) profile_length);
- png_warning(png_ptr, umsg);
- }
-#else
- png_warning(png_ptr,
- "Ignoring iCCP chunk with uncompressed size mismatch");
-#endif
- return;
- }
-
- png_set_iCCP(png_ptr, info_ptr, png_ptr->chunkdata,
- compression_type, (png_bytep)png_ptr->chunkdata + prefix_length,
- profile_size);
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
-}
-#endif /* PNG_READ_iCCP_SUPPORTED */
-
-#ifdef PNG_READ_sPLT_SUPPORTED
-void /* PRIVATE */
-png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-/* Note: this does not properly handle chunks that are > 64K under DOS */
-{
- png_bytep entry_start;
- png_sPLT_t new_palette;
-#ifdef PNG_POINTER_INDEXING_SUPPORTED
- png_sPLT_entryp pp;
-#endif
- png_uint_32 data_length;
- int entry_size, i;
- png_uint_32 skip = 0;
- png_size_t slength;
- png_uint_32 dl;
- png_size_t max_dl;
-
- png_debug(1, "in png_handle_sPLT");
-
-#ifdef PNG_USER_LIMITS_SUPPORTED
-
- if (png_ptr->user_chunk_cache_max != 0)
- {
- if (png_ptr->user_chunk_cache_max == 1)
- {
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (--png_ptr->user_chunk_cache_max == 1)
- {
- png_warning(png_ptr, "No space in chunk cache for sPLT");
- png_crc_finish(png_ptr, length);
- return;
- }
- }
-#endif
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before sPLT");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid sPLT after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
-#ifdef PNG_MAX_MALLOC_64K
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "sPLT chunk too large to fit in memory");
- skip = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = (png_charp)png_malloc(png_ptr, length + 1);
-
- /* WARNING: this may break if size_t is less than 32 bits; it is assumed
- * that the PNG_MAX_MALLOC_64K test is enabled in this case, but this is a
- * potential breakage point if the types in pngconf.h aren't exactly right.
- */
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, skip))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00;
-
- for (entry_start = (png_bytep)png_ptr->chunkdata; *entry_start;
- entry_start++)
- /* Empty loop to find end of name */ ;
-
- ++entry_start;
-
- /* A sample depth should follow the separator, and we should be on it */
- if (entry_start > (png_bytep)png_ptr->chunkdata + slength - 2)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "malformed sPLT chunk");
- return;
- }
-
- new_palette.depth = *entry_start++;
- entry_size = (new_palette.depth == 8 ? 6 : 10);
- /* This must fit in a png_uint_32 because it is derived from the original
- * chunk data length (and use 'length', not 'slength' here for clarity -
- * they are guaranteed to be the same, see the tests above.)
- */
- data_length = length - (png_uint_32)(entry_start -
- (png_bytep)png_ptr->chunkdata);
-
- /* Integrity-check the data length */
- if (data_length % entry_size)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "sPLT chunk has bad length");
- return;
- }
-
- dl = (png_int_32)(data_length / entry_size);
- max_dl = PNG_SIZE_MAX / png_sizeof(png_sPLT_entry);
-
- if (dl > max_dl)
- {
- png_warning(png_ptr, "sPLT chunk too long");
- return;
- }
-
- new_palette.nentries = (png_int_32)(data_length / entry_size);
-
- new_palette.entries = (png_sPLT_entryp)png_malloc_warn(
- png_ptr, new_palette.nentries * png_sizeof(png_sPLT_entry));
-
- if (new_palette.entries == NULL)
- {
- png_warning(png_ptr, "sPLT chunk requires too much memory");
- return;
- }
-
-#ifdef PNG_POINTER_INDEXING_SUPPORTED
- for (i = 0; i < new_palette.nentries; i++)
- {
- pp = new_palette.entries + i;
-
- if (new_palette.depth == 8)
- {
- pp->red = *entry_start++;
- pp->green = *entry_start++;
- pp->blue = *entry_start++;
- pp->alpha = *entry_start++;
- }
-
- else
- {
- pp->red = png_get_uint_16(entry_start); entry_start += 2;
- pp->green = png_get_uint_16(entry_start); entry_start += 2;
- pp->blue = png_get_uint_16(entry_start); entry_start += 2;
- pp->alpha = png_get_uint_16(entry_start); entry_start += 2;
- }
-
- pp->frequency = png_get_uint_16(entry_start); entry_start += 2;
- }
-#else
- pp = new_palette.entries;
-
- for (i = 0; i < new_palette.nentries; i++)
- {
-
- if (new_palette.depth == 8)
- {
- pp[i].red = *entry_start++;
- pp[i].green = *entry_start++;
- pp[i].blue = *entry_start++;
- pp[i].alpha = *entry_start++;
- }
-
- else
- {
- pp[i].red = png_get_uint_16(entry_start); entry_start += 2;
- pp[i].green = png_get_uint_16(entry_start); entry_start += 2;
- pp[i].blue = png_get_uint_16(entry_start); entry_start += 2;
- pp[i].alpha = png_get_uint_16(entry_start); entry_start += 2;
- }
-
- pp->frequency = png_get_uint_16(entry_start); entry_start += 2;
- }
-#endif
-
- /* Discard all chunk data except the name and stash that */
- new_palette.name = png_ptr->chunkdata;
-
- png_set_sPLT(png_ptr, info_ptr, &new_palette, 1);
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_free(png_ptr, new_palette.entries);
-}
-#endif /* PNG_READ_sPLT_SUPPORTED */
-
-#ifdef PNG_READ_tRNS_SUPPORTED
-void /* PRIVATE */
-png_handle_tRNS(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte readbuf[PNG_MAX_PALETTE_LENGTH];
-
- png_debug(1, "in png_handle_tRNS");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before tRNS");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid tRNS after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS))
- {
- png_warning(png_ptr, "Duplicate tRNS chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY)
- {
- png_byte buf[2];
-
- if (length != 2)
- {
- png_warning(png_ptr, "Incorrect tRNS chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 2);
- png_ptr->num_trans = 1;
- png_ptr->trans_color.gray = png_get_uint_16(buf);
- }
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
- {
- png_byte buf[6];
-
- if (length != 6)
- {
- png_warning(png_ptr, "Incorrect tRNS chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, (png_size_t)length);
- png_ptr->num_trans = 1;
- png_ptr->trans_color.red = png_get_uint_16(buf);
- png_ptr->trans_color.green = png_get_uint_16(buf + 2);
- png_ptr->trans_color.blue = png_get_uint_16(buf + 4);
- }
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (!(png_ptr->mode & PNG_HAVE_PLTE))
- {
- /* Should be an error, but we can cope with it. */
- png_warning(png_ptr, "Missing PLTE before tRNS");
- }
-
- if (length > (png_uint_32)png_ptr->num_palette ||
- length > PNG_MAX_PALETTE_LENGTH)
- {
- png_warning(png_ptr, "Incorrect tRNS chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length == 0)
- {
- png_warning(png_ptr, "Zero length tRNS chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, readbuf, (png_size_t)length);
- png_ptr->num_trans = (png_uint_16)length;
- }
-
- else
- {
- png_warning(png_ptr, "tRNS chunk not allowed with alpha channel");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (png_crc_finish(png_ptr, 0))
- {
- png_ptr->num_trans = 0;
- return;
- }
-
- png_set_tRNS(png_ptr, info_ptr, readbuf, png_ptr->num_trans,
- &(png_ptr->trans_color));
-}
-#endif
-
-#ifdef PNG_READ_bKGD_SUPPORTED
-void /* PRIVATE */
-png_handle_bKGD(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_size_t truelen;
- png_byte buf[6];
-
- png_debug(1, "in png_handle_bKGD");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before bKGD");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid bKGD after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
- !(png_ptr->mode & PNG_HAVE_PLTE))
- {
- png_warning(png_ptr, "Missing PLTE before bKGD");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD))
- {
- png_warning(png_ptr, "Duplicate bKGD chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- truelen = 1;
-
- else if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
- truelen = 6;
-
- else
- truelen = 2;
-
- if (length != truelen)
- {
- png_warning(png_ptr, "Incorrect bKGD chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, truelen);
-
- if (png_crc_finish(png_ptr, 0))
- return;
-
- /* We convert the index value into RGB components so that we can allow
- * arbitrary RGB values for background when we have transparency, and
- * so it is easy to determine the RGB values of the background color
- * from the info_ptr struct.
- */
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_ptr->background.index = buf[0];
-
- if (info_ptr && info_ptr->num_palette)
- {
- if (buf[0] >= info_ptr->num_palette)
- {
- png_warning(png_ptr, "Incorrect bKGD chunk index value");
- return;
- }
-
- png_ptr->background.red =
- (png_uint_16)png_ptr->palette[buf[0]].red;
-
- png_ptr->background.green =
- (png_uint_16)png_ptr->palette[buf[0]].green;
-
- png_ptr->background.blue =
- (png_uint_16)png_ptr->palette[buf[0]].blue;
- }
- }
-
- else if (!(png_ptr->color_type & PNG_COLOR_MASK_COLOR)) /* GRAY */
- {
- png_ptr->background.red =
- png_ptr->background.green =
- png_ptr->background.blue =
- png_ptr->background.gray = png_get_uint_16(buf);
- }
-
- else
- {
- png_ptr->background.red = png_get_uint_16(buf);
- png_ptr->background.green = png_get_uint_16(buf + 2);
- png_ptr->background.blue = png_get_uint_16(buf + 4);
- }
-
- png_set_bKGD(png_ptr, info_ptr, &(png_ptr->background));
-}
-#endif
-
-#ifdef PNG_READ_hIST_SUPPORTED
-void /* PRIVATE */
-png_handle_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- unsigned int num, i;
- png_uint_16 readbuf[PNG_MAX_PALETTE_LENGTH];
-
- png_debug(1, "in png_handle_hIST");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before hIST");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid hIST after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (!(png_ptr->mode & PNG_HAVE_PLTE))
- {
- png_warning(png_ptr, "Missing PLTE before hIST");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST))
- {
- png_warning(png_ptr, "Duplicate hIST chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- num = length / 2 ;
-
- if (num != (unsigned int)png_ptr->num_palette || num >
- (unsigned int)PNG_MAX_PALETTE_LENGTH)
- {
- png_warning(png_ptr, "Incorrect hIST chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- for (i = 0; i < num; i++)
- {
- png_byte buf[2];
-
- png_crc_read(png_ptr, buf, 2);
- readbuf[i] = png_get_uint_16(buf);
- }
-
- if (png_crc_finish(png_ptr, 0))
- return;
-
- png_set_hIST(png_ptr, info_ptr, readbuf);
-}
-#endif
-
-#ifdef PNG_READ_pHYs_SUPPORTED
-void /* PRIVATE */
-png_handle_pHYs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte buf[9];
- png_uint_32 res_x, res_y;
- int unit_type;
-
- png_debug(1, "in png_handle_pHYs");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before pHYs");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid pHYs after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
- {
- png_warning(png_ptr, "Duplicate pHYs chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length != 9)
- {
- png_warning(png_ptr, "Incorrect pHYs chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 9);
-
- if (png_crc_finish(png_ptr, 0))
- return;
-
- res_x = png_get_uint_32(buf);
- res_y = png_get_uint_32(buf + 4);
- unit_type = buf[8];
- png_set_pHYs(png_ptr, info_ptr, res_x, res_y, unit_type);
-}
-#endif
-
-#ifdef PNG_READ_oFFs_SUPPORTED
-void /* PRIVATE */
-png_handle_oFFs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte buf[9];
- png_int_32 offset_x, offset_y;
- int unit_type;
-
- png_debug(1, "in png_handle_oFFs");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before oFFs");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid oFFs after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
- {
- png_warning(png_ptr, "Duplicate oFFs chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length != 9)
- {
- png_warning(png_ptr, "Incorrect oFFs chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 9);
-
- if (png_crc_finish(png_ptr, 0))
- return;
-
- offset_x = png_get_int_32(buf);
- offset_y = png_get_int_32(buf + 4);
- unit_type = buf[8];
- png_set_oFFs(png_ptr, info_ptr, offset_x, offset_y, unit_type);
-}
-#endif
-
-#ifdef PNG_READ_pCAL_SUPPORTED
-/* Read the pCAL chunk (described in the PNG Extensions document) */
-void /* PRIVATE */
-png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_int_32 X0, X1;
- png_byte type, nparams;
- png_charp buf, units, endptr;
- png_charpp params;
- png_size_t slength;
- int i;
-
- png_debug(1, "in png_handle_pCAL");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before pCAL");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid pCAL after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL))
- {
- png_warning(png_ptr, "Duplicate pCAL chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_debug1(2, "Allocating and reading pCAL chunk data (%u bytes)",
- length + 1);
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
-
- if (png_ptr->chunkdata == NULL)
- {
- png_warning(png_ptr, "No memory for pCAL purpose");
- return;
- }
-
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, 0))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00; /* Null terminate the last string */
-
- png_debug(3, "Finding end of pCAL purpose string");
- for (buf = png_ptr->chunkdata; *buf; buf++)
- /* Empty loop */ ;
-
- endptr = png_ptr->chunkdata + slength;
-
- /* We need to have at least 12 bytes after the purpose string
- * in order to get the parameter information.
- */
- if (endptr <= buf + 12)
- {
- png_warning(png_ptr, "Invalid pCAL data");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_debug(3, "Reading pCAL X0, X1, type, nparams, and units");
- X0 = png_get_int_32((png_bytep)buf+1);
- X1 = png_get_int_32((png_bytep)buf+5);
- type = buf[9];
- nparams = buf[10];
- units = buf + 11;
-
- png_debug(3, "Checking pCAL equation type and number of parameters");
- /* Check that we have the right number of parameters for known
- * equation types.
- */
- if ((type == PNG_EQUATION_LINEAR && nparams != 2) ||
- (type == PNG_EQUATION_BASE_E && nparams != 3) ||
- (type == PNG_EQUATION_ARBITRARY && nparams != 3) ||
- (type == PNG_EQUATION_HYPERBOLIC && nparams != 4))
- {
- png_warning(png_ptr, "Invalid pCAL parameters for equation type");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- else if (type >= PNG_EQUATION_LAST)
- {
- png_warning(png_ptr, "Unrecognized equation type for pCAL chunk");
- }
-
- for (buf = units; *buf; buf++)
- /* Empty loop to move past the units string. */ ;
-
- png_debug(3, "Allocating pCAL parameters array");
-
- params = (png_charpp)png_malloc_warn(png_ptr,
- (png_size_t)(nparams * png_sizeof(png_charp)));
-
- if (params == NULL)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "No memory for pCAL params");
- return;
- }
-
- /* Get pointers to the start of each parameter string. */
- for (i = 0; i < (int)nparams; i++)
- {
- buf++; /* Skip the null string terminator from previous parameter. */
-
- png_debug1(3, "Reading pCAL parameter %d", i);
-
- for (params[i] = buf; buf <= endptr && *buf != 0x00; buf++)
- /* Empty loop to move past each parameter string */ ;
-
- /* Make sure we haven't run out of data yet */
- if (buf > endptr)
- {
- png_warning(png_ptr, "Invalid pCAL data");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_free(png_ptr, params);
- return;
- }
- }
-
- png_set_pCAL(png_ptr, info_ptr, png_ptr->chunkdata, X0, X1, type, nparams,
- units, params);
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_free(png_ptr, params);
-}
-#endif
-
-#ifdef PNG_READ_sCAL_SUPPORTED
-/* Read the sCAL chunk */
-void /* PRIVATE */
-png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_size_t slength, i;
- int state;
-
- png_debug(1, "in png_handle_sCAL");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before sCAL");
-
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid sCAL after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sCAL))
- {
- png_warning(png_ptr, "Duplicate sCAL chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_debug1(2, "Allocating and reading sCAL chunk data (%u bytes)",
- length + 1);
-
- png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
-
- if (png_ptr->chunkdata == NULL)
- {
- png_warning(png_ptr, "Out of memory while processing sCAL chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
- png_ptr->chunkdata[slength] = 0x00; /* Null terminate the last string */
-
- if (png_crc_finish(png_ptr, 0))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- /* Validate the unit. */
- if (png_ptr->chunkdata[0] != 1 && png_ptr->chunkdata[0] != 2)
- {
- png_warning(png_ptr, "Invalid sCAL ignored: invalid unit");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- /* Validate the ASCII numbers, need two ASCII numbers separated by
- * a '\0' and they need to fit exactly in the chunk data.
- */
- i = 0;
- state = 0;
-
- if (png_ptr->chunkdata[1] == 45 /* negative width */ ||
- !png_check_fp_number(png_ptr->chunkdata, slength, &state, &i) ||
- i >= slength || png_ptr->chunkdata[i++] != 0)
- png_warning(png_ptr, "Invalid sCAL chunk ignored: bad width format");
-
- else
- {
- png_size_t heighti = i;
-
- if (png_ptr->chunkdata[i] == 45 /* negative height */ ||
- !png_check_fp_number(png_ptr->chunkdata, slength, &state, &i) ||
- i != slength)
- png_warning(png_ptr, "Invalid sCAL chunk ignored: bad height format");
-
- else
- /* This is the (only) success case. */
- png_set_sCAL_s(png_ptr, info_ptr, png_ptr->chunkdata[0],
- png_ptr->chunkdata+1, png_ptr->chunkdata+heighti);
- }
-
- /* Clean up - just free the temporarily allocated buffer. */
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
-}
-#endif
-
-#ifdef PNG_READ_tIME_SUPPORTED
-void /* PRIVATE */
-png_handle_tIME(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte buf[7];
- png_time mod_time;
-
- png_debug(1, "in png_handle_tIME");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Out of place tIME chunk");
-
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME))
- {
- png_warning(png_ptr, "Duplicate tIME chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- png_ptr->mode |= PNG_AFTER_IDAT;
-
- if (length != 7)
- {
- png_warning(png_ptr, "Incorrect tIME chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 7);
-
- if (png_crc_finish(png_ptr, 0))
- return;
-
- mod_time.second = buf[6];
- mod_time.minute = buf[5];
- mod_time.hour = buf[4];
- mod_time.day = buf[3];
- mod_time.month = buf[2];
- mod_time.year = png_get_uint_16(buf);
-
- png_set_tIME(png_ptr, info_ptr, &mod_time);
-}
-#endif
-
-#ifdef PNG_READ_tEXt_SUPPORTED
-/* Note: this does not properly handle chunks that are > 64K under DOS */
-void /* PRIVATE */
-png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_textp text_ptr;
- png_charp key;
- png_charp text;
- png_uint_32 skip = 0;
- png_size_t slength;
- int ret;
-
- png_debug(1, "in png_handle_tEXt");
-
-#ifdef PNG_USER_LIMITS_SUPPORTED
- if (png_ptr->user_chunk_cache_max != 0)
- {
- if (png_ptr->user_chunk_cache_max == 1)
- {
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (--png_ptr->user_chunk_cache_max == 1)
- {
- png_warning(png_ptr, "No space in chunk cache for tEXt");
- png_crc_finish(png_ptr, length);
- return;
- }
- }
-#endif
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before tEXt");
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- png_ptr->mode |= PNG_AFTER_IDAT;
-
-#ifdef PNG_MAX_MALLOC_64K
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "tEXt chunk too large to fit in memory");
- skip = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
-
- png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
-
- if (png_ptr->chunkdata == NULL)
- {
- png_warning(png_ptr, "No memory to process text chunk");
- return;
- }
-
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, skip))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- key = png_ptr->chunkdata;
-
- key[slength] = 0x00;
-
- for (text = key; *text; text++)
- /* Empty loop to find end of key */ ;
-
- if (text != key + slength)
- text++;
-
- text_ptr = (png_textp)png_malloc_warn(png_ptr,
- png_sizeof(png_text));
-
- if (text_ptr == NULL)
- {
- png_warning(png_ptr, "Not enough memory to process text chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- text_ptr->compression = PNG_TEXT_COMPRESSION_NONE;
- text_ptr->key = key;
- text_ptr->lang = NULL;
- text_ptr->lang_key = NULL;
- text_ptr->itxt_length = 0;
- text_ptr->text = text;
- text_ptr->text_length = png_strlen(text);
-
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_free(png_ptr, text_ptr);
-
- if (ret)
- png_warning(png_ptr, "Insufficient memory to process text chunk");
-}
-#endif
-
-#ifdef PNG_READ_zTXt_SUPPORTED
-/* Note: this does not correctly handle chunks that are > 64K under DOS */
-void /* PRIVATE */
-png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_textp text_ptr;
- png_charp text;
- int comp_type;
- int ret;
- png_size_t slength, prefix_len, data_len;
-
- png_debug(1, "in png_handle_zTXt");
-
-#ifdef PNG_USER_LIMITS_SUPPORTED
- if (png_ptr->user_chunk_cache_max != 0)
- {
- if (png_ptr->user_chunk_cache_max == 1)
- {
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (--png_ptr->user_chunk_cache_max == 1)
- {
- png_warning(png_ptr, "No space in chunk cache for zTXt");
- png_crc_finish(png_ptr, length);
- return;
- }
- }
-#endif
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before zTXt");
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- png_ptr->mode |= PNG_AFTER_IDAT;
-
-#ifdef PNG_MAX_MALLOC_64K
- /* We will no doubt have problems with chunks even half this size, but
- * there is no hard and fast rule to tell us where to stop.
- */
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "zTXt chunk too large to fit in memory");
- png_crc_finish(png_ptr, length);
- return;
- }
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
-
- if (png_ptr->chunkdata == NULL)
- {
- png_warning(png_ptr, "Out of memory processing zTXt chunk");
- return;
- }
-
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, 0))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00;
-
- for (text = png_ptr->chunkdata; *text; text++)
- /* Empty loop */ ;
-
- /* zTXt must have some text after the chunkdataword */
- if (text >= png_ptr->chunkdata + slength - 2)
- {
- png_warning(png_ptr, "Truncated zTXt chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- else
- {
- comp_type = *(++text);
-
- if (comp_type != PNG_TEXT_COMPRESSION_zTXt)
- {
- png_warning(png_ptr, "Unknown compression type in zTXt chunk");
- comp_type = PNG_TEXT_COMPRESSION_zTXt;
- }
-
- text++; /* Skip the compression_method byte */
- }
-
- prefix_len = text - png_ptr->chunkdata;
-
- png_decompress_chunk(png_ptr, comp_type,
- (png_size_t)length, prefix_len, &data_len);
-
- text_ptr = (png_textp)png_malloc_warn(png_ptr,
- png_sizeof(png_text));
-
- if (text_ptr == NULL)
- {
- png_warning(png_ptr, "Not enough memory to process zTXt chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- text_ptr->compression = comp_type;
- text_ptr->key = png_ptr->chunkdata;
- text_ptr->lang = NULL;
- text_ptr->lang_key = NULL;
- text_ptr->itxt_length = 0;
- text_ptr->text = png_ptr->chunkdata + prefix_len;
- text_ptr->text_length = data_len;
-
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
-
- png_free(png_ptr, text_ptr);
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
-
- if (ret)
- png_error(png_ptr, "Insufficient memory to store zTXt chunk");
-}
-#endif
-
-#ifdef PNG_READ_iTXt_SUPPORTED
-/* Note: this does not correctly handle chunks that are > 64K under DOS */
-void /* PRIVATE */
-png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_textp text_ptr;
- png_charp key, lang, text, lang_key;
- int comp_flag;
- int comp_type = 0;
- int ret;
- png_size_t slength, prefix_len, data_len;
-
- png_debug(1, "in png_handle_iTXt");
-
-#ifdef PNG_USER_LIMITS_SUPPORTED
- if (png_ptr->user_chunk_cache_max != 0)
- {
- if (png_ptr->user_chunk_cache_max == 1)
- {
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (--png_ptr->user_chunk_cache_max == 1)
- {
- png_warning(png_ptr, "No space in chunk cache for iTXt");
- png_crc_finish(png_ptr, length);
- return;
- }
- }
-#endif
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before iTXt");
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- png_ptr->mode |= PNG_AFTER_IDAT;
-
-#ifdef PNG_MAX_MALLOC_64K
- /* We will no doubt have problems with chunks even half this size, but
- * there is no hard and fast rule to tell us where to stop.
- */
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "iTXt chunk too large to fit in memory");
- png_crc_finish(png_ptr, length);
- return;
- }
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
-
- if (png_ptr->chunkdata == NULL)
- {
- png_warning(png_ptr, "No memory to process iTXt chunk");
- return;
- }
-
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, 0))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00;
-
- for (lang = png_ptr->chunkdata; *lang; lang++)
- /* Empty loop */ ;
-
- lang++; /* Skip NUL separator */
-
- /* iTXt must have a language tag (possibly empty), two compression bytes,
- * translated keyword (possibly empty), and possibly some text after the
- * keyword
- */
-
- if (lang >= png_ptr->chunkdata + slength - 3)
- {
- png_warning(png_ptr, "Truncated iTXt chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- else
- {
- comp_flag = *lang++;
- comp_type = *lang++;
- }
-
- for (lang_key = lang; *lang_key; lang_key++)
- /* Empty loop */ ;
-
- lang_key++; /* Skip NUL separator */
-
- if (lang_key >= png_ptr->chunkdata + slength)
- {
- png_warning(png_ptr, "Truncated iTXt chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- for (text = lang_key; *text; text++)
- /* Empty loop */ ;
-
- text++; /* Skip NUL separator */
-
- if (text >= png_ptr->chunkdata + slength)
- {
- png_warning(png_ptr, "Malformed iTXt chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- prefix_len = text - png_ptr->chunkdata;
-
- key=png_ptr->chunkdata;
-
- if (comp_flag)
- png_decompress_chunk(png_ptr, comp_type,
- (size_t)length, prefix_len, &data_len);
-
- else
- data_len = png_strlen(png_ptr->chunkdata + prefix_len);
-
- text_ptr = (png_textp)png_malloc_warn(png_ptr,
- png_sizeof(png_text));
-
- if (text_ptr == NULL)
- {
- png_warning(png_ptr, "Not enough memory to process iTXt chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- text_ptr->compression = (int)comp_flag + 1;
- text_ptr->lang_key = png_ptr->chunkdata + (lang_key - key);
- text_ptr->lang = png_ptr->chunkdata + (lang - key);
- text_ptr->itxt_length = data_len;
- text_ptr->text_length = 0;
- text_ptr->key = png_ptr->chunkdata;
- text_ptr->text = png_ptr->chunkdata + prefix_len;
-
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
-
- png_free(png_ptr, text_ptr);
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
-
- if (ret)
- png_error(png_ptr, "Insufficient memory to store iTXt chunk");
-}
-#endif
-
-/* This function is called when we haven't found a handler for a
- * chunk. If there isn't a problem with the chunk itself (ie bad
- * chunk name, CRC, or a critical chunk), the chunk is silently ignored
- * -- unless the PNG_FLAG_UNKNOWN_CHUNKS_SUPPORTED flag is on in which
- * case it will be saved away to be written out later.
- */
-void /* PRIVATE */
-png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_uint_32 skip = 0;
-
- png_debug(1, "in png_handle_unknown");
-
-#ifdef PNG_USER_LIMITS_SUPPORTED
- if (png_ptr->user_chunk_cache_max != 0)
- {
- if (png_ptr->user_chunk_cache_max == 1)
- {
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (--png_ptr->user_chunk_cache_max == 1)
- {
- png_warning(png_ptr, "No space in chunk cache for unknown chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
- }
-#endif
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- PNG_IDAT;
-
- if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) /* Not an IDAT */
- png_ptr->mode |= PNG_AFTER_IDAT;
- }
-
- if (!(png_ptr->chunk_name[0] & 0x20))
- {
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
- if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
- PNG_HANDLE_CHUNK_ALWAYS
-#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
- && png_ptr->read_user_chunk_fn == NULL
-#endif
- )
-#endif
- png_chunk_error(png_ptr, "unknown critical chunk");
- }
-
-#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
- if ((png_ptr->flags & PNG_FLAG_KEEP_UNKNOWN_CHUNKS)
-#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
- || (png_ptr->read_user_chunk_fn != NULL)
-#endif
- )
- {
-#ifdef PNG_MAX_MALLOC_64K
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "unknown chunk too large to fit in memory");
- skip = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
-
- png_memcpy((png_charp)png_ptr->unknown_chunk.name,
- (png_charp)png_ptr->chunk_name,
- png_sizeof(png_ptr->unknown_chunk.name));
-
- png_ptr->unknown_chunk.name[png_sizeof(png_ptr->unknown_chunk.name)-1]
- = '\0';
-
- png_ptr->unknown_chunk.size = (png_size_t)length;
-
- if (length == 0)
- png_ptr->unknown_chunk.data = NULL;
-
- else
- {
- png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr, length);
- png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
- }
-
-#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
- if (png_ptr->read_user_chunk_fn != NULL)
- {
- /* Callback to user unknown chunk handler */
- int ret;
-
- ret = (*(png_ptr->read_user_chunk_fn))
- (png_ptr, &png_ptr->unknown_chunk);
-
- if (ret < 0)
- png_chunk_error(png_ptr, "error in user chunk");
-
- if (ret == 0)
- {
- if (!(png_ptr->chunk_name[0] & 0x20))
- {
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
- if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
- PNG_HANDLE_CHUNK_ALWAYS)
-#endif
- png_chunk_error(png_ptr, "unknown critical chunk");
- }
-
- png_set_unknown_chunks(png_ptr, info_ptr,
- &png_ptr->unknown_chunk, 1);
- }
- }
-
- else
-#endif
- png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1);
-
- png_free(png_ptr, png_ptr->unknown_chunk.data);
- png_ptr->unknown_chunk.data = NULL;
- }
-
- else
-#endif
- skip = length;
-
- png_crc_finish(png_ptr, skip);
-
-#ifndef PNG_READ_USER_CHUNKS_SUPPORTED
- PNG_UNUSED(info_ptr) /* Quiet compiler warnings about unused info_ptr */
-#endif
-}
-
-/* This function is called to verify that a chunk name is valid.
- * This function can't have the "critical chunk check" incorporated
- * into it, since in the future we will need to be able to call user
- * functions to handle unknown critical chunks after we check that
- * the chunk name itself is valid.
- */
-
-#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97))
-
-void /* PRIVATE */
-png_check_chunk_name(png_structp png_ptr, png_const_bytep chunk_name)
-{
- png_debug(1, "in png_check_chunk_name");
- if (isnonalpha(chunk_name[0]) || isnonalpha(chunk_name[1]) ||
- isnonalpha(chunk_name[2]) || isnonalpha(chunk_name[3]))
- {
- png_chunk_error(png_ptr, "invalid chunk type");
- }
-}
-
-/* Combines the row recently read in with the existing pixels in the
- * row. This routine takes care of alpha and transparency if requested.
- * This routine also handles the two methods of progressive display
- * of interlaced images, depending on the mask value.
- * The mask value describes which pixels are to be combined with
- * the row. The pattern always repeats every 8 pixels, so just 8
- * bits are needed. A one indicates the pixel is to be combined,
- * a zero indicates the pixel is to be skipped. This is in addition
- * to any alpha or transparency value associated with the pixel. If
- * you want all pixels to be combined, pass 0xff (255) in mask.
- */
-
-void /* PRIVATE */
-png_combine_row(png_structp png_ptr, png_bytep row, int mask)
-{
- png_debug(1, "in png_combine_row");
-
- if (mask == 0xff)
- {
- png_memcpy(row, png_ptr->row_buf + 1,
- PNG_ROWBYTES(png_ptr->row_info.pixel_depth, png_ptr->width));
- }
-
- else
- {
- switch (png_ptr->row_info.pixel_depth)
- {
- case 1:
- {
- png_bytep sp = png_ptr->row_buf + 1;
- png_bytep dp = row;
- int s_inc, s_start, s_end;
- int m = 0x80;
- int shift;
- png_uint_32 i;
- png_uint_32 row_width = png_ptr->width;
-
-#ifdef PNG_READ_PACKSWAP_SUPPORTED
- if (png_ptr->transformations & PNG_PACKSWAP)
- {
- s_start = 0;
- s_end = 7;
- s_inc = 1;
- }
-
- else
-#endif
- {
- s_start = 7;
- s_end = 0;
- s_inc = -1;
- }
-
- shift = s_start;
-
- for (i = 0; i < row_width; i++)
- {
- if (m & mask)
- {
- int value;
-
- value = (*sp >> shift) & 0x01;
- *dp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff);
- *dp |= (png_byte)(value << shift);
- }
-
- if (shift == s_end)
- {
- shift = s_start;
- sp++;
- dp++;
- }
-
- else
- shift += s_inc;
-
- if (m == 1)
- m = 0x80;
-
- else
- m >>= 1;
- }
- break;
- }
-
- case 2:
- {
- png_bytep sp = png_ptr->row_buf + 1;
- png_bytep dp = row;
- int s_start, s_end, s_inc;
- int m = 0x80;
- int shift;
- png_uint_32 i;
- png_uint_32 row_width = png_ptr->width;
- int value;
-
-#ifdef PNG_READ_PACKSWAP_SUPPORTED
- if (png_ptr->transformations & PNG_PACKSWAP)
- {
- s_start = 0;
- s_end = 6;
- s_inc = 2;
- }
-
- else
-#endif
- {
- s_start = 6;
- s_end = 0;
- s_inc = -2;
- }
-
- shift = s_start;
-
- for (i = 0; i < row_width; i++)
- {
- if (m & mask)
- {
- value = (*sp >> shift) & 0x03;
- *dp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
- *dp |= (png_byte)(value << shift);
- }
-
- if (shift == s_end)
- {
- shift = s_start;
- sp++;
- dp++;
- }
-
- else
- shift += s_inc;
-
- if (m == 1)
- m = 0x80;
-
- else
- m >>= 1;
- }
- break;
- }
-
- case 4:
- {
- png_bytep sp = png_ptr->row_buf + 1;
- png_bytep dp = row;
- int s_start, s_end, s_inc;
- int m = 0x80;
- int shift;
- png_uint_32 i;
- png_uint_32 row_width = png_ptr->width;
- int value;
-
-#ifdef PNG_READ_PACKSWAP_SUPPORTED
- if (png_ptr->transformations & PNG_PACKSWAP)
- {
- s_start = 0;
- s_end = 4;
- s_inc = 4;
- }
-
- else
-#endif
- {
- s_start = 4;
- s_end = 0;
- s_inc = -4;
- }
- shift = s_start;
-
- for (i = 0; i < row_width; i++)
- {
- if (m & mask)
- {
- value = (*sp >> shift) & 0xf;
- *dp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
- *dp |= (png_byte)(value << shift);
- }
-
- if (shift == s_end)
- {
- shift = s_start;
- sp++;
- dp++;
- }
-
- else
- shift += s_inc;
-
- if (m == 1)
- m = 0x80;
-
- else
- m >>= 1;
- }
- break;
- }
-
- default:
- {
- png_bytep sp = png_ptr->row_buf + 1;
- png_bytep dp = row;
- png_size_t pixel_bytes = (png_ptr->row_info.pixel_depth >> 3);
- png_uint_32 i;
- png_uint_32 row_width = png_ptr->width;
- png_byte m = 0x80;
-
- for (i = 0; i < row_width; i++)
- {
- if (m & mask)
- {
- png_memcpy(dp, sp, pixel_bytes);
- }
-
- sp += pixel_bytes;
- dp += pixel_bytes;
-
- if (m == 1)
- m = 0x80;
-
- else
- m >>= 1;
- }
- break;
- }
- }
- }
-}
-
-#ifdef PNG_READ_INTERLACING_SUPPORTED
-void /* PRIVATE */
-png_do_read_interlace(png_structp png_ptr)
-{
- png_row_infop row_info = &(png_ptr->row_info);
- png_bytep row = png_ptr->row_buf + 1;
- int pass = png_ptr->pass;
- png_uint_32 transformations = png_ptr->transformations;
- /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
- /* Offset to next interlace block */
- PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
-
- png_debug(1, "in png_do_read_interlace");
- if (row != NULL && row_info != NULL)
- {
- png_uint_32 final_width;
-
- final_width = row_info->width * png_pass_inc[pass];
-
- switch (row_info->pixel_depth)
- {
- case 1:
- {
- png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 3);
- png_bytep dp = row + (png_size_t)((final_width - 1) >> 3);
- int sshift, dshift;
- int s_start, s_end, s_inc;
- int jstop = png_pass_inc[pass];
- png_byte v;
- png_uint_32 i;
- int j;
-
-#ifdef PNG_READ_PACKSWAP_SUPPORTED
- if (transformations & PNG_PACKSWAP)
- {
- sshift = (int)((row_info->width + 7) & 0x07);
- dshift = (int)((final_width + 7) & 0x07);
- s_start = 7;
- s_end = 0;
- s_inc = -1;
- }
-
- else
-#endif
- {
- sshift = 7 - (int)((row_info->width + 7) & 0x07);
- dshift = 7 - (int)((final_width + 7) & 0x07);
- s_start = 0;
- s_end = 7;
- s_inc = 1;
- }
-
- for (i = 0; i < row_info->width; i++)
- {
- v = (png_byte)((*sp >> sshift) & 0x01);
- for (j = 0; j < jstop; j++)
- {
- *dp &= (png_byte)((0x7f7f >> (7 - dshift)) & 0xff);
- *dp |= (png_byte)(v << dshift);
-
- if (dshift == s_end)
- {
- dshift = s_start;
- dp--;
- }
-
- else
- dshift += s_inc;
- }
-
- if (sshift == s_end)
- {
- sshift = s_start;
- sp--;
- }
-
- else
- sshift += s_inc;
- }
- break;
- }
-
- case 2:
- {
- png_bytep sp = row + (png_uint_32)((row_info->width - 1) >> 2);
- png_bytep dp = row + (png_uint_32)((final_width - 1) >> 2);
- int sshift, dshift;
- int s_start, s_end, s_inc;
- int jstop = png_pass_inc[pass];
- png_uint_32 i;
-
-#ifdef PNG_READ_PACKSWAP_SUPPORTED
- if (transformations & PNG_PACKSWAP)
- {
- sshift = (int)(((row_info->width + 3) & 0x03) << 1);
- dshift = (int)(((final_width + 3) & 0x03) << 1);
- s_start = 6;
- s_end = 0;
- s_inc = -2;
- }
-
- else
-#endif
- {
- sshift = (int)((3 - ((row_info->width + 3) & 0x03)) << 1);
- dshift = (int)((3 - ((final_width + 3) & 0x03)) << 1);
- s_start = 0;
- s_end = 6;
- s_inc = 2;
- }
-
- for (i = 0; i < row_info->width; i++)
- {
- png_byte v;
- int j;
-
- v = (png_byte)((*sp >> sshift) & 0x03);
- for (j = 0; j < jstop; j++)
- {
- *dp &= (png_byte)((0x3f3f >> (6 - dshift)) & 0xff);
- *dp |= (png_byte)(v << dshift);
-
- if (dshift == s_end)
- {
- dshift = s_start;
- dp--;
- }
-
- else
- dshift += s_inc;
- }
-
- if (sshift == s_end)
- {
- sshift = s_start;
- sp--;
- }
-
- else
- sshift += s_inc;
- }
- break;
- }
-
- case 4:
- {
- png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 1);
- png_bytep dp = row + (png_size_t)((final_width - 1) >> 1);
- int sshift, dshift;
- int s_start, s_end, s_inc;
- png_uint_32 i;
- int jstop = png_pass_inc[pass];
-
-#ifdef PNG_READ_PACKSWAP_SUPPORTED
- if (transformations & PNG_PACKSWAP)
- {
- sshift = (int)(((row_info->width + 1) & 0x01) << 2);
- dshift = (int)(((final_width + 1) & 0x01) << 2);
- s_start = 4;
- s_end = 0;
- s_inc = -4;
- }
-
- else
-#endif
- {
- sshift = (int)((1 - ((row_info->width + 1) & 0x01)) << 2);
- dshift = (int)((1 - ((final_width + 1) & 0x01)) << 2);
- s_start = 0;
- s_end = 4;
- s_inc = 4;
- }
-
- for (i = 0; i < row_info->width; i++)
- {
- png_byte v = (png_byte)((*sp >> sshift) & 0xf);
- int j;
-
- for (j = 0; j < jstop; j++)
- {
- *dp &= (png_byte)((0xf0f >> (4 - dshift)) & 0xff);
- *dp |= (png_byte)(v << dshift);
-
- if (dshift == s_end)
- {
- dshift = s_start;
- dp--;
- }
-
- else
- dshift += s_inc;
- }
-
- if (sshift == s_end)
- {
- sshift = s_start;
- sp--;
- }
-
- else
- sshift += s_inc;
- }
- break;
- }
- default:
- {
- png_size_t pixel_bytes = (row_info->pixel_depth >> 3);
-
- png_bytep sp = row + (png_size_t)(row_info->width - 1)
- * pixel_bytes;
-
- png_bytep dp = row + (png_size_t)(final_width - 1) * pixel_bytes;
-
- int jstop = png_pass_inc[pass];
- png_uint_32 i;
-
- for (i = 0; i < row_info->width; i++)
- {
- png_byte v[8];
- int j;
-
- png_memcpy(v, sp, pixel_bytes);
-
- for (j = 0; j < jstop; j++)
- {
- png_memcpy(dp, v, pixel_bytes);
- dp -= pixel_bytes;
- }
-
- sp -= pixel_bytes;
- }
- break;
- }
- }
- row_info->width = final_width;
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, final_width);
- }
-#ifndef PNG_READ_PACKSWAP_SUPPORTED
- PNG_UNUSED(transformations) /* Silence compiler warning */
-#endif
-}
-#endif /* PNG_READ_INTERLACING_SUPPORTED */
-
-void /* PRIVATE */
-png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row,
- png_const_bytep prev_row, int filter)
-{
- png_debug(1, "in png_read_filter_row");
- png_debug2(2, "row = %u, filter = %d", png_ptr->row_number, filter);
- switch (filter)
- {
- case PNG_FILTER_VALUE_NONE:
- break;
-
- case PNG_FILTER_VALUE_SUB:
- {
- png_size_t i;
- png_size_t istop = row_info->rowbytes;
- unsigned int bpp = (row_info->pixel_depth + 7) >> 3;
- png_bytep rp = row + bpp;
- png_bytep lp = row;
-
- for (i = bpp; i < istop; i++)
- {
- *rp = (png_byte)(((int)(*rp) + (int)(*lp++)) & 0xff);
- rp++;
- }
- break;
- }
- case PNG_FILTER_VALUE_UP:
- {
- png_size_t i;
- png_size_t istop = row_info->rowbytes;
- png_bytep rp = row;
- png_const_bytep pp = prev_row;
-
- for (i = 0; i < istop; i++)
- {
- *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff);
- rp++;
- }
- break;
- }
- case PNG_FILTER_VALUE_AVG:
- {
- png_size_t i;
- png_bytep rp = row;
- png_const_bytep pp = prev_row;
- png_bytep lp = row;
- unsigned int bpp = (row_info->pixel_depth + 7) >> 3;
- png_size_t istop = row_info->rowbytes - bpp;
-
- for (i = 0; i < bpp; i++)
- {
- *rp = (png_byte)(((int)(*rp) +
- ((int)(*pp++) / 2 )) & 0xff);
-
- rp++;
- }
-
- for (i = 0; i < istop; i++)
- {
- *rp = (png_byte)(((int)(*rp) +
- (int)(*pp++ + *lp++) / 2 ) & 0xff);
-
- rp++;
- }
- break;
- }
- case PNG_FILTER_VALUE_PAETH:
- {
- png_size_t i;
- png_bytep rp = row;
- png_const_bytep pp = prev_row;
- png_bytep lp = row;
- png_const_bytep cp = prev_row;
- unsigned int bpp = (row_info->pixel_depth + 7) >> 3;
- png_size_t istop=row_info->rowbytes - bpp;
-
- for (i = 0; i < bpp; i++)
- {
- *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff);
- rp++;
- }
-
- for (i = 0; i < istop; i++) /* Use leftover rp,pp */
- {
- int a, b, c, pa, pb, pc, p;
-
- a = *lp++;
- b = *pp++;
- c = *cp++;
-
- p = b - c;
- pc = a - c;
-
-#ifdef PNG_USE_ABS
- pa = abs(p);
- pb = abs(pc);
- pc = abs(p + pc);
-#else
- pa = p < 0 ? -p : p;
- pb = pc < 0 ? -pc : pc;
- pc = (p + pc) < 0 ? -(p + pc) : p + pc;
-#endif
-
- /*
- if (pa <= pb && pa <= pc)
- p = a;
-
- else if (pb <= pc)
- p = b;
-
- else
- p = c;
- */
-
- p = (pa <= pb && pa <= pc) ? a : (pb <= pc) ? b : c;
-
- *rp = (png_byte)(((int)(*rp) + p) & 0xff);
- rp++;
- }
- break;
- }
- default:
- png_error(png_ptr, "Ignoring bad adaptive filter type");
- /*NOT REACHED */
- break;
- }
-}
-
-#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
-void /* PRIVATE */
-png_read_finish_row(png_structp png_ptr)
-{
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
-
- /* Start of interlace block */
- PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
-
- /* Offset to next interlace block */
- PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
-
- /* Start of interlace block in the y direction */
- PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
-
- /* Offset to next interlace block in the y direction */
- PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
-#endif /* PNG_READ_INTERLACING_SUPPORTED */
-
- png_debug(1, "in png_read_finish_row");
- png_ptr->row_number++;
- if (png_ptr->row_number < png_ptr->num_rows)
- return;
-
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- if (png_ptr->interlaced)
- {
- png_ptr->row_number = 0;
-
- png_memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
-
- do
- {
- png_ptr->pass++;
-
- if (png_ptr->pass >= 7)
- break;
-
- png_ptr->iwidth = (png_ptr->width +
- png_pass_inc[png_ptr->pass] - 1 -
- png_pass_start[png_ptr->pass]) /
- png_pass_inc[png_ptr->pass];
-
- if (!(png_ptr->transformations & PNG_INTERLACE))
- {
- png_ptr->num_rows = (png_ptr->height +
- png_pass_yinc[png_ptr->pass] - 1 -
- png_pass_ystart[png_ptr->pass]) /
- png_pass_yinc[png_ptr->pass];
- }
-
- else /* if (png_ptr->transformations & PNG_INTERLACE) */
- break; /* libpng deinterlacing sees every row */
-
- } while (png_ptr->num_rows == 0 || png_ptr->iwidth == 0);
-
- if (png_ptr->pass < 7)
- return;
- }
-#endif /* PNG_READ_INTERLACING_SUPPORTED */
-
- if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
- {
- PNG_IDAT;
- char extra;
- int ret;
-
- png_ptr->zstream.next_out = (Byte *)&extra;
- png_ptr->zstream.avail_out = (uInt)1;
-
- for (;;)
- {
- if (!(png_ptr->zstream.avail_in))
- {
- while (!png_ptr->idat_size)
- {
- png_crc_finish(png_ptr, 0);
- png_ptr->idat_size = png_read_chunk_header(png_ptr);
- if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
- png_error(png_ptr, "Not enough image data");
- }
-
- png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size;
- png_ptr->zstream.next_in = png_ptr->zbuf;
-
- if (png_ptr->zbuf_size > png_ptr->idat_size)
- png_ptr->zstream.avail_in = (uInt)png_ptr->idat_size;
-
- png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zstream.avail_in);
- png_ptr->idat_size -= png_ptr->zstream.avail_in;
- }
-
- ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
-
- if (ret == Z_STREAM_END)
- {
- if (!(png_ptr->zstream.avail_out) || png_ptr->zstream.avail_in ||
- png_ptr->idat_size)
- png_warning(png_ptr, "Extra compressed data");
-
- png_ptr->mode |= PNG_AFTER_IDAT;
- png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
- break;
- }
-
- if (ret != Z_OK)
- png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg :
- "Decompression Error");
-
- if (!(png_ptr->zstream.avail_out))
- {
- png_warning(png_ptr, "Extra compressed data");
- png_ptr->mode |= PNG_AFTER_IDAT;
- png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
- break;
- }
-
- }
- png_ptr->zstream.avail_out = 0;
- }
-
- if (png_ptr->idat_size || png_ptr->zstream.avail_in)
- png_warning(png_ptr, "Extra compression data");
-
- inflateReset(&png_ptr->zstream);
-
- png_ptr->mode |= PNG_AFTER_IDAT;
-}
-#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
-
-void /* PRIVATE */
-png_read_start_row(png_structp png_ptr)
-{
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
-
- /* Start of interlace block */
- PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
-
- /* Offset to next interlace block */
- PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
-
- /* Start of interlace block in the y direction */
- PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
-
- /* Offset to next interlace block in the y direction */
- PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
-#endif
-
- int max_pixel_depth;
- png_size_t row_bytes;
-
- png_debug(1, "in png_read_start_row");
- png_ptr->zstream.avail_in = 0;
- png_init_read_transformations(png_ptr);
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- if (png_ptr->interlaced)
- {
- if (!(png_ptr->transformations & PNG_INTERLACE))
- png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 -
- png_pass_ystart[0]) / png_pass_yinc[0];
-
- else
- png_ptr->num_rows = png_ptr->height;
-
- png_ptr->iwidth = (png_ptr->width +
- png_pass_inc[png_ptr->pass] - 1 -
- png_pass_start[png_ptr->pass]) /
- png_pass_inc[png_ptr->pass];
- }
-
- else
-#endif /* PNG_READ_INTERLACING_SUPPORTED */
- {
- png_ptr->num_rows = png_ptr->height;
- png_ptr->iwidth = png_ptr->width;
- }
-
- max_pixel_depth = png_ptr->pixel_depth;
-
-#ifdef PNG_READ_PACK_SUPPORTED
- if ((png_ptr->transformations & PNG_PACK) && png_ptr->bit_depth < 8)
- max_pixel_depth = 8;
-#endif
-
-#ifdef PNG_READ_EXPAND_SUPPORTED
- if (png_ptr->transformations & PNG_EXPAND)
- {
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (png_ptr->num_trans)
- max_pixel_depth = 32;
-
- else
- max_pixel_depth = 24;
- }
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY)
- {
- if (max_pixel_depth < 8)
- max_pixel_depth = 8;
-
- if (png_ptr->num_trans)
- max_pixel_depth *= 2;
- }
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
- {
- if (png_ptr->num_trans)
- {
- max_pixel_depth *= 4;
- max_pixel_depth /= 3;
- }
- }
- }
-#endif
-
-#ifdef PNG_READ_FILLER_SUPPORTED
- if (png_ptr->transformations & (PNG_FILLER))
- {
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- max_pixel_depth = 32;
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY)
- {
- if (max_pixel_depth <= 8)
- max_pixel_depth = 16;
-
- else
- max_pixel_depth = 32;
- }
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
- {
- if (max_pixel_depth <= 32)
- max_pixel_depth = 32;
-
- else
- max_pixel_depth = 64;
- }
- }
-#endif
-
-#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
- if (png_ptr->transformations & PNG_GRAY_TO_RGB)
- {
- if (
-#ifdef PNG_READ_EXPAND_SUPPORTED
- (png_ptr->num_trans && (png_ptr->transformations & PNG_EXPAND)) ||
-#endif
-#ifdef PNG_READ_FILLER_SUPPORTED
- (png_ptr->transformations & (PNG_FILLER)) ||
-#endif
- png_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- if (max_pixel_depth <= 16)
- max_pixel_depth = 32;
-
- else
- max_pixel_depth = 64;
- }
-
- else
- {
- if (max_pixel_depth <= 8)
- {
- if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- max_pixel_depth = 32;
-
- else
- max_pixel_depth = 24;
- }
-
- else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- max_pixel_depth = 64;
-
- else
- max_pixel_depth = 48;
- }
- }
-#endif
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) && \
-defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
- if (png_ptr->transformations & PNG_USER_TRANSFORM)
- {
- int user_pixel_depth = png_ptr->user_transform_depth*
- png_ptr->user_transform_channels;
-
- if (user_pixel_depth > max_pixel_depth)
- max_pixel_depth=user_pixel_depth;
- }
-#endif
-
- /* Align the width on the next larger 8 pixels. Mainly used
- * for interlacing
- */
- row_bytes = ((png_ptr->width + 7) & ~((png_uint_32)7));
- /* Calculate the maximum bytes needed, adding a byte and a pixel
- * for safety's sake
- */
- row_bytes = PNG_ROWBYTES(max_pixel_depth, row_bytes) +
- 1 + ((max_pixel_depth + 7) >> 3);
-
-#ifdef PNG_MAX_MALLOC_64K
- if (row_bytes > (png_uint_32)65536L)
- png_error(png_ptr, "This image requires a row greater than 64KB");
-#endif
-
- if (row_bytes + 48 > png_ptr->old_big_row_buf_size)
- {
- png_free(png_ptr, png_ptr->big_row_buf);
-
- if (png_ptr->interlaced)
- png_ptr->big_row_buf = (png_bytep)png_calloc(png_ptr,
- row_bytes + 48);
-
- else
- png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr,
- row_bytes + 48);
-
- png_ptr->old_big_row_buf_size = row_bytes + 48;
-
-#ifdef PNG_ALIGNED_MEMORY_SUPPORTED
- /* Use 16-byte aligned memory for row_buf with at least 16 bytes
- * of padding before and after row_buf.
- */
- png_ptr->row_buf = png_ptr->big_row_buf + 32 -
- (((png_alloc_size_t)png_ptr->big_row_buf + 15) & 0x0F);
-
- png_ptr->old_big_row_buf_size = row_bytes + 48;
-#else
- /* Use 32 bytes of padding before and 16 bytes after row_buf. */
- png_ptr->row_buf = png_ptr->big_row_buf + 32;
-#endif
- png_ptr->old_big_row_buf_size = row_bytes + 48;
- }
-
-#ifdef PNG_MAX_MALLOC_64K
- if (png_ptr->rowbytes > 65535)
- png_error(png_ptr, "This image requires a row greater than 64KB");
-
-#endif
- if (png_ptr->rowbytes > (PNG_SIZE_MAX - 1))
- png_error(png_ptr, "Row has too many bytes to allocate in memory");
-
- if (png_ptr->rowbytes + 1 > png_ptr->old_prev_row_size)
- {
- png_free(png_ptr, png_ptr->prev_row);
-
- png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, png_ptr->rowbytes + 1);
-
- png_ptr->old_prev_row_size = png_ptr->rowbytes + 1;
- }
-
- png_memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
-
- png_debug1(3, "width = %u,", png_ptr->width);
- png_debug1(3, "height = %u,", png_ptr->height);
- png_debug1(3, "iwidth = %u,", png_ptr->iwidth);
- png_debug1(3, "num_rows = %u,", png_ptr->num_rows);
- png_debug1(3, "rowbytes = %lu,", (unsigned long)png_ptr->rowbytes);
- png_debug1(3, "irowbytes = %lu",
- (unsigned long)PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->iwidth) + 1);
-
- png_ptr->flags |= PNG_FLAG_ROW_INIT;
-}
-#endif /* PNG_READ_SUPPORTED */
+
+/* pngrutil.c - utilities to read a PNG file
+ *
+ * Last changed in libpng 1.2.48 [March 8, 2012]
+ * Copyright (c) 1998-2012 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * This file contains routines that are only called from within
+ * libpng itself during the course of reading an image.
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#ifdef PNG_READ_SUPPORTED
+
+#if defined(_WIN32_WCE) && (_WIN32_WCE<0x500)
+# define WIN32_WCE_OLD
+#endif
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+# ifdef WIN32_WCE_OLD
+/* The strtod() function is not supported on WindowsCE */
+__inline double png_strtod(png_structp png_ptr, PNG_CONST char *nptr,
+ char **endptr)
+{
+ double result = 0;
+ int len;
+ wchar_t *str, *end;
+
+ len = MultiByteToWideChar(CP_ACP, 0, nptr, -1, NULL, 0);
+ str = (wchar_t *)png_malloc(png_ptr, len * png_sizeof(wchar_t));
+ if ( NULL != str )
+ {
+ MultiByteToWideChar(CP_ACP, 0, nptr, -1, str, len);
+ result = wcstod(str, &end);
+ len = WideCharToMultiByte(CP_ACP, 0, end, -1, NULL, 0, NULL, NULL);
+ *endptr = (char *)nptr + (png_strlen(nptr) - len + 1);
+ png_free(png_ptr, str);
+ }
+ return result;
+}
+# else
+# define png_strtod(p,a,b) strtod(a,b)
+# endif
+#endif
+
+png_uint_32 PNGAPI
+png_get_uint_31(png_structp png_ptr, png_bytep buf)
+{
+#ifdef PNG_READ_BIG_ENDIAN_SUPPORTED
+ png_uint_32 i = png_get_uint_32(buf);
+#else
+ /* Avoid an extra function call by inlining the result. */
+ png_uint_32 i = ((png_uint_32)(*buf) << 24) +
+ ((png_uint_32)(*(buf + 1)) << 16) +
+ ((png_uint_32)(*(buf + 2)) << 8) +
+ (png_uint_32)(*(buf + 3));
+#endif
+ if (i > PNG_UINT_31_MAX)
+ png_error(png_ptr, "PNG unsigned integer out of range.");
+ return (i);
+}
+#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED
+/* Grab an unsigned 32-bit integer from a buffer in big-endian format. */
+png_uint_32 PNGAPI
+png_get_uint_32(png_bytep buf)
+{
+ png_uint_32 i = ((png_uint_32)(*buf) << 24) +
+ ((png_uint_32)(*(buf + 1)) << 16) +
+ ((png_uint_32)(*(buf + 2)) << 8) +
+ (png_uint_32)(*(buf + 3));
+
+ return (i);
+}
+
+/* Grab a signed 32-bit integer from a buffer in big-endian format. The
+ * data is stored in the PNG file in two's complement format, and it is
+ * assumed that the machine format for signed integers is the same.
+ */
+png_int_32 PNGAPI
+png_get_int_32(png_bytep buf)
+{
+ png_int_32 i = ((png_int_32)(*buf) << 24) +
+ ((png_int_32)(*(buf + 1)) << 16) +
+ ((png_int_32)(*(buf + 2)) << 8) +
+ (png_int_32)(*(buf + 3));
+
+ return (i);
+}
+
+/* Grab an unsigned 16-bit integer from a buffer in big-endian format. */
+png_uint_16 PNGAPI
+png_get_uint_16(png_bytep buf)
+{
+ png_uint_16 i = (png_uint_16)(((png_uint_16)(*buf) << 8) +
+ (png_uint_16)(*(buf + 1)));
+
+ return (i);
+}
+#endif /* PNG_READ_BIG_ENDIAN_SUPPORTED */
+
+/* Read the chunk header (length + type name).
+ * Put the type name into png_ptr->chunk_name, and return the length.
+ */
+png_uint_32 /* PRIVATE */
+png_read_chunk_header(png_structp png_ptr)
+{
+ png_byte buf[8];
+ png_uint_32 length;
+
+ /* Read the length and the chunk name */
+ png_read_data(png_ptr, buf, 8);
+ length = png_get_uint_31(png_ptr, buf);
+
+ /* Put the chunk name into png_ptr->chunk_name */
+ png_memcpy(png_ptr->chunk_name, buf + 4, 4);
+
+ png_debug2(0, "Reading %s chunk, length = %lu",
+ png_ptr->chunk_name, length);
+
+ /* Reset the crc and run it over the chunk name */
+ png_reset_crc(png_ptr);
+ png_calculate_crc(png_ptr, png_ptr->chunk_name, 4);
+
+ /* Check to see if chunk name is valid */
+ png_check_chunk_name(png_ptr, png_ptr->chunk_name);
+
+ return length;
+}
+
+/* Read data, and (optionally) run it through the CRC. */
+void /* PRIVATE */
+png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
+{
+ if (png_ptr == NULL)
+ return;
+ png_read_data(png_ptr, buf, length);
+ png_calculate_crc(png_ptr, buf, length);
+}
+
+/* Optionally skip data and then check the CRC. Depending on whether we
+ * are reading a ancillary or critical chunk, and how the program has set
+ * things up, we may calculate the CRC on the data and print a message.
+ * Returns '1' if there was a CRC error, '0' otherwise.
+ */
+int /* PRIVATE */
+png_crc_finish(png_structp png_ptr, png_uint_32 skip)
+{
+ png_size_t i;
+ png_size_t istop = png_ptr->zbuf_size;
+
+ for (i = (png_size_t)skip; i > istop; i -= istop)
+ {
+ png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
+ }
+ if (i)
+ {
+ png_crc_read(png_ptr, png_ptr->zbuf, i);
+ }
+
+ if (png_crc_error(png_ptr))
+ {
+ if (((png_ptr->chunk_name[0] & 0x20) && /* Ancillary */
+ !(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) ||
+ (!(png_ptr->chunk_name[0] & 0x20) && /* Critical */
+ (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_USE)))
+ {
+ png_chunk_warning(png_ptr, "CRC error");
+ }
+ else
+ {
+ png_chunk_error(png_ptr, "CRC error");
+ }
+ return (1);
+ }
+
+ return (0);
+}
+
+/* Compare the CRC stored in the PNG file with that calculated by libpng from
+ * the data it has read thus far.
+ */
+int /* PRIVATE */
+png_crc_error(png_structp png_ptr)
+{
+ png_byte crc_bytes[4];
+ png_uint_32 crc;
+ int need_crc = 1;
+
+ if (png_ptr->chunk_name[0] & 0x20) /* ancillary */
+ {
+ if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) ==
+ (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN))
+ need_crc = 0;
+ }
+ else /* critical */
+ {
+ if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE)
+ need_crc = 0;
+ }
+
+ png_read_data(png_ptr, crc_bytes, 4);
+
+ if (need_crc)
+ {
+ crc = png_get_uint_32(crc_bytes);
+ return ((int)(crc != png_ptr->crc));
+ }
+ else
+ return (0);
+}
+
+#if defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_READ_iTXt_SUPPORTED) || \
+ defined(PNG_READ_iCCP_SUPPORTED)
+static png_size_t
+png_inflate(png_structp png_ptr, const png_byte *data, png_size_t size,
+ png_bytep output, png_size_t output_size)
+{
+ png_size_t count = 0;
+
+ png_ptr->zstream.next_in = (png_bytep)data; /* const_cast: VALID */
+ png_ptr->zstream.avail_in = size;
+
+ while (1)
+ {
+ int ret, avail;
+
+ /* Reset the output buffer each time round - we empty it
+ * after every inflate call.
+ */
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ png_ptr->zstream.avail_out = png_ptr->zbuf_size;
+
+ ret = inflate(&png_ptr->zstream, Z_NO_FLUSH);
+ avail = png_ptr->zbuf_size - png_ptr->zstream.avail_out;
+
+ /* First copy/count any new output - but only if we didn't
+ * get an error code.
+ */
+ if ((ret == Z_OK || ret == Z_STREAM_END) && avail > 0)
+ {
+ if (output != 0 && output_size > count)
+ {
+ png_size_t copy = output_size - count;
+ if ((png_size_t) avail < copy) copy = (png_size_t) avail;
+ png_memcpy(output + count, png_ptr->zbuf, copy);
+ }
+ count += avail;
+ }
+
+ if (ret == Z_OK)
+ continue;
+
+ /* Termination conditions - always reset the zstream, it
+ * must be left in inflateInit state.
+ */
+ png_ptr->zstream.avail_in = 0;
+ inflateReset(&png_ptr->zstream);
+
+ if (ret == Z_STREAM_END)
+ return count; /* NOTE: may be zero. */
+
+ /* Now handle the error codes - the API always returns 0
+ * and the error message is dumped into the uncompressed
+ * buffer if available.
+ */
+ {
+ PNG_CONST char *msg;
+ if (png_ptr->zstream.msg != 0)
+ msg = png_ptr->zstream.msg;
+ else
+ {
+#if defined(PNG_STDIO_SUPPORTED) && !defined(_WIN32_WCE)
+ char umsg[52];
+
+ switch (ret)
+ {
+ case Z_BUF_ERROR:
+ msg = "Buffer error in compressed datastream in %s chunk";
+ break;
+ case Z_DATA_ERROR:
+ msg = "Data error in compressed datastream in %s chunk";
+ break;
+ default:
+ msg = "Incomplete compressed datastream in %s chunk";
+ break;
+ }
+
+ png_snprintf(umsg, sizeof umsg, msg, png_ptr->chunk_name);
+ msg = umsg;
+#else
+ msg = "Damaged compressed datastream in chunk other than IDAT";
+#endif
+ }
+
+ png_warning(png_ptr, msg);
+ }
+
+ /* 0 means an error - notice that this code simple ignores
+ * zero length compressed chunks as a result.
+ */
+ return 0;
+ }
+}
+
+/*
+ * Decompress trailing data in a chunk. The assumption is that chunkdata
+ * points at an allocated area holding the contents of a chunk with a
+ * trailing compressed part. What we get back is an allocated area
+ * holding the original prefix part and an uncompressed version of the
+ * trailing part (the malloc area passed in is freed).
+ */
+void /* PRIVATE */
+png_decompress_chunk(png_structp png_ptr, int comp_type,
+ png_size_t chunklength,
+ png_size_t prefix_size, png_size_t *newlength)
+{
+ /* The caller should guarantee this */
+ if (prefix_size > chunklength)
+ {
+ /* The recovery is to delete the chunk. */
+ png_warning(png_ptr, "invalid chunklength");
+ prefix_size = 0; /* To delete everything */
+ }
+
+ else if (comp_type == PNG_COMPRESSION_TYPE_BASE)
+ {
+ png_size_t expanded_size = png_inflate(png_ptr,
+ (png_bytep)(png_ptr->chunkdata + prefix_size),
+ chunklength - prefix_size,
+ 0/*output*/, 0/*output size*/);
+
+ /* Now check the limits on this chunk - if the limit fails the
+ * compressed data will be removed, the prefix will remain.
+ */
+ if (prefix_size >= (~(png_size_t)0) - 1 ||
+ expanded_size >= (~(png_size_t)0) - 1 - prefix_size
+#ifdef PNG_USER_CHUNK_MALLOC_MAX
+ || ((PNG_USER_CHUNK_MALLOC_MAX > 0) &&
+ prefix_size + expanded_size >= PNG_USER_CHUNK_MALLOC_MAX - 1)
+#endif
+ )
+ png_warning(png_ptr, "Exceeded size limit while expanding chunk");
+
+ /* If the size is zero either there was an error and a message
+ * has already been output (warning) or the size really is zero
+ * and we have nothing to do - the code will exit through the
+ * error case below.
+ */
+ else if (expanded_size > 0)
+ {
+ /* Success (maybe) - really uncompress the chunk. */
+ png_size_t new_size = 0;
+
+ png_charp text = png_malloc_warn(png_ptr,
+ prefix_size + expanded_size + 1);
+
+ if (text != NULL)
+ {
+ png_memcpy(text, png_ptr->chunkdata, prefix_size);
+ new_size = png_inflate(png_ptr,
+ (png_bytep)(png_ptr->chunkdata + prefix_size),
+ chunklength - prefix_size,
+ (png_bytep)(text + prefix_size), expanded_size);
+ text[prefix_size + expanded_size] = 0; /* just in case */
+
+ if (new_size == expanded_size)
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = text;
+ *newlength = prefix_size + expanded_size;
+ return; /* The success return! */
+ }
+
+ png_warning(png_ptr, "png_inflate logic error");
+ png_free(png_ptr, text);
+ }
+ else
+ png_warning(png_ptr, "Not enough memory to decompress chunk.");
+ }
+ }
+
+ else /* if (comp_type != PNG_COMPRESSION_TYPE_BASE) */
+ {
+#if defined(PNG_STDIO_SUPPORTED) && !defined(_WIN32_WCE)
+ char umsg[50];
+
+ png_snprintf(umsg, sizeof umsg, "Unknown zTXt compression type %d",
+ comp_type);
+ png_warning(png_ptr, umsg);
+#else
+ png_warning(png_ptr, "Unknown zTXt compression type");
+#endif
+
+ /* The recovery is to simply drop the data. */
+ }
+
+ /* Generic error return - leave the prefix, delete the compressed
+ * data, reallocate the chunkdata to remove the potentially large
+ * amount of compressed data.
+ */
+ {
+ png_charp text = png_malloc_warn(png_ptr, prefix_size + 1);
+ if (text != NULL)
+ {
+ if (prefix_size > 0)
+ png_memcpy(text, png_ptr->chunkdata, prefix_size);
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = text;
+
+ /* This is an extra zero in the 'uncompressed' part. */
+ *(png_ptr->chunkdata + prefix_size) = 0x00;
+ }
+ /* Ignore a malloc error here - it is safe. */
+ }
+
+ *newlength = prefix_size;
+}
+#endif
+
+/* Read and check the IDHR chunk */
+void /* PRIVATE */
+png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_byte buf[13];
+ png_uint_32 width, height;
+ int bit_depth, color_type, compression_type, filter_type;
+ int interlace_type;
+
+ png_debug(1, "in png_handle_IHDR");
+
+ if (png_ptr->mode & PNG_HAVE_IHDR)
+ png_error(png_ptr, "Out of place IHDR");
+
+ /* Check the length */
+ if (length != 13)
+ png_error(png_ptr, "Invalid IHDR chunk");
+
+ png_ptr->mode |= PNG_HAVE_IHDR;
+
+ png_crc_read(png_ptr, buf, 13);
+ png_crc_finish(png_ptr, 0);
+
+ width = png_get_uint_31(png_ptr, buf);
+ height = png_get_uint_31(png_ptr, buf + 4);
+ bit_depth = buf[8];
+ color_type = buf[9];
+ compression_type = buf[10];
+ filter_type = buf[11];
+ interlace_type = buf[12];
+
+ /* Set internal variables */
+ png_ptr->width = width;
+ png_ptr->height = height;
+ png_ptr->bit_depth = (png_byte)bit_depth;
+ png_ptr->interlaced = (png_byte)interlace_type;
+ png_ptr->color_type = (png_byte)color_type;
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ png_ptr->filter_type = (png_byte)filter_type;
+#endif
+ png_ptr->compression_type = (png_byte)compression_type;
+
+ /* Find number of channels */
+ switch (png_ptr->color_type)
+ {
+ case PNG_COLOR_TYPE_GRAY:
+ case PNG_COLOR_TYPE_PALETTE:
+ png_ptr->channels = 1;
+ break;
+
+ case PNG_COLOR_TYPE_RGB:
+ png_ptr->channels = 3;
+ break;
+
+ case PNG_COLOR_TYPE_GRAY_ALPHA:
+ png_ptr->channels = 2;
+ break;
+
+ case PNG_COLOR_TYPE_RGB_ALPHA:
+ png_ptr->channels = 4;
+ break;
+ }
+
+ /* Set up other useful info */
+ png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth *
+ png_ptr->channels);
+ png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->width);
+ png_debug1(3, "bit_depth = %d", png_ptr->bit_depth);
+ png_debug1(3, "channels = %d", png_ptr->channels);
+ png_debug1(3, "rowbytes = %lu", png_ptr->rowbytes);
+ png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth,
+ color_type, interlace_type, compression_type, filter_type);
+}
+
+/* Read and check the palette */
+void /* PRIVATE */
+png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_color palette[PNG_MAX_PALETTE_LENGTH];
+ int num, i;
+#ifdef PNG_POINTER_INDEXING_SUPPORTED
+ png_colorp pal_ptr;
+#endif
+
+ png_debug(1, "in png_handle_PLTE");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before PLTE");
+
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid PLTE after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ else if (png_ptr->mode & PNG_HAVE_PLTE)
+ png_error(png_ptr, "Duplicate PLTE chunk");
+
+ png_ptr->mode |= PNG_HAVE_PLTE;
+
+ if (!(png_ptr->color_type&PNG_COLOR_MASK_COLOR))
+ {
+ png_warning(png_ptr,
+ "Ignoring PLTE chunk in grayscale PNG");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+#ifndef PNG_READ_OPT_PLTE_SUPPORTED
+ if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)
+ {
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+#endif
+
+ if (length > 3*PNG_MAX_PALETTE_LENGTH || length % 3)
+ {
+ if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)
+ {
+ png_warning(png_ptr, "Invalid palette chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ else
+ {
+ png_error(png_ptr, "Invalid palette chunk");
+ }
+ }
+
+ num = (int)length / 3;
+
+#ifdef PNG_POINTER_INDEXING_SUPPORTED
+ for (i = 0, pal_ptr = palette; i < num; i++, pal_ptr++)
+ {
+ png_byte buf[3];
+
+ png_crc_read(png_ptr, buf, 3);
+ pal_ptr->red = buf[0];
+ pal_ptr->green = buf[1];
+ pal_ptr->blue = buf[2];
+ }
+#else
+ for (i = 0; i < num; i++)
+ {
+ png_byte buf[3];
+
+ png_crc_read(png_ptr, buf, 3);
+ /* Don't depend upon png_color being any order */
+ palette[i].red = buf[0];
+ palette[i].green = buf[1];
+ palette[i].blue = buf[2];
+ }
+#endif
+
+ /* If we actually NEED the PLTE chunk (ie for a paletted image), we do
+ * whatever the normal CRC configuration tells us. However, if we
+ * have an RGB image, the PLTE can be considered ancillary, so
+ * we will act as though it is.
+ */
+#ifndef PNG_READ_OPT_PLTE_SUPPORTED
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+#endif
+ {
+ png_crc_finish(png_ptr, 0);
+ }
+#ifndef PNG_READ_OPT_PLTE_SUPPORTED
+ else if (png_crc_error(png_ptr)) /* Only if we have a CRC error */
+ {
+ /* If we don't want to use the data from an ancillary chunk,
+ we have two options: an error abort, or a warning and we
+ ignore the data in this chunk (which should be OK, since
+ it's considered ancillary for a RGB or RGBA image). */
+ if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_USE))
+ {
+ if (png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)
+ {
+ png_chunk_error(png_ptr, "CRC error");
+ }
+ else
+ {
+ png_chunk_warning(png_ptr, "CRC error");
+ return;
+ }
+ }
+ /* Otherwise, we (optionally) emit a warning and use the chunk. */
+ else if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN))
+ {
+ png_chunk_warning(png_ptr, "CRC error");
+ }
+ }
+#endif
+
+ png_set_PLTE(png_ptr, info_ptr, palette, num);
+
+#ifdef PNG_READ_tRNS_SUPPORTED
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS))
+ {
+ if (png_ptr->num_trans > (png_uint_16)num)
+ {
+ png_warning(png_ptr, "Truncating incorrect tRNS chunk length");
+ png_ptr->num_trans = (png_uint_16)num;
+ }
+ if (info_ptr->num_trans > (png_uint_16)num)
+ {
+ png_warning(png_ptr, "Truncating incorrect info tRNS chunk length");
+ info_ptr->num_trans = (png_uint_16)num;
+ }
+ }
+ }
+#endif
+
+}
+
+void /* PRIVATE */
+png_handle_IEND(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_debug(1, "in png_handle_IEND");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR) || !(png_ptr->mode & PNG_HAVE_IDAT))
+ {
+ png_error(png_ptr, "No image in file");
+ }
+
+ png_ptr->mode |= (PNG_AFTER_IDAT | PNG_HAVE_IEND);
+
+ if (length != 0)
+ {
+ png_warning(png_ptr, "Incorrect IEND chunk length");
+ }
+ png_crc_finish(png_ptr, length);
+
+ info_ptr = info_ptr; /* Quiet compiler warnings about unused info_ptr */
+}
+
+#ifdef PNG_READ_gAMA_SUPPORTED
+void /* PRIVATE */
+png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_fixed_point igamma;
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ float file_gamma;
+#endif
+ png_byte buf[4];
+
+ png_debug(1, "in png_handle_gAMA");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before gAMA");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid gAMA after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (png_ptr->mode & PNG_HAVE_PLTE)
+ /* Should be an error, but we can cope with it */
+ png_warning(png_ptr, "Out of place gAMA chunk");
+
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
+#ifdef PNG_READ_sRGB_SUPPORTED
+ && !(info_ptr->valid & PNG_INFO_sRGB)
+#endif
+ )
+ {
+ png_warning(png_ptr, "Duplicate gAMA chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (length != 4)
+ {
+ png_warning(png_ptr, "Incorrect gAMA chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_crc_read(png_ptr, buf, 4);
+ if (png_crc_finish(png_ptr, 0))
+ return;
+
+ igamma = (png_fixed_point)png_get_uint_32(buf);
+ /* Check for zero gamma */
+ if (igamma == 0)
+ {
+ png_warning(png_ptr,
+ "Ignoring gAMA chunk with gamma=0");
+ return;
+ }
+
+#ifdef PNG_READ_sRGB_SUPPORTED
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB))
+ if (PNG_OUT_OF_RANGE(igamma, 45500L, 500))
+ {
+ png_warning(png_ptr,
+ "Ignoring incorrect gAMA value when sRGB is also present");
+#ifdef PNG_CONSOLE_IO_SUPPORTED
+ fprintf(stderr, "gamma = (%d/100000)", (int)igamma);
+#endif
+ return;
+ }
+#endif /* PNG_READ_sRGB_SUPPORTED */
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ file_gamma = (float)igamma / (float)100000.0;
+# ifdef PNG_READ_GAMMA_SUPPORTED
+ png_ptr->gamma = file_gamma;
+# endif
+ png_set_gAMA(png_ptr, info_ptr, file_gamma);
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ png_set_gAMA_fixed(png_ptr, info_ptr, igamma);
+#endif
+}
+#endif
+
+#ifdef PNG_READ_sBIT_SUPPORTED
+void /* PRIVATE */
+png_handle_sBIT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_size_t truelen;
+ png_byte buf[4];
+
+ png_debug(1, "in png_handle_sBIT");
+
+ buf[0] = buf[1] = buf[2] = buf[3] = 0;
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before sBIT");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid sBIT after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (png_ptr->mode & PNG_HAVE_PLTE)
+ {
+ /* Should be an error, but we can cope with it */
+ png_warning(png_ptr, "Out of place sBIT chunk");
+ }
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT))
+ {
+ png_warning(png_ptr, "Duplicate sBIT chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ truelen = 3;
+ else
+ truelen = (png_size_t)png_ptr->channels;
+
+ if (length != truelen || length > 4)
+ {
+ png_warning(png_ptr, "Incorrect sBIT chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_crc_read(png_ptr, buf, truelen);
+ if (png_crc_finish(png_ptr, 0))
+ return;
+
+ if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
+ {
+ png_ptr->sig_bit.red = buf[0];
+ png_ptr->sig_bit.green = buf[1];
+ png_ptr->sig_bit.blue = buf[2];
+ png_ptr->sig_bit.alpha = buf[3];
+ }
+ else
+ {
+ png_ptr->sig_bit.gray = buf[0];
+ png_ptr->sig_bit.red = buf[0];
+ png_ptr->sig_bit.green = buf[0];
+ png_ptr->sig_bit.blue = buf[0];
+ png_ptr->sig_bit.alpha = buf[1];
+ }
+ png_set_sBIT(png_ptr, info_ptr, &(png_ptr->sig_bit));
+}
+#endif
+
+#ifdef PNG_READ_cHRM_SUPPORTED
+void /* PRIVATE */
+png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_byte buf[32];
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y;
+#endif
+ png_fixed_point int_x_white, int_y_white, int_x_red, int_y_red, int_x_green,
+ int_y_green, int_x_blue, int_y_blue;
+
+ png_uint_32 uint_x, uint_y;
+
+ png_debug(1, "in png_handle_cHRM");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before cHRM");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid cHRM after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (png_ptr->mode & PNG_HAVE_PLTE)
+ /* Should be an error, but we can cope with it */
+ png_warning(png_ptr, "Missing PLTE before cHRM");
+
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)
+#ifdef PNG_READ_sRGB_SUPPORTED
+ && !(info_ptr->valid & PNG_INFO_sRGB)
+#endif
+ )
+ {
+ png_warning(png_ptr, "Duplicate cHRM chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (length != 32)
+ {
+ png_warning(png_ptr, "Incorrect cHRM chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_crc_read(png_ptr, buf, 32);
+ if (png_crc_finish(png_ptr, 0))
+ return;
+
+ uint_x = png_get_uint_32(buf);
+ uint_y = png_get_uint_32(buf + 4);
+ int_x_white = (png_fixed_point)uint_x;
+ int_y_white = (png_fixed_point)uint_y;
+
+ uint_x = png_get_uint_32(buf + 8);
+ uint_y = png_get_uint_32(buf + 12);
+ int_x_red = (png_fixed_point)uint_x;
+ int_y_red = (png_fixed_point)uint_y;
+
+ uint_x = png_get_uint_32(buf + 16);
+ uint_y = png_get_uint_32(buf + 20);
+ int_x_green = (png_fixed_point)uint_x;
+ int_y_green = (png_fixed_point)uint_y;
+
+ uint_x = png_get_uint_32(buf + 24);
+ uint_y = png_get_uint_32(buf + 28);
+ int_x_blue = (png_fixed_point)uint_x;
+ int_y_blue = (png_fixed_point)uint_y;
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ white_x = (float)int_x_white / (float)100000.0;
+ white_y = (float)int_y_white / (float)100000.0;
+ red_x = (float)int_x_red / (float)100000.0;
+ red_y = (float)int_y_red / (float)100000.0;
+ green_x = (float)int_x_green / (float)100000.0;
+ green_y = (float)int_y_green / (float)100000.0;
+ blue_x = (float)int_x_blue / (float)100000.0;
+ blue_y = (float)int_y_blue / (float)100000.0;
+#endif
+
+#ifdef PNG_READ_sRGB_SUPPORTED
+ if ((info_ptr != NULL) && (info_ptr->valid & PNG_INFO_sRGB))
+ {
+ if (PNG_OUT_OF_RANGE(int_x_white, 31270, 1000) ||
+ PNG_OUT_OF_RANGE(int_y_white, 32900, 1000) ||
+ PNG_OUT_OF_RANGE(int_x_red, 64000L, 1000) ||
+ PNG_OUT_OF_RANGE(int_y_red, 33000, 1000) ||
+ PNG_OUT_OF_RANGE(int_x_green, 30000, 1000) ||
+ PNG_OUT_OF_RANGE(int_y_green, 60000L, 1000) ||
+ PNG_OUT_OF_RANGE(int_x_blue, 15000, 1000) ||
+ PNG_OUT_OF_RANGE(int_y_blue, 6000, 1000))
+ {
+ png_warning(png_ptr,
+ "Ignoring incorrect cHRM value when sRGB is also present");
+#ifdef PNG_CONSOLE_IO_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ fprintf(stderr, "wx=%f, wy=%f, rx=%f, ry=%f\n",
+ white_x, white_y, red_x, red_y);
+ fprintf(stderr, "gx=%f, gy=%f, bx=%f, by=%f\n",
+ green_x, green_y, blue_x, blue_y);
+#else
+ fprintf(stderr, "wx=%ld, wy=%ld, rx=%ld, ry=%ld\n",
+ (long)int_x_white, (long)int_y_white,
+ (long)int_x_red, (long)int_y_red);
+ fprintf(stderr, "gx=%ld, gy=%ld, bx=%ld, by=%ld\n",
+ (long)int_x_green, (long)int_y_green,
+ (long)int_x_blue, (long)int_y_blue);
+#endif
+#endif /* PNG_CONSOLE_IO_SUPPORTED */
+ }
+ return;
+ }
+#endif /* PNG_READ_sRGB_SUPPORTED */
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ png_set_cHRM(png_ptr, info_ptr,
+ white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y);
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ png_set_cHRM_fixed(png_ptr, info_ptr,
+ int_x_white, int_y_white, int_x_red, int_y_red, int_x_green,
+ int_y_green, int_x_blue, int_y_blue);
+#endif
+}
+#endif
+
+#ifdef PNG_READ_sRGB_SUPPORTED
+void /* PRIVATE */
+png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ int intent;
+ png_byte buf[1];
+
+ png_debug(1, "in png_handle_sRGB");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before sRGB");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid sRGB after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (png_ptr->mode & PNG_HAVE_PLTE)
+ /* Should be an error, but we can cope with it */
+ png_warning(png_ptr, "Out of place sRGB chunk");
+
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB))
+ {
+ png_warning(png_ptr, "Duplicate sRGB chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (length != 1)
+ {
+ png_warning(png_ptr, "Incorrect sRGB chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_crc_read(png_ptr, buf, 1);
+ if (png_crc_finish(png_ptr, 0))
+ return;
+
+ intent = buf[0];
+ /* Check for bad intent */
+ if (intent >= PNG_sRGB_INTENT_LAST)
+ {
+ png_warning(png_ptr, "Unknown sRGB intent");
+ return;
+ }
+
+#if defined(PNG_READ_gAMA_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED)
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA))
+ {
+ png_fixed_point igamma;
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ igamma=info_ptr->int_gamma;
+#else
+# ifdef PNG_FLOATING_POINT_SUPPORTED
+ igamma=(png_fixed_point)(info_ptr->gamma * 100000.);
+# endif
+#endif
+ if (PNG_OUT_OF_RANGE(igamma, 45500L, 500))
+ {
+ png_warning(png_ptr,
+ "Ignoring incorrect gAMA value when sRGB is also present");
+#ifdef PNG_CONSOLE_IO_SUPPORTED
+# ifdef PNG_FIXED_POINT_SUPPORTED
+ fprintf(stderr, "incorrect gamma=(%d/100000)\n",
+ (int)png_ptr->int_gamma);
+# else
+# ifdef PNG_FLOATING_POINT_SUPPORTED
+ fprintf(stderr, "incorrect gamma=%f\n", png_ptr->gamma);
+# endif
+# endif
+#endif
+ }
+ }
+#endif /* PNG_READ_gAMA_SUPPORTED */
+
+#ifdef PNG_READ_cHRM_SUPPORTED
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
+ if (PNG_OUT_OF_RANGE(info_ptr->int_x_white, 31270, 1000) ||
+ PNG_OUT_OF_RANGE(info_ptr->int_y_white, 32900, 1000) ||
+ PNG_OUT_OF_RANGE(info_ptr->int_x_red, 64000L, 1000) ||
+ PNG_OUT_OF_RANGE(info_ptr->int_y_red, 33000, 1000) ||
+ PNG_OUT_OF_RANGE(info_ptr->int_x_green, 30000, 1000) ||
+ PNG_OUT_OF_RANGE(info_ptr->int_y_green, 60000L, 1000) ||
+ PNG_OUT_OF_RANGE(info_ptr->int_x_blue, 15000, 1000) ||
+ PNG_OUT_OF_RANGE(info_ptr->int_y_blue, 6000, 1000))
+ {
+ png_warning(png_ptr,
+ "Ignoring incorrect cHRM value when sRGB is also present");
+ }
+#endif /* PNG_FIXED_POINT_SUPPORTED */
+#endif /* PNG_READ_cHRM_SUPPORTED */
+
+ png_set_sRGB_gAMA_and_cHRM(png_ptr, info_ptr, intent);
+}
+#endif /* PNG_READ_sRGB_SUPPORTED */
+
+#ifdef PNG_READ_iCCP_SUPPORTED
+void /* PRIVATE */
+png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+/* Note: this does not properly handle chunks that are > 64K under DOS */
+{
+ png_byte compression_type;
+ png_bytep pC;
+ png_charp profile;
+ png_uint_32 skip = 0;
+ png_uint_32 profile_size, profile_length;
+ png_size_t slength, prefix_length, data_length;
+
+ png_debug(1, "in png_handle_iCCP");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before iCCP");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid iCCP after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (png_ptr->mode & PNG_HAVE_PLTE)
+ /* Should be an error, but we can cope with it */
+ png_warning(png_ptr, "Out of place iCCP chunk");
+
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP))
+ {
+ png_warning(png_ptr, "Duplicate iCCP chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+#ifdef PNG_MAX_MALLOC_64K
+ if (length > (png_uint_32)65535L)
+ {
+ png_warning(png_ptr, "iCCP chunk too large to fit in memory");
+ skip = length - (png_uint_32)65535L;
+ length = (png_uint_32)65535L;
+ }
+#endif
+
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = (png_charp)png_malloc(png_ptr, length + 1);
+ slength = (png_size_t)length;
+ png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
+
+ if (png_crc_finish(png_ptr, skip))
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+ png_ptr->chunkdata[slength] = 0x00;
+
+ for (profile = png_ptr->chunkdata; *profile; profile++)
+ /* Empty loop to find end of name */ ;
+
+ ++profile;
+
+ /* There should be at least one zero (the compression type byte)
+ * following the separator, and we should be on it
+ */
+ if ( profile >= png_ptr->chunkdata + slength - 1)
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ png_warning(png_ptr, "Malformed iCCP chunk");
+ return;
+ }
+
+ /* Compression_type should always be zero */
+ compression_type = *profile++;
+ if (compression_type)
+ {
+ png_warning(png_ptr, "Ignoring nonzero compression type in iCCP chunk");
+ compression_type = 0x00; /* Reset it to zero (libpng-1.0.6 through 1.0.8
+ wrote nonzero) */
+ }
+
+ prefix_length = profile - png_ptr->chunkdata;
+ png_decompress_chunk(png_ptr, compression_type,
+ slength, prefix_length, &data_length);
+
+ profile_length = data_length - prefix_length;
+
+ if ( prefix_length > data_length || profile_length < 4)
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ png_warning(png_ptr, "Profile size field missing from iCCP chunk");
+ return;
+ }
+
+ /* Check the profile_size recorded in the first 32 bits of the ICC profile */
+ pC = (png_bytep)(png_ptr->chunkdata + prefix_length);
+ profile_size = ((*(pC ))<<24) |
+ ((*(pC + 1))<<16) |
+ ((*(pC + 2))<< 8) |
+ ((*(pC + 3)) );
+
+ if (profile_size < profile_length)
+ profile_length = profile_size;
+
+ if (profile_size > profile_length)
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ png_warning(png_ptr, "Ignoring truncated iCCP profile.");
+ return;
+ }
+
+ png_set_iCCP(png_ptr, info_ptr, png_ptr->chunkdata,
+ compression_type, png_ptr->chunkdata + prefix_length, profile_length);
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+}
+#endif /* PNG_READ_iCCP_SUPPORTED */
+
+#ifdef PNG_READ_sPLT_SUPPORTED
+void /* PRIVATE */
+png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+/* Note: this does not properly handle chunks that are > 64K under DOS */
+{
+ png_bytep entry_start;
+ png_sPLT_t new_palette;
+#ifdef PNG_POINTER_INDEXING_SUPPORTED
+ png_sPLT_entryp pp;
+#endif
+ int data_length, entry_size, i;
+ png_uint_32 skip = 0;
+ png_size_t slength;
+
+ png_debug(1, "in png_handle_sPLT");
+
+#ifdef PNG_USER_LIMITS_SUPPORTED
+
+ if (png_ptr->user_chunk_cache_max != 0)
+ {
+ if (png_ptr->user_chunk_cache_max == 1)
+ {
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ if (--png_ptr->user_chunk_cache_max == 1)
+ {
+ png_warning(png_ptr, "No space in chunk cache for sPLT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ }
+#endif
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before sPLT");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid sPLT after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+#ifdef PNG_MAX_MALLOC_64K
+ if (length > (png_uint_32)65535L)
+ {
+ png_warning(png_ptr, "sPLT chunk too large to fit in memory");
+ skip = length - (png_uint_32)65535L;
+ length = (png_uint_32)65535L;
+ }
+#endif
+
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = (png_charp)png_malloc(png_ptr, length + 1);
+ slength = (png_size_t)length;
+ png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
+
+ if (png_crc_finish(png_ptr, skip))
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+ png_ptr->chunkdata[slength] = 0x00;
+
+ for (entry_start = (png_bytep)png_ptr->chunkdata; *entry_start;
+ entry_start++)
+ /* Empty loop to find end of name */ ;
+ ++entry_start;
+
+ /* A sample depth should follow the separator, and we should be on it */
+ if (entry_start > (png_bytep)png_ptr->chunkdata + slength - 2)
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ png_warning(png_ptr, "malformed sPLT chunk");
+ return;
+ }
+
+ new_palette.depth = *entry_start++;
+ entry_size = (new_palette.depth == 8 ? 6 : 10);
+ data_length = (slength - (entry_start - (png_bytep)png_ptr->chunkdata));
+
+ /* Integrity-check the data length */
+ if (data_length % entry_size)
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ png_warning(png_ptr, "sPLT chunk has bad length");
+ return;
+ }
+
+ new_palette.nentries = (png_int_32) ( data_length / entry_size);
+ if ((png_uint_32) new_palette.nentries >
+ (png_uint_32) (PNG_SIZE_MAX / png_sizeof(png_sPLT_entry)))
+ {
+ png_warning(png_ptr, "sPLT chunk too long");
+ return;
+ }
+ new_palette.entries = (png_sPLT_entryp)png_malloc_warn(
+ png_ptr, new_palette.nentries * png_sizeof(png_sPLT_entry));
+ if (new_palette.entries == NULL)
+ {
+ png_warning(png_ptr, "sPLT chunk requires too much memory");
+ return;
+ }
+
+#ifdef PNG_POINTER_INDEXING_SUPPORTED
+ for (i = 0; i < new_palette.nentries; i++)
+ {
+ pp = new_palette.entries + i;
+
+ if (new_palette.depth == 8)
+ {
+ pp->red = *entry_start++;
+ pp->green = *entry_start++;
+ pp->blue = *entry_start++;
+ pp->alpha = *entry_start++;
+ }
+ else
+ {
+ pp->red = png_get_uint_16(entry_start); entry_start += 2;
+ pp->green = png_get_uint_16(entry_start); entry_start += 2;
+ pp->blue = png_get_uint_16(entry_start); entry_start += 2;
+ pp->alpha = png_get_uint_16(entry_start); entry_start += 2;
+ }
+ pp->frequency = png_get_uint_16(entry_start); entry_start += 2;
+ }
+#else
+ pp = new_palette.entries;
+ for (i = 0; i < new_palette.nentries; i++)
+ {
+
+ if (new_palette.depth == 8)
+ {
+ pp[i].red = *entry_start++;
+ pp[i].green = *entry_start++;
+ pp[i].blue = *entry_start++;
+ pp[i].alpha = *entry_start++;
+ }
+ else
+ {
+ pp[i].red = png_get_uint_16(entry_start); entry_start += 2;
+ pp[i].green = png_get_uint_16(entry_start); entry_start += 2;
+ pp[i].blue = png_get_uint_16(entry_start); entry_start += 2;
+ pp[i].alpha = png_get_uint_16(entry_start); entry_start += 2;
+ }
+ pp->frequency = png_get_uint_16(entry_start); entry_start += 2;
+ }
+#endif
+
+ /* Discard all chunk data except the name and stash that */
+ new_palette.name = png_ptr->chunkdata;
+
+ png_set_sPLT(png_ptr, info_ptr, &new_palette, 1);
+
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ png_free(png_ptr, new_palette.entries);
+}
+#endif /* PNG_READ_sPLT_SUPPORTED */
+
+#ifdef PNG_READ_tRNS_SUPPORTED
+void /* PRIVATE */
+png_handle_tRNS(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_byte readbuf[PNG_MAX_PALETTE_LENGTH];
+
+ png_debug(1, "in png_handle_tRNS");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before tRNS");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid tRNS after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS))
+ {
+ png_warning(png_ptr, "Duplicate tRNS chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY)
+ {
+ png_byte buf[2];
+
+ if (length != 2)
+ {
+ png_warning(png_ptr, "Incorrect tRNS chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_crc_read(png_ptr, buf, 2);
+ png_ptr->num_trans = 1;
+ png_ptr->trans_values.gray = png_get_uint_16(buf);
+ }
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
+ {
+ png_byte buf[6];
+
+ if (length != 6)
+ {
+ png_warning(png_ptr, "Incorrect tRNS chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ png_crc_read(png_ptr, buf, (png_size_t)length);
+ png_ptr->num_trans = 1;
+ png_ptr->trans_values.red = png_get_uint_16(buf);
+ png_ptr->trans_values.green = png_get_uint_16(buf + 2);
+ png_ptr->trans_values.blue = png_get_uint_16(buf + 4);
+ }
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ if (!(png_ptr->mode & PNG_HAVE_PLTE))
+ {
+ /* Should be an error, but we can cope with it. */
+ png_warning(png_ptr, "Missing PLTE before tRNS");
+ }
+ if (length > (png_uint_32)png_ptr->num_palette ||
+ length > PNG_MAX_PALETTE_LENGTH)
+ {
+ png_warning(png_ptr, "Incorrect tRNS chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ if (length == 0)
+ {
+ png_warning(png_ptr, "Zero length tRNS chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ png_crc_read(png_ptr, readbuf, (png_size_t)length);
+ png_ptr->num_trans = (png_uint_16)length;
+ }
+ else
+ {
+ png_warning(png_ptr, "tRNS chunk not allowed with alpha channel");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (png_crc_finish(png_ptr, 0))
+ {
+ png_ptr->num_trans = 0;
+ return;
+ }
+
+ png_set_tRNS(png_ptr, info_ptr, readbuf, png_ptr->num_trans,
+ &(png_ptr->trans_values));
+}
+#endif
+
+#ifdef PNG_READ_bKGD_SUPPORTED
+void /* PRIVATE */
+png_handle_bKGD(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_size_t truelen;
+ png_byte buf[6];
+
+ png_debug(1, "in png_handle_bKGD");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before bKGD");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid bKGD after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
+ !(png_ptr->mode & PNG_HAVE_PLTE))
+ {
+ png_warning(png_ptr, "Missing PLTE before bKGD");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD))
+ {
+ png_warning(png_ptr, "Duplicate bKGD chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ truelen = 1;
+ else if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
+ truelen = 6;
+ else
+ truelen = 2;
+
+ if (length != truelen)
+ {
+ png_warning(png_ptr, "Incorrect bKGD chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_crc_read(png_ptr, buf, truelen);
+ if (png_crc_finish(png_ptr, 0))
+ return;
+
+ /* We convert the index value into RGB components so that we can allow
+ * arbitrary RGB values for background when we have transparency, and
+ * so it is easy to determine the RGB values of the background color
+ * from the info_ptr struct. */
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_ptr->background.index = buf[0];
+ if (info_ptr && info_ptr->num_palette)
+ {
+ if (buf[0] >= info_ptr->num_palette)
+ {
+ png_warning(png_ptr, "Incorrect bKGD chunk index value");
+ return;
+ }
+ png_ptr->background.red =
+ (png_uint_16)png_ptr->palette[buf[0]].red;
+ png_ptr->background.green =
+ (png_uint_16)png_ptr->palette[buf[0]].green;
+ png_ptr->background.blue =
+ (png_uint_16)png_ptr->palette[buf[0]].blue;
+ }
+ }
+ else if (!(png_ptr->color_type & PNG_COLOR_MASK_COLOR)) /* GRAY */
+ {
+ png_ptr->background.red =
+ png_ptr->background.green =
+ png_ptr->background.blue =
+ png_ptr->background.gray = png_get_uint_16(buf);
+ }
+ else
+ {
+ png_ptr->background.red = png_get_uint_16(buf);
+ png_ptr->background.green = png_get_uint_16(buf + 2);
+ png_ptr->background.blue = png_get_uint_16(buf + 4);
+ }
+
+ png_set_bKGD(png_ptr, info_ptr, &(png_ptr->background));
+}
+#endif
+
+#ifdef PNG_READ_hIST_SUPPORTED
+void /* PRIVATE */
+png_handle_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ unsigned int num, i;
+ png_uint_16 readbuf[PNG_MAX_PALETTE_LENGTH];
+
+ png_debug(1, "in png_handle_hIST");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before hIST");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid hIST after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (!(png_ptr->mode & PNG_HAVE_PLTE))
+ {
+ png_warning(png_ptr, "Missing PLTE before hIST");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST))
+ {
+ png_warning(png_ptr, "Duplicate hIST chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (length > 2*PNG_MAX_PALETTE_LENGTH ||
+ length != (unsigned int) (2*png_ptr->num_palette))
+ {
+ png_warning(png_ptr, "Incorrect hIST chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ num = length / 2 ;
+
+ for (i = 0; i < num; i++)
+ {
+ png_byte buf[2];
+
+ png_crc_read(png_ptr, buf, 2);
+ readbuf[i] = png_get_uint_16(buf);
+ }
+
+ if (png_crc_finish(png_ptr, 0))
+ return;
+
+ png_set_hIST(png_ptr, info_ptr, readbuf);
+}
+#endif
+
+#ifdef PNG_READ_pHYs_SUPPORTED
+void /* PRIVATE */
+png_handle_pHYs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_byte buf[9];
+ png_uint_32 res_x, res_y;
+ int unit_type;
+
+ png_debug(1, "in png_handle_pHYs");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before pHYs");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid pHYs after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
+ {
+ png_warning(png_ptr, "Duplicate pHYs chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (length != 9)
+ {
+ png_warning(png_ptr, "Incorrect pHYs chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_crc_read(png_ptr, buf, 9);
+ if (png_crc_finish(png_ptr, 0))
+ return;
+
+ res_x = png_get_uint_32(buf);
+ res_y = png_get_uint_32(buf + 4);
+ unit_type = buf[8];
+ png_set_pHYs(png_ptr, info_ptr, res_x, res_y, unit_type);
+}
+#endif
+
+#ifdef PNG_READ_oFFs_SUPPORTED
+void /* PRIVATE */
+png_handle_oFFs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_byte buf[9];
+ png_int_32 offset_x, offset_y;
+ int unit_type;
+
+ png_debug(1, "in png_handle_oFFs");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before oFFs");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid oFFs after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
+ {
+ png_warning(png_ptr, "Duplicate oFFs chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (length != 9)
+ {
+ png_warning(png_ptr, "Incorrect oFFs chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_crc_read(png_ptr, buf, 9);
+ if (png_crc_finish(png_ptr, 0))
+ return;
+
+ offset_x = png_get_int_32(buf);
+ offset_y = png_get_int_32(buf + 4);
+ unit_type = buf[8];
+ png_set_oFFs(png_ptr, info_ptr, offset_x, offset_y, unit_type);
+}
+#endif
+
+#ifdef PNG_READ_pCAL_SUPPORTED
+/* Read the pCAL chunk (described in the PNG Extensions document) */
+void /* PRIVATE */
+png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_int_32 X0, X1;
+ png_byte type, nparams;
+ png_charp buf, units, endptr;
+ png_charpp params;
+ png_size_t slength;
+ int i;
+
+ png_debug(1, "in png_handle_pCAL");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before pCAL");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid pCAL after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL))
+ {
+ png_warning(png_ptr, "Duplicate pCAL chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_debug1(2, "Allocating and reading pCAL chunk data (%lu bytes)",
+ length + 1);
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
+ if (png_ptr->chunkdata == NULL)
+ {
+ png_warning(png_ptr, "No memory for pCAL purpose.");
+ return;
+ }
+ slength = (png_size_t)length;
+ png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
+
+ if (png_crc_finish(png_ptr, 0))
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+ png_ptr->chunkdata[slength] = 0x00; /* Null terminate the last string */
+
+ png_debug(3, "Finding end of pCAL purpose string");
+ for (buf = png_ptr->chunkdata; *buf; buf++)
+ /* Empty loop */ ;
+
+ endptr = png_ptr->chunkdata + slength;
+
+ /* We need to have at least 12 bytes after the purpose string
+ in order to get the parameter information. */
+ if (endptr <= buf + 12)
+ {
+ png_warning(png_ptr, "Invalid pCAL data");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+ png_debug(3, "Reading pCAL X0, X1, type, nparams, and units");
+ X0 = png_get_int_32((png_bytep)buf+1);
+ X1 = png_get_int_32((png_bytep)buf+5);
+ type = buf[9];
+ nparams = buf[10];
+ units = buf + 11;
+
+ png_debug(3, "Checking pCAL equation type and number of parameters");
+ /* Check that we have the right number of parameters for known
+ equation types. */
+ if ((type == PNG_EQUATION_LINEAR && nparams != 2) ||
+ (type == PNG_EQUATION_BASE_E && nparams != 3) ||
+ (type == PNG_EQUATION_ARBITRARY && nparams != 3) ||
+ (type == PNG_EQUATION_HYPERBOLIC && nparams != 4))
+ {
+ png_warning(png_ptr, "Invalid pCAL parameters for equation type");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+ else if (type >= PNG_EQUATION_LAST)
+ {
+ png_warning(png_ptr, "Unrecognized equation type for pCAL chunk");
+ }
+
+ for (buf = units; *buf; buf++)
+ /* Empty loop to move past the units string. */ ;
+
+ png_debug(3, "Allocating pCAL parameters array");
+ params = (png_charpp)png_malloc_warn(png_ptr,
+ (png_uint_32)(nparams * png_sizeof(png_charp))) ;
+ if (params == NULL)
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ png_warning(png_ptr, "No memory for pCAL params.");
+ return;
+ }
+
+ /* Get pointers to the start of each parameter string. */
+ for (i = 0; i < (int)nparams; i++)
+ {
+ buf++; /* Skip the null string terminator from previous parameter. */
+
+ png_debug1(3, "Reading pCAL parameter %d", i);
+ for (params[i] = buf; buf <= endptr && *buf != 0x00; buf++)
+ /* Empty loop to move past each parameter string */ ;
+
+ /* Make sure we haven't run out of data yet */
+ if (buf > endptr)
+ {
+ png_warning(png_ptr, "Invalid pCAL data");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ png_free(png_ptr, params);
+ return;
+ }
+ }
+
+ png_set_pCAL(png_ptr, info_ptr, png_ptr->chunkdata, X0, X1, type, nparams,
+ units, params);
+
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ png_free(png_ptr, params);
+}
+#endif
+
+#ifdef PNG_READ_sCAL_SUPPORTED
+/* Read the sCAL chunk */
+void /* PRIVATE */
+png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_charp ep;
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ double width, height;
+ png_charp vp;
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ png_charp swidth, sheight;
+#endif
+#endif
+ png_size_t slength;
+
+ png_debug(1, "in png_handle_sCAL");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before sCAL");
+ else if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+ png_warning(png_ptr, "Invalid sCAL after IDAT");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sCAL))
+ {
+ png_warning(png_ptr, "Duplicate sCAL chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ /* Need unit type, width, \0, height: minimum 4 bytes */
+ else if (length < 4)
+ {
+ png_warning(png_ptr, "sCAL chunk too short");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_debug1(2, "Allocating and reading sCAL chunk data (%lu bytes)",
+ length + 1);
+ png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
+ if (png_ptr->chunkdata == NULL)
+ {
+ png_warning(png_ptr, "Out of memory while processing sCAL chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ slength = (png_size_t)length;
+ png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
+
+ if (png_crc_finish(png_ptr, 0))
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+ png_ptr->chunkdata[slength] = 0x00; /* Null terminate the last string */
+
+ ep = png_ptr->chunkdata + 1; /* Skip unit byte */
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ width = png_strtod(png_ptr, ep, &vp);
+ if (*vp)
+ {
+ png_warning(png_ptr, "malformed width string in sCAL chunk");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ swidth = (png_charp)png_malloc_warn(png_ptr, png_strlen(ep) + 1);
+ if (swidth == NULL)
+ {
+ png_warning(png_ptr, "Out of memory while processing sCAL chunk width");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+ png_memcpy(swidth, ep, (png_size_t)png_strlen(ep) + 1);
+#endif
+#endif
+
+ for (ep = png_ptr->chunkdata + 1; *ep; ep++)
+ /* Empty loop */ ;
+ ep++;
+
+ if (png_ptr->chunkdata + slength < ep)
+ {
+ png_warning(png_ptr, "Truncated sCAL chunk");
+#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
+ png_free(png_ptr, swidth);
+#endif
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ height = png_strtod(png_ptr, ep, &vp);
+ if (*vp)
+ {
+ png_warning(png_ptr, "malformed height string in sCAL chunk");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
+ png_free(png_ptr, swidth);
+#endif
+ return;
+ }
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ sheight = (png_charp)png_malloc_warn(png_ptr, png_strlen(ep) + 1);
+ if (sheight == NULL)
+ {
+ png_warning(png_ptr, "Out of memory while processing sCAL chunk height");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
+ png_free(png_ptr, swidth);
+#endif
+ return;
+ }
+ png_memcpy(sheight, ep, (png_size_t)png_strlen(ep) + 1);
+#endif
+#endif
+
+ if (png_ptr->chunkdata + slength < ep
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ || width <= 0. || height <= 0.
+#endif
+ )
+ {
+ png_warning(png_ptr, "Invalid sCAL data");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
+ png_free(png_ptr, swidth);
+ png_free(png_ptr, sheight);
+#endif
+ return;
+ }
+
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ png_set_sCAL(png_ptr, info_ptr, png_ptr->chunkdata[0], width, height);
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ png_set_sCAL_s(png_ptr, info_ptr, png_ptr->chunkdata[0], swidth, sheight);
+#endif
+#endif
+
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
+ png_free(png_ptr, swidth);
+ png_free(png_ptr, sheight);
+#endif
+}
+#endif
+
+#ifdef PNG_READ_tIME_SUPPORTED
+void /* PRIVATE */
+png_handle_tIME(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_byte buf[7];
+ png_time mod_time;
+
+ png_debug(1, "in png_handle_tIME");
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Out of place tIME chunk");
+ else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME))
+ {
+ png_warning(png_ptr, "Duplicate tIME chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ if (png_ptr->mode & PNG_HAVE_IDAT)
+ png_ptr->mode |= PNG_AFTER_IDAT;
+
+ if (length != 7)
+ {
+ png_warning(png_ptr, "Incorrect tIME chunk length");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+
+ png_crc_read(png_ptr, buf, 7);
+ if (png_crc_finish(png_ptr, 0))
+ return;
+
+ mod_time.second = buf[6];
+ mod_time.minute = buf[5];
+ mod_time.hour = buf[4];
+ mod_time.day = buf[3];
+ mod_time.month = buf[2];
+ mod_time.year = png_get_uint_16(buf);
+
+ png_set_tIME(png_ptr, info_ptr, &mod_time);
+}
+#endif
+
+#ifdef PNG_READ_tEXt_SUPPORTED
+/* Note: this does not properly handle chunks that are > 64K under DOS */
+void /* PRIVATE */
+png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_textp text_ptr;
+ png_charp key;
+ png_charp text;
+ png_uint_32 skip = 0;
+ png_size_t slength;
+ int ret;
+
+ png_debug(1, "in png_handle_tEXt");
+
+#ifdef PNG_USER_LIMITS_SUPPORTED
+ if (png_ptr->user_chunk_cache_max != 0)
+ {
+ if (png_ptr->user_chunk_cache_max == 1)
+ {
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ if (--png_ptr->user_chunk_cache_max == 1)
+ {
+ png_warning(png_ptr, "No space in chunk cache for tEXt");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ }
+#endif
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before tEXt");
+
+ if (png_ptr->mode & PNG_HAVE_IDAT)
+ png_ptr->mode |= PNG_AFTER_IDAT;
+
+#ifdef PNG_MAX_MALLOC_64K
+ if (length > (png_uint_32)65535L)
+ {
+ png_warning(png_ptr, "tEXt chunk too large to fit in memory");
+ skip = length - (png_uint_32)65535L;
+ length = (png_uint_32)65535L;
+ }
+#endif
+
+ png_free(png_ptr, png_ptr->chunkdata);
+
+ png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
+ if (png_ptr->chunkdata == NULL)
+ {
+ png_warning(png_ptr, "No memory to process text chunk.");
+ return;
+ }
+ slength = (png_size_t)length;
+ png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
+
+ if (png_crc_finish(png_ptr, skip))
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+ key = png_ptr->chunkdata;
+
+ key[slength] = 0x00;
+
+ for (text = key; *text; text++)
+ /* Empty loop to find end of key */ ;
+
+ if (text != key + slength)
+ text++;
+
+ text_ptr = (png_textp)png_malloc_warn(png_ptr,
+ (png_uint_32)png_sizeof(png_text));
+ if (text_ptr == NULL)
+ {
+ png_warning(png_ptr, "Not enough memory to process text chunk.");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+ text_ptr->compression = PNG_TEXT_COMPRESSION_NONE;
+ text_ptr->key = key;
+#ifdef PNG_iTXt_SUPPORTED
+ text_ptr->lang = NULL;
+ text_ptr->lang_key = NULL;
+ text_ptr->itxt_length = 0;
+#endif
+ text_ptr->text = text;
+ text_ptr->text_length = png_strlen(text);
+
+ ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
+
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ png_free(png_ptr, text_ptr);
+ if (ret)
+ png_warning(png_ptr, "Insufficient memory to process text chunk.");
+}
+#endif
+
+#ifdef PNG_READ_zTXt_SUPPORTED
+/* Note: this does not correctly handle chunks that are > 64K under DOS */
+void /* PRIVATE */
+png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_textp text_ptr;
+ png_charp text;
+ int comp_type;
+ int ret;
+ png_size_t slength, prefix_len, data_len;
+
+ png_debug(1, "in png_handle_zTXt");
+
+#ifdef PNG_USER_LIMITS_SUPPORTED
+ if (png_ptr->user_chunk_cache_max != 0)
+ {
+ if (png_ptr->user_chunk_cache_max == 1)
+ {
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ if (--png_ptr->user_chunk_cache_max == 1)
+ {
+ png_warning(png_ptr, "No space in chunk cache for zTXt");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ }
+#endif
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before zTXt");
+
+ if (png_ptr->mode & PNG_HAVE_IDAT)
+ png_ptr->mode |= PNG_AFTER_IDAT;
+
+#ifdef PNG_MAX_MALLOC_64K
+ /* We will no doubt have problems with chunks even half this size, but
+ there is no hard and fast rule to tell us where to stop. */
+ if (length > (png_uint_32)65535L)
+ {
+ png_warning(png_ptr, "zTXt chunk too large to fit in memory");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+#endif
+
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
+ if (png_ptr->chunkdata == NULL)
+ {
+ png_warning(png_ptr, "Out of memory processing zTXt chunk.");
+ return;
+ }
+ slength = (png_size_t)length;
+ png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
+ if (png_crc_finish(png_ptr, 0))
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+ png_ptr->chunkdata[slength] = 0x00;
+
+ for (text = png_ptr->chunkdata; *text; text++)
+ /* Empty loop */ ;
+
+ /* zTXt must have some text after the chunkdataword */
+ if (text >= png_ptr->chunkdata + slength - 2)
+ {
+ png_warning(png_ptr, "Truncated zTXt chunk");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+ else
+ {
+ comp_type = *(++text);
+ if (comp_type != PNG_TEXT_COMPRESSION_zTXt)
+ {
+ png_warning(png_ptr, "Unknown compression type in zTXt chunk");
+ comp_type = PNG_TEXT_COMPRESSION_zTXt;
+ }
+ text++; /* Skip the compression_method byte */
+ }
+ prefix_len = text - png_ptr->chunkdata;
+
+ png_decompress_chunk(png_ptr, comp_type,
+ (png_size_t)length, prefix_len, &data_len);
+
+ text_ptr = (png_textp)png_malloc_warn(png_ptr,
+ (png_uint_32)png_sizeof(png_text));
+ if (text_ptr == NULL)
+ {
+ png_warning(png_ptr, "Not enough memory to process zTXt chunk.");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+ text_ptr->compression = comp_type;
+ text_ptr->key = png_ptr->chunkdata;
+#ifdef PNG_iTXt_SUPPORTED
+ text_ptr->lang = NULL;
+ text_ptr->lang_key = NULL;
+ text_ptr->itxt_length = 0;
+#endif
+ text_ptr->text = png_ptr->chunkdata + prefix_len;
+ text_ptr->text_length = data_len;
+
+ ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
+
+ png_free(png_ptr, text_ptr);
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ if (ret)
+ png_error(png_ptr, "Insufficient memory to store zTXt chunk.");
+}
+#endif
+
+#ifdef PNG_READ_iTXt_SUPPORTED
+/* Note: this does not correctly handle chunks that are > 64K under DOS */
+void /* PRIVATE */
+png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_textp text_ptr;
+ png_charp key, lang, text, lang_key;
+ int comp_flag;
+ int comp_type = 0;
+ int ret;
+ png_size_t slength, prefix_len, data_len;
+
+ png_debug(1, "in png_handle_iTXt");
+
+#ifdef PNG_USER_LIMITS_SUPPORTED
+ if (png_ptr->user_chunk_cache_max != 0)
+ {
+ if (png_ptr->user_chunk_cache_max == 1)
+ {
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ if (--png_ptr->user_chunk_cache_max == 1)
+ {
+ png_warning(png_ptr, "No space in chunk cache for iTXt");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ }
+#endif
+
+ if (!(png_ptr->mode & PNG_HAVE_IHDR))
+ png_error(png_ptr, "Missing IHDR before iTXt");
+
+ if (png_ptr->mode & PNG_HAVE_IDAT)
+ png_ptr->mode |= PNG_AFTER_IDAT;
+
+#ifdef PNG_MAX_MALLOC_64K
+ /* We will no doubt have problems with chunks even half this size, but
+ there is no hard and fast rule to tell us where to stop. */
+ if (length > (png_uint_32)65535L)
+ {
+ png_warning(png_ptr, "iTXt chunk too large to fit in memory");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+#endif
+
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
+ if (png_ptr->chunkdata == NULL)
+ {
+ png_warning(png_ptr, "No memory to process iTXt chunk.");
+ return;
+ }
+ slength = (png_size_t)length;
+ png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
+ if (png_crc_finish(png_ptr, 0))
+ {
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+ png_ptr->chunkdata[slength] = 0x00;
+
+ for (lang = png_ptr->chunkdata; *lang; lang++)
+ /* Empty loop */ ;
+ lang++; /* Skip NUL separator */
+
+ /* iTXt must have a language tag (possibly empty), two compression bytes,
+ * translated keyword (possibly empty), and possibly some text after the
+ * keyword
+ */
+
+ if (lang >= png_ptr->chunkdata + slength - 3)
+ {
+ png_warning(png_ptr, "Truncated iTXt chunk");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+ else
+ {
+ comp_flag = *lang++;
+ comp_type = *lang++;
+ }
+
+ for (lang_key = lang; *lang_key; lang_key++)
+ /* Empty loop */ ;
+ lang_key++; /* Skip NUL separator */
+
+ if (lang_key >= png_ptr->chunkdata + slength)
+ {
+ png_warning(png_ptr, "Truncated iTXt chunk");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+ for (text = lang_key; *text; text++)
+ /* Empty loop */ ;
+ text++; /* Skip NUL separator */
+ if (text >= png_ptr->chunkdata + slength)
+ {
+ png_warning(png_ptr, "Malformed iTXt chunk");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+
+ prefix_len = text - png_ptr->chunkdata;
+
+ key=png_ptr->chunkdata;
+ if (comp_flag)
+ png_decompress_chunk(png_ptr, comp_type,
+ (size_t)length, prefix_len, &data_len);
+ else
+ data_len = png_strlen(png_ptr->chunkdata + prefix_len);
+ text_ptr = (png_textp)png_malloc_warn(png_ptr,
+ (png_uint_32)png_sizeof(png_text));
+ if (text_ptr == NULL)
+ {
+ png_warning(png_ptr, "Not enough memory to process iTXt chunk.");
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ return;
+ }
+ text_ptr->compression = (int)comp_flag + 1;
+ text_ptr->lang_key = png_ptr->chunkdata + (lang_key - key);
+ text_ptr->lang = png_ptr->chunkdata + (lang - key);
+ text_ptr->itxt_length = data_len;
+ text_ptr->text_length = 0;
+ text_ptr->key = png_ptr->chunkdata;
+ text_ptr->text = png_ptr->chunkdata + prefix_len;
+
+ ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
+
+ png_free(png_ptr, text_ptr);
+ png_free(png_ptr, png_ptr->chunkdata);
+ png_ptr->chunkdata = NULL;
+ if (ret)
+ png_error(png_ptr, "Insufficient memory to store iTXt chunk.");
+}
+#endif
+
+/* This function is called when we haven't found a handler for a
+ chunk. If there isn't a problem with the chunk itself (ie bad
+ chunk name, CRC, or a critical chunk), the chunk is silently ignored
+ -- unless the PNG_FLAG_UNKNOWN_CHUNKS_SUPPORTED flag is on in which
+ case it will be saved away to be written out later. */
+void /* PRIVATE */
+png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
+{
+ png_uint_32 skip = 0;
+
+ png_debug(1, "in png_handle_unknown");
+
+#ifdef PNG_USER_LIMITS_SUPPORTED
+ if (png_ptr->user_chunk_cache_max != 0)
+ {
+ if (png_ptr->user_chunk_cache_max == 1)
+ {
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ if (--png_ptr->user_chunk_cache_max == 1)
+ {
+ png_warning(png_ptr, "No space in chunk cache for unknown chunk");
+ png_crc_finish(png_ptr, length);
+ return;
+ }
+ }
+#endif
+
+ if (png_ptr->mode & PNG_HAVE_IDAT)
+ {
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_CONST PNG_IDAT;
+#endif
+ if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) /* Not an IDAT */
+ png_ptr->mode |= PNG_AFTER_IDAT;
+ }
+
+ if (!(png_ptr->chunk_name[0] & 0x20))
+ {
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+ if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
+ PNG_HANDLE_CHUNK_ALWAYS
+#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
+ && png_ptr->read_user_chunk_fn == NULL
+#endif
+ )
+#endif
+ png_chunk_error(png_ptr, "unknown critical chunk");
+ }
+
+#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
+ if ((png_ptr->flags & PNG_FLAG_KEEP_UNKNOWN_CHUNKS)
+#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
+ || (png_ptr->read_user_chunk_fn != NULL)
+#endif
+ )
+ {
+#ifdef PNG_MAX_MALLOC_64K
+ if (length > (png_uint_32)65535L)
+ {
+ png_warning(png_ptr, "unknown chunk too large to fit in memory");
+ skip = length - (png_uint_32)65535L;
+ length = (png_uint_32)65535L;
+ }
+#endif
+ png_memcpy((png_charp)png_ptr->unknown_chunk.name,
+ (png_charp)png_ptr->chunk_name,
+ png_sizeof(png_ptr->unknown_chunk.name));
+ png_ptr->unknown_chunk.name[png_sizeof(png_ptr->unknown_chunk.name)-1]
+ = '\0';
+ png_ptr->unknown_chunk.size = (png_size_t)length;
+ if (length == 0)
+ png_ptr->unknown_chunk.data = NULL;
+ else
+ {
+ png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr, length);
+ png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
+ }
+#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
+ if (png_ptr->read_user_chunk_fn != NULL)
+ {
+ /* Callback to user unknown chunk handler */
+ int ret;
+ ret = (*(png_ptr->read_user_chunk_fn))
+ (png_ptr, &png_ptr->unknown_chunk);
+ if (ret < 0)
+ png_chunk_error(png_ptr, "error in user chunk");
+ if (ret == 0)
+ {
+ if (!(png_ptr->chunk_name[0] & 0x20))
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+ if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
+ PNG_HANDLE_CHUNK_ALWAYS)
+#endif
+ png_chunk_error(png_ptr, "unknown critical chunk");
+ png_set_unknown_chunks(png_ptr, info_ptr,
+ &png_ptr->unknown_chunk, 1);
+ }
+ }
+ else
+#endif
+ png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1);
+ png_free(png_ptr, png_ptr->unknown_chunk.data);
+ png_ptr->unknown_chunk.data = NULL;
+ }
+ else
+#endif
+ skip = length;
+
+ png_crc_finish(png_ptr, skip);
+
+#ifndef PNG_READ_USER_CHUNKS_SUPPORTED
+ info_ptr = info_ptr; /* Quiet compiler warnings about unused info_ptr */
+#endif
+}
+
+/* This function is called to verify that a chunk name is valid.
+ This function can't have the "critical chunk check" incorporated
+ into it, since in the future we will need to be able to call user
+ functions to handle unknown critical chunks after we check that
+ the chunk name itself is valid. */
+
+#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97))
+
+void /* PRIVATE */
+png_check_chunk_name(png_structp png_ptr, png_bytep chunk_name)
+{
+ png_debug(1, "in png_check_chunk_name");
+ if (isnonalpha(chunk_name[0]) || isnonalpha(chunk_name[1]) ||
+ isnonalpha(chunk_name[2]) || isnonalpha(chunk_name[3]))
+ {
+ png_chunk_error(png_ptr, "invalid chunk type");
+ }
+}
+
+/* Combines the row recently read in with the existing pixels in the
+ row. This routine takes care of alpha and transparency if requested.
+ This routine also handles the two methods of progressive display
+ of interlaced images, depending on the mask value.
+ The mask value describes which pixels are to be combined with
+ the row. The pattern always repeats every 8 pixels, so just 8
+ bits are needed. A one indicates the pixel is to be combined,
+ a zero indicates the pixel is to be skipped. This is in addition
+ to any alpha or transparency value associated with the pixel. If
+ you want all pixels to be combined, pass 0xff (255) in mask. */
+
+void /* PRIVATE */
+png_combine_row(png_structp png_ptr, png_bytep row, int mask)
+{
+ png_debug(1, "in png_combine_row");
+ if (mask == 0xff)
+ {
+ png_memcpy(row, png_ptr->row_buf + 1,
+ PNG_ROWBYTES(png_ptr->row_info.pixel_depth, png_ptr->width));
+ }
+ else
+ {
+ switch (png_ptr->row_info.pixel_depth)
+ {
+ case 1:
+ {
+ png_bytep sp = png_ptr->row_buf + 1;
+ png_bytep dp = row;
+ int s_inc, s_start, s_end;
+ int m = 0x80;
+ int shift;
+ png_uint_32 i;
+ png_uint_32 row_width = png_ptr->width;
+
+#ifdef PNG_READ_PACKSWAP_SUPPORTED
+ if (png_ptr->transformations & PNG_PACKSWAP)
+ {
+ s_start = 0;
+ s_end = 7;
+ s_inc = 1;
+ }
+ else
+#endif
+ {
+ s_start = 7;
+ s_end = 0;
+ s_inc = -1;
+ }
+
+ shift = s_start;
+
+ for (i = 0; i < row_width; i++)
+ {
+ if (m & mask)
+ {
+ int value;
+
+ value = (*sp >> shift) & 0x01;
+ *dp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff);
+ *dp |= (png_byte)(value << shift);
+ }
+
+ if (shift == s_end)
+ {
+ shift = s_start;
+ sp++;
+ dp++;
+ }
+ else
+ shift += s_inc;
+
+ if (m == 1)
+ m = 0x80;
+ else
+ m >>= 1;
+ }
+ break;
+ }
+ case 2:
+ {
+ png_bytep sp = png_ptr->row_buf + 1;
+ png_bytep dp = row;
+ int s_start, s_end, s_inc;
+ int m = 0x80;
+ int shift;
+ png_uint_32 i;
+ png_uint_32 row_width = png_ptr->width;
+ int value;
+
+#ifdef PNG_READ_PACKSWAP_SUPPORTED
+ if (png_ptr->transformations & PNG_PACKSWAP)
+ {
+ s_start = 0;
+ s_end = 6;
+ s_inc = 2;
+ }
+ else
+#endif
+ {
+ s_start = 6;
+ s_end = 0;
+ s_inc = -2;
+ }
+
+ shift = s_start;
+
+ for (i = 0; i < row_width; i++)
+ {
+ if (m & mask)
+ {
+ value = (*sp >> shift) & 0x03;
+ *dp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
+ *dp |= (png_byte)(value << shift);
+ }
+
+ if (shift == s_end)
+ {
+ shift = s_start;
+ sp++;
+ dp++;
+ }
+ else
+ shift += s_inc;
+ if (m == 1)
+ m = 0x80;
+ else
+ m >>= 1;
+ }
+ break;
+ }
+ case 4:
+ {
+ png_bytep sp = png_ptr->row_buf + 1;
+ png_bytep dp = row;
+ int s_start, s_end, s_inc;
+ int m = 0x80;
+ int shift;
+ png_uint_32 i;
+ png_uint_32 row_width = png_ptr->width;
+ int value;
+
+#ifdef PNG_READ_PACKSWAP_SUPPORTED
+ if (png_ptr->transformations & PNG_PACKSWAP)
+ {
+ s_start = 0;
+ s_end = 4;
+ s_inc = 4;
+ }
+ else
+#endif
+ {
+ s_start = 4;
+ s_end = 0;
+ s_inc = -4;
+ }
+ shift = s_start;
+
+ for (i = 0; i < row_width; i++)
+ {
+ if (m & mask)
+ {
+ value = (*sp >> shift) & 0xf;
+ *dp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
+ *dp |= (png_byte)(value << shift);
+ }
+
+ if (shift == s_end)
+ {
+ shift = s_start;
+ sp++;
+ dp++;
+ }
+ else
+ shift += s_inc;
+ if (m == 1)
+ m = 0x80;
+ else
+ m >>= 1;
+ }
+ break;
+ }
+ default:
+ {
+ png_bytep sp = png_ptr->row_buf + 1;
+ png_bytep dp = row;
+ png_size_t pixel_bytes = (png_ptr->row_info.pixel_depth >> 3);
+ png_uint_32 i;
+ png_uint_32 row_width = png_ptr->width;
+ png_byte m = 0x80;
+
+
+ for (i = 0; i < row_width; i++)
+ {
+ if (m & mask)
+ {
+ png_memcpy(dp, sp, pixel_bytes);
+ }
+
+ sp += pixel_bytes;
+ dp += pixel_bytes;
+
+ if (m == 1)
+ m = 0x80;
+ else
+ m >>= 1;
+ }
+ break;
+ }
+ }
+ }
+}
+
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+/* OLD pre-1.0.9 interface:
+void png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass,
+ png_uint_32 transformations)
+ */
+void /* PRIVATE */
+png_do_read_interlace(png_structp png_ptr)
+{
+ png_row_infop row_info = &(png_ptr->row_info);
+ png_bytep row = png_ptr->row_buf + 1;
+ int pass = png_ptr->pass;
+ png_uint_32 transformations = png_ptr->transformations;
+ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
+ /* Offset to next interlace block */
+ PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
+
+ png_debug(1, "in png_do_read_interlace");
+ if (row != NULL && row_info != NULL)
+ {
+ png_uint_32 final_width;
+
+ final_width = row_info->width * png_pass_inc[pass];
+
+ switch (row_info->pixel_depth)
+ {
+ case 1:
+ {
+ png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 3);
+ png_bytep dp = row + (png_size_t)((final_width - 1) >> 3);
+ int sshift, dshift;
+ int s_start, s_end, s_inc;
+ int jstop = png_pass_inc[pass];
+ png_byte v;
+ png_uint_32 i;
+ int j;
+
+#ifdef PNG_READ_PACKSWAP_SUPPORTED
+ if (transformations & PNG_PACKSWAP)
+ {
+ sshift = (int)((row_info->width + 7) & 0x07);
+ dshift = (int)((final_width + 7) & 0x07);
+ s_start = 7;
+ s_end = 0;
+ s_inc = -1;
+ }
+ else
+#endif
+ {
+ sshift = 7 - (int)((row_info->width + 7) & 0x07);
+ dshift = 7 - (int)((final_width + 7) & 0x07);
+ s_start = 0;
+ s_end = 7;
+ s_inc = 1;
+ }
+
+ for (i = 0; i < row_info->width; i++)
+ {
+ v = (png_byte)((*sp >> sshift) & 0x01);
+ for (j = 0; j < jstop; j++)
+ {
+ *dp &= (png_byte)((0x7f7f >> (7 - dshift)) & 0xff);
+ *dp |= (png_byte)(v << dshift);
+ if (dshift == s_end)
+ {
+ dshift = s_start;
+ dp--;
+ }
+ else
+ dshift += s_inc;
+ }
+ if (sshift == s_end)
+ {
+ sshift = s_start;
+ sp--;
+ }
+ else
+ sshift += s_inc;
+ }
+ break;
+ }
+ case 2:
+ {
+ png_bytep sp = row + (png_uint_32)((row_info->width - 1) >> 2);
+ png_bytep dp = row + (png_uint_32)((final_width - 1) >> 2);
+ int sshift, dshift;
+ int s_start, s_end, s_inc;
+ int jstop = png_pass_inc[pass];
+ png_uint_32 i;
+
+#ifdef PNG_READ_PACKSWAP_SUPPORTED
+ if (transformations & PNG_PACKSWAP)
+ {
+ sshift = (int)(((row_info->width + 3) & 0x03) << 1);
+ dshift = (int)(((final_width + 3) & 0x03) << 1);
+ s_start = 6;
+ s_end = 0;
+ s_inc = -2;
+ }
+ else
+#endif
+ {
+ sshift = (int)((3 - ((row_info->width + 3) & 0x03)) << 1);
+ dshift = (int)((3 - ((final_width + 3) & 0x03)) << 1);
+ s_start = 0;
+ s_end = 6;
+ s_inc = 2;
+ }
+
+ for (i = 0; i < row_info->width; i++)
+ {
+ png_byte v;
+ int j;
+
+ v = (png_byte)((*sp >> sshift) & 0x03);
+ for (j = 0; j < jstop; j++)
+ {
+ *dp &= (png_byte)((0x3f3f >> (6 - dshift)) & 0xff);
+ *dp |= (png_byte)(v << dshift);
+ if (dshift == s_end)
+ {
+ dshift = s_start;
+ dp--;
+ }
+ else
+ dshift += s_inc;
+ }
+ if (sshift == s_end)
+ {
+ sshift = s_start;
+ sp--;
+ }
+ else
+ sshift += s_inc;
+ }
+ break;
+ }
+ case 4:
+ {
+ png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 1);
+ png_bytep dp = row + (png_size_t)((final_width - 1) >> 1);
+ int sshift, dshift;
+ int s_start, s_end, s_inc;
+ png_uint_32 i;
+ int jstop = png_pass_inc[pass];
+
+#ifdef PNG_READ_PACKSWAP_SUPPORTED
+ if (transformations & PNG_PACKSWAP)
+ {
+ sshift = (int)(((row_info->width + 1) & 0x01) << 2);
+ dshift = (int)(((final_width + 1) & 0x01) << 2);
+ s_start = 4;
+ s_end = 0;
+ s_inc = -4;
+ }
+ else
+#endif
+ {
+ sshift = (int)((1 - ((row_info->width + 1) & 0x01)) << 2);
+ dshift = (int)((1 - ((final_width + 1) & 0x01)) << 2);
+ s_start = 0;
+ s_end = 4;
+ s_inc = 4;
+ }
+
+ for (i = 0; i < row_info->width; i++)
+ {
+ png_byte v = (png_byte)((*sp >> sshift) & 0xf);
+ int j;
+
+ for (j = 0; j < jstop; j++)
+ {
+ *dp &= (png_byte)((0xf0f >> (4 - dshift)) & 0xff);
+ *dp |= (png_byte)(v << dshift);
+ if (dshift == s_end)
+ {
+ dshift = s_start;
+ dp--;
+ }
+ else
+ dshift += s_inc;
+ }
+ if (sshift == s_end)
+ {
+ sshift = s_start;
+ sp--;
+ }
+ else
+ sshift += s_inc;
+ }
+ break;
+ }
+ default:
+ {
+ png_size_t pixel_bytes = (row_info->pixel_depth >> 3);
+ png_bytep sp = row + (png_size_t)(row_info->width - 1)
+ * pixel_bytes;
+ png_bytep dp = row + (png_size_t)(final_width - 1) * pixel_bytes;
+
+ int jstop = png_pass_inc[pass];
+ png_uint_32 i;
+
+ for (i = 0; i < row_info->width; i++)
+ {
+ png_byte v[8];
+ int j;
+
+ png_memcpy(v, sp, pixel_bytes);
+ for (j = 0; j < jstop; j++)
+ {
+ png_memcpy(dp, v, pixel_bytes);
+ dp -= pixel_bytes;
+ }
+ sp -= pixel_bytes;
+ }
+ break;
+ }
+ }
+ row_info->width = final_width;
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, final_width);
+ }
+#ifndef PNG_READ_PACKSWAP_SUPPORTED
+ transformations = transformations; /* Silence compiler warning */
+#endif
+}
+#endif /* PNG_READ_INTERLACING_SUPPORTED */
+
+void /* PRIVATE */
+png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row,
+ png_bytep prev_row, int filter)
+{
+ png_debug(1, "in png_read_filter_row");
+ png_debug2(2, "row = %lu, filter = %d", png_ptr->row_number, filter);
+ switch (filter)
+ {
+ case PNG_FILTER_VALUE_NONE:
+ break;
+ case PNG_FILTER_VALUE_SUB:
+ {
+ png_uint_32 i;
+ png_uint_32 istop = row_info->rowbytes;
+ png_uint_32 bpp = (row_info->pixel_depth + 7) >> 3;
+ png_bytep rp = row + bpp;
+ png_bytep lp = row;
+
+ for (i = bpp; i < istop; i++)
+ {
+ *rp = (png_byte)(((int)(*rp) + (int)(*lp++)) & 0xff);
+ rp++;
+ }
+ break;
+ }
+ case PNG_FILTER_VALUE_UP:
+ {
+ png_uint_32 i;
+ png_uint_32 istop = row_info->rowbytes;
+ png_bytep rp = row;
+ png_bytep pp = prev_row;
+
+ for (i = 0; i < istop; i++)
+ {
+ *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff);
+ rp++;
+ }
+ break;
+ }
+ case PNG_FILTER_VALUE_AVG:
+ {
+ png_uint_32 i;
+ png_bytep rp = row;
+ png_bytep pp = prev_row;
+ png_bytep lp = row;
+ png_uint_32 bpp = (row_info->pixel_depth + 7) >> 3;
+ png_uint_32 istop = row_info->rowbytes - bpp;
+
+ for (i = 0; i < bpp; i++)
+ {
+ *rp = (png_byte)(((int)(*rp) +
+ ((int)(*pp++) / 2 )) & 0xff);
+ rp++;
+ }
+
+ for (i = 0; i < istop; i++)
+ {
+ *rp = (png_byte)(((int)(*rp) +
+ (int)(*pp++ + *lp++) / 2 ) & 0xff);
+ rp++;
+ }
+ break;
+ }
+ case PNG_FILTER_VALUE_PAETH:
+ {
+ png_uint_32 i;
+ png_bytep rp = row;
+ png_bytep pp = prev_row;
+ png_bytep lp = row;
+ png_bytep cp = prev_row;
+ png_uint_32 bpp = (row_info->pixel_depth + 7) >> 3;
+ png_uint_32 istop=row_info->rowbytes - bpp;
+
+ for (i = 0; i < bpp; i++)
+ {
+ *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff);
+ rp++;
+ }
+
+ for (i = 0; i < istop; i++) /* Use leftover rp,pp */
+ {
+ int a, b, c, pa, pb, pc, p;
+
+ a = *lp++;
+ b = *pp++;
+ c = *cp++;
+
+ p = b - c;
+ pc = a - c;
+
+#ifdef PNG_USE_ABS
+ pa = abs(p);
+ pb = abs(pc);
+ pc = abs(p + pc);
+#else
+ pa = p < 0 ? -p : p;
+ pb = pc < 0 ? -pc : pc;
+ pc = (p + pc) < 0 ? -(p + pc) : p + pc;
+#endif
+
+ /*
+ if (pa <= pb && pa <= pc)
+ p = a;
+ else if (pb <= pc)
+ p = b;
+ else
+ p = c;
+ */
+
+ p = (pa <= pb && pa <= pc) ? a : (pb <= pc) ? b : c;
+
+ *rp = (png_byte)(((int)(*rp) + p) & 0xff);
+ rp++;
+ }
+ break;
+ }
+ default:
+ png_warning(png_ptr, "Ignoring bad adaptive filter type");
+ *row = 0;
+ break;
+ }
+}
+
+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
+void /* PRIVATE */
+png_read_finish_row(png_structp png_ptr)
+{
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
+
+ /* Start of interlace block */
+ PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
+
+ /* Offset to next interlace block */
+ PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
+
+ /* Start of interlace block in the y direction */
+ PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
+
+ /* Offset to next interlace block in the y direction */
+ PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
+#endif /* PNG_READ_INTERLACING_SUPPORTED */
+
+ png_debug(1, "in png_read_finish_row");
+ png_ptr->row_number++;
+ if (png_ptr->row_number < png_ptr->num_rows)
+ return;
+
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+ if (png_ptr->interlaced)
+ {
+ png_ptr->row_number = 0;
+ png_memset_check(png_ptr, png_ptr->prev_row, 0,
+ png_ptr->rowbytes + 1);
+ do
+ {
+ png_ptr->pass++;
+ if (png_ptr->pass >= 7)
+ break;
+ png_ptr->iwidth = (png_ptr->width +
+ png_pass_inc[png_ptr->pass] - 1 -
+ png_pass_start[png_ptr->pass]) /
+ png_pass_inc[png_ptr->pass];
+
+ if (!(png_ptr->transformations & PNG_INTERLACE))
+ {
+ png_ptr->num_rows = (png_ptr->height +
+ png_pass_yinc[png_ptr->pass] - 1 -
+ png_pass_ystart[png_ptr->pass]) /
+ png_pass_yinc[png_ptr->pass];
+ if (!(png_ptr->num_rows))
+ continue;
+ }
+ else /* if (png_ptr->transformations & PNG_INTERLACE) */
+ break;
+ } while (png_ptr->iwidth == 0);
+
+ if (png_ptr->pass < 7)
+ return;
+ }
+#endif /* PNG_READ_INTERLACING_SUPPORTED */
+
+ if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
+ {
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_CONST PNG_IDAT;
+#endif
+ char extra;
+ int ret;
+
+ png_ptr->zstream.next_out = (Byte *)&extra;
+ png_ptr->zstream.avail_out = (uInt)1;
+ for (;;)
+ {
+ if (!(png_ptr->zstream.avail_in))
+ {
+ while (!png_ptr->idat_size)
+ {
+ png_byte chunk_length[4];
+
+ png_crc_finish(png_ptr, 0);
+
+ png_read_data(png_ptr, chunk_length, 4);
+ png_ptr->idat_size = png_get_uint_31(png_ptr, chunk_length);
+ png_reset_crc(png_ptr);
+ png_crc_read(png_ptr, png_ptr->chunk_name, 4);
+ if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+ png_error(png_ptr, "Not enough image data");
+
+ }
+ png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size;
+ png_ptr->zstream.next_in = png_ptr->zbuf;
+ if (png_ptr->zbuf_size > png_ptr->idat_size)
+ png_ptr->zstream.avail_in = (uInt)png_ptr->idat_size;
+ png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zstream.avail_in);
+ png_ptr->idat_size -= png_ptr->zstream.avail_in;
+ }
+ ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
+ if (ret == Z_STREAM_END)
+ {
+ if (!(png_ptr->zstream.avail_out) || png_ptr->zstream.avail_in ||
+ png_ptr->idat_size)
+ png_warning(png_ptr, "Extra compressed data.");
+ png_ptr->mode |= PNG_AFTER_IDAT;
+ png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
+ break;
+ }
+ if (ret != Z_OK)
+ png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg :
+ "Decompression Error");
+
+ if (!(png_ptr->zstream.avail_out))
+ {
+ png_warning(png_ptr, "Extra compressed data.");
+ png_ptr->mode |= PNG_AFTER_IDAT;
+ png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
+ break;
+ }
+
+ }
+ png_ptr->zstream.avail_out = 0;
+ }
+
+ if (png_ptr->idat_size || png_ptr->zstream.avail_in)
+ png_warning(png_ptr, "Extra compression data.");
+
+ inflateReset(&png_ptr->zstream);
+
+ png_ptr->mode |= PNG_AFTER_IDAT;
+}
+#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */
+
+void /* PRIVATE */
+png_read_start_row(png_structp png_ptr)
+{
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
+
+ /* Start of interlace block */
+ PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
+
+ /* Offset to next interlace block */
+ PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
+
+ /* Start of interlace block in the y direction */
+ PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
+
+ /* Offset to next interlace block in the y direction */
+ PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
+#endif
+
+ int max_pixel_depth;
+ png_size_t row_bytes;
+
+ png_debug(1, "in png_read_start_row");
+ png_ptr->zstream.avail_in = 0;
+ png_init_read_transformations(png_ptr);
+#ifdef PNG_READ_INTERLACING_SUPPORTED
+ if (png_ptr->interlaced)
+ {
+ if (!(png_ptr->transformations & PNG_INTERLACE))
+ png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 -
+ png_pass_ystart[0]) / png_pass_yinc[0];
+ else
+ png_ptr->num_rows = png_ptr->height;
+
+ png_ptr->iwidth = (png_ptr->width +
+ png_pass_inc[png_ptr->pass] - 1 -
+ png_pass_start[png_ptr->pass]) /
+ png_pass_inc[png_ptr->pass];
+ }
+ else
+#endif /* PNG_READ_INTERLACING_SUPPORTED */
+ {
+ png_ptr->num_rows = png_ptr->height;
+ png_ptr->iwidth = png_ptr->width;
+ }
+ max_pixel_depth = png_ptr->pixel_depth;
+
+#ifdef PNG_READ_PACK_SUPPORTED
+ if ((png_ptr->transformations & PNG_PACK) && png_ptr->bit_depth < 8)
+ max_pixel_depth = 8;
+#endif
+
+#ifdef PNG_READ_EXPAND_SUPPORTED
+ if (png_ptr->transformations & PNG_EXPAND)
+ {
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ if (png_ptr->num_trans)
+ max_pixel_depth = 32;
+ else
+ max_pixel_depth = 24;
+ }
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY)
+ {
+ if (max_pixel_depth < 8)
+ max_pixel_depth = 8;
+ if (png_ptr->num_trans)
+ max_pixel_depth *= 2;
+ }
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
+ {
+ if (png_ptr->num_trans)
+ {
+ max_pixel_depth *= 4;
+ max_pixel_depth /= 3;
+ }
+ }
+ }
+#endif
+
+#ifdef PNG_READ_FILLER_SUPPORTED
+ if (png_ptr->transformations & (PNG_FILLER))
+ {
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ max_pixel_depth = 32;
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY)
+ {
+ if (max_pixel_depth <= 8)
+ max_pixel_depth = 16;
+ else
+ max_pixel_depth = 32;
+ }
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
+ {
+ if (max_pixel_depth <= 32)
+ max_pixel_depth = 32;
+ else
+ max_pixel_depth = 64;
+ }
+ }
+#endif
+
+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
+ if (png_ptr->transformations & PNG_GRAY_TO_RGB)
+ {
+ if (
+#ifdef PNG_READ_EXPAND_SUPPORTED
+ (png_ptr->num_trans && (png_ptr->transformations & PNG_EXPAND)) ||
+#endif
+#ifdef PNG_READ_FILLER_SUPPORTED
+ (png_ptr->transformations & (PNG_FILLER)) ||
+#endif
+ png_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ {
+ if (max_pixel_depth <= 16)
+ max_pixel_depth = 32;
+ else
+ max_pixel_depth = 64;
+ }
+ else
+ {
+ if (max_pixel_depth <= 8)
+ {
+ if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ max_pixel_depth = 32;
+ else
+ max_pixel_depth = 24;
+ }
+ else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ max_pixel_depth = 64;
+ else
+ max_pixel_depth = 48;
+ }
+ }
+#endif
+
+#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) && \
+defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
+ if (png_ptr->transformations & PNG_USER_TRANSFORM)
+ {
+ int user_pixel_depth = png_ptr->user_transform_depth*
+ png_ptr->user_transform_channels;
+ if (user_pixel_depth > max_pixel_depth)
+ max_pixel_depth=user_pixel_depth;
+ }
+#endif
+
+ /* Align the width on the next larger 8 pixels. Mainly used
+ * for interlacing
+ */
+ row_bytes = ((png_ptr->width + 7) & ~((png_uint_32)7));
+ /* Calculate the maximum bytes needed, adding a byte and a pixel
+ * for safety's sake
+ */
+ row_bytes = PNG_ROWBYTES(max_pixel_depth, row_bytes) +
+ 1 + ((max_pixel_depth + 7) >> 3);
+#ifdef PNG_MAX_MALLOC_64K
+ if (row_bytes > (png_uint_32)65536L)
+ png_error(png_ptr, "This image requires a row greater than 64KB");
+#endif
+
+ if (row_bytes + 64 > png_ptr->old_big_row_buf_size)
+ {
+ png_free(png_ptr, png_ptr->big_row_buf);
+ if (png_ptr->interlaced)
+ png_ptr->big_row_buf = (png_bytep)png_calloc(png_ptr,
+ row_bytes + 64);
+ else
+ png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr,
+ row_bytes + 64);
+ png_ptr->old_big_row_buf_size = row_bytes + 64;
+
+ /* Use 32 bytes of padding before and after row_buf. */
+ png_ptr->row_buf = png_ptr->big_row_buf + 32;
+ png_ptr->old_big_row_buf_size = row_bytes + 64;
+ }
+
+#ifdef PNG_MAX_MALLOC_64K
+ if ((png_uint_32)row_bytes + 1 > (png_uint_32)65536L)
+ png_error(png_ptr, "This image requires a row greater than 64KB");
+#endif
+ if ((png_uint_32)row_bytes > (png_uint_32)(PNG_SIZE_MAX - 1))
+ png_error(png_ptr, "Row has too many bytes to allocate in memory.");
+
+ if (row_bytes + 1 > png_ptr->old_prev_row_size)
+ {
+ png_free(png_ptr, png_ptr->prev_row);
+ png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)(
+ row_bytes + 1));
+ png_memset_check(png_ptr, png_ptr->prev_row, 0, row_bytes + 1);
+ png_ptr->old_prev_row_size = row_bytes + 1;
+ }
+
+ png_ptr->rowbytes = row_bytes;
+
+ png_debug1(3, "width = %lu,", png_ptr->width);
+ png_debug1(3, "height = %lu,", png_ptr->height);
+ png_debug1(3, "iwidth = %lu,", png_ptr->iwidth);
+ png_debug1(3, "num_rows = %lu,", png_ptr->num_rows);
+ png_debug1(3, "rowbytes = %lu,", png_ptr->rowbytes);
+ png_debug1(3, "irowbytes = %lu",
+ PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->iwidth) + 1);
+
+ png_ptr->flags |= PNG_FLAG_ROW_INIT;
+}
+#endif /* PNG_READ_SUPPORTED */
diff --git a/Externals/libpng/pngset.c b/Externals/libpng/pngset.c
index 2cfcf33bdf..b5dbc45e7a 100644
--- a/Externals/libpng/pngset.c
+++ b/Externals/libpng/pngset.c
@@ -1,1225 +1,1236 @@
-
-/* pngset.c - storage of image information into info struct
- *
- * Last changed in libpng 1.5.1 [February 3, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- * The functions here are used during reads to store data from the file
- * into the info struct, and during writes to store application data
- * into the info struct for writing into the file. This abstracts the
- * info struct and allows us to change the structure in the future.
- */
-
-#include "pngpriv.h"
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-
-#ifdef PNG_bKGD_SUPPORTED
-void PNGAPI
-png_set_bKGD(png_structp png_ptr, png_infop info_ptr,
- png_const_color_16p background)
-{
- png_debug1(1, "in %s storage function", "bKGD");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- png_memcpy(&(info_ptr->background), background, png_sizeof(png_color_16));
- info_ptr->valid |= PNG_INFO_bKGD;
-}
-#endif
-
-#ifdef PNG_cHRM_SUPPORTED
-void PNGFAPI
-png_set_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
- png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x,
- png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y,
- png_fixed_point blue_x, png_fixed_point blue_y)
-{
- png_debug1(1, "in %s storage function", "cHRM fixed");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
-# ifdef PNG_CHECK_cHRM_SUPPORTED
- if (png_check_cHRM_fixed(png_ptr,
- white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y))
-# endif
- {
- info_ptr->x_white = white_x;
- info_ptr->y_white = white_y;
- info_ptr->x_red = red_x;
- info_ptr->y_red = red_y;
- info_ptr->x_green = green_x;
- info_ptr->y_green = green_y;
- info_ptr->x_blue = blue_x;
- info_ptr->y_blue = blue_y;
- info_ptr->valid |= PNG_INFO_cHRM;
- }
-}
-
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-void PNGAPI
-png_set_cHRM(png_structp png_ptr, png_infop info_ptr,
- double white_x, double white_y, double red_x, double red_y,
- double green_x, double green_y, double blue_x, double blue_y)
-{
- png_set_cHRM_fixed(png_ptr, info_ptr,
- png_fixed(png_ptr, white_x, "cHRM White X"),
- png_fixed(png_ptr, white_y, "cHRM White Y"),
- png_fixed(png_ptr, red_x, "cHRM Red X"),
- png_fixed(png_ptr, red_y, "cHRM Red Y"),
- png_fixed(png_ptr, green_x, "cHRM Green X"),
- png_fixed(png_ptr, green_y, "cHRM Green Y"),
- png_fixed(png_ptr, blue_x, "cHRM Blue X"),
- png_fixed(png_ptr, blue_y, "cHRM Blue Y"));
-}
-# endif /* PNG_FLOATING_POINT_SUPPORTED */
-
-#endif /* PNG_cHRM_SUPPORTED */
-
-#ifdef PNG_gAMA_SUPPORTED
-void PNGFAPI
-png_set_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point
- file_gamma)
-{
- png_debug1(1, "in %s storage function", "gAMA");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- /* Previously these values were limited, however they must be
- * wrong, therefore storing them (and setting PNG_INFO_gAMA)
- * must be wrong too.
- */
- if (file_gamma > (png_fixed_point)PNG_UINT_31_MAX)
- png_warning(png_ptr, "Gamma too large, ignored");
-
- else if (file_gamma <= 0)
- png_warning(png_ptr, "Negative or zero gamma ignored");
-
- else
- {
- info_ptr->gamma = file_gamma;
- info_ptr->valid |= PNG_INFO_gAMA;
- }
-}
-
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-void PNGAPI
-png_set_gAMA(png_structp png_ptr, png_infop info_ptr, double file_gamma)
-{
- png_set_gAMA_fixed(png_ptr, info_ptr, png_fixed(png_ptr, file_gamma,
- "png_set_gAMA"));
-}
-# endif
-#endif
-
-#ifdef PNG_hIST_SUPPORTED
-void PNGAPI
-png_set_hIST(png_structp png_ptr, png_infop info_ptr, png_const_uint_16p hist)
-{
- int i;
-
- png_debug1(1, "in %s storage function", "hIST");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- if (info_ptr->num_palette == 0 || info_ptr->num_palette
- > PNG_MAX_PALETTE_LENGTH)
- {
- png_warning(png_ptr,
- "Invalid palette size, hIST allocation skipped");
-
- return;
- }
-
- png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0);
-
- /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in
- * version 1.2.1
- */
- png_ptr->hist = (png_uint_16p)png_malloc_warn(png_ptr,
- PNG_MAX_PALETTE_LENGTH * png_sizeof(png_uint_16));
-
- if (png_ptr->hist == NULL)
- {
- png_warning(png_ptr, "Insufficient memory for hIST chunk data");
- return;
- }
-
- for (i = 0; i < info_ptr->num_palette; i++)
- png_ptr->hist[i] = hist[i];
-
- info_ptr->hist = png_ptr->hist;
- info_ptr->valid |= PNG_INFO_hIST;
- info_ptr->free_me |= PNG_FREE_HIST;
-}
-#endif
-
-void PNGAPI
-png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
- png_uint_32 width, png_uint_32 height, int bit_depth,
- int color_type, int interlace_type, int compression_type,
- int filter_type)
-{
- png_debug1(1, "in %s storage function", "IHDR");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- info_ptr->width = width;
- info_ptr->height = height;
- info_ptr->bit_depth = (png_byte)bit_depth;
- info_ptr->color_type = (png_byte)color_type;
- info_ptr->compression_type = (png_byte)compression_type;
- info_ptr->filter_type = (png_byte)filter_type;
- info_ptr->interlace_type = (png_byte)interlace_type;
-
- png_check_IHDR (png_ptr, info_ptr->width, info_ptr->height,
- info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type,
- info_ptr->compression_type, info_ptr->filter_type);
-
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- info_ptr->channels = 1;
-
- else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR)
- info_ptr->channels = 3;
-
- else
- info_ptr->channels = 1;
-
- if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA)
- info_ptr->channels++;
-
- info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth);
-
- /* Check for potential overflow */
- if (width >
- (PNG_UINT_32_MAX >> 3) /* 8-byte RRGGBBAA pixels */
- - 48 /* bigrowbuf hack */
- - 1 /* filter byte */
- - 7*8 /* rounding of width to multiple of 8 pixels */
- - 8) /* extra max_pixel_depth pad */
- info_ptr->rowbytes = 0;
- else
- info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width);
-}
-
-#ifdef PNG_oFFs_SUPPORTED
-void PNGAPI
-png_set_oFFs(png_structp png_ptr, png_infop info_ptr,
- png_int_32 offset_x, png_int_32 offset_y, int unit_type)
-{
- png_debug1(1, "in %s storage function", "oFFs");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- info_ptr->x_offset = offset_x;
- info_ptr->y_offset = offset_y;
- info_ptr->offset_unit_type = (png_byte)unit_type;
- info_ptr->valid |= PNG_INFO_oFFs;
-}
-#endif
-
-#ifdef PNG_pCAL_SUPPORTED
-void PNGAPI
-png_set_pCAL(png_structp png_ptr, png_infop info_ptr,
- png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type,
- int nparams, png_const_charp units, png_charpp params)
-{
- png_size_t length;
- int i;
-
- png_debug1(1, "in %s storage function", "pCAL");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- length = png_strlen(purpose) + 1;
- png_debug1(3, "allocating purpose for info (%lu bytes)",
- (unsigned long)length);
-
- /* TODO: validate format of calibration name and unit name */
-
- /* Check that the type matches the specification. */
- if (type < 0 || type > 3)
- png_error(png_ptr, "Invalid pCAL equation type");
-
- /* Validate params[nparams] */
- for (i=0; ipcal_purpose = (png_charp)png_malloc_warn(png_ptr, length);
-
- if (info_ptr->pcal_purpose == NULL)
- {
- png_warning(png_ptr, "Insufficient memory for pCAL purpose");
- return;
- }
-
- png_memcpy(info_ptr->pcal_purpose, purpose, length);
-
- png_debug(3, "storing X0, X1, type, and nparams in info");
- info_ptr->pcal_X0 = X0;
- info_ptr->pcal_X1 = X1;
- info_ptr->pcal_type = (png_byte)type;
- info_ptr->pcal_nparams = (png_byte)nparams;
-
- length = png_strlen(units) + 1;
- png_debug1(3, "allocating units for info (%lu bytes)",
- (unsigned long)length);
-
- info_ptr->pcal_units = (png_charp)png_malloc_warn(png_ptr, length);
-
- if (info_ptr->pcal_units == NULL)
- {
- png_warning(png_ptr, "Insufficient memory for pCAL units");
- return;
- }
-
- png_memcpy(info_ptr->pcal_units, units, length);
-
- info_ptr->pcal_params = (png_charpp)png_malloc_warn(png_ptr,
- (png_size_t)((nparams + 1) * png_sizeof(png_charp)));
-
- if (info_ptr->pcal_params == NULL)
- {
- png_warning(png_ptr, "Insufficient memory for pCAL params");
- return;
- }
-
- png_memset(info_ptr->pcal_params, 0, (nparams + 1) * png_sizeof(png_charp));
-
- for (i = 0; i < nparams; i++)
- {
- length = png_strlen(params[i]) + 1;
- png_debug2(3, "allocating parameter %d for info (%lu bytes)", i,
- (unsigned long)length);
-
- info_ptr->pcal_params[i] = (png_charp)png_malloc_warn(png_ptr, length);
-
- if (info_ptr->pcal_params[i] == NULL)
- {
- png_warning(png_ptr, "Insufficient memory for pCAL parameter");
- return;
- }
-
- png_memcpy(info_ptr->pcal_params[i], params[i], length);
- }
-
- info_ptr->valid |= PNG_INFO_pCAL;
- info_ptr->free_me |= PNG_FREE_PCAL;
-}
-#endif
-
-#ifdef PNG_sCAL_SUPPORTED
-void PNGAPI
-png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
- int unit, png_const_charp swidth, png_const_charp sheight)
-{
- png_size_t lengthw = 0, lengthh = 0;
-
- png_debug1(1, "in %s storage function", "sCAL");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- /* Double check the unit (should never get here with an invalid
- * unit unless this is an API call.)
- */
- if (unit != 1 && unit != 2)
- png_error(png_ptr, "Invalid sCAL unit");
-
- if (swidth == NULL || (lengthw = png_strlen(swidth)) <= 0 ||
- swidth[0] == 45 /*'-'*/ || !png_check_fp_string(swidth, lengthw))
- png_error(png_ptr, "Invalid sCAL width");
-
- if (sheight == NULL || (lengthh = png_strlen(sheight)) <= 0 ||
- sheight[0] == 45 /*'-'*/ || !png_check_fp_string(sheight, lengthh))
- png_error(png_ptr, "Invalid sCAL height");
-
- info_ptr->scal_unit = (png_byte)unit;
-
- ++lengthw;
-
- png_debug1(3, "allocating unit for info (%u bytes)", (unsigned int)lengthw);
-
- info_ptr->scal_s_width = (png_charp)png_malloc_warn(png_ptr, lengthw);
-
- if (info_ptr->scal_s_width == NULL)
- {
- png_warning(png_ptr, "Memory allocation failed while processing sCAL");
- return;
- }
-
- png_memcpy(info_ptr->scal_s_width, swidth, lengthw);
-
- ++lengthh;
-
- png_debug1(3, "allocating unit for info (%u bytes)", (unsigned int)lengthh);
-
- info_ptr->scal_s_height = (png_charp)png_malloc_warn(png_ptr, lengthh);
-
- if (info_ptr->scal_s_height == NULL)
- {
- png_free (png_ptr, info_ptr->scal_s_width);
- info_ptr->scal_s_width = NULL;
-
- png_warning(png_ptr, "Memory allocation failed while processing sCAL");
- return;
- }
-
- png_memcpy(info_ptr->scal_s_height, sheight, lengthh);
-
- info_ptr->valid |= PNG_INFO_sCAL;
- info_ptr->free_me |= PNG_FREE_SCAL;
-}
-
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-void PNGAPI
-png_set_sCAL(png_structp png_ptr, png_infop info_ptr, int unit, double width,
- double height)
-{
- png_debug1(1, "in %s storage function", "sCAL");
-
- /* Check the arguments. */
- if (width <= 0)
- png_warning(png_ptr, "Invalid sCAL width ignored");
-
- else if (height <= 0)
- png_warning(png_ptr, "Invalid sCAL height ignored");
-
- else
- {
- /* Convert 'width' and 'height' to ASCII. */
- char swidth[PNG_sCAL_MAX_DIGITS+1];
- char sheight[PNG_sCAL_MAX_DIGITS+1];
-
- png_ascii_from_fp(png_ptr, swidth, sizeof swidth, width,
- PNG_sCAL_PRECISION);
- png_ascii_from_fp(png_ptr, sheight, sizeof sheight, height,
- PNG_sCAL_PRECISION);
-
- png_set_sCAL_s(png_ptr, info_ptr, unit, swidth, sheight);
- }
-}
-# endif
-
-# ifdef PNG_FIXED_POINT_SUPPORTED
-void PNGAPI
-png_set_sCAL_fixed(png_structp png_ptr, png_infop info_ptr, int unit,
- png_fixed_point width, png_fixed_point height)
-{
- png_debug1(1, "in %s storage function", "sCAL");
-
- /* Check the arguments. */
- if (width <= 0)
- png_warning(png_ptr, "Invalid sCAL width ignored");
-
- else if (height <= 0)
- png_warning(png_ptr, "Invalid sCAL height ignored");
-
- else
- {
- /* Convert 'width' and 'height' to ASCII. */
- char swidth[PNG_sCAL_MAX_DIGITS+1];
- char sheight[PNG_sCAL_MAX_DIGITS+1];
-
- png_ascii_from_fixed(png_ptr, swidth, sizeof swidth, width);
- png_ascii_from_fixed(png_ptr, sheight, sizeof sheight, height);
-
- png_set_sCAL_s(png_ptr, info_ptr, unit, swidth, sheight);
- }
-}
-# endif
-#endif
-
-#ifdef PNG_pHYs_SUPPORTED
-void PNGAPI
-png_set_pHYs(png_structp png_ptr, png_infop info_ptr,
- png_uint_32 res_x, png_uint_32 res_y, int unit_type)
-{
- png_debug1(1, "in %s storage function", "pHYs");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- info_ptr->x_pixels_per_unit = res_x;
- info_ptr->y_pixels_per_unit = res_y;
- info_ptr->phys_unit_type = (png_byte)unit_type;
- info_ptr->valid |= PNG_INFO_pHYs;
-}
-#endif
-
-void PNGAPI
-png_set_PLTE(png_structp png_ptr, png_infop info_ptr,
- png_const_colorp palette, int num_palette)
-{
-
- png_debug1(1, "in %s storage function", "PLTE");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- if (num_palette < 0 || num_palette > PNG_MAX_PALETTE_LENGTH)
- {
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- png_error(png_ptr, "Invalid palette length");
-
- else
- {
- png_warning(png_ptr, "Invalid palette length");
- return;
- }
- }
-
- /* It may not actually be necessary to set png_ptr->palette here;
- * we do it for backward compatibility with the way the png_handle_tRNS
- * function used to do the allocation.
- */
- png_free_data(png_ptr, info_ptr, PNG_FREE_PLTE, 0);
-
- /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead
- * of num_palette entries, in case of an invalid PNG file that has
- * too-large sample values.
- */
- png_ptr->palette = (png_colorp)png_calloc(png_ptr,
- PNG_MAX_PALETTE_LENGTH * png_sizeof(png_color));
-
- png_memcpy(png_ptr->palette, palette, num_palette * png_sizeof(png_color));
- info_ptr->palette = png_ptr->palette;
- info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette;
-
- info_ptr->free_me |= PNG_FREE_PLTE;
-
- info_ptr->valid |= PNG_INFO_PLTE;
-}
-
-#ifdef PNG_sBIT_SUPPORTED
-void PNGAPI
-png_set_sBIT(png_structp png_ptr, png_infop info_ptr,
- png_const_color_8p sig_bit)
-{
- png_debug1(1, "in %s storage function", "sBIT");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- png_memcpy(&(info_ptr->sig_bit), sig_bit, png_sizeof(png_color_8));
- info_ptr->valid |= PNG_INFO_sBIT;
-}
-#endif
-
-#ifdef PNG_sRGB_SUPPORTED
-void PNGAPI
-png_set_sRGB(png_structp png_ptr, png_infop info_ptr, int srgb_intent)
-{
- png_debug1(1, "in %s storage function", "sRGB");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- info_ptr->srgb_intent = (png_byte)srgb_intent;
- info_ptr->valid |= PNG_INFO_sRGB;
-}
-
-void PNGAPI
-png_set_sRGB_gAMA_and_cHRM(png_structp png_ptr, png_infop info_ptr,
- int srgb_intent)
-{
- png_debug1(1, "in %s storage function", "sRGB_gAMA_and_cHRM");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- png_set_sRGB(png_ptr, info_ptr, srgb_intent);
-
-# ifdef PNG_gAMA_SUPPORTED
- png_set_gAMA_fixed(png_ptr, info_ptr, 45455L);
-# endif
-
-# ifdef PNG_cHRM_SUPPORTED
- png_set_cHRM_fixed(png_ptr, info_ptr,
- /* color x y */
- /* white */ 31270L, 32900L,
- /* red */ 64000L, 33000L,
- /* green */ 30000L, 60000L,
- /* blue */ 15000L, 6000L
- );
-# endif /* cHRM */
-}
-#endif /* sRGB */
-
-
-#ifdef PNG_iCCP_SUPPORTED
-void PNGAPI
-png_set_iCCP(png_structp png_ptr, png_infop info_ptr,
- png_const_charp name, int compression_type,
- png_const_bytep profile, png_uint_32 proflen)
-{
- png_charp new_iccp_name;
- png_bytep new_iccp_profile;
- png_uint_32 length;
-
- png_debug1(1, "in %s storage function", "iCCP");
-
- if (png_ptr == NULL || info_ptr == NULL || name == NULL || profile == NULL)
- return;
-
- length = png_strlen(name)+1;
- new_iccp_name = (png_charp)png_malloc_warn(png_ptr, length);
-
- if (new_iccp_name == NULL)
- {
- png_warning(png_ptr, "Insufficient memory to process iCCP chunk");
- return;
- }
-
- png_memcpy(new_iccp_name, name, length);
- new_iccp_profile = (png_bytep)png_malloc_warn(png_ptr, proflen);
-
- if (new_iccp_profile == NULL)
- {
- png_free (png_ptr, new_iccp_name);
- png_warning(png_ptr,
- "Insufficient memory to process iCCP profile");
- return;
- }
-
- png_memcpy(new_iccp_profile, profile, (png_size_t)proflen);
-
- png_free_data(png_ptr, info_ptr, PNG_FREE_ICCP, 0);
-
- info_ptr->iccp_proflen = proflen;
- info_ptr->iccp_name = new_iccp_name;
- info_ptr->iccp_profile = new_iccp_profile;
- /* Compression is always zero but is here so the API and info structure
- * does not have to change if we introduce multiple compression types
- */
- info_ptr->iccp_compression = (png_byte)compression_type;
- info_ptr->free_me |= PNG_FREE_ICCP;
- info_ptr->valid |= PNG_INFO_iCCP;
-}
-#endif
-
-#ifdef PNG_TEXT_SUPPORTED
-void PNGAPI
-png_set_text(png_structp png_ptr, png_infop info_ptr, png_const_textp text_ptr,
- int num_text)
-{
- int ret;
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, num_text);
-
- if (ret)
- png_error(png_ptr, "Insufficient memory to store text");
-}
-
-int /* PRIVATE */
-png_set_text_2(png_structp png_ptr, png_infop info_ptr,
- png_const_textp text_ptr, int num_text)
-{
- int i;
-
- png_debug1(1, "in %s storage function", ((png_ptr == NULL ||
- png_ptr->chunk_name[0] == '\0') ?
- "text" : (png_const_charp)png_ptr->chunk_name));
-
- if (png_ptr == NULL || info_ptr == NULL || num_text == 0)
- return(0);
-
- /* Make sure we have enough space in the "text" array in info_struct
- * to hold all of the incoming text_ptr objects.
- */
- if (info_ptr->num_text + num_text > info_ptr->max_text)
- {
- if (info_ptr->text != NULL)
- {
- png_textp old_text;
- int old_max;
-
- old_max = info_ptr->max_text;
- info_ptr->max_text = info_ptr->num_text + num_text + 8;
- old_text = info_ptr->text;
- info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
- (png_size_t)(info_ptr->max_text * png_sizeof(png_text)));
-
- if (info_ptr->text == NULL)
- {
- png_free(png_ptr, old_text);
- return(1);
- }
-
- png_memcpy(info_ptr->text, old_text, (png_size_t)(old_max *
- png_sizeof(png_text)));
- png_free(png_ptr, old_text);
- }
-
- else
- {
- info_ptr->max_text = num_text + 8;
- info_ptr->num_text = 0;
- info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
- (png_size_t)(info_ptr->max_text * png_sizeof(png_text)));
- if (info_ptr->text == NULL)
- return(1);
- info_ptr->free_me |= PNG_FREE_TEXT;
- }
-
- png_debug1(3, "allocated %d entries for info_ptr->text",
- info_ptr->max_text);
- }
- for (i = 0; i < num_text; i++)
- {
- png_size_t text_length, key_len;
- png_size_t lang_len, lang_key_len;
- png_textp textp = &(info_ptr->text[info_ptr->num_text]);
-
- if (text_ptr[i].key == NULL)
- continue;
-
- if (text_ptr[i].compression < PNG_TEXT_COMPRESSION_NONE ||
- text_ptr[i].compression >= PNG_TEXT_COMPRESSION_LAST)
- {
- png_warning(png_ptr, "text compression mode is out of range");
- continue;
- }
-
- key_len = png_strlen(text_ptr[i].key);
-
- if (text_ptr[i].compression <= 0)
- {
- lang_len = 0;
- lang_key_len = 0;
- }
-
- else
-# ifdef PNG_iTXt_SUPPORTED
- {
- /* Set iTXt data */
-
- if (text_ptr[i].lang != NULL)
- lang_len = png_strlen(text_ptr[i].lang);
-
- else
- lang_len = 0;
-
- if (text_ptr[i].lang_key != NULL)
- lang_key_len = png_strlen(text_ptr[i].lang_key);
-
- else
- lang_key_len = 0;
- }
-# else /* PNG_iTXt_SUPPORTED */
- {
- png_warning(png_ptr, "iTXt chunk not supported");
- continue;
- }
-# endif
-
- if (text_ptr[i].text == NULL || text_ptr[i].text[0] == '\0')
- {
- text_length = 0;
-# ifdef PNG_iTXt_SUPPORTED
- if (text_ptr[i].compression > 0)
- textp->compression = PNG_ITXT_COMPRESSION_NONE;
-
- else
-# endif
- textp->compression = PNG_TEXT_COMPRESSION_NONE;
- }
-
- else
- {
- text_length = png_strlen(text_ptr[i].text);
- textp->compression = text_ptr[i].compression;
- }
-
- textp->key = (png_charp)png_malloc_warn(png_ptr,
- (png_size_t)
- (key_len + text_length + lang_len + lang_key_len + 4));
-
- if (textp->key == NULL)
- return(1);
-
- png_debug2(2, "Allocated %lu bytes at %p in png_set_text",
- (unsigned long)(png_uint_32)
- (key_len + lang_len + lang_key_len + text_length + 4),
- textp->key);
-
- png_memcpy(textp->key, text_ptr[i].key,(png_size_t)(key_len));
- *(textp->key + key_len) = '\0';
-
- if (text_ptr[i].compression > 0)
- {
- textp->lang = textp->key + key_len + 1;
- png_memcpy(textp->lang, text_ptr[i].lang, lang_len);
- *(textp->lang + lang_len) = '\0';
- textp->lang_key = textp->lang + lang_len + 1;
- png_memcpy(textp->lang_key, text_ptr[i].lang_key, lang_key_len);
- *(textp->lang_key + lang_key_len) = '\0';
- textp->text = textp->lang_key + lang_key_len + 1;
- }
-
- else
- {
- textp->lang=NULL;
- textp->lang_key=NULL;
- textp->text = textp->key + key_len + 1;
- }
-
- if (text_length)
- png_memcpy(textp->text, text_ptr[i].text,
- (png_size_t)(text_length));
-
- *(textp->text + text_length) = '\0';
-
-# ifdef PNG_iTXt_SUPPORTED
- if (textp->compression > 0)
- {
- textp->text_length = 0;
- textp->itxt_length = text_length;
- }
-
- else
-# endif
- {
- textp->text_length = text_length;
- textp->itxt_length = 0;
- }
-
- info_ptr->num_text++;
- png_debug1(3, "transferred text chunk %d", info_ptr->num_text);
- }
- return(0);
-}
-#endif
-
-#ifdef PNG_tIME_SUPPORTED
-void PNGAPI
-png_set_tIME(png_structp png_ptr, png_infop info_ptr, png_const_timep mod_time)
-{
- png_debug1(1, "in %s storage function", "tIME");
-
- if (png_ptr == NULL || info_ptr == NULL ||
- (png_ptr->mode & PNG_WROTE_tIME))
- return;
-
- png_memcpy(&(info_ptr->mod_time), mod_time, png_sizeof(png_time));
- info_ptr->valid |= PNG_INFO_tIME;
-}
-#endif
-
-#ifdef PNG_tRNS_SUPPORTED
-void PNGAPI
-png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
- png_const_bytep trans_alpha, int num_trans, png_const_color_16p trans_color)
-{
- png_debug1(1, "in %s storage function", "tRNS");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- if (trans_alpha != NULL)
- {
- /* It may not actually be necessary to set png_ptr->trans_alpha here;
- * we do it for backward compatibility with the way the png_handle_tRNS
- * function used to do the allocation.
- */
-
- png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
-
- /* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
- png_ptr->trans_alpha = info_ptr->trans_alpha =
- (png_bytep)png_malloc(png_ptr, (png_size_t)PNG_MAX_PALETTE_LENGTH);
-
- if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH)
- png_memcpy(info_ptr->trans_alpha, trans_alpha, (png_size_t)num_trans);
- }
-
- if (trans_color != NULL)
- {
- int sample_max = (1 << info_ptr->bit_depth);
-
- if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY &&
- (int)trans_color->gray > sample_max) ||
- (info_ptr->color_type == PNG_COLOR_TYPE_RGB &&
- ((int)trans_color->red > sample_max ||
- (int)trans_color->green > sample_max ||
- (int)trans_color->blue > sample_max)))
- png_warning(png_ptr,
- "tRNS chunk has out-of-range samples for bit_depth");
-
- png_memcpy(&(info_ptr->trans_color), trans_color,
- png_sizeof(png_color_16));
-
- if (num_trans == 0)
- num_trans = 1;
- }
-
- info_ptr->num_trans = (png_uint_16)num_trans;
-
- if (num_trans != 0)
- {
- info_ptr->valid |= PNG_INFO_tRNS;
- info_ptr->free_me |= PNG_FREE_TRNS;
- }
-}
-#endif
-
-#ifdef PNG_sPLT_SUPPORTED
-void PNGAPI
-png_set_sPLT(png_structp png_ptr,
- png_infop info_ptr, png_const_sPLT_tp entries, int nentries)
-/*
- * entries - array of png_sPLT_t structures
- * to be added to the list of palettes
- * in the info structure.
- *
- * nentries - number of palette structures to be
- * added.
- */
-{
- png_sPLT_tp np;
- int i;
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- np = (png_sPLT_tp)png_malloc_warn(png_ptr,
- (info_ptr->splt_palettes_num + nentries) *
- (png_size_t)png_sizeof(png_sPLT_t));
-
- if (np == NULL)
- {
- png_warning(png_ptr, "No memory for sPLT palettes");
- return;
- }
-
- png_memcpy(np, info_ptr->splt_palettes,
- info_ptr->splt_palettes_num * png_sizeof(png_sPLT_t));
-
- png_free(png_ptr, info_ptr->splt_palettes);
- info_ptr->splt_palettes=NULL;
-
- for (i = 0; i < nentries; i++)
- {
- png_sPLT_tp to = np + info_ptr->splt_palettes_num + i;
- png_const_sPLT_tp from = entries + i;
- png_uint_32 length;
-
- length = png_strlen(from->name) + 1;
- to->name = (png_charp)png_malloc_warn(png_ptr, (png_size_t)length);
-
- if (to->name == NULL)
- {
- png_warning(png_ptr,
- "Out of memory while processing sPLT chunk");
- continue;
- }
-
- png_memcpy(to->name, from->name, length);
- to->entries = (png_sPLT_entryp)png_malloc_warn(png_ptr,
- (png_size_t)(from->nentries * png_sizeof(png_sPLT_entry)));
-
- if (to->entries == NULL)
- {
- png_warning(png_ptr,
- "Out of memory while processing sPLT chunk");
- png_free(png_ptr, to->name);
- to->name = NULL;
- continue;
- }
-
- png_memcpy(to->entries, from->entries,
- from->nentries * png_sizeof(png_sPLT_entry));
-
- to->nentries = from->nentries;
- to->depth = from->depth;
- }
-
- info_ptr->splt_palettes = np;
- info_ptr->splt_palettes_num += nentries;
- info_ptr->valid |= PNG_INFO_sPLT;
- info_ptr->free_me |= PNG_FREE_SPLT;
-}
-#endif /* PNG_sPLT_SUPPORTED */
-
-#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
-void PNGAPI
-png_set_unknown_chunks(png_structp png_ptr,
- png_infop info_ptr, png_const_unknown_chunkp unknowns, int num_unknowns)
-{
- png_unknown_chunkp np;
- int i;
-
- if (png_ptr == NULL || info_ptr == NULL || num_unknowns == 0)
- return;
-
- np = (png_unknown_chunkp)png_malloc_warn(png_ptr,
- (png_size_t)(info_ptr->unknown_chunks_num + num_unknowns) *
- png_sizeof(png_unknown_chunk));
-
- if (np == NULL)
- {
- png_warning(png_ptr,
- "Out of memory while processing unknown chunk");
- return;
- }
-
- png_memcpy(np, info_ptr->unknown_chunks,
- (png_size_t)info_ptr->unknown_chunks_num *
- png_sizeof(png_unknown_chunk));
-
- png_free(png_ptr, info_ptr->unknown_chunks);
- info_ptr->unknown_chunks = NULL;
-
- for (i = 0; i < num_unknowns; i++)
- {
- png_unknown_chunkp to = np + info_ptr->unknown_chunks_num + i;
- png_const_unknown_chunkp from = unknowns + i;
-
- png_memcpy(to->name, from->name, png_sizeof(from->name));
- to->name[png_sizeof(to->name)-1] = '\0';
- to->size = from->size;
-
- /* Note our location in the read or write sequence */
- to->location = (png_byte)(png_ptr->mode & 0xff);
-
- if (from->size == 0)
- to->data=NULL;
-
- else
- {
- to->data = (png_bytep)png_malloc_warn(png_ptr,
- (png_size_t)from->size);
-
- if (to->data == NULL)
- {
- png_warning(png_ptr,
- "Out of memory while processing unknown chunk");
- to->size = 0;
- }
-
- else
- png_memcpy(to->data, from->data, from->size);
- }
- }
-
- info_ptr->unknown_chunks = np;
- info_ptr->unknown_chunks_num += num_unknowns;
- info_ptr->free_me |= PNG_FREE_UNKN;
-}
-
-void PNGAPI
-png_set_unknown_chunk_location(png_structp png_ptr, png_infop info_ptr,
- int chunk, int location)
-{
- if (png_ptr != NULL && info_ptr != NULL && chunk >= 0 && chunk <
- info_ptr->unknown_chunks_num)
- info_ptr->unknown_chunks[chunk].location = (png_byte)location;
-}
-#endif
-
-
-#ifdef PNG_MNG_FEATURES_SUPPORTED
-png_uint_32 PNGAPI
-png_permit_mng_features (png_structp png_ptr, png_uint_32 mng_features)
-{
- png_debug(1, "in png_permit_mng_features");
-
- if (png_ptr == NULL)
- return (png_uint_32)0;
-
- png_ptr->mng_features_permitted =
- (png_byte)(mng_features & PNG_ALL_MNG_FEATURES);
-
- return (png_uint_32)png_ptr->mng_features_permitted;
-}
-#endif
-
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-void PNGAPI
-png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_const_bytep
- chunk_list, int num_chunks)
-{
- png_bytep new_list, p;
- int i, old_num_chunks;
- if (png_ptr == NULL)
- return;
-
- if (num_chunks == 0)
- {
- if (keep == PNG_HANDLE_CHUNK_ALWAYS || keep == PNG_HANDLE_CHUNK_IF_SAFE)
- png_ptr->flags |= PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
-
- else
- png_ptr->flags &= ~PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
-
- if (keep == PNG_HANDLE_CHUNK_ALWAYS)
- png_ptr->flags |= PNG_FLAG_KEEP_UNSAFE_CHUNKS;
-
- else
- png_ptr->flags &= ~PNG_FLAG_KEEP_UNSAFE_CHUNKS;
-
- return;
- }
-
- if (chunk_list == NULL)
- return;
-
- old_num_chunks = png_ptr->num_chunk_list;
- new_list=(png_bytep)png_malloc(png_ptr,
- (png_size_t)(5*(num_chunks + old_num_chunks)));
-
- if (png_ptr->chunk_list != NULL)
- {
- png_memcpy(new_list, png_ptr->chunk_list,
- (png_size_t)(5*old_num_chunks));
- png_free(png_ptr, png_ptr->chunk_list);
- png_ptr->chunk_list=NULL;
- }
-
- png_memcpy(new_list + 5*old_num_chunks, chunk_list,
- (png_size_t)(5*num_chunks));
-
- for (p = new_list + 5*old_num_chunks + 4, i = 0; inum_chunk_list = old_num_chunks + num_chunks;
- png_ptr->chunk_list = new_list;
- png_ptr->free_me |= PNG_FREE_LIST;
-}
-#endif
-
-#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
-void PNGAPI
-png_set_read_user_chunk_fn(png_structp png_ptr, png_voidp user_chunk_ptr,
- png_user_chunk_ptr read_user_chunk_fn)
-{
- png_debug(1, "in png_set_read_user_chunk_fn");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->read_user_chunk_fn = read_user_chunk_fn;
- png_ptr->user_chunk_ptr = user_chunk_ptr;
-}
-#endif
-
-#ifdef PNG_INFO_IMAGE_SUPPORTED
-void PNGAPI
-png_set_rows(png_structp png_ptr, png_infop info_ptr, png_bytepp row_pointers)
-{
- png_debug1(1, "in %s storage function", "rows");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- if (info_ptr->row_pointers && (info_ptr->row_pointers != row_pointers))
- png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
-
- info_ptr->row_pointers = row_pointers;
-
- if (row_pointers)
- info_ptr->valid |= PNG_INFO_IDAT;
-}
-#endif
-
-void PNGAPI
-png_set_compression_buffer_size(png_structp png_ptr, png_size_t size)
-{
- if (png_ptr == NULL)
- return;
-
- png_free(png_ptr, png_ptr->zbuf);
-
- if (size > ZLIB_IO_MAX)
- {
- png_warning(png_ptr, "Attempt to set buffer size beyond max ignored");
- png_ptr->zbuf_size = ZLIB_IO_MAX;
- size = ZLIB_IO_MAX; /* must fit */
- }
-
- else
- png_ptr->zbuf_size = (uInt)size;
-
- png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, size);
-
- /* The following ensures a relatively safe failure if this gets called while
- * the buffer is actually in use.
- */
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = 0;
- png_ptr->zstream.avail_in = 0;
-}
-
-void PNGAPI
-png_set_invalid(png_structp png_ptr, png_infop info_ptr, int mask)
-{
- if (png_ptr && info_ptr)
- info_ptr->valid &= ~mask;
-}
-
-
-
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
-/* This function was added to libpng 1.2.6 */
-void PNGAPI
-png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max,
- png_uint_32 user_height_max)
-{
- /* Images with dimensions larger than these limits will be
- * rejected by png_set_IHDR(). To accept any PNG datastream
- * regardless of dimensions, set both limits to 0x7ffffffL.
- */
- if (png_ptr == NULL)
- return;
-
- png_ptr->user_width_max = user_width_max;
- png_ptr->user_height_max = user_height_max;
-}
-
-/* This function was added to libpng 1.4.0 */
-void PNGAPI
-png_set_chunk_cache_max (png_structp png_ptr,
- png_uint_32 user_chunk_cache_max)
-{
- if (png_ptr)
- png_ptr->user_chunk_cache_max = user_chunk_cache_max;
-}
-
-/* This function was added to libpng 1.4.1 */
-void PNGAPI
-png_set_chunk_malloc_max (png_structp png_ptr,
- png_alloc_size_t user_chunk_malloc_max)
-{
- if (png_ptr)
- png_ptr->user_chunk_malloc_max = user_chunk_malloc_max;
-}
-#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
-
-
-#ifdef PNG_BENIGN_ERRORS_SUPPORTED
-void PNGAPI
-png_set_benign_errors(png_structp png_ptr, int allowed)
-{
- png_debug(1, "in png_set_benign_errors");
-
- if (allowed)
- png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN;
-
- else
- png_ptr->flags &= ~PNG_FLAG_BENIGN_ERRORS_WARN;
-}
-#endif /* PNG_BENIGN_ERRORS_SUPPORTED */
-#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
+
+/* pngset.c - storage of image information into info struct
+ *
+ * Last changed in libpng 1.2.49 [March 29, 2012]
+ * Copyright (c) 1998-2012 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * The functions here are used during reads to store data from the file
+ * into the info struct, and during writes to store application data
+ * into the info struct for writing into the file. This abstracts the
+ * info struct and allows us to change the structure in the future.
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+
+#ifdef PNG_bKGD_SUPPORTED
+void PNGAPI
+png_set_bKGD(png_structp png_ptr, png_infop info_ptr, png_color_16p background)
+{
+ png_debug1(1, "in %s storage function", "bKGD");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ png_memcpy(&(info_ptr->background), background, png_sizeof(png_color_16));
+ info_ptr->valid |= PNG_INFO_bKGD;
+}
+#endif
+
+#ifdef PNG_cHRM_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+void PNGAPI
+png_set_cHRM(png_structp png_ptr, png_infop info_ptr,
+ double white_x, double white_y, double red_x, double red_y,
+ double green_x, double green_y, double blue_x, double blue_y)
+{
+ png_debug1(1, "in %s storage function", "cHRM");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ info_ptr->x_white = (float)white_x;
+ info_ptr->y_white = (float)white_y;
+ info_ptr->x_red = (float)red_x;
+ info_ptr->y_red = (float)red_y;
+ info_ptr->x_green = (float)green_x;
+ info_ptr->y_green = (float)green_y;
+ info_ptr->x_blue = (float)blue_x;
+ info_ptr->y_blue = (float)blue_y;
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ info_ptr->int_x_white = (png_fixed_point)(white_x*100000.+0.5);
+ info_ptr->int_y_white = (png_fixed_point)(white_y*100000.+0.5);
+ info_ptr->int_x_red = (png_fixed_point)( red_x*100000.+0.5);
+ info_ptr->int_y_red = (png_fixed_point)( red_y*100000.+0.5);
+ info_ptr->int_x_green = (png_fixed_point)(green_x*100000.+0.5);
+ info_ptr->int_y_green = (png_fixed_point)(green_y*100000.+0.5);
+ info_ptr->int_x_blue = (png_fixed_point)( blue_x*100000.+0.5);
+ info_ptr->int_y_blue = (png_fixed_point)( blue_y*100000.+0.5);
+#endif
+ info_ptr->valid |= PNG_INFO_cHRM;
+}
+#endif /* PNG_FLOATING_POINT_SUPPORTED */
+
+#ifdef PNG_FIXED_POINT_SUPPORTED
+void PNGAPI
+png_set_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
+ png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x,
+ png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y,
+ png_fixed_point blue_x, png_fixed_point blue_y)
+{
+ png_debug1(1, "in %s storage function", "cHRM fixed");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+#ifdef PNG_CHECK_cHRM_SUPPORTED
+ if (png_check_cHRM_fixed(png_ptr,
+ white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y))
+#endif
+ {
+ info_ptr->int_x_white = white_x;
+ info_ptr->int_y_white = white_y;
+ info_ptr->int_x_red = red_x;
+ info_ptr->int_y_red = red_y;
+ info_ptr->int_x_green = green_x;
+ info_ptr->int_y_green = green_y;
+ info_ptr->int_x_blue = blue_x;
+ info_ptr->int_y_blue = blue_y;
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ info_ptr->x_white = (float)(white_x/100000.);
+ info_ptr->y_white = (float)(white_y/100000.);
+ info_ptr->x_red = (float)( red_x/100000.);
+ info_ptr->y_red = (float)( red_y/100000.);
+ info_ptr->x_green = (float)(green_x/100000.);
+ info_ptr->y_green = (float)(green_y/100000.);
+ info_ptr->x_blue = (float)( blue_x/100000.);
+ info_ptr->y_blue = (float)( blue_y/100000.);
+#endif
+ info_ptr->valid |= PNG_INFO_cHRM;
+ }
+}
+#endif /* PNG_FIXED_POINT_SUPPORTED */
+#endif /* PNG_cHRM_SUPPORTED */
+
+#ifdef PNG_gAMA_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+void PNGAPI
+png_set_gAMA(png_structp png_ptr, png_infop info_ptr, double file_gamma)
+{
+ double png_gamma;
+
+ png_debug1(1, "in %s storage function", "gAMA");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ /* Check for overflow */
+ if (file_gamma > 21474.83)
+ {
+ png_warning(png_ptr, "Limiting gamma to 21474.83");
+ png_gamma=21474.83;
+ }
+ else
+ png_gamma = file_gamma;
+ info_ptr->gamma = (float)png_gamma;
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ info_ptr->int_gamma = (int)(png_gamma*100000.+.5);
+#endif
+ info_ptr->valid |= PNG_INFO_gAMA;
+ if (png_gamma == 0.0)
+ png_warning(png_ptr, "Setting gamma=0");
+}
+#endif
+void PNGAPI
+png_set_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point
+ int_gamma)
+{
+ png_fixed_point png_gamma;
+
+ png_debug1(1, "in %s storage function", "gAMA");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ if (int_gamma > (png_fixed_point)PNG_UINT_31_MAX)
+ {
+ png_warning(png_ptr, "Limiting gamma to 21474.83");
+ png_gamma=PNG_UINT_31_MAX;
+ }
+ else
+ {
+ if (int_gamma < 0)
+ {
+ png_warning(png_ptr, "Setting negative gamma to zero");
+ png_gamma = 0;
+ }
+ else
+ png_gamma = int_gamma;
+ }
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ info_ptr->gamma = (float)(png_gamma/100000.);
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ info_ptr->int_gamma = png_gamma;
+#endif
+ info_ptr->valid |= PNG_INFO_gAMA;
+ if (png_gamma == 0)
+ png_warning(png_ptr, "Setting gamma=0");
+}
+#endif
+
+#ifdef PNG_hIST_SUPPORTED
+void PNGAPI
+png_set_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p hist)
+{
+ int i;
+
+ png_debug1(1, "in %s storage function", "hIST");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ if (info_ptr->num_palette == 0 || info_ptr->num_palette
+ > PNG_MAX_PALETTE_LENGTH)
+ {
+ png_warning(png_ptr,
+ "Invalid palette size, hIST allocation skipped.");
+ return;
+ }
+
+#ifdef PNG_FREE_ME_SUPPORTED
+ png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0);
+#endif
+ /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in
+ * version 1.2.1
+ */
+ png_ptr->hist = (png_uint_16p)png_malloc_warn(png_ptr,
+ (png_uint_32)(PNG_MAX_PALETTE_LENGTH * png_sizeof(png_uint_16)));
+ if (png_ptr->hist == NULL)
+ {
+ png_warning(png_ptr, "Insufficient memory for hIST chunk data.");
+ return;
+ }
+
+ for (i = 0; i < info_ptr->num_palette; i++)
+ png_ptr->hist[i] = hist[i];
+ info_ptr->hist = png_ptr->hist;
+ info_ptr->valid |= PNG_INFO_hIST;
+
+#ifdef PNG_FREE_ME_SUPPORTED
+ info_ptr->free_me |= PNG_FREE_HIST;
+#else
+ png_ptr->flags |= PNG_FLAG_FREE_HIST;
+#endif
+}
+#endif
+
+void PNGAPI
+png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 width, png_uint_32 height, int bit_depth,
+ int color_type, int interlace_type, int compression_type,
+ int filter_type)
+{
+ png_debug1(1, "in %s storage function", "IHDR");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ info_ptr->width = width;
+ info_ptr->height = height;
+ info_ptr->bit_depth = (png_byte)bit_depth;
+ info_ptr->color_type = (png_byte)color_type;
+ info_ptr->compression_type = (png_byte)compression_type;
+ info_ptr->filter_type = (png_byte)filter_type;
+ info_ptr->interlace_type = (png_byte)interlace_type;
+
+ png_check_IHDR (png_ptr, info_ptr->width, info_ptr->height,
+ info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type,
+ info_ptr->compression_type, info_ptr->filter_type);
+
+ if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ info_ptr->channels = 1;
+ else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR)
+ info_ptr->channels = 3;
+ else
+ info_ptr->channels = 1;
+ if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA)
+ info_ptr->channels++;
+ info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth);
+
+ /* Check for potential overflow */
+ if (width > (PNG_UINT_32_MAX
+ >> 3) /* 8-byte RGBA pixels */
+ - 64 /* bigrowbuf hack */
+ - 1 /* filter byte */
+ - 7*8 /* rounding of width to multiple of 8 pixels */
+ - 8) /* extra max_pixel_depth pad */
+ info_ptr->rowbytes = (png_size_t)0;
+ else
+ info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width);
+}
+
+#ifdef PNG_oFFs_SUPPORTED
+void PNGAPI
+png_set_oFFs(png_structp png_ptr, png_infop info_ptr,
+ png_int_32 offset_x, png_int_32 offset_y, int unit_type)
+{
+ png_debug1(1, "in %s storage function", "oFFs");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ info_ptr->x_offset = offset_x;
+ info_ptr->y_offset = offset_y;
+ info_ptr->offset_unit_type = (png_byte)unit_type;
+ info_ptr->valid |= PNG_INFO_oFFs;
+}
+#endif
+
+#ifdef PNG_pCAL_SUPPORTED
+void PNGAPI
+png_set_pCAL(png_structp png_ptr, png_infop info_ptr,
+ png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams,
+ png_charp units, png_charpp params)
+{
+ png_uint_32 length;
+ int i;
+
+ png_debug1(1, "in %s storage function", "pCAL");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ length = png_strlen(purpose) + 1;
+ png_debug1(3, "allocating purpose for info (%lu bytes)",
+ (unsigned long)length);
+ info_ptr->pcal_purpose = (png_charp)png_malloc_warn(png_ptr, length);
+ if (info_ptr->pcal_purpose == NULL)
+ {
+ png_warning(png_ptr, "Insufficient memory for pCAL purpose.");
+ return;
+ }
+ png_memcpy(info_ptr->pcal_purpose, purpose, (png_size_t)length);
+
+ png_debug(3, "storing X0, X1, type, and nparams in info");
+ info_ptr->pcal_X0 = X0;
+ info_ptr->pcal_X1 = X1;
+ info_ptr->pcal_type = (png_byte)type;
+ info_ptr->pcal_nparams = (png_byte)nparams;
+
+ length = png_strlen(units) + 1;
+ png_debug1(3, "allocating units for info (%lu bytes)",
+ (unsigned long)length);
+ info_ptr->pcal_units = (png_charp)png_malloc_warn(png_ptr, length);
+ if (info_ptr->pcal_units == NULL)
+ {
+ png_warning(png_ptr, "Insufficient memory for pCAL units.");
+ return;
+ }
+ png_memcpy(info_ptr->pcal_units, units, (png_size_t)length);
+
+ info_ptr->pcal_params = (png_charpp)png_malloc_warn(png_ptr,
+ (png_uint_32)((nparams + 1) * png_sizeof(png_charp)));
+ if (info_ptr->pcal_params == NULL)
+ {
+ png_warning(png_ptr, "Insufficient memory for pCAL params.");
+ return;
+ }
+
+ png_memset(info_ptr->pcal_params, 0, (nparams + 1) * png_sizeof(png_charp));
+
+ for (i = 0; i < nparams; i++)
+ {
+ length = png_strlen(params[i]) + 1;
+ png_debug2(3, "allocating parameter %d for info (%lu bytes)", i,
+ (unsigned long)length);
+ info_ptr->pcal_params[i] = (png_charp)png_malloc_warn(png_ptr, length);
+ if (info_ptr->pcal_params[i] == NULL)
+ {
+ png_warning(png_ptr, "Insufficient memory for pCAL parameter.");
+ return;
+ }
+ png_memcpy(info_ptr->pcal_params[i], params[i], (png_size_t)length);
+ }
+
+ info_ptr->valid |= PNG_INFO_pCAL;
+#ifdef PNG_FREE_ME_SUPPORTED
+ info_ptr->free_me |= PNG_FREE_PCAL;
+#endif
+}
+#endif
+
+#if defined(PNG_READ_sCAL_SUPPORTED) || defined(PNG_WRITE_sCAL_SUPPORTED)
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+void PNGAPI
+png_set_sCAL(png_structp png_ptr, png_infop info_ptr,
+ int unit, double width, double height)
+{
+ png_debug1(1, "in %s storage function", "sCAL");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ info_ptr->scal_unit = (png_byte)unit;
+ info_ptr->scal_pixel_width = width;
+ info_ptr->scal_pixel_height = height;
+
+ info_ptr->valid |= PNG_INFO_sCAL;
+}
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+void PNGAPI
+png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
+ int unit, png_charp swidth, png_charp sheight)
+{
+ png_uint_32 length;
+
+ png_debug1(1, "in %s storage function", "sCAL");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ info_ptr->scal_unit = (png_byte)unit;
+
+ length = png_strlen(swidth) + 1;
+ png_debug1(3, "allocating unit for info (%u bytes)",
+ (unsigned int)length);
+ info_ptr->scal_s_width = (png_charp)png_malloc_warn(png_ptr, length);
+ if (info_ptr->scal_s_width == NULL)
+ {
+ png_warning(png_ptr,
+ "Memory allocation failed while processing sCAL.");
+ return;
+ }
+ png_memcpy(info_ptr->scal_s_width, swidth, (png_size_t)length);
+
+ length = png_strlen(sheight) + 1;
+ png_debug1(3, "allocating unit for info (%u bytes)",
+ (unsigned int)length);
+ info_ptr->scal_s_height = (png_charp)png_malloc_warn(png_ptr, length);
+ if (info_ptr->scal_s_height == NULL)
+ {
+ png_free (png_ptr, info_ptr->scal_s_width);
+ info_ptr->scal_s_width = NULL;
+ png_warning(png_ptr,
+ "Memory allocation failed while processing sCAL.");
+ return;
+ }
+ png_memcpy(info_ptr->scal_s_height, sheight, (png_size_t)length);
+ info_ptr->valid |= PNG_INFO_sCAL;
+#ifdef PNG_FREE_ME_SUPPORTED
+ info_ptr->free_me |= PNG_FREE_SCAL;
+#endif
+}
+#endif
+#endif
+#endif
+
+#ifdef PNG_pHYs_SUPPORTED
+void PNGAPI
+png_set_pHYs(png_structp png_ptr, png_infop info_ptr,
+ png_uint_32 res_x, png_uint_32 res_y, int unit_type)
+{
+ png_debug1(1, "in %s storage function", "pHYs");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ info_ptr->x_pixels_per_unit = res_x;
+ info_ptr->y_pixels_per_unit = res_y;
+ info_ptr->phys_unit_type = (png_byte)unit_type;
+ info_ptr->valid |= PNG_INFO_pHYs;
+}
+#endif
+
+void PNGAPI
+png_set_PLTE(png_structp png_ptr, png_infop info_ptr,
+ png_colorp palette, int num_palette)
+{
+
+ png_debug1(1, "in %s storage function", "PLTE");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ if (num_palette < 0 || num_palette > PNG_MAX_PALETTE_LENGTH)
+ {
+ if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ png_error(png_ptr, "Invalid palette length");
+ else
+ {
+ png_warning(png_ptr, "Invalid palette length");
+ return;
+ }
+ }
+
+ /* It may not actually be necessary to set png_ptr->palette here;
+ * we do it for backward compatibility with the way the png_handle_tRNS
+ * function used to do the allocation.
+ */
+#ifdef PNG_FREE_ME_SUPPORTED
+ png_free_data(png_ptr, info_ptr, PNG_FREE_PLTE, 0);
+#endif
+
+ /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead
+ * of num_palette entries, in case of an invalid PNG file that has
+ * too-large sample values.
+ */
+ png_ptr->palette = (png_colorp)png_calloc(png_ptr,
+ PNG_MAX_PALETTE_LENGTH * png_sizeof(png_color));
+ png_memcpy(png_ptr->palette, palette, num_palette * png_sizeof(png_color));
+ info_ptr->palette = png_ptr->palette;
+ info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette;
+
+#ifdef PNG_FREE_ME_SUPPORTED
+ info_ptr->free_me |= PNG_FREE_PLTE;
+#else
+ png_ptr->flags |= PNG_FLAG_FREE_PLTE;
+#endif
+
+ info_ptr->valid |= PNG_INFO_PLTE;
+}
+
+#ifdef PNG_sBIT_SUPPORTED
+void PNGAPI
+png_set_sBIT(png_structp png_ptr, png_infop info_ptr,
+ png_color_8p sig_bit)
+{
+ png_debug1(1, "in %s storage function", "sBIT");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ png_memcpy(&(info_ptr->sig_bit), sig_bit, png_sizeof(png_color_8));
+ info_ptr->valid |= PNG_INFO_sBIT;
+}
+#endif
+
+#ifdef PNG_sRGB_SUPPORTED
+void PNGAPI
+png_set_sRGB(png_structp png_ptr, png_infop info_ptr, int intent)
+{
+ png_debug1(1, "in %s storage function", "sRGB");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ info_ptr->srgb_intent = (png_byte)intent;
+ info_ptr->valid |= PNG_INFO_sRGB;
+}
+
+void PNGAPI
+png_set_sRGB_gAMA_and_cHRM(png_structp png_ptr, png_infop info_ptr,
+ int intent)
+{
+#ifdef PNG_gAMA_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ float file_gamma;
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ png_fixed_point int_file_gamma;
+#endif
+#endif
+#ifdef PNG_cHRM_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y;
+#endif
+ png_fixed_point int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
+ int_green_y, int_blue_x, int_blue_y;
+#endif
+ png_debug1(1, "in %s storage function", "sRGB_gAMA_and_cHRM");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ png_set_sRGB(png_ptr, info_ptr, intent);
+
+#ifdef PNG_gAMA_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ file_gamma = (float).45455;
+ png_set_gAMA(png_ptr, info_ptr, file_gamma);
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ int_file_gamma = 45455L;
+ png_set_gAMA_fixed(png_ptr, info_ptr, int_file_gamma);
+#endif
+#endif
+
+#ifdef PNG_cHRM_SUPPORTED
+ int_white_x = 31270L;
+ int_white_y = 32900L;
+ int_red_x = 64000L;
+ int_red_y = 33000L;
+ int_green_x = 30000L;
+ int_green_y = 60000L;
+ int_blue_x = 15000L;
+ int_blue_y = 6000L;
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ white_x = (float).3127;
+ white_y = (float).3290;
+ red_x = (float).64;
+ red_y = (float).33;
+ green_x = (float).30;
+ green_y = (float).60;
+ blue_x = (float).15;
+ blue_y = (float).06;
+#endif
+
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ png_set_cHRM_fixed(png_ptr, info_ptr,
+ int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
+ int_green_y, int_blue_x, int_blue_y);
+#endif
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ png_set_cHRM(png_ptr, info_ptr,
+ white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y);
+#endif
+#endif /* cHRM */
+}
+#endif /* sRGB */
+
+
+#ifdef PNG_iCCP_SUPPORTED
+void PNGAPI
+png_set_iCCP(png_structp png_ptr, png_infop info_ptr,
+ png_charp name, int compression_type,
+ png_charp profile, png_uint_32 proflen)
+{
+ png_charp new_iccp_name;
+ png_charp new_iccp_profile;
+ png_uint_32 length;
+
+ png_debug1(1, "in %s storage function", "iCCP");
+
+ if (png_ptr == NULL || info_ptr == NULL || name == NULL || profile == NULL)
+ return;
+
+ length = png_strlen(name)+1;
+ new_iccp_name = (png_charp)png_malloc_warn(png_ptr, length);
+ if (new_iccp_name == NULL)
+ {
+ png_warning(png_ptr, "Insufficient memory to process iCCP chunk.");
+ return;
+ }
+ png_memcpy(new_iccp_name, name, length);
+ new_iccp_profile = (png_charp)png_malloc_warn(png_ptr, proflen);
+ if (new_iccp_profile == NULL)
+ {
+ png_free (png_ptr, new_iccp_name);
+ png_warning(png_ptr,
+ "Insufficient memory to process iCCP profile.");
+ return;
+ }
+ png_memcpy(new_iccp_profile, profile, (png_size_t)proflen);
+
+ png_free_data(png_ptr, info_ptr, PNG_FREE_ICCP, 0);
+
+ info_ptr->iccp_proflen = proflen;
+ info_ptr->iccp_name = new_iccp_name;
+ info_ptr->iccp_profile = new_iccp_profile;
+ /* Compression is always zero but is here so the API and info structure
+ * does not have to change if we introduce multiple compression types
+ */
+ info_ptr->iccp_compression = (png_byte)compression_type;
+#ifdef PNG_FREE_ME_SUPPORTED
+ info_ptr->free_me |= PNG_FREE_ICCP;
+#endif
+ info_ptr->valid |= PNG_INFO_iCCP;
+}
+#endif
+
+#ifdef PNG_TEXT_SUPPORTED
+void PNGAPI
+png_set_text(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
+ int num_text)
+{
+ int ret;
+ ret = png_set_text_2(png_ptr, info_ptr, text_ptr, num_text);
+ if (ret)
+ png_error(png_ptr, "Insufficient memory to store text");
+}
+
+int /* PRIVATE */
+png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
+ int num_text)
+{
+ int i;
+
+ png_debug1(1, "in %s storage function", ((png_ptr == NULL ||
+ png_ptr->chunk_name[0] == '\0') ?
+ "text" : (png_const_charp)png_ptr->chunk_name));
+
+ if (png_ptr == NULL || info_ptr == NULL || num_text == 0)
+ return(0);
+
+ /* Make sure we have enough space in the "text" array in info_struct
+ * to hold all of the incoming text_ptr objects.
+ */
+ if (info_ptr->num_text + num_text > info_ptr->max_text)
+ {
+ int old_max_text = info_ptr->max_text;
+ int old_num_text = info_ptr->num_text;
+
+ if (info_ptr->text != NULL)
+ {
+ png_textp old_text;
+
+ info_ptr->max_text = info_ptr->num_text + num_text + 8;
+ old_text = info_ptr->text;
+
+ info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
+ (png_uint_32)(info_ptr->max_text * png_sizeof(png_text)));
+ if (info_ptr->text == NULL)
+ {
+ /* Restore to previous condition */
+ info_ptr->max_text = old_max_text;
+ info_ptr->text = old_text;
+ return(1);
+ }
+ png_memcpy(info_ptr->text, old_text, (png_size_t)(old_max_text *
+ png_sizeof(png_text)));
+ png_free(png_ptr, old_text);
+ }
+ else
+ {
+ info_ptr->max_text = num_text + 8;
+ info_ptr->num_text = 0;
+ info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
+ (png_uint_32)(info_ptr->max_text * png_sizeof(png_text)));
+ if (info_ptr->text == NULL)
+ {
+ /* Restore to previous condition */
+ info_ptr->num_text = old_num_text;
+ info_ptr->max_text = old_max_text;
+ return(1);
+ }
+#ifdef PNG_FREE_ME_SUPPORTED
+ info_ptr->free_me |= PNG_FREE_TEXT;
+#endif
+ }
+ png_debug1(3, "allocated %d entries for info_ptr->text",
+ info_ptr->max_text);
+ }
+
+ for (i = 0; i < num_text; i++)
+ {
+ png_size_t text_length, key_len;
+ png_size_t lang_len, lang_key_len;
+ png_textp textp = &(info_ptr->text[info_ptr->num_text]);
+
+ if (text_ptr[i].key == NULL)
+ continue;
+
+ key_len = png_strlen(text_ptr[i].key);
+
+ if (text_ptr[i].compression <= 0)
+ {
+ lang_len = 0;
+ lang_key_len = 0;
+ }
+
+ else
+#ifdef PNG_iTXt_SUPPORTED
+ {
+ /* Set iTXt data */
+
+ if (text_ptr[i].lang != NULL)
+ lang_len = png_strlen(text_ptr[i].lang);
+ else
+ lang_len = 0;
+ if (text_ptr[i].lang_key != NULL)
+ lang_key_len = png_strlen(text_ptr[i].lang_key);
+ else
+ lang_key_len = 0;
+ }
+#else /* PNG_iTXt_SUPPORTED */
+ {
+ png_warning(png_ptr, "iTXt chunk not supported.");
+ continue;
+ }
+#endif
+
+ if (text_ptr[i].text == NULL || text_ptr[i].text[0] == '\0')
+ {
+ text_length = 0;
+#ifdef PNG_iTXt_SUPPORTED
+ if (text_ptr[i].compression > 0)
+ textp->compression = PNG_ITXT_COMPRESSION_NONE;
+ else
+#endif
+ textp->compression = PNG_TEXT_COMPRESSION_NONE;
+ }
+
+ else
+ {
+ text_length = png_strlen(text_ptr[i].text);
+ textp->compression = text_ptr[i].compression;
+ }
+
+ textp->key = (png_charp)png_malloc_warn(png_ptr,
+ (png_uint_32)
+ (key_len + text_length + lang_len + lang_key_len + 4));
+ if (textp->key == NULL)
+ return(1);
+ png_debug2(2, "Allocated %lu bytes at %x in png_set_text",
+ (png_uint_32)
+ (key_len + lang_len + lang_key_len + text_length + 4),
+ (int)textp->key);
+
+ png_memcpy(textp->key, text_ptr[i].key,(png_size_t)(key_len));
+ *(textp->key + key_len) = '\0';
+#ifdef PNG_iTXt_SUPPORTED
+ if (text_ptr[i].compression > 0)
+ {
+ textp->lang = textp->key + key_len + 1;
+ png_memcpy(textp->lang, text_ptr[i].lang, lang_len);
+ *(textp->lang + lang_len) = '\0';
+ textp->lang_key = textp->lang + lang_len + 1;
+ png_memcpy(textp->lang_key, text_ptr[i].lang_key, lang_key_len);
+ *(textp->lang_key + lang_key_len) = '\0';
+ textp->text = textp->lang_key + lang_key_len + 1;
+ }
+ else
+#endif
+ {
+#ifdef PNG_iTXt_SUPPORTED
+ textp->lang=NULL;
+ textp->lang_key=NULL;
+#endif
+ textp->text = textp->key + key_len + 1;
+ }
+ if (text_length)
+ png_memcpy(textp->text, text_ptr[i].text,
+ (png_size_t)(text_length));
+ *(textp->text + text_length) = '\0';
+
+#ifdef PNG_iTXt_SUPPORTED
+ if (textp->compression > 0)
+ {
+ textp->text_length = 0;
+ textp->itxt_length = text_length;
+ }
+ else
+#endif
+
+ {
+ textp->text_length = text_length;
+#ifdef PNG_iTXt_SUPPORTED
+ textp->itxt_length = 0;
+#endif
+ }
+ info_ptr->num_text++;
+ png_debug1(3, "transferred text chunk %d", info_ptr->num_text);
+ }
+ return(0);
+}
+#endif
+
+#ifdef PNG_tIME_SUPPORTED
+void PNGAPI
+png_set_tIME(png_structp png_ptr, png_infop info_ptr, png_timep mod_time)
+{
+ png_debug1(1, "in %s storage function", "tIME");
+
+ if (png_ptr == NULL || info_ptr == NULL ||
+ (png_ptr->mode & PNG_WROTE_tIME))
+ return;
+
+ png_memcpy(&(info_ptr->mod_time), mod_time, png_sizeof(png_time));
+ info_ptr->valid |= PNG_INFO_tIME;
+}
+#endif
+
+#ifdef PNG_tRNS_SUPPORTED
+void PNGAPI
+png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
+ png_bytep trans, int num_trans, png_color_16p trans_values)
+{
+ png_debug1(1, "in %s storage function", "tRNS");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ if (trans != NULL)
+ {
+ /* It may not actually be necessary to set png_ptr->trans here;
+ * we do it for backward compatibility with the way the png_handle_tRNS
+ * function used to do the allocation.
+ */
+
+#ifdef PNG_FREE_ME_SUPPORTED
+ png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
+#endif
+
+ /* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
+ png_ptr->trans = info_ptr->trans = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)PNG_MAX_PALETTE_LENGTH);
+ if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH)
+ png_memcpy(info_ptr->trans, trans, (png_size_t)num_trans);
+ }
+
+ if (trans_values != NULL)
+ {
+ int sample_max = (1 << info_ptr->bit_depth);
+ if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY &&
+ (int)trans_values->gray > sample_max) ||
+ (info_ptr->color_type == PNG_COLOR_TYPE_RGB &&
+ ((int)trans_values->red > sample_max ||
+ (int)trans_values->green > sample_max ||
+ (int)trans_values->blue > sample_max)))
+ png_warning(png_ptr,
+ "tRNS chunk has out-of-range samples for bit_depth");
+ png_memcpy(&(info_ptr->trans_values), trans_values,
+ png_sizeof(png_color_16));
+ if (num_trans == 0)
+ num_trans = 1;
+ }
+
+ info_ptr->num_trans = (png_uint_16)num_trans;
+ if (num_trans != 0)
+ {
+ info_ptr->valid |= PNG_INFO_tRNS;
+#ifdef PNG_FREE_ME_SUPPORTED
+ info_ptr->free_me |= PNG_FREE_TRNS;
+#else
+ png_ptr->flags |= PNG_FLAG_FREE_TRNS;
+#endif
+ }
+}
+#endif
+
+#ifdef PNG_sPLT_SUPPORTED
+void PNGAPI
+png_set_sPLT(png_structp png_ptr,
+ png_infop info_ptr, png_sPLT_tp entries, int nentries)
+/*
+ * entries - array of png_sPLT_t structures
+ * to be added to the list of palettes
+ * in the info structure.
+ * nentries - number of palette structures to be
+ * added.
+ */
+{
+ png_sPLT_tp np;
+ int i;
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ np = (png_sPLT_tp)png_malloc_warn(png_ptr,
+ (info_ptr->splt_palettes_num + nentries) *
+ (png_uint_32)png_sizeof(png_sPLT_t));
+ if (np == NULL)
+ {
+ png_warning(png_ptr, "No memory for sPLT palettes.");
+ return;
+ }
+
+ png_memcpy(np, info_ptr->splt_palettes,
+ info_ptr->splt_palettes_num * png_sizeof(png_sPLT_t));
+ png_free(png_ptr, info_ptr->splt_palettes);
+ info_ptr->splt_palettes=NULL;
+
+ for (i = 0; i < nentries; i++)
+ {
+ png_sPLT_tp to = np + info_ptr->splt_palettes_num + i;
+ png_sPLT_tp from = entries + i;
+ png_uint_32 length;
+
+ length = png_strlen(from->name) + 1;
+ to->name = (png_charp)png_malloc_warn(png_ptr, length);
+ if (to->name == NULL)
+ {
+ png_warning(png_ptr,
+ "Out of memory while processing sPLT chunk");
+ continue;
+ }
+ png_memcpy(to->name, from->name, length);
+ to->entries = (png_sPLT_entryp)png_malloc_warn(png_ptr,
+ (png_uint_32)(from->nentries * png_sizeof(png_sPLT_entry)));
+ if (to->entries == NULL)
+ {
+ png_warning(png_ptr,
+ "Out of memory while processing sPLT chunk");
+ png_free(png_ptr, to->name);
+ to->name = NULL;
+ continue;
+ }
+ png_memcpy(to->entries, from->entries,
+ from->nentries * png_sizeof(png_sPLT_entry));
+ to->nentries = from->nentries;
+ to->depth = from->depth;
+ }
+
+ info_ptr->splt_palettes = np;
+ info_ptr->splt_palettes_num += nentries;
+ info_ptr->valid |= PNG_INFO_sPLT;
+#ifdef PNG_FREE_ME_SUPPORTED
+ info_ptr->free_me |= PNG_FREE_SPLT;
+#endif
+}
+#endif /* PNG_sPLT_SUPPORTED */
+
+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
+void PNGAPI
+png_set_unknown_chunks(png_structp png_ptr,
+ png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)
+{
+ png_unknown_chunkp np;
+ int i;
+
+ if (png_ptr == NULL || info_ptr == NULL || num_unknowns == 0)
+ return;
+
+ np = (png_unknown_chunkp)png_malloc_warn(png_ptr,
+ (png_uint_32)((info_ptr->unknown_chunks_num + num_unknowns) *
+ png_sizeof(png_unknown_chunk)));
+ if (np == NULL)
+ {
+ png_warning(png_ptr,
+ "Out of memory while processing unknown chunk.");
+ return;
+ }
+
+ png_memcpy(np, info_ptr->unknown_chunks,
+ info_ptr->unknown_chunks_num * png_sizeof(png_unknown_chunk));
+ png_free(png_ptr, info_ptr->unknown_chunks);
+ info_ptr->unknown_chunks = NULL;
+
+ for (i = 0; i < num_unknowns; i++)
+ {
+ png_unknown_chunkp to = np + info_ptr->unknown_chunks_num + i;
+ png_unknown_chunkp from = unknowns + i;
+
+ png_memcpy((png_charp)to->name, (png_charp)from->name,
+ png_sizeof(from->name));
+ to->name[png_sizeof(to->name)-1] = '\0';
+ to->size = from->size;
+ /* Note our location in the read or write sequence */
+ to->location = (png_byte)(png_ptr->mode & 0xff);
+
+ if (from->size == 0)
+ to->data=NULL;
+ else
+ {
+ to->data = (png_bytep)png_malloc_warn(png_ptr,
+ (png_uint_32)from->size);
+ if (to->data == NULL)
+ {
+ png_warning(png_ptr,
+ "Out of memory while processing unknown chunk.");
+ to->size = 0;
+ }
+ else
+ png_memcpy(to->data, from->data, from->size);
+ }
+ }
+
+ info_ptr->unknown_chunks = np;
+ info_ptr->unknown_chunks_num += num_unknowns;
+#ifdef PNG_FREE_ME_SUPPORTED
+ info_ptr->free_me |= PNG_FREE_UNKN;
+#endif
+}
+void PNGAPI
+png_set_unknown_chunk_location(png_structp png_ptr, png_infop info_ptr,
+ int chunk, int location)
+{
+ if (png_ptr != NULL && info_ptr != NULL && chunk >= 0 && chunk <
+ (int)info_ptr->unknown_chunks_num)
+ info_ptr->unknown_chunks[chunk].location = (png_byte)location;
+}
+#endif
+
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
+#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
+ defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
+void PNGAPI
+png_permit_empty_plte (png_structp png_ptr, int empty_plte_permitted)
+{
+ /* This function is deprecated in favor of png_permit_mng_features()
+ and will be removed from libpng-1.3.0 */
+
+ png_debug(1, "in png_permit_empty_plte, DEPRECATED.");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->mng_features_permitted = (png_byte)
+ ((png_ptr->mng_features_permitted & (~PNG_FLAG_MNG_EMPTY_PLTE)) |
+ ((empty_plte_permitted & PNG_FLAG_MNG_EMPTY_PLTE)));
+}
+#endif
+#endif
+
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+png_uint_32 PNGAPI
+png_permit_mng_features (png_structp png_ptr, png_uint_32 mng_features)
+{
+ png_debug(1, "in png_permit_mng_features");
+
+ if (png_ptr == NULL)
+ return (png_uint_32)0;
+ png_ptr->mng_features_permitted =
+ (png_byte)(mng_features & PNG_ALL_MNG_FEATURES);
+ return (png_uint_32)png_ptr->mng_features_permitted;
+}
+#endif
+
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+void PNGAPI
+png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_bytep
+ chunk_list, int num_chunks)
+{
+ png_bytep new_list, p;
+ int i, old_num_chunks;
+ if (png_ptr == NULL)
+ return;
+ if (num_chunks == 0)
+ {
+ if (keep == PNG_HANDLE_CHUNK_ALWAYS || keep == PNG_HANDLE_CHUNK_IF_SAFE)
+ png_ptr->flags |= PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
+ else
+ png_ptr->flags &= ~PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
+
+ if (keep == PNG_HANDLE_CHUNK_ALWAYS)
+ png_ptr->flags |= PNG_FLAG_KEEP_UNSAFE_CHUNKS;
+ else
+ png_ptr->flags &= ~PNG_FLAG_KEEP_UNSAFE_CHUNKS;
+ return;
+ }
+ if (chunk_list == NULL)
+ return;
+ old_num_chunks = png_ptr->num_chunk_list;
+ new_list=(png_bytep)png_malloc(png_ptr,
+ (png_uint_32)
+ (5*(num_chunks + old_num_chunks)));
+ if (png_ptr->chunk_list != NULL)
+ {
+ png_memcpy(new_list, png_ptr->chunk_list,
+ (png_size_t)(5*old_num_chunks));
+ png_free(png_ptr, png_ptr->chunk_list);
+ png_ptr->chunk_list=NULL;
+ }
+ png_memcpy(new_list + 5*old_num_chunks, chunk_list,
+ (png_size_t)(5*num_chunks));
+ for (p = new_list + 5*old_num_chunks + 4, i = 0; inum_chunk_list = old_num_chunks + num_chunks;
+ png_ptr->chunk_list = new_list;
+#ifdef PNG_FREE_ME_SUPPORTED
+ png_ptr->free_me |= PNG_FREE_LIST;
+#endif
+}
+#endif
+
+#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
+void PNGAPI
+png_set_read_user_chunk_fn(png_structp png_ptr, png_voidp user_chunk_ptr,
+ png_user_chunk_ptr read_user_chunk_fn)
+{
+ png_debug(1, "in png_set_read_user_chunk_fn");
+
+ if (png_ptr == NULL)
+ return;
+
+ png_ptr->read_user_chunk_fn = read_user_chunk_fn;
+ png_ptr->user_chunk_ptr = user_chunk_ptr;
+}
+#endif
+
+#ifdef PNG_INFO_IMAGE_SUPPORTED
+void PNGAPI
+png_set_rows(png_structp png_ptr, png_infop info_ptr, png_bytepp row_pointers)
+{
+ png_debug1(1, "in %s storage function", "rows");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ if (info_ptr->row_pointers && (info_ptr->row_pointers != row_pointers))
+ png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
+ info_ptr->row_pointers = row_pointers;
+ if (row_pointers)
+ info_ptr->valid |= PNG_INFO_IDAT;
+}
+#endif
+
+void PNGAPI
+png_set_compression_buffer_size(png_structp png_ptr,
+ png_uint_32 size)
+{
+ if (png_ptr == NULL)
+ return;
+ png_free(png_ptr, png_ptr->zbuf);
+ png_ptr->zbuf_size = (png_size_t)size;
+ png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, size);
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+}
+
+void PNGAPI
+png_set_invalid(png_structp png_ptr, png_infop info_ptr, int mask)
+{
+ if (png_ptr && info_ptr)
+ info_ptr->valid &= ~mask;
+}
+
+
+#ifndef PNG_1_0_X
+#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
+/* Function was added to libpng 1.2.0 and should always exist by default */
+void PNGAPI
+png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags)
+{
+/* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */
+ if (png_ptr != NULL)
+ png_ptr->asm_flags = 0;
+ asm_flags = asm_flags; /* Quiet the compiler */
+}
+
+/* This function was added to libpng 1.2.0 */
+void PNGAPI
+png_set_mmx_thresholds (png_structp png_ptr,
+ png_byte mmx_bitdepth_threshold,
+ png_uint_32 mmx_rowbytes_threshold)
+{
+/* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */
+ if (png_ptr == NULL)
+ return;
+ /* Quiet the compiler */
+ mmx_bitdepth_threshold = mmx_bitdepth_threshold;
+ mmx_rowbytes_threshold = mmx_rowbytes_threshold;
+}
+#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
+
+#ifdef PNG_SET_USER_LIMITS_SUPPORTED
+/* This function was added to libpng 1.2.6 */
+void PNGAPI
+png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max,
+ png_uint_32 user_height_max)
+{
+ /* Images with dimensions larger than these limits will be
+ * rejected by png_set_IHDR(). To accept any PNG datastream
+ * regardless of dimensions, set both limits to 0x7ffffffL.
+ */
+ if (png_ptr == NULL)
+ return;
+ png_ptr->user_width_max = user_width_max;
+ png_ptr->user_height_max = user_height_max;
+}
+#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
+
+
+#ifdef PNG_BENIGN_ERRORS_SUPPORTED
+void PNGAPI
+png_set_benign_errors(png_structp png_ptr, int allowed)
+{
+ png_debug(1, "in png_set_benign_errors");
+
+ if (allowed)
+ png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN;
+ else
+ png_ptr->flags &= ~PNG_FLAG_BENIGN_ERRORS_WARN;
+}
+#endif /* PNG_BENIGN_ERRORS_SUPPORTED */
+#endif /* ?PNG_1_0_X */
+#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/Externals/libpng/pngtest.c b/Externals/libpng/pngtest.c
new file mode 100644
index 0000000000..23e1adea2c
--- /dev/null
+++ b/Externals/libpng/pngtest.c
@@ -0,0 +1,1705 @@
+
+/* pngtest.c - a simple test program to test libpng
+ *
+ * Last changed in libpng 1.2.43 [February 25, 2010]
+ * Copyright (c) 1998-2010 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * This program reads in a PNG image, writes it out again, and then
+ * compares the two files. If the files are identical, this shows that
+ * the basic chunk handling, filtering, and (de)compression code is working
+ * properly. It does not currently test all of the transforms, although
+ * it probably should.
+ *
+ * The program will report "FAIL" in certain legitimate cases:
+ * 1) when the compression level or filter selection method is changed.
+ * 2) when the maximum IDAT size (PNG_ZBUF_SIZE in pngconf.h) is not 8192.
+ * 3) unknown unsafe-to-copy ancillary chunks or unknown critical chunks
+ * exist in the input file.
+ * 4) others not listed here...
+ * In these cases, it is best to check with another tool such as "pngcheck"
+ * to see what the differences between the two files are.
+ *
+ * If a filename is given on the command-line, then this file is used
+ * for the input, rather than the default "pngtest.png". This allows
+ * testing a wide variety of files easily. You can also test a number
+ * of files at once by typing "pngtest -m file1.png file2.png ..."
+ */
+
+#define PNG_PEDANTIC_WARNINGS
+#include "png.h"
+
+#ifdef _WIN32_WCE
+# if _WIN32_WCE < 211
+ __error__ (f|w)printf functions are not supported on old WindowsCE.;
+# endif
+# include
+# include
+# define READFILE(file, data, length, check) \
+ if (ReadFile(file, data, length, &check, NULL)) check = 0
+# define WRITEFILE(file, data, length, check)) \
+ if (WriteFile(file, data, length, &check, NULL)) check = 0
+# define FCLOSE(file) CloseHandle(file)
+#else
+# include
+# include
+# define READFILE(file, data, length, check) \
+ check=(png_size_t)fread(data, (png_size_t)1, length, file)
+# define WRITEFILE(file, data, length, check) \
+ check=(png_size_t)fwrite(data, (png_size_t)1, length, file)
+# define FCLOSE(file) fclose(file)
+#endif
+
+#ifndef PNG_STDIO_SUPPORTED
+# ifdef _WIN32_WCE
+ typedef HANDLE png_FILE_p;
+# else
+ typedef FILE * png_FILE_p;
+# endif
+#endif
+
+/* Makes pngtest verbose so we can find problems (needs to be before png.h) */
+#ifndef PNG_DEBUG
+# define PNG_DEBUG 0
+#endif
+
+#if !PNG_DEBUG
+# define SINGLE_ROWBUF_ALLOC /* Makes buffer overruns easier to nail */
+#endif
+
+/* Turn on CPU timing
+#define PNGTEST_TIMING
+*/
+
+#ifndef PNG_FLOATING_POINT_SUPPORTED
+#undef PNGTEST_TIMING
+#endif
+
+#ifdef PNGTEST_TIMING
+static float t_start, t_stop, t_decode, t_encode, t_misc;
+#include
+#endif
+
+#ifdef PNG_TIME_RFC1123_SUPPORTED
+#define PNG_tIME_STRING_LENGTH 29
+static int tIME_chunk_present = 0;
+static char tIME_string[PNG_tIME_STRING_LENGTH] = "tIME chunk is not present";
+#endif
+
+static int verbose = 0;
+
+int test_one_file PNGARG((PNG_CONST char *inname, PNG_CONST char *outname));
+
+#ifdef __TURBOC__
+#include
+#endif
+
+/* Defined so I can write to a file on gui/windowing platforms */
+/* #define STDERR stderr */
+#define STDERR stdout /* For DOS */
+
+/* In case a system header (e.g., on AIX) defined jmpbuf */
+#ifdef jmpbuf
+# undef jmpbuf
+#endif
+
+/* Define png_jmpbuf() in case we are using a pre-1.0.6 version of libpng */
+#ifndef png_jmpbuf
+# define png_jmpbuf(png_ptr) png_ptr->jmpbuf
+#endif
+
+/* Example of using row callbacks to make a simple progress meter */
+static int status_pass = 1;
+static int status_dots_requested = 0;
+static int status_dots = 1;
+
+void
+#ifdef PNG_1_0_X
+PNGAPI
+#endif
+read_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass);
+void
+#ifdef PNG_1_0_X
+PNGAPI
+#endif
+read_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass)
+{
+ if (png_ptr == NULL || row_number > PNG_UINT_31_MAX)
+ return;
+ if (status_pass != pass)
+ {
+ fprintf(stdout, "\n Pass %d: ", pass);
+ status_pass = pass;
+ status_dots = 31;
+ }
+ status_dots--;
+ if (status_dots == 0)
+ {
+ fprintf(stdout, "\n ");
+ status_dots=30;
+ }
+ fprintf(stdout, "r");
+}
+
+void
+#ifdef PNG_1_0_X
+PNGAPI
+#endif
+write_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass);
+void
+#ifdef PNG_1_0_X
+PNGAPI
+#endif
+write_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass)
+{
+ if (png_ptr == NULL || row_number > PNG_UINT_31_MAX || pass > 7)
+ return;
+ fprintf(stdout, "w");
+}
+
+
+#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
+/* Example of using user transform callback (we don't transform anything,
+ * but merely examine the row filters. We set this to 256 rather than
+ * 5 in case illegal filter values are present.)
+ */
+static png_uint_32 filters_used[256];
+void
+#ifdef PNG_1_0_X
+PNGAPI
+#endif
+count_filters(png_structp png_ptr, png_row_infop row_info, png_bytep data);
+void
+#ifdef PNG_1_0_X
+PNGAPI
+#endif
+count_filters(png_structp png_ptr, png_row_infop row_info, png_bytep data)
+{
+ if (png_ptr != NULL && row_info != NULL)
+ ++filters_used[*(data - 1)];
+}
+#endif
+
+#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
+/* Example of using user transform callback (we don't transform anything,
+ * but merely count the zero samples)
+ */
+
+static png_uint_32 zero_samples;
+
+void
+#ifdef PNG_1_0_X
+PNGAPI
+#endif
+count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data);
+void
+#ifdef PNG_1_0_X
+PNGAPI
+#endif
+count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
+{
+ png_bytep dp = data;
+ if (png_ptr == NULL)return;
+
+ /* Contents of row_info:
+ * png_uint_32 width width of row
+ * png_uint_32 rowbytes number of bytes in row
+ * png_byte color_type color type of pixels
+ * png_byte bit_depth bit depth of samples
+ * png_byte channels number of channels (1-4)
+ * png_byte pixel_depth bits per pixel (depth*channels)
+ */
+
+ /* Counts the number of zero samples (or zero pixels if color_type is 3 */
+
+ if (row_info->color_type == 0 || row_info->color_type == 3)
+ {
+ int pos = 0;
+ png_uint_32 n, nstop;
+ for (n = 0, nstop=row_info->width; nbit_depth == 1)
+ {
+ if (((*dp << pos++ ) & 0x80) == 0)
+ zero_samples++;
+ if (pos == 8)
+ {
+ pos = 0;
+ dp++;
+ }
+ }
+ if (row_info->bit_depth == 2)
+ {
+ if (((*dp << (pos+=2)) & 0xc0) == 0)
+ zero_samples++;
+ if (pos == 8)
+ {
+ pos = 0;
+ dp++;
+ }
+ }
+ if (row_info->bit_depth == 4)
+ {
+ if (((*dp << (pos+=4)) & 0xf0) == 0)
+ zero_samples++;
+ if (pos == 8)
+ {
+ pos = 0;
+ dp++;
+ }
+ }
+ if (row_info->bit_depth == 8)
+ if (*dp++ == 0)
+ zero_samples++;
+ if (row_info->bit_depth == 16)
+ {
+ if ((*dp | *(dp+1)) == 0)
+ zero_samples++;
+ dp+=2;
+ }
+ }
+ }
+ else /* Other color types */
+ {
+ png_uint_32 n, nstop;
+ int channel;
+ int color_channels = row_info->channels;
+ if (row_info->color_type > 3)color_channels--;
+
+ for (n = 0, nstop=row_info->width; nbit_depth == 8)
+ if (*dp++ == 0)
+ zero_samples++;
+ if (row_info->bit_depth == 16)
+ {
+ if ((*dp | *(dp+1)) == 0)
+ zero_samples++;
+ dp+=2;
+ }
+ }
+ if (row_info->color_type > 3)
+ {
+ dp++;
+ if (row_info->bit_depth == 16)
+ dp++;
+ }
+ }
+ }
+}
+#endif /* PNG_WRITE_USER_TRANSFORM_SUPPORTED */
+
+static int wrote_question = 0;
+
+#ifndef PNG_STDIO_SUPPORTED
+/* START of code to validate stdio-free compilation */
+/* These copies of the default read/write functions come from pngrio.c and
+ * pngwio.c. They allow "don't include stdio" testing of the library.
+ * This is the function that does the actual reading of data. If you are
+ * not reading from a standard C stream, you should create a replacement
+ * read_data function and use it at run time with png_set_read_fn(), rather
+ * than changing the library.
+ */
+
+#ifndef USE_FAR_KEYWORD
+static void
+pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ png_size_t check = 0;
+ png_voidp io_ptr;
+
+ /* fread() returns 0 on error, so it is OK to store this in a png_size_t
+ * instead of an int, which is what fread() actually returns.
+ */
+ io_ptr = png_get_io_ptr(png_ptr);
+ if (io_ptr != NULL)
+ {
+ READFILE((png_FILE_p)io_ptr, data, length, check);
+ }
+
+ if (check != length)
+ {
+ png_error(png_ptr, "Read Error!");
+ }
+}
+#else
+/* This is the model-independent version. Since the standard I/O library
+ can't handle far buffers in the medium and small models, we have to copy
+ the data.
+*/
+
+#define NEAR_BUF_SIZE 1024
+#define MIN(a,b) (a <= b ? a : b)
+
+static void
+pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ int check;
+ png_byte *n_data;
+ png_FILE_p io_ptr;
+
+ /* Check if data really is near. If so, use usual code. */
+ n_data = (png_byte *)CVT_PTR_NOCHECK(data);
+ io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
+ if ((png_bytep)n_data == data)
+ {
+ READFILE(io_ptr, n_data, length, check);
+ }
+ else
+ {
+ png_byte buf[NEAR_BUF_SIZE];
+ png_size_t read, remaining, err;
+ check = 0;
+ remaining = length;
+ do
+ {
+ read = MIN(NEAR_BUF_SIZE, remaining);
+ READFILE(io_ptr, buf, 1, err);
+ png_memcpy(data, buf, read); /* Copy far buffer to near buffer */
+ if (err != read)
+ break;
+ else
+ check += err;
+ data += read;
+ remaining -= read;
+ }
+ while (remaining != 0);
+ }
+ if (check != length)
+ png_error(png_ptr, "read Error");
+}
+#endif /* USE_FAR_KEYWORD */
+
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+static void
+pngtest_flush(png_structp png_ptr)
+{
+ /* Do nothing; fflush() is said to be just a waste of energy. */
+ png_ptr = png_ptr; /* Stifle compiler warning */
+}
+#endif
+
+/* This is the function that does the actual writing of data. If you are
+ * not writing to a standard C stream, you should create a replacement
+ * write_data function and use it at run time with png_set_write_fn(), rather
+ * than changing the library.
+ */
+#ifndef USE_FAR_KEYWORD
+static void
+pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ png_uint_32 check;
+
+ WRITEFILE((png_FILE_p)png_ptr->io_ptr, data, length, check);
+ if (check != length)
+ {
+ png_error(png_ptr, "Write Error");
+ }
+}
+#else
+/* This is the model-independent version. Since the standard I/O library
+ can't handle far buffers in the medium and small models, we have to copy
+ the data.
+*/
+
+#define NEAR_BUF_SIZE 1024
+#define MIN(a,b) (a <= b ? a : b)
+
+static void
+pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ png_uint_32 check;
+ png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */
+ png_FILE_p io_ptr;
+
+ /* Check if data really is near. If so, use usual code. */
+ near_data = (png_byte *)CVT_PTR_NOCHECK(data);
+ io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
+ if ((png_bytep)near_data == data)
+ {
+ WRITEFILE(io_ptr, near_data, length, check);
+ }
+ else
+ {
+ png_byte buf[NEAR_BUF_SIZE];
+ png_size_t written, remaining, err;
+ check = 0;
+ remaining = length;
+ do
+ {
+ written = MIN(NEAR_BUF_SIZE, remaining);
+ png_memcpy(buf, data, written); /* Copy far buffer to near buffer */
+ WRITEFILE(io_ptr, buf, written, err);
+ if (err != written)
+ break;
+ else
+ check += err;
+ data += written;
+ remaining -= written;
+ }
+ while (remaining != 0);
+ }
+ if (check != length)
+ {
+ png_error(png_ptr, "Write Error");
+ }
+}
+#endif /* USE_FAR_KEYWORD */
+
+/* This function is called when there is a warning, but the library thinks
+ * it can continue anyway. Replacement functions don't have to do anything
+ * here if you don't want to. In the default configuration, png_ptr is
+ * not used, but it is passed in case it may be useful.
+ */
+static void
+pngtest_warning(png_structp png_ptr, png_const_charp message)
+{
+ PNG_CONST char *name = "UNKNOWN (ERROR!)";
+ char *test;
+ test = png_get_error_ptr(png_ptr);
+ if (test == NULL)
+ fprintf(STDERR, "%s: libpng warning: %s\n", name, message);
+ else
+ fprintf(STDERR, "%s: libpng warning: %s\n", test, message);
+}
+
+/* This is the default error handling function. Note that replacements for
+ * this function MUST NOT RETURN, or the program will likely crash. This
+ * function is used by default, or if the program supplies NULL for the
+ * error function pointer in png_set_error_fn().
+ */
+static void
+pngtest_error(png_structp png_ptr, png_const_charp message)
+{
+ pngtest_warning(png_ptr, message);
+ /* We can return because png_error calls the default handler, which is
+ * actually OK in this case.
+ */
+}
+#endif /* !PNG_STDIO_SUPPORTED */
+/* END of code to validate stdio-free compilation */
+
+/* START of code to validate memory allocation and deallocation */
+#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
+
+/* Allocate memory. For reasonable files, size should never exceed
+ * 64K. However, zlib may allocate more then 64K if you don't tell
+ * it not to. See zconf.h and png.h for more information. zlib does
+ * need to allocate exactly 64K, so whatever you call here must
+ * have the ability to do that.
+ *
+ * This piece of code can be compiled to validate max 64K allocations
+ * by setting MAXSEG_64K in zlib zconf.h *or* PNG_MAX_MALLOC_64K.
+ */
+typedef struct memory_information
+{
+ png_uint_32 size;
+ png_voidp pointer;
+ struct memory_information FAR *next;
+} memory_information;
+typedef memory_information FAR *memory_infop;
+
+static memory_infop pinformation = NULL;
+static int current_allocation = 0;
+static int maximum_allocation = 0;
+static int total_allocation = 0;
+static int num_allocations = 0;
+
+png_voidp png_debug_malloc PNGARG((png_structp png_ptr, png_uint_32 size));
+void png_debug_free PNGARG((png_structp png_ptr, png_voidp ptr));
+
+png_voidp
+png_debug_malloc(png_structp png_ptr, png_uint_32 size)
+{
+
+ /* png_malloc has already tested for NULL; png_create_struct calls
+ * png_debug_malloc directly, with png_ptr == NULL which is OK
+ */
+
+ if (size == 0)
+ return (NULL);
+
+ /* This calls the library allocator twice, once to get the requested
+ buffer and once to get a new free list entry. */
+ {
+ /* Disable malloc_fn and free_fn */
+ memory_infop pinfo;
+ png_set_mem_fn(png_ptr, NULL, NULL, NULL);
+ pinfo = (memory_infop)png_malloc(png_ptr,
+ (png_uint_32)png_sizeof(*pinfo));
+ pinfo->size = size;
+ current_allocation += size;
+ total_allocation += size;
+ num_allocations ++;
+ if (current_allocation > maximum_allocation)
+ maximum_allocation = current_allocation;
+ pinfo->pointer = (png_voidp)png_malloc(png_ptr, size);
+ /* Restore malloc_fn and free_fn */
+ png_set_mem_fn(png_ptr,
+ png_voidp_NULL, (png_malloc_ptr)png_debug_malloc,
+ (png_free_ptr)png_debug_free);
+ if (size != 0 && pinfo->pointer == NULL)
+ {
+ current_allocation -= size;
+ total_allocation -= size;
+ png_error(png_ptr,
+ "out of memory in pngtest->png_debug_malloc.");
+ }
+ pinfo->next = pinformation;
+ pinformation = pinfo;
+ /* Make sure the caller isn't assuming zeroed memory. */
+ png_memset(pinfo->pointer, 0xdd, pinfo->size);
+ if (verbose)
+ printf("png_malloc %lu bytes at %x\n", (unsigned long)size,
+ pinfo->pointer);
+ return (png_voidp)(pinfo->pointer);
+ }
+}
+
+/* Free a pointer. It is removed from the list at the same time. */
+void
+png_debug_free(png_structp png_ptr, png_voidp ptr)
+{
+ if (png_ptr == NULL)
+ fprintf(STDERR, "NULL pointer to png_debug_free.\n");
+ if (ptr == 0)
+ {
+#if 0 /* This happens all the time. */
+ fprintf(STDERR, "WARNING: freeing NULL pointer\n");
+#endif
+ return;
+ }
+
+ /* Unlink the element from the list. */
+ {
+ memory_infop FAR *ppinfo = &pinformation;
+ for (;;)
+ {
+ memory_infop pinfo = *ppinfo;
+ if (pinfo->pointer == ptr)
+ {
+ *ppinfo = pinfo->next;
+ current_allocation -= pinfo->size;
+ if (current_allocation < 0)
+ fprintf(STDERR, "Duplicate free of memory\n");
+ /* We must free the list element too, but first kill
+ the memory that is to be freed. */
+ png_memset(ptr, 0x55, pinfo->size);
+ png_free_default(png_ptr, pinfo);
+ pinfo = NULL;
+ break;
+ }
+ if (pinfo->next == NULL)
+ {
+ fprintf(STDERR, "Pointer %x not found\n", (unsigned int)ptr);
+ break;
+ }
+ ppinfo = &pinfo->next;
+ }
+ }
+
+ /* Finally free the data. */
+ if (verbose)
+ printf("Freeing %x\n", ptr);
+ png_free_default(png_ptr, ptr);
+ ptr = NULL;
+}
+#endif /* PNG_USER_MEM_SUPPORTED && PNG_DEBUG */
+/* END of code to test memory allocation/deallocation */
+
+
+/* Demonstration of user chunk support of the sTER and vpAg chunks */
+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
+
+/* (sTER is a public chunk not yet known by libpng. vpAg is a private
+chunk used in ImageMagick to store "virtual page" size). */
+
+static png_uint_32 user_chunk_data[4];
+
+ /* 0: sTER mode + 1
+ * 1: vpAg width
+ * 2: vpAg height
+ * 3: vpAg units
+ */
+
+static int read_user_chunk_callback(png_struct *png_ptr,
+ png_unknown_chunkp chunk)
+{
+ png_uint_32
+ *my_user_chunk_data;
+
+ /* Return one of the following:
+ * return (-n); chunk had an error
+ * return (0); did not recognize
+ * return (n); success
+ *
+ * The unknown chunk structure contains the chunk data:
+ * png_byte name[5];
+ * png_byte *data;
+ * png_size_t size;
+ *
+ * Note that libpng has already taken care of the CRC handling.
+ */
+
+ if (chunk->name[0] == 115 && chunk->name[1] == 84 && /* s T */
+ chunk->name[2] == 69 && chunk->name[3] == 82) /* E R */
+ {
+ /* Found sTER chunk */
+ if (chunk->size != 1)
+ return (-1); /* Error return */
+ if (chunk->data[0] != 0 && chunk->data[0] != 1)
+ return (-1); /* Invalid mode */
+ my_user_chunk_data=(png_uint_32 *) png_get_user_chunk_ptr(png_ptr);
+ my_user_chunk_data[0]=chunk->data[0]+1;
+ return (1);
+ }
+
+ if (chunk->name[0] != 118 || chunk->name[1] != 112 || /* v p */
+ chunk->name[2] != 65 || chunk->name[3] != 103) /* A g */
+ return (0); /* Did not recognize */
+
+ /* Found ImageMagick vpAg chunk */
+
+ if (chunk->size != 9)
+ return (-1); /* Error return */
+
+ my_user_chunk_data=(png_uint_32 *) png_get_user_chunk_ptr(png_ptr);
+
+ my_user_chunk_data[1]=png_get_uint_31(png_ptr, chunk->data);
+ my_user_chunk_data[2]=png_get_uint_31(png_ptr, chunk->data + 4);
+ my_user_chunk_data[3]=(png_uint_32)chunk->data[8];
+
+ return (1);
+
+}
+#endif
+/* END of code to demonstrate user chunk support */
+
+/* Test one file */
+int
+test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
+{
+ static png_FILE_p fpin;
+ static png_FILE_p fpout; /* "static" prevents setjmp corruption */
+ png_structp read_ptr;
+ png_infop read_info_ptr, end_info_ptr;
+#ifdef PNG_WRITE_SUPPORTED
+ png_structp write_ptr;
+ png_infop write_info_ptr;
+ png_infop write_end_info_ptr;
+#else
+ png_structp write_ptr = NULL;
+ png_infop write_info_ptr = NULL;
+ png_infop write_end_info_ptr = NULL;
+#endif
+ png_bytep row_buf;
+ png_uint_32 y;
+ png_uint_32 width, height;
+ int num_pass, pass;
+ int bit_depth, color_type;
+#ifdef PNG_SETJMP_SUPPORTED
+#ifdef USE_FAR_KEYWORD
+ jmp_buf jmpbuf;
+#endif
+#endif
+
+#ifdef _WIN32_WCE
+ TCHAR path[MAX_PATH];
+#endif
+ char inbuf[256], outbuf[256];
+
+ row_buf = NULL;
+
+#ifdef _WIN32_WCE
+ MultiByteToWideChar(CP_ACP, 0, inname, -1, path, MAX_PATH);
+ if ((fpin = CreateFile(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0,
+ NULL)) == INVALID_HANDLE_VALUE)
+#else
+ if ((fpin = fopen(inname, "rb")) == NULL)
+#endif
+ {
+ fprintf(STDERR, "Could not find input file %s\n", inname);
+ return (1);
+ }
+
+#ifdef _WIN32_WCE
+ MultiByteToWideChar(CP_ACP, 0, outname, -1, path, MAX_PATH);
+ if ((fpout = CreateFile(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
+ 0, NULL)) == INVALID_HANDLE_VALUE)
+#else
+ if ((fpout = fopen(outname, "wb")) == NULL)
+#endif
+ {
+ fprintf(STDERR, "Could not open output file %s\n", outname);
+ FCLOSE(fpin);
+ return (1);
+ }
+
+ png_debug(0, "Allocating read and write structures");
+#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
+ read_ptr =
+ png_create_read_struct_2(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+ png_error_ptr_NULL, png_error_ptr_NULL, png_voidp_NULL,
+ (png_malloc_ptr)png_debug_malloc, (png_free_ptr)png_debug_free);
+#else
+ read_ptr =
+ png_create_read_struct(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+ png_error_ptr_NULL, png_error_ptr_NULL);
+#endif
+#ifndef PNG_STDIO_SUPPORTED
+ png_set_error_fn(read_ptr, (png_voidp)inname, pngtest_error,
+ pngtest_warning);
+#endif
+
+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
+ user_chunk_data[0] = 0;
+ user_chunk_data[1] = 0;
+ user_chunk_data[2] = 0;
+ user_chunk_data[3] = 0;
+ png_set_read_user_chunk_fn(read_ptr, user_chunk_data,
+ read_user_chunk_callback);
+
+#endif
+#ifdef PNG_WRITE_SUPPORTED
+#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
+ write_ptr =
+ png_create_write_struct_2(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+ png_error_ptr_NULL, png_error_ptr_NULL, png_voidp_NULL,
+ (png_malloc_ptr)png_debug_malloc, (png_free_ptr)png_debug_free);
+#else
+ write_ptr =
+ png_create_write_struct(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+ png_error_ptr_NULL, png_error_ptr_NULL);
+#endif
+#ifndef PNG_STDIO_SUPPORTED
+ png_set_error_fn(write_ptr, (png_voidp)inname, pngtest_error,
+ pngtest_warning);
+#endif
+#endif
+ png_debug(0, "Allocating read_info, write_info and end_info structures");
+ read_info_ptr = png_create_info_struct(read_ptr);
+ end_info_ptr = png_create_info_struct(read_ptr);
+#ifdef PNG_WRITE_SUPPORTED
+ write_info_ptr = png_create_info_struct(write_ptr);
+ write_end_info_ptr = png_create_info_struct(write_ptr);
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+ png_debug(0, "Setting jmpbuf for read struct");
+#ifdef USE_FAR_KEYWORD
+ if (setjmp(jmpbuf))
+#else
+ if (setjmp(png_jmpbuf(read_ptr)))
+#endif
+ {
+ fprintf(STDERR, "%s -> %s: libpng read error\n", inname, outname);
+ png_free(read_ptr, row_buf);
+ row_buf = NULL;
+ png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr);
+#ifdef PNG_WRITE_SUPPORTED
+ png_destroy_info_struct(write_ptr, &write_end_info_ptr);
+ png_destroy_write_struct(&write_ptr, &write_info_ptr);
+#endif
+ FCLOSE(fpin);
+ FCLOSE(fpout);
+ return (1);
+ }
+#ifdef USE_FAR_KEYWORD
+ png_memcpy(png_jmpbuf(read_ptr), jmpbuf, png_sizeof(jmp_buf));
+#endif
+
+#ifdef PNG_WRITE_SUPPORTED
+ png_debug(0, "Setting jmpbuf for write struct");
+#ifdef USE_FAR_KEYWORD
+ if (setjmp(jmpbuf))
+#else
+ if (setjmp(png_jmpbuf(write_ptr)))
+#endif
+ {
+ fprintf(STDERR, "%s -> %s: libpng write error\n", inname, outname);
+ png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr);
+ png_destroy_info_struct(write_ptr, &write_end_info_ptr);
+#ifdef PNG_WRITE_SUPPORTED
+ png_destroy_write_struct(&write_ptr, &write_info_ptr);
+#endif
+ FCLOSE(fpin);
+ FCLOSE(fpout);
+ return (1);
+ }
+#ifdef USE_FAR_KEYWORD
+ png_memcpy(png_jmpbuf(write_ptr), jmpbuf, png_sizeof(jmp_buf));
+#endif
+#endif
+#endif
+
+ png_debug(0, "Initializing input and output streams");
+#ifdef PNG_STDIO_SUPPORTED
+ png_init_io(read_ptr, fpin);
+# ifdef PNG_WRITE_SUPPORTED
+ png_init_io(write_ptr, fpout);
+# endif
+#else
+ png_set_read_fn(read_ptr, (png_voidp)fpin, pngtest_read_data);
+# ifdef PNG_WRITE_SUPPORTED
+ png_set_write_fn(write_ptr, (png_voidp)fpout, pngtest_write_data,
+# ifdef PNG_WRITE_FLUSH_SUPPORTED
+ pngtest_flush);
+# else
+ NULL);
+# endif
+# endif
+#endif
+ if (status_dots_requested == 1)
+ {
+#ifdef PNG_WRITE_SUPPORTED
+ png_set_write_status_fn(write_ptr, write_row_callback);
+#endif
+ png_set_read_status_fn(read_ptr, read_row_callback);
+ }
+ else
+ {
+#ifdef PNG_WRITE_SUPPORTED
+ png_set_write_status_fn(write_ptr, png_write_status_ptr_NULL);
+#endif
+ png_set_read_status_fn(read_ptr, png_read_status_ptr_NULL);
+ }
+
+#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
+ {
+ int i;
+ for (i = 0; i<256; i++)
+ filters_used[i] = 0;
+ png_set_read_user_transform_fn(read_ptr, count_filters);
+ }
+#endif
+#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
+ zero_samples = 0;
+ png_set_write_user_transform_fn(write_ptr, count_zero_samples);
+#endif
+
+#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
+# ifndef PNG_HANDLE_CHUNK_ALWAYS
+# define PNG_HANDLE_CHUNK_ALWAYS 3
+# endif
+ png_set_keep_unknown_chunks(read_ptr, PNG_HANDLE_CHUNK_ALWAYS,
+ png_bytep_NULL, 0);
+#endif
+#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
+# ifndef PNG_HANDLE_CHUNK_IF_SAFE
+# define PNG_HANDLE_CHUNK_IF_SAFE 2
+# endif
+ png_set_keep_unknown_chunks(write_ptr, PNG_HANDLE_CHUNK_IF_SAFE,
+ png_bytep_NULL, 0);
+#endif
+
+ png_debug(0, "Reading info struct");
+ png_read_info(read_ptr, read_info_ptr);
+
+ png_debug(0, "Transferring info struct");
+ {
+ int interlace_type, compression_type, filter_type;
+
+ if (png_get_IHDR(read_ptr, read_info_ptr, &width, &height, &bit_depth,
+ &color_type, &interlace_type, &compression_type, &filter_type))
+ {
+ png_set_IHDR(write_ptr, write_info_ptr, width, height, bit_depth,
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+ color_type, interlace_type, compression_type, filter_type);
+#else
+ color_type, PNG_INTERLACE_NONE, compression_type, filter_type);
+#endif
+ }
+ }
+#ifdef PNG_FIXED_POINT_SUPPORTED
+#ifdef PNG_cHRM_SUPPORTED
+ {
+ png_fixed_point white_x, white_y, red_x, red_y, green_x, green_y, blue_x,
+ blue_y;
+ if (png_get_cHRM_fixed(read_ptr, read_info_ptr, &white_x, &white_y,
+ &red_x, &red_y, &green_x, &green_y, &blue_x, &blue_y))
+ {
+ png_set_cHRM_fixed(write_ptr, write_info_ptr, white_x, white_y, red_x,
+ red_y, green_x, green_y, blue_x, blue_y);
+ }
+ }
+#endif
+#ifdef PNG_gAMA_SUPPORTED
+ {
+ png_fixed_point gamma;
+
+ if (png_get_gAMA_fixed(read_ptr, read_info_ptr, &gamma))
+ png_set_gAMA_fixed(write_ptr, write_info_ptr, gamma);
+ }
+#endif
+#else /* Use floating point versions */
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+#ifdef PNG_cHRM_SUPPORTED
+ {
+ double white_x, white_y, red_x, red_y, green_x, green_y, blue_x,
+ blue_y;
+ if (png_get_cHRM(read_ptr, read_info_ptr, &white_x, &white_y, &red_x,
+ &red_y, &green_x, &green_y, &blue_x, &blue_y))
+ {
+ png_set_cHRM(write_ptr, write_info_ptr, white_x, white_y, red_x,
+ red_y, green_x, green_y, blue_x, blue_y);
+ }
+ }
+#endif
+#ifdef PNG_gAMA_SUPPORTED
+ {
+ double gamma;
+
+ if (png_get_gAMA(read_ptr, read_info_ptr, &gamma))
+ png_set_gAMA(write_ptr, write_info_ptr, gamma);
+ }
+#endif
+#endif /* Floating point */
+#endif /* Fixed point */
+#ifdef PNG_iCCP_SUPPORTED
+ {
+ png_charp name;
+ png_charp profile;
+ png_uint_32 proflen;
+ int compression_type;
+
+ if (png_get_iCCP(read_ptr, read_info_ptr, &name, &compression_type,
+ &profile, &proflen))
+ {
+ png_set_iCCP(write_ptr, write_info_ptr, name, compression_type,
+ profile, proflen);
+ }
+ }
+#endif
+#ifdef PNG_sRGB_SUPPORTED
+ {
+ int intent;
+
+ if (png_get_sRGB(read_ptr, read_info_ptr, &intent))
+ png_set_sRGB(write_ptr, write_info_ptr, intent);
+ }
+#endif
+ {
+ png_colorp palette;
+ int num_palette;
+
+ if (png_get_PLTE(read_ptr, read_info_ptr, &palette, &num_palette))
+ png_set_PLTE(write_ptr, write_info_ptr, palette, num_palette);
+ }
+#ifdef PNG_bKGD_SUPPORTED
+ {
+ png_color_16p background;
+
+ if (png_get_bKGD(read_ptr, read_info_ptr, &background))
+ {
+ png_set_bKGD(write_ptr, write_info_ptr, background);
+ }
+ }
+#endif
+#ifdef PNG_hIST_SUPPORTED
+ {
+ png_uint_16p hist;
+
+ if (png_get_hIST(read_ptr, read_info_ptr, &hist))
+ png_set_hIST(write_ptr, write_info_ptr, hist);
+ }
+#endif
+#ifdef PNG_oFFs_SUPPORTED
+ {
+ png_int_32 offset_x, offset_y;
+ int unit_type;
+
+ if (png_get_oFFs(read_ptr, read_info_ptr, &offset_x, &offset_y,
+ &unit_type))
+ {
+ png_set_oFFs(write_ptr, write_info_ptr, offset_x, offset_y, unit_type);
+ }
+ }
+#endif
+#ifdef PNG_pCAL_SUPPORTED
+ {
+ png_charp purpose, units;
+ png_charpp params;
+ png_int_32 X0, X1;
+ int type, nparams;
+
+ if (png_get_pCAL(read_ptr, read_info_ptr, &purpose, &X0, &X1, &type,
+ &nparams, &units, ¶ms))
+ {
+ png_set_pCAL(write_ptr, write_info_ptr, purpose, X0, X1, type,
+ nparams, units, params);
+ }
+ }
+#endif
+#ifdef PNG_pHYs_SUPPORTED
+ {
+ png_uint_32 res_x, res_y;
+ int unit_type;
+
+ if (png_get_pHYs(read_ptr, read_info_ptr, &res_x, &res_y, &unit_type))
+ png_set_pHYs(write_ptr, write_info_ptr, res_x, res_y, unit_type);
+ }
+#endif
+#ifdef PNG_sBIT_SUPPORTED
+ {
+ png_color_8p sig_bit;
+
+ if (png_get_sBIT(read_ptr, read_info_ptr, &sig_bit))
+ png_set_sBIT(write_ptr, write_info_ptr, sig_bit);
+ }
+#endif
+#ifdef PNG_sCAL_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ {
+ int unit;
+ double scal_width, scal_height;
+
+ if (png_get_sCAL(read_ptr, read_info_ptr, &unit, &scal_width,
+ &scal_height))
+ {
+ png_set_sCAL(write_ptr, write_info_ptr, unit, scal_width, scal_height);
+ }
+ }
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ {
+ int unit;
+ png_charp scal_width, scal_height;
+
+ if (png_get_sCAL_s(read_ptr, read_info_ptr, &unit, &scal_width,
+ &scal_height))
+ {
+ png_set_sCAL_s(write_ptr, write_info_ptr, unit, scal_width,
+ scal_height);
+ }
+ }
+#endif
+#endif
+#endif
+#ifdef PNG_TEXT_SUPPORTED
+ {
+ png_textp text_ptr;
+ int num_text;
+
+ if (png_get_text(read_ptr, read_info_ptr, &text_ptr, &num_text) > 0)
+ {
+ png_debug1(0, "Handling %d iTXt/tEXt/zTXt chunks", num_text);
+ png_set_text(write_ptr, write_info_ptr, text_ptr, num_text);
+ }
+ }
+#endif
+#ifdef PNG_tIME_SUPPORTED
+ {
+ png_timep mod_time;
+
+ if (png_get_tIME(read_ptr, read_info_ptr, &mod_time))
+ {
+ png_set_tIME(write_ptr, write_info_ptr, mod_time);
+#ifdef PNG_TIME_RFC1123_SUPPORTED
+ /* We have to use png_memcpy instead of "=" because the string
+ * pointed to by png_convert_to_rfc1123() gets free'ed before
+ * we use it.
+ */
+ png_memcpy(tIME_string,
+ png_convert_to_rfc1123(read_ptr, mod_time),
+ png_sizeof(tIME_string));
+ tIME_string[png_sizeof(tIME_string) - 1] = '\0';
+ tIME_chunk_present++;
+#endif /* PNG_TIME_RFC1123_SUPPORTED */
+ }
+ }
+#endif
+#ifdef PNG_tRNS_SUPPORTED
+ {
+ png_bytep trans;
+ int num_trans;
+ png_color_16p trans_values;
+
+ if (png_get_tRNS(read_ptr, read_info_ptr, &trans, &num_trans,
+ &trans_values))
+ {
+ int sample_max = (1 << bit_depth);
+ /* libpng doesn't reject a tRNS chunk with out-of-range samples */
+ if (!((color_type == PNG_COLOR_TYPE_GRAY &&
+ (int)trans_values->gray > sample_max) ||
+ (color_type == PNG_COLOR_TYPE_RGB &&
+ ((int)trans_values->red > sample_max ||
+ (int)trans_values->green > sample_max ||
+ (int)trans_values->blue > sample_max))))
+ png_set_tRNS(write_ptr, write_info_ptr, trans, num_trans,
+ trans_values);
+ }
+ }
+#endif
+#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
+ {
+ png_unknown_chunkp unknowns;
+ int num_unknowns = (int)png_get_unknown_chunks(read_ptr, read_info_ptr,
+ &unknowns);
+ if (num_unknowns)
+ {
+ png_size_t i;
+ png_set_unknown_chunks(write_ptr, write_info_ptr, unknowns,
+ num_unknowns);
+ /* Copy the locations from the read_info_ptr. The automatically
+ * generated locations in write_info_ptr are wrong because we
+ * haven't written anything yet.
+ */
+ for (i = 0; i < (png_size_t)num_unknowns; i++)
+ png_set_unknown_chunk_location(write_ptr, write_info_ptr, i,
+ unknowns[i].location);
+ }
+ }
+#endif
+
+#ifdef PNG_WRITE_SUPPORTED
+ png_debug(0, "Writing info struct");
+
+/* If we wanted, we could write info in two steps:
+ * png_write_info_before_PLTE(write_ptr, write_info_ptr);
+ */
+ png_write_info(write_ptr, write_info_ptr);
+
+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
+ if (user_chunk_data[0] != 0)
+ {
+ png_byte png_sTER[5] = {115, 84, 69, 82, '\0'};
+
+ unsigned char
+ ster_chunk_data[1];
+
+ if (verbose)
+ fprintf(STDERR, "\n stereo mode = %lu\n",
+ (unsigned long)(user_chunk_data[0] - 1));
+ ster_chunk_data[0]=(unsigned char)(user_chunk_data[0] - 1);
+ png_write_chunk(write_ptr, png_sTER, ster_chunk_data, 1);
+ }
+ if (user_chunk_data[1] != 0 || user_chunk_data[2] != 0)
+ {
+ png_byte png_vpAg[5] = {118, 112, 65, 103, '\0'};
+
+ unsigned char
+ vpag_chunk_data[9];
+
+ if (verbose)
+ fprintf(STDERR, " vpAg = %lu x %lu, units = %lu\n",
+ (unsigned long)user_chunk_data[1],
+ (unsigned long)user_chunk_data[2],
+ (unsigned long)user_chunk_data[3]);
+ png_save_uint_32(vpag_chunk_data, user_chunk_data[1]);
+ png_save_uint_32(vpag_chunk_data + 4, user_chunk_data[2]);
+ vpag_chunk_data[8] = (unsigned char)(user_chunk_data[3] & 0xff);
+ png_write_chunk(write_ptr, png_vpAg, vpag_chunk_data, 9);
+ }
+
+#endif
+#endif
+
+#ifdef SINGLE_ROWBUF_ALLOC
+ png_debug(0, "Allocating row buffer...");
+ row_buf = (png_bytep)png_malloc(read_ptr,
+ png_get_rowbytes(read_ptr, read_info_ptr));
+ png_debug1(0, "0x%08lx", (unsigned long)row_buf);
+#endif /* SINGLE_ROWBUF_ALLOC */
+ png_debug(0, "Writing row data");
+
+#if defined(PNG_READ_INTERLACING_SUPPORTED) || \
+ defined(PNG_WRITE_INTERLACING_SUPPORTED)
+ num_pass = png_set_interlace_handling(read_ptr);
+# ifdef PNG_WRITE_SUPPORTED
+ png_set_interlace_handling(write_ptr);
+# endif
+#else
+ num_pass = 1;
+#endif
+
+#ifdef PNGTEST_TIMING
+ t_stop = (float)clock();
+ t_misc += (t_stop - t_start);
+ t_start = t_stop;
+#endif
+ for (pass = 0; pass < num_pass; pass++)
+ {
+ png_debug1(0, "Writing row data for pass %d", pass);
+ for (y = 0; y < height; y++)
+ {
+#ifndef SINGLE_ROWBUF_ALLOC
+ png_debug2(0, "Allocating row buffer (pass %d, y = %ld)...", pass, y);
+ row_buf = (png_bytep)png_malloc(read_ptr,
+ png_get_rowbytes(read_ptr, read_info_ptr));
+ png_debug2(0, "0x%08lx (%ld bytes)", (unsigned long)row_buf,
+ png_get_rowbytes(read_ptr, read_info_ptr));
+#endif /* !SINGLE_ROWBUF_ALLOC */
+ png_read_rows(read_ptr, (png_bytepp)&row_buf, png_bytepp_NULL, 1);
+
+#ifdef PNG_WRITE_SUPPORTED
+#ifdef PNGTEST_TIMING
+ t_stop = (float)clock();
+ t_decode += (t_stop - t_start);
+ t_start = t_stop;
+#endif
+ png_write_rows(write_ptr, (png_bytepp)&row_buf, 1);
+#ifdef PNGTEST_TIMING
+ t_stop = (float)clock();
+ t_encode += (t_stop - t_start);
+ t_start = t_stop;
+#endif
+#endif /* PNG_WRITE_SUPPORTED */
+
+#ifndef SINGLE_ROWBUF_ALLOC
+ png_debug2(0, "Freeing row buffer (pass %d, y = %ld)", pass, y);
+ png_free(read_ptr, row_buf);
+ row_buf = NULL;
+#endif /* !SINGLE_ROWBUF_ALLOC */
+ }
+ }
+
+#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
+ png_free_data(read_ptr, read_info_ptr, PNG_FREE_UNKN, -1);
+#endif
+#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
+ png_free_data(write_ptr, write_info_ptr, PNG_FREE_UNKN, -1);
+#endif
+
+ png_debug(0, "Reading and writing end_info data");
+
+ png_read_end(read_ptr, end_info_ptr);
+#ifdef PNG_TEXT_SUPPORTED
+ {
+ png_textp text_ptr;
+ int num_text;
+
+ if (png_get_text(read_ptr, end_info_ptr, &text_ptr, &num_text) > 0)
+ {
+ png_debug1(0, "Handling %d iTXt/tEXt/zTXt chunks", num_text);
+ png_set_text(write_ptr, write_end_info_ptr, text_ptr, num_text);
+ }
+ }
+#endif
+#ifdef PNG_tIME_SUPPORTED
+ {
+ png_timep mod_time;
+
+ if (png_get_tIME(read_ptr, end_info_ptr, &mod_time))
+ {
+ png_set_tIME(write_ptr, write_end_info_ptr, mod_time);
+#ifdef PNG_TIME_RFC1123_SUPPORTED
+ /* We have to use png_memcpy instead of "=" because the string
+ pointed to by png_convert_to_rfc1123() gets free'ed before
+ we use it */
+ png_memcpy(tIME_string,
+ png_convert_to_rfc1123(read_ptr, mod_time),
+ png_sizeof(tIME_string));
+ tIME_string[png_sizeof(tIME_string) - 1] = '\0';
+ tIME_chunk_present++;
+#endif /* PNG_TIME_RFC1123_SUPPORTED */
+ }
+ }
+#endif
+#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
+ {
+ png_unknown_chunkp unknowns;
+ int num_unknowns;
+ num_unknowns = (int)png_get_unknown_chunks(read_ptr, end_info_ptr,
+ &unknowns);
+ if (num_unknowns)
+ {
+ png_size_t i;
+ png_set_unknown_chunks(write_ptr, write_end_info_ptr, unknowns,
+ num_unknowns);
+ /* Copy the locations from the read_info_ptr. The automatically
+ * generated locations in write_end_info_ptr are wrong because we
+ * haven't written the end_info yet.
+ */
+ for (i = 0; i < (png_size_t)num_unknowns; i++)
+ png_set_unknown_chunk_location(write_ptr, write_end_info_ptr, i,
+ unknowns[i].location);
+ }
+ }
+#endif
+#ifdef PNG_WRITE_SUPPORTED
+ png_write_end(write_ptr, write_end_info_ptr);
+#endif
+
+#ifdef PNG_EASY_ACCESS_SUPPORTED
+ if (verbose)
+ {
+ png_uint_32 iwidth, iheight;
+ iwidth = png_get_image_width(write_ptr, write_info_ptr);
+ iheight = png_get_image_height(write_ptr, write_info_ptr);
+ fprintf(STDERR, "\n Image width = %lu, height = %lu\n",
+ (unsigned long)iwidth, (unsigned long)iheight);
+ }
+#endif
+
+ png_debug(0, "Destroying data structs");
+#ifdef SINGLE_ROWBUF_ALLOC
+ png_debug(1, "destroying row_buf for read_ptr");
+ png_free(read_ptr, row_buf);
+ row_buf = NULL;
+#endif /* SINGLE_ROWBUF_ALLOC */
+ png_debug(1, "destroying read_ptr, read_info_ptr, end_info_ptr");
+ png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr);
+#ifdef PNG_WRITE_SUPPORTED
+ png_debug(1, "destroying write_end_info_ptr");
+ png_destroy_info_struct(write_ptr, &write_end_info_ptr);
+ png_debug(1, "destroying write_ptr, write_info_ptr");
+ png_destroy_write_struct(&write_ptr, &write_info_ptr);
+#endif
+ png_debug(0, "Destruction complete.");
+
+ FCLOSE(fpin);
+ FCLOSE(fpout);
+
+ png_debug(0, "Opening files for comparison");
+#ifdef _WIN32_WCE
+ MultiByteToWideChar(CP_ACP, 0, inname, -1, path, MAX_PATH);
+ if ((fpin = CreateFile(path, GENERIC_READ, 0, NULL, OPEN_EXISTING,
+ 0, NULL)) == INVALID_HANDLE_VALUE)
+#else
+ if ((fpin = fopen(inname, "rb")) == NULL)
+#endif
+ {
+ fprintf(STDERR, "Could not find file %s\n", inname);
+ return (1);
+ }
+
+#ifdef _WIN32_WCE
+ MultiByteToWideChar(CP_ACP, 0, outname, -1, path, MAX_PATH);
+ if ((fpout = CreateFile(path, GENERIC_READ, 0, NULL, OPEN_EXISTING,
+ 0, NULL)) == INVALID_HANDLE_VALUE)
+#else
+ if ((fpout = fopen(outname, "rb")) == NULL)
+#endif
+ {
+ fprintf(STDERR, "Could not find file %s\n", outname);
+ FCLOSE(fpin);
+ return (1);
+ }
+
+ for (;;)
+ {
+ png_size_t num_in, num_out;
+
+ READFILE(fpin, inbuf, 1, num_in);
+ READFILE(fpout, outbuf, 1, num_out);
+
+ if (num_in != num_out)
+ {
+ fprintf(STDERR, "\nFiles %s and %s are of a different size\n",
+ inname, outname);
+ if (wrote_question == 0)
+ {
+ fprintf(STDERR,
+ " Was %s written with the same maximum IDAT chunk size (%d bytes),",
+ inname, PNG_ZBUF_SIZE);
+ fprintf(STDERR,
+ "\n filtering heuristic (libpng default), compression");
+ fprintf(STDERR,
+ " level (zlib default),\n and zlib version (%s)?\n\n",
+ ZLIB_VERSION);
+ wrote_question = 1;
+ }
+ FCLOSE(fpin);
+ FCLOSE(fpout);
+ return (0);
+ }
+
+ if (!num_in)
+ break;
+
+ if (png_memcmp(inbuf, outbuf, num_in))
+ {
+ fprintf(STDERR, "\nFiles %s and %s are different\n", inname, outname);
+ if (wrote_question == 0)
+ {
+ fprintf(STDERR,
+ " Was %s written with the same maximum IDAT chunk size (%d bytes),",
+ inname, PNG_ZBUF_SIZE);
+ fprintf(STDERR,
+ "\n filtering heuristic (libpng default), compression");
+ fprintf(STDERR,
+ " level (zlib default),\n and zlib version (%s)?\n\n",
+ ZLIB_VERSION);
+ wrote_question = 1;
+ }
+ FCLOSE(fpin);
+ FCLOSE(fpout);
+ return (0);
+ }
+ }
+
+ FCLOSE(fpin);
+ FCLOSE(fpout);
+
+ return (0);
+}
+
+/* Input and output filenames */
+#ifdef RISCOS
+static PNG_CONST char *inname = "pngtest/png";
+static PNG_CONST char *outname = "pngout/png";
+#else
+static PNG_CONST char *inname = "pngtest.png";
+static PNG_CONST char *outname = "pngout.png";
+#endif
+
+int
+main(int argc, char *argv[])
+{
+ int multiple = 0;
+ int ierror = 0;
+
+ fprintf(STDERR, "\n Testing libpng version %s\n", PNG_LIBPNG_VER_STRING);
+ fprintf(STDERR, " with zlib version %s\n", ZLIB_VERSION);
+ fprintf(STDERR, "%s", png_get_copyright(NULL));
+ /* Show the version of libpng used in building the library */
+ fprintf(STDERR, " library (%lu):%s",
+ (unsigned long)png_access_version_number(),
+ png_get_header_version(NULL));
+ /* Show the version of libpng used in building the application */
+ fprintf(STDERR, " pngtest (%lu):%s", (unsigned long)PNG_LIBPNG_VER,
+ PNG_HEADER_VERSION_STRING);
+ fprintf(STDERR, " sizeof(png_struct)=%ld, sizeof(png_info)=%ld\n",
+ (long)png_sizeof(png_struct), (long)png_sizeof(png_info));
+
+ /* Do some consistency checking on the memory allocation settings, I'm
+ * not sure this matters, but it is nice to know, the first of these
+ * tests should be impossible because of the way the macros are set
+ * in pngconf.h
+ */
+#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K)
+ fprintf(STDERR, " NOTE: Zlib compiled for max 64k, libpng not\n");
+#endif
+ /* I think the following can happen. */
+#if !defined(MAXSEG_64K) && defined(PNG_MAX_MALLOC_64K)
+ fprintf(STDERR, " NOTE: libpng compiled for max 64k, zlib not\n");
+#endif
+
+ if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING))
+ {
+ fprintf(STDERR,
+ "Warning: versions are different between png.h and png.c\n");
+ fprintf(STDERR, " png.h version: %s\n", PNG_LIBPNG_VER_STRING);
+ fprintf(STDERR, " png.c version: %s\n\n", png_libpng_ver);
+ ++ierror;
+ }
+
+ if (argc > 1)
+ {
+ if (strcmp(argv[1], "-m") == 0)
+ {
+ multiple = 1;
+ status_dots_requested = 0;
+ }
+ else if (strcmp(argv[1], "-mv") == 0 ||
+ strcmp(argv[1], "-vm") == 0 )
+ {
+ multiple = 1;
+ verbose = 1;
+ status_dots_requested = 1;
+ }
+ else if (strcmp(argv[1], "-v") == 0)
+ {
+ verbose = 1;
+ status_dots_requested = 1;
+ inname = argv[2];
+ }
+ else
+ {
+ inname = argv[1];
+ status_dots_requested = 0;
+ }
+ }
+
+ if (!multiple && argc == 3 + verbose)
+ outname = argv[2 + verbose];
+
+ if ((!multiple && argc > 3 + verbose) || (multiple && argc < 2))
+ {
+ fprintf(STDERR,
+ "usage: %s [infile.png] [outfile.png]\n\t%s -m {infile.png}\n",
+ argv[0], argv[0]);
+ fprintf(STDERR,
+ " reads/writes one PNG file (without -m) or multiple files (-m)\n");
+ fprintf(STDERR,
+ " with -m %s is used as a temporary file\n", outname);
+ exit(1);
+ }
+
+ if (multiple)
+ {
+ int i;
+#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
+ int allocation_now = current_allocation;
+#endif
+ for (i=2; isize,
+ (unsigned int) pinfo->pointer);
+ pinfo = pinfo->next;
+ }
+ }
+#endif
+ }
+#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
+ fprintf(STDERR, " Current memory allocation: %10d bytes\n",
+ current_allocation);
+ fprintf(STDERR, " Maximum memory allocation: %10d bytes\n",
+ maximum_allocation);
+ fprintf(STDERR, " Total memory allocation: %10d bytes\n",
+ total_allocation);
+ fprintf(STDERR, " Number of allocations: %10d\n",
+ num_allocations);
+#endif
+ }
+ else
+ {
+ int i;
+ for (i = 0; i<3; ++i)
+ {
+ int kerror;
+#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
+ int allocation_now = current_allocation;
+#endif
+ if (i == 1) status_dots_requested = 1;
+ else if (verbose == 0)status_dots_requested = 0;
+ if (i == 0 || verbose == 1 || ierror != 0)
+ fprintf(STDERR, "\n Testing %s:", inname);
+ kerror = test_one_file(inname, outname);
+ if (kerror == 0)
+ {
+ if (verbose == 1 || i == 2)
+ {
+#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
+ int k;
+#endif
+#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
+ fprintf(STDERR, "\n PASS (%lu zero samples)\n",
+ (unsigned long)zero_samples);
+#else
+ fprintf(STDERR, " PASS\n");
+#endif
+#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
+ for (k = 0; k<256; k++)
+ if (filters_used[k])
+ fprintf(STDERR, " Filter %d was used %lu times\n",
+ k, (unsigned long)filters_used[k]);
+#endif
+#ifdef PNG_TIME_RFC1123_SUPPORTED
+ if (tIME_chunk_present != 0)
+ fprintf(STDERR, " tIME = %s\n", tIME_string);
+#endif /* PNG_TIME_RFC1123_SUPPORTED */
+ }
+ }
+ else
+ {
+ if (verbose == 0 && i != 2)
+ fprintf(STDERR, "\n Testing %s:", inname);
+ fprintf(STDERR, " FAIL\n");
+ ierror += kerror;
+ }
+#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
+ if (allocation_now != current_allocation)
+ fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n",
+ current_allocation - allocation_now);
+ if (current_allocation != 0)
+ {
+ memory_infop pinfo = pinformation;
+
+ fprintf(STDERR, "MEMORY ERROR: %d bytes still allocated\n",
+ current_allocation);
+ while (pinfo != NULL)
+ {
+ fprintf(STDERR, " %lu bytes at %x\n",
+ (unsigned long)pinfo->size, (unsigned int)pinfo->pointer);
+ pinfo = pinfo->next;
+ }
+ }
+#endif
+ }
+#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
+ fprintf(STDERR, " Current memory allocation: %10d bytes\n",
+ current_allocation);
+ fprintf(STDERR, " Maximum memory allocation: %10d bytes\n",
+ maximum_allocation);
+ fprintf(STDERR, " Total memory allocation: %10d bytes\n",
+ total_allocation);
+ fprintf(STDERR, " Number of allocations: %10d\n",
+ num_allocations);
+#endif
+ }
+
+#ifdef PNGTEST_TIMING
+ t_stop = (float)clock();
+ t_misc += (t_stop - t_start);
+ t_start = t_stop;
+ fprintf(STDERR, " CPU time used = %.3f seconds",
+ (t_misc+t_decode+t_encode)/(float)CLOCKS_PER_SEC);
+ fprintf(STDERR, " (decoding %.3f,\n",
+ t_decode/(float)CLOCKS_PER_SEC);
+ fprintf(STDERR, " encoding %.3f ,",
+ t_encode/(float)CLOCKS_PER_SEC);
+ fprintf(STDERR, " other %.3f seconds)\n\n",
+ t_misc/(float)CLOCKS_PER_SEC);
+#endif
+
+ if (ierror == 0)
+ fprintf(STDERR, " libpng passes test\n");
+ else
+ fprintf(STDERR, " libpng FAILS test\n");
+ return (int)(ierror != 0);
+}
+
+/* Generate a compiler error if there is an old png.h in the search path. */
+typedef version_1_2_50 your_png_h_is_not_version_1_2_50;
diff --git a/Externals/libpng/pngtrans.c b/Externals/libpng/pngtrans.c
index 137f555a62..2122839bc5 100644
--- a/Externals/libpng/pngtrans.c
+++ b/Externals/libpng/pngtrans.c
@@ -1,723 +1,699 @@
-
-/* pngtrans.c - transforms the data in a row (used by both readers and writers)
- *
- * Last changed in libpng 1.5.1 [February 3, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- */
-
-#include "pngpriv.h"
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-
-#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
-/* Turn on BGR-to-RGB mapping */
-void PNGAPI
-png_set_bgr(png_structp png_ptr)
-{
- png_debug(1, "in png_set_bgr");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= PNG_BGR;
-}
-#endif
-
-#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
-/* Turn on 16 bit byte swapping */
-void PNGAPI
-png_set_swap(png_structp png_ptr)
-{
- png_debug(1, "in png_set_swap");
-
- if (png_ptr == NULL)
- return;
-
- if (png_ptr->bit_depth == 16)
- png_ptr->transformations |= PNG_SWAP_BYTES;
-}
-#endif
-
-#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
-/* Turn on pixel packing */
-void PNGAPI
-png_set_packing(png_structp png_ptr)
-{
- png_debug(1, "in png_set_packing");
-
- if (png_ptr == NULL)
- return;
-
- if (png_ptr->bit_depth < 8)
- {
- png_ptr->transformations |= PNG_PACK;
- png_ptr->usr_bit_depth = 8;
- }
-}
-#endif
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
-/* Turn on packed pixel swapping */
-void PNGAPI
-png_set_packswap(png_structp png_ptr)
-{
- png_debug(1, "in png_set_packswap");
-
- if (png_ptr == NULL)
- return;
-
- if (png_ptr->bit_depth < 8)
- png_ptr->transformations |= PNG_PACKSWAP;
-}
-#endif
-
-#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
-void PNGAPI
-png_set_shift(png_structp png_ptr, png_const_color_8p true_bits)
-{
- png_debug(1, "in png_set_shift");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= PNG_SHIFT;
- png_ptr->shift = *true_bits;
-}
-#endif
-
-#if defined(PNG_READ_INTERLACING_SUPPORTED) || \
- defined(PNG_WRITE_INTERLACING_SUPPORTED)
-int PNGAPI
-png_set_interlace_handling(png_structp png_ptr)
-{
- png_debug(1, "in png_set_interlace handling");
-
- if (png_ptr && png_ptr->interlaced)
- {
- png_ptr->transformations |= PNG_INTERLACE;
- return (7);
- }
-
- return (1);
-}
-#endif
-
-#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
-/* Add a filler byte on read, or remove a filler or alpha byte on write.
- * The filler type has changed in v0.95 to allow future 2-byte fillers
- * for 48-bit input data, as well as to avoid problems with some compilers
- * that don't like bytes as parameters.
- */
-void PNGAPI
-png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc)
-{
- png_debug(1, "in png_set_filler");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= PNG_FILLER;
- png_ptr->filler = (png_uint_16)filler;
-
- if (filler_loc == PNG_FILLER_AFTER)
- png_ptr->flags |= PNG_FLAG_FILLER_AFTER;
-
- else
- png_ptr->flags &= ~PNG_FLAG_FILLER_AFTER;
-
- /* This should probably go in the "do_read_filler" routine.
- * I attempted to do that in libpng-1.0.1a but that caused problems
- * so I restored it in libpng-1.0.2a
- */
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
- {
- png_ptr->usr_channels = 4;
- }
-
- /* Also I added this in libpng-1.0.2a (what happens when we expand
- * a less-than-8-bit grayscale to GA?) */
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY && png_ptr->bit_depth >= 8)
- {
- png_ptr->usr_channels = 2;
- }
-}
-
-/* Added to libpng-1.2.7 */
-void PNGAPI
-png_set_add_alpha(png_structp png_ptr, png_uint_32 filler, int filler_loc)
-{
- png_debug(1, "in png_set_add_alpha");
-
- if (png_ptr == NULL)
- return;
-
- png_set_filler(png_ptr, filler, filler_loc);
- png_ptr->transformations |= PNG_ADD_ALPHA;
-}
-
-#endif
-
-#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
- defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
-void PNGAPI
-png_set_swap_alpha(png_structp png_ptr)
-{
- png_debug(1, "in png_set_swap_alpha");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= PNG_SWAP_ALPHA;
-}
-#endif
-
-#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
- defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
-void PNGAPI
-png_set_invert_alpha(png_structp png_ptr)
-{
- png_debug(1, "in png_set_invert_alpha");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= PNG_INVERT_ALPHA;
-}
-#endif
-
-#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
-void PNGAPI
-png_set_invert_mono(png_structp png_ptr)
-{
- png_debug(1, "in png_set_invert_mono");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= PNG_INVERT_MONO;
-}
-
-/* Invert monochrome grayscale data */
-void /* PRIVATE */
-png_do_invert(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_invert");
-
- /* This test removed from libpng version 1.0.13 and 1.2.0:
- * if (row_info->bit_depth == 1 &&
- */
- if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
- {
- png_bytep rp = row;
- png_size_t i;
- png_size_t istop = row_info->rowbytes;
-
- for (i = 0; i < istop; i++)
- {
- *rp = (png_byte)(~(*rp));
- rp++;
- }
- }
-
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA &&
- row_info->bit_depth == 8)
- {
- png_bytep rp = row;
- png_size_t i;
- png_size_t istop = row_info->rowbytes;
-
- for (i = 0; i < istop; i += 2)
- {
- *rp = (png_byte)(~(*rp));
- rp += 2;
- }
- }
-
-#ifdef PNG_16BIT_SUPPORTED
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA &&
- row_info->bit_depth == 16)
- {
- png_bytep rp = row;
- png_size_t i;
- png_size_t istop = row_info->rowbytes;
-
- for (i = 0; i < istop; i += 4)
- {
- *rp = (png_byte)(~(*rp));
- *(rp + 1) = (png_byte)(~(*(rp + 1)));
- rp += 4;
- }
- }
-#endif
-}
-#endif
-
-#ifdef PNG_16BIT_SUPPORTED
-#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
-/* Swaps byte order on 16 bit depth images */
-void /* PRIVATE */
-png_do_swap(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_swap");
-
- if (row_info->bit_depth == 16)
- {
- png_bytep rp = row;
- png_uint_32 i;
- png_uint_32 istop= row_info->width * row_info->channels;
-
- for (i = 0; i < istop; i++, rp += 2)
- {
- png_byte t = *rp;
- *rp = *(rp + 1);
- *(rp + 1) = t;
- }
- }
-}
-#endif
-#endif
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
-static PNG_CONST png_byte onebppswaptable[256] = {
- 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,
- 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,
- 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,
- 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8,
- 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4,
- 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,
- 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC,
- 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC,
- 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,
- 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2,
- 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA,
- 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,
- 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6,
- 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6,
- 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,
- 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE,
- 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1,
- 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,
- 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9,
- 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9,
- 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,
- 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5,
- 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED,
- 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,
- 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3,
- 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3,
- 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,
- 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB,
- 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7,
- 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,
- 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF,
- 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF
-};
-
-static PNG_CONST png_byte twobppswaptable[256] = {
- 0x00, 0x40, 0x80, 0xC0, 0x10, 0x50, 0x90, 0xD0,
- 0x20, 0x60, 0xA0, 0xE0, 0x30, 0x70, 0xB0, 0xF0,
- 0x04, 0x44, 0x84, 0xC4, 0x14, 0x54, 0x94, 0xD4,
- 0x24, 0x64, 0xA4, 0xE4, 0x34, 0x74, 0xB4, 0xF4,
- 0x08, 0x48, 0x88, 0xC8, 0x18, 0x58, 0x98, 0xD8,
- 0x28, 0x68, 0xA8, 0xE8, 0x38, 0x78, 0xB8, 0xF8,
- 0x0C, 0x4C, 0x8C, 0xCC, 0x1C, 0x5C, 0x9C, 0xDC,
- 0x2C, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC,
- 0x01, 0x41, 0x81, 0xC1, 0x11, 0x51, 0x91, 0xD1,
- 0x21, 0x61, 0xA1, 0xE1, 0x31, 0x71, 0xB1, 0xF1,
- 0x05, 0x45, 0x85, 0xC5, 0x15, 0x55, 0x95, 0xD5,
- 0x25, 0x65, 0xA5, 0xE5, 0x35, 0x75, 0xB5, 0xF5,
- 0x09, 0x49, 0x89, 0xC9, 0x19, 0x59, 0x99, 0xD9,
- 0x29, 0x69, 0xA9, 0xE9, 0x39, 0x79, 0xB9, 0xF9,
- 0x0D, 0x4D, 0x8D, 0xCD, 0x1D, 0x5D, 0x9D, 0xDD,
- 0x2D, 0x6D, 0xAD, 0xED, 0x3D, 0x7D, 0xBD, 0xFD,
- 0x02, 0x42, 0x82, 0xC2, 0x12, 0x52, 0x92, 0xD2,
- 0x22, 0x62, 0xA2, 0xE2, 0x32, 0x72, 0xB2, 0xF2,
- 0x06, 0x46, 0x86, 0xC6, 0x16, 0x56, 0x96, 0xD6,
- 0x26, 0x66, 0xA6, 0xE6, 0x36, 0x76, 0xB6, 0xF6,
- 0x0A, 0x4A, 0x8A, 0xCA, 0x1A, 0x5A, 0x9A, 0xDA,
- 0x2A, 0x6A, 0xAA, 0xEA, 0x3A, 0x7A, 0xBA, 0xFA,
- 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xDE,
- 0x2E, 0x6E, 0xAE, 0xEE, 0x3E, 0x7E, 0xBE, 0xFE,
- 0x03, 0x43, 0x83, 0xC3, 0x13, 0x53, 0x93, 0xD3,
- 0x23, 0x63, 0xA3, 0xE3, 0x33, 0x73, 0xB3, 0xF3,
- 0x07, 0x47, 0x87, 0xC7, 0x17, 0x57, 0x97, 0xD7,
- 0x27, 0x67, 0xA7, 0xE7, 0x37, 0x77, 0xB7, 0xF7,
- 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x5B, 0x9B, 0xDB,
- 0x2B, 0x6B, 0xAB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB,
- 0x0F, 0x4F, 0x8F, 0xCF, 0x1F, 0x5F, 0x9F, 0xDF,
- 0x2F, 0x6F, 0xAF, 0xEF, 0x3F, 0x7F, 0xBF, 0xFF
-};
-
-static PNG_CONST png_byte fourbppswaptable[256] = {
- 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
- 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0,
- 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71,
- 0x81, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1,
- 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72,
- 0x82, 0x92, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0xF2,
- 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73,
- 0x83, 0x93, 0xA3, 0xB3, 0xC3, 0xD3, 0xE3, 0xF3,
- 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74,
- 0x84, 0x94, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4,
- 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75,
- 0x85, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xE5, 0xF5,
- 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76,
- 0x86, 0x96, 0xA6, 0xB6, 0xC6, 0xD6, 0xE6, 0xF6,
- 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77,
- 0x87, 0x97, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7,
- 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78,
- 0x88, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8,
- 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79,
- 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9,
- 0x0A, 0x1A, 0x2A, 0x3A, 0x4A, 0x5A, 0x6A, 0x7A,
- 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA,
- 0x0B, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B,
- 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xDB, 0xEB, 0xFB,
- 0x0C, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C,
- 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xDC, 0xEC, 0xFC,
- 0x0D, 0x1D, 0x2D, 0x3D, 0x4D, 0x5D, 0x6D, 0x7D,
- 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD,
- 0x0E, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E,
- 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE,
- 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F,
- 0x8F, 0x9F, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF
-};
-
-/* Swaps pixel packing order within bytes */
-void /* PRIVATE */
-png_do_packswap(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_packswap");
-
- if (row_info->bit_depth < 8)
- {
- png_bytep rp;
- png_const_bytep end, table;
-
- end = row + row_info->rowbytes;
-
- if (row_info->bit_depth == 1)
- table = onebppswaptable;
-
- else if (row_info->bit_depth == 2)
- table = twobppswaptable;
-
- else if (row_info->bit_depth == 4)
- table = fourbppswaptable;
-
- else
- return;
-
- for (rp = row; rp < end; rp++)
- *rp = table[*rp];
- }
-}
-#endif /* PNG_READ_PACKSWAP_SUPPORTED or PNG_WRITE_PACKSWAP_SUPPORTED */
-
-#if defined(PNG_WRITE_FILLER_SUPPORTED) || \
- defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
-/* Remove filler or alpha byte(s) */
-void /* PRIVATE */
-png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
-{
- png_debug(1, "in png_do_strip_filler");
-
- {
- png_bytep sp = row;
- png_bytep dp = row;
- png_uint_32 row_width = row_info->width;
- png_uint_32 i;
-
- if ((row_info->color_type == PNG_COLOR_TYPE_RGB ||
- (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
- (flags & PNG_FLAG_STRIP_ALPHA))) &&
- row_info->channels == 4)
- {
- if (row_info->bit_depth == 8)
- {
- /* This converts from RGBX or RGBA to RGB */
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- dp += 3; sp += 4;
- for (i = 1; i < row_width; i++)
- {
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- sp++;
- }
- }
-
- /* This converts from XRGB or ARGB to RGB */
- else
- {
- for (i = 0; i < row_width; i++)
- {
- sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- }
- }
- row_info->pixel_depth = 24;
- row_info->rowbytes = row_width * 3;
- }
-
- else /* if (row_info->bit_depth == 16) */
- {
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- /* This converts from RRGGBBXX or RRGGBBAA to RRGGBB */
- sp += 8; dp += 6;
- for (i = 1; i < row_width; i++)
- {
- /* This could be (although png_memcpy is probably slower):
- png_memcpy(dp, sp, 6);
- sp += 8;
- dp += 6;
- */
-
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- sp += 2;
- }
- }
-
- else
- {
- /* This converts from XXRRGGBB or AARRGGBB to RRGGBB */
- for (i = 0; i < row_width; i++)
- {
- /* This could be (although png_memcpy is probably slower):
- png_memcpy(dp, sp, 6);
- sp += 8;
- dp += 6;
- */
-
- sp += 2;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- }
- }
-
- row_info->pixel_depth = 48;
- row_info->rowbytes = row_width * 6;
- }
- row_info->channels = 3;
- }
-
- else if ((row_info->color_type == PNG_COLOR_TYPE_GRAY ||
- (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA &&
- (flags & PNG_FLAG_STRIP_ALPHA))) &&
- row_info->channels == 2)
- {
- if (row_info->bit_depth == 8)
- {
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- /* This converts from GX or GA to G */
- for (i = 0; i < row_width; i++)
- {
- *dp++ = *sp++;
- sp++;
- }
- }
-
- else
- {
- /* This converts from XG or AG to G */
- for (i = 0; i < row_width; i++)
- {
- sp++;
- *dp++ = *sp++;
- }
- }
-
- row_info->pixel_depth = 8;
- row_info->rowbytes = row_width;
- }
-
- else /* if (row_info->bit_depth == 16) */
- {
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- /* This converts from GGXX or GGAA to GG */
- sp += 4; dp += 2;
- for (i = 1; i < row_width; i++)
- {
- *dp++ = *sp++;
- *dp++ = *sp++;
- sp += 2;
- }
- }
-
- else
- {
- /* This converts from XXGG or AAGG to GG */
- for (i = 0; i < row_width; i++)
- {
- sp += 2;
- *dp++ = *sp++;
- *dp++ = *sp++;
- }
- }
-
- row_info->pixel_depth = 16;
- row_info->rowbytes = row_width * 2;
- }
- row_info->channels = 1;
- }
-
- if (flags & PNG_FLAG_STRIP_ALPHA)
- row_info->color_type = (png_byte)(row_info->color_type &
- ~PNG_COLOR_MASK_ALPHA);
- }
-}
-#endif
-
-#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
-/* Swaps red and blue bytes within a pixel */
-void /* PRIVATE */
-png_do_bgr(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_bgr");
-
- if ((row_info->color_type & PNG_COLOR_MASK_COLOR))
- {
- png_uint_32 row_width = row_info->width;
- if (row_info->bit_depth == 8)
- {
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- {
- png_bytep rp;
- png_uint_32 i;
-
- for (i = 0, rp = row; i < row_width; i++, rp += 3)
- {
- png_byte save = *rp;
- *rp = *(rp + 2);
- *(rp + 2) = save;
- }
- }
-
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- png_bytep rp;
- png_uint_32 i;
-
- for (i = 0, rp = row; i < row_width; i++, rp += 4)
- {
- png_byte save = *rp;
- *rp = *(rp + 2);
- *(rp + 2) = save;
- }
- }
- }
-
-#ifdef PNG_16BIT_SUPPORTED
- else if (row_info->bit_depth == 16)
- {
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- {
- png_bytep rp;
- png_uint_32 i;
-
- for (i = 0, rp = row; i < row_width; i++, rp += 6)
- {
- png_byte save = *rp;
- *rp = *(rp + 4);
- *(rp + 4) = save;
- save = *(rp + 1);
- *(rp + 1) = *(rp + 5);
- *(rp + 5) = save;
- }
- }
-
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- png_bytep rp;
- png_uint_32 i;
-
- for (i = 0, rp = row; i < row_width; i++, rp += 8)
- {
- png_byte save = *rp;
- *rp = *(rp + 4);
- *(rp + 4) = save;
- save = *(rp + 1);
- *(rp + 1) = *(rp + 5);
- *(rp + 5) = save;
- }
- }
- }
-#endif
- }
-}
-#endif /* PNG_READ_BGR_SUPPORTED or PNG_WRITE_BGR_SUPPORTED */
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
-#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
-void PNGAPI
-png_set_user_transform_info(png_structp png_ptr, png_voidp
- user_transform_ptr, int user_transform_depth, int user_transform_channels)
-{
- png_debug(1, "in png_set_user_transform_info");
-
- if (png_ptr == NULL)
- return;
- png_ptr->user_transform_ptr = user_transform_ptr;
- png_ptr->user_transform_depth = (png_byte)user_transform_depth;
- png_ptr->user_transform_channels = (png_byte)user_transform_channels;
-}
-#endif
-
-/* This function returns a pointer to the user_transform_ptr associated with
- * the user transform functions. The application should free any memory
- * associated with this pointer before png_write_destroy and png_read_destroy
- * are called.
- */
-#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
-png_voidp PNGAPI
-png_get_user_transform_ptr(png_const_structp png_ptr)
-{
- if (png_ptr == NULL)
- return (NULL);
-
- return ((png_voidp)png_ptr->user_transform_ptr);
-}
-#endif
-
-png_uint_32 PNGAPI
-png_get_current_row_number(png_const_structp png_ptr)
-{
- if (png_ptr != NULL)
- return png_ptr->row_number;
- return PNG_UINT_32_MAX; /* help the app not to fail silently */
-}
-
-png_byte PNGAPI
-png_get_current_pass_number(png_const_structp png_ptr)
-{
- if (png_ptr != NULL)
- return png_ptr->pass;
- return 8; /* invalid */
-}
-#endif /* PNG_READ_USER_TRANSFORM_SUPPORTED ||
- PNG_WRITE_USER_TRANSFORM_SUPPORTED */
-#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
+
+/* pngtrans.c - transforms the data in a row (used by both readers and writers)
+ *
+ * Last changed in libpng 1.2.41 [December 3, 2009]
+ * Copyright (c) 1998-2009 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+
+#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
+/* Turn on BGR-to-RGB mapping */
+void PNGAPI
+png_set_bgr(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_bgr");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->transformations |= PNG_BGR;
+}
+#endif
+
+#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
+/* Turn on 16 bit byte swapping */
+void PNGAPI
+png_set_swap(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_swap");
+
+ if (png_ptr == NULL)
+ return;
+ if (png_ptr->bit_depth == 16)
+ png_ptr->transformations |= PNG_SWAP_BYTES;
+}
+#endif
+
+#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
+/* Turn on pixel packing */
+void PNGAPI
+png_set_packing(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_packing");
+
+ if (png_ptr == NULL)
+ return;
+ if (png_ptr->bit_depth < 8)
+ {
+ png_ptr->transformations |= PNG_PACK;
+ png_ptr->usr_bit_depth = 8;
+ }
+}
+#endif
+
+#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
+/* Turn on packed pixel swapping */
+void PNGAPI
+png_set_packswap(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_packswap");
+
+ if (png_ptr == NULL)
+ return;
+ if (png_ptr->bit_depth < 8)
+ png_ptr->transformations |= PNG_PACKSWAP;
+}
+#endif
+
+#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
+void PNGAPI
+png_set_shift(png_structp png_ptr, png_color_8p true_bits)
+{
+ png_debug(1, "in png_set_shift");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->transformations |= PNG_SHIFT;
+ png_ptr->shift = *true_bits;
+}
+#endif
+
+#if defined(PNG_READ_INTERLACING_SUPPORTED) || \
+ defined(PNG_WRITE_INTERLACING_SUPPORTED)
+int PNGAPI
+png_set_interlace_handling(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_interlace handling");
+
+ if (png_ptr && png_ptr->interlaced)
+ {
+ png_ptr->transformations |= PNG_INTERLACE;
+ return (7);
+ }
+
+ return (1);
+}
+#endif
+
+#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
+/* Add a filler byte on read, or remove a filler or alpha byte on write.
+ * The filler type has changed in v0.95 to allow future 2-byte fillers
+ * for 48-bit input data, as well as to avoid problems with some compilers
+ * that don't like bytes as parameters.
+ */
+void PNGAPI
+png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc)
+{
+ png_debug(1, "in png_set_filler");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->transformations |= PNG_FILLER;
+#ifdef PNG_LEGACY_SUPPORTED
+ png_ptr->filler = (png_byte)filler;
+#else
+ png_ptr->filler = (png_uint_16)filler;
+#endif
+ if (filler_loc == PNG_FILLER_AFTER)
+ png_ptr->flags |= PNG_FLAG_FILLER_AFTER;
+ else
+ png_ptr->flags &= ~PNG_FLAG_FILLER_AFTER;
+
+ /* This should probably go in the "do_read_filler" routine.
+ * I attempted to do that in libpng-1.0.1a but that caused problems
+ * so I restored it in libpng-1.0.2a
+ */
+
+ if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
+ {
+ png_ptr->usr_channels = 4;
+ }
+
+ /* Also I added this in libpng-1.0.2a (what happens when we expand
+ * a less-than-8-bit grayscale to GA? */
+
+ if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY && png_ptr->bit_depth >= 8)
+ {
+ png_ptr->usr_channels = 2;
+ }
+}
+
+#ifndef PNG_1_0_X
+/* Added to libpng-1.2.7 */
+void PNGAPI
+png_set_add_alpha(png_structp png_ptr, png_uint_32 filler, int filler_loc)
+{
+ png_debug(1, "in png_set_add_alpha");
+
+ if (png_ptr == NULL)
+ return;
+ png_set_filler(png_ptr, filler, filler_loc);
+ png_ptr->transformations |= PNG_ADD_ALPHA;
+}
+#endif
+
+#endif
+
+#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
+ defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
+void PNGAPI
+png_set_swap_alpha(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_swap_alpha");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->transformations |= PNG_SWAP_ALPHA;
+}
+#endif
+
+#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
+ defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
+void PNGAPI
+png_set_invert_alpha(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_invert_alpha");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->transformations |= PNG_INVERT_ALPHA;
+}
+#endif
+
+#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
+void PNGAPI
+png_set_invert_mono(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_invert_mono");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->transformations |= PNG_INVERT_MONO;
+}
+
+/* Invert monochrome grayscale data */
+void /* PRIVATE */
+png_do_invert(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_invert");
+
+ /* This test removed from libpng version 1.0.13 and 1.2.0:
+ * if (row_info->bit_depth == 1 &&
+ */
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row == NULL || row_info == NULL)
+ return;
+#endif
+ if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
+ {
+ png_bytep rp = row;
+ png_uint_32 i;
+ png_uint_32 istop = row_info->rowbytes;
+
+ for (i = 0; i < istop; i++)
+ {
+ *rp = (png_byte)(~(*rp));
+ rp++;
+ }
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA &&
+ row_info->bit_depth == 8)
+ {
+ png_bytep rp = row;
+ png_uint_32 i;
+ png_uint_32 istop = row_info->rowbytes;
+
+ for (i = 0; i < istop; i+=2)
+ {
+ *rp = (png_byte)(~(*rp));
+ rp+=2;
+ }
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA &&
+ row_info->bit_depth == 16)
+ {
+ png_bytep rp = row;
+ png_uint_32 i;
+ png_uint_32 istop = row_info->rowbytes;
+
+ for (i = 0; i < istop; i+=4)
+ {
+ *rp = (png_byte)(~(*rp));
+ *(rp+1) = (png_byte)(~(*(rp+1)));
+ rp+=4;
+ }
+ }
+}
+#endif
+
+#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
+/* Swaps byte order on 16 bit depth images */
+void /* PRIVATE */
+png_do_swap(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_swap");
+
+ if (
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ row_info->bit_depth == 16)
+ {
+ png_bytep rp = row;
+ png_uint_32 i;
+ png_uint_32 istop= row_info->width * row_info->channels;
+
+ for (i = 0; i < istop; i++, rp += 2)
+ {
+ png_byte t = *rp;
+ *rp = *(rp + 1);
+ *(rp + 1) = t;
+ }
+ }
+}
+#endif
+
+#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
+static PNG_CONST png_byte onebppswaptable[256] = {
+ 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,
+ 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,
+ 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,
+ 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8,
+ 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4,
+ 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,
+ 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC,
+ 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC,
+ 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,
+ 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2,
+ 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA,
+ 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,
+ 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6,
+ 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6,
+ 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,
+ 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE,
+ 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1,
+ 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,
+ 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9,
+ 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9,
+ 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,
+ 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5,
+ 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED,
+ 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,
+ 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3,
+ 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3,
+ 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,
+ 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB,
+ 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7,
+ 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,
+ 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF,
+ 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF
+};
+
+static PNG_CONST png_byte twobppswaptable[256] = {
+ 0x00, 0x40, 0x80, 0xC0, 0x10, 0x50, 0x90, 0xD0,
+ 0x20, 0x60, 0xA0, 0xE0, 0x30, 0x70, 0xB0, 0xF0,
+ 0x04, 0x44, 0x84, 0xC4, 0x14, 0x54, 0x94, 0xD4,
+ 0x24, 0x64, 0xA4, 0xE4, 0x34, 0x74, 0xB4, 0xF4,
+ 0x08, 0x48, 0x88, 0xC8, 0x18, 0x58, 0x98, 0xD8,
+ 0x28, 0x68, 0xA8, 0xE8, 0x38, 0x78, 0xB8, 0xF8,
+ 0x0C, 0x4C, 0x8C, 0xCC, 0x1C, 0x5C, 0x9C, 0xDC,
+ 0x2C, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC,
+ 0x01, 0x41, 0x81, 0xC1, 0x11, 0x51, 0x91, 0xD1,
+ 0x21, 0x61, 0xA1, 0xE1, 0x31, 0x71, 0xB1, 0xF1,
+ 0x05, 0x45, 0x85, 0xC5, 0x15, 0x55, 0x95, 0xD5,
+ 0x25, 0x65, 0xA5, 0xE5, 0x35, 0x75, 0xB5, 0xF5,
+ 0x09, 0x49, 0x89, 0xC9, 0x19, 0x59, 0x99, 0xD9,
+ 0x29, 0x69, 0xA9, 0xE9, 0x39, 0x79, 0xB9, 0xF9,
+ 0x0D, 0x4D, 0x8D, 0xCD, 0x1D, 0x5D, 0x9D, 0xDD,
+ 0x2D, 0x6D, 0xAD, 0xED, 0x3D, 0x7D, 0xBD, 0xFD,
+ 0x02, 0x42, 0x82, 0xC2, 0x12, 0x52, 0x92, 0xD2,
+ 0x22, 0x62, 0xA2, 0xE2, 0x32, 0x72, 0xB2, 0xF2,
+ 0x06, 0x46, 0x86, 0xC6, 0x16, 0x56, 0x96, 0xD6,
+ 0x26, 0x66, 0xA6, 0xE6, 0x36, 0x76, 0xB6, 0xF6,
+ 0x0A, 0x4A, 0x8A, 0xCA, 0x1A, 0x5A, 0x9A, 0xDA,
+ 0x2A, 0x6A, 0xAA, 0xEA, 0x3A, 0x7A, 0xBA, 0xFA,
+ 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xDE,
+ 0x2E, 0x6E, 0xAE, 0xEE, 0x3E, 0x7E, 0xBE, 0xFE,
+ 0x03, 0x43, 0x83, 0xC3, 0x13, 0x53, 0x93, 0xD3,
+ 0x23, 0x63, 0xA3, 0xE3, 0x33, 0x73, 0xB3, 0xF3,
+ 0x07, 0x47, 0x87, 0xC7, 0x17, 0x57, 0x97, 0xD7,
+ 0x27, 0x67, 0xA7, 0xE7, 0x37, 0x77, 0xB7, 0xF7,
+ 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x5B, 0x9B, 0xDB,
+ 0x2B, 0x6B, 0xAB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB,
+ 0x0F, 0x4F, 0x8F, 0xCF, 0x1F, 0x5F, 0x9F, 0xDF,
+ 0x2F, 0x6F, 0xAF, 0xEF, 0x3F, 0x7F, 0xBF, 0xFF
+};
+
+static PNG_CONST png_byte fourbppswaptable[256] = {
+ 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
+ 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0,
+ 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71,
+ 0x81, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1,
+ 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72,
+ 0x82, 0x92, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0xF2,
+ 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73,
+ 0x83, 0x93, 0xA3, 0xB3, 0xC3, 0xD3, 0xE3, 0xF3,
+ 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74,
+ 0x84, 0x94, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4,
+ 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75,
+ 0x85, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xE5, 0xF5,
+ 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76,
+ 0x86, 0x96, 0xA6, 0xB6, 0xC6, 0xD6, 0xE6, 0xF6,
+ 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77,
+ 0x87, 0x97, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7,
+ 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78,
+ 0x88, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8,
+ 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79,
+ 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9,
+ 0x0A, 0x1A, 0x2A, 0x3A, 0x4A, 0x5A, 0x6A, 0x7A,
+ 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA,
+ 0x0B, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B,
+ 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xDB, 0xEB, 0xFB,
+ 0x0C, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C,
+ 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xDC, 0xEC, 0xFC,
+ 0x0D, 0x1D, 0x2D, 0x3D, 0x4D, 0x5D, 0x6D, 0x7D,
+ 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD,
+ 0x0E, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E,
+ 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE,
+ 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F,
+ 0x8F, 0x9F, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF
+};
+
+/* Swaps pixel packing order within bytes */
+void /* PRIVATE */
+png_do_packswap(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_packswap");
+
+ if (
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ row_info->bit_depth < 8)
+ {
+ png_bytep rp, end, table;
+
+ end = row + row_info->rowbytes;
+
+ if (row_info->bit_depth == 1)
+ table = (png_bytep)onebppswaptable;
+ else if (row_info->bit_depth == 2)
+ table = (png_bytep)twobppswaptable;
+ else if (row_info->bit_depth == 4)
+ table = (png_bytep)fourbppswaptable;
+ else
+ return;
+
+ for (rp = row; rp < end; rp++)
+ *rp = table[*rp];
+ }
+}
+#endif /* PNG_READ_PACKSWAP_SUPPORTED or PNG_WRITE_PACKSWAP_SUPPORTED */
+
+#if defined(PNG_WRITE_FILLER_SUPPORTED) || \
+ defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
+/* Remove filler or alpha byte(s) */
+void /* PRIVATE */
+png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
+{
+ png_debug(1, "in png_do_strip_filler");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL)
+#endif
+ {
+ png_bytep sp=row;
+ png_bytep dp=row;
+ png_uint_32 row_width=row_info->width;
+ png_uint_32 i;
+
+ if ((row_info->color_type == PNG_COLOR_TYPE_RGB ||
+ (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
+ (flags & PNG_FLAG_STRIP_ALPHA))) &&
+ row_info->channels == 4)
+ {
+ if (row_info->bit_depth == 8)
+ {
+ /* This converts from RGBX or RGBA to RGB */
+ if (flags & PNG_FLAG_FILLER_AFTER)
+ {
+ dp+=3; sp+=4;
+ for (i = 1; i < row_width; i++)
+ {
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ sp++;
+ }
+ }
+ /* This converts from XRGB or ARGB to RGB */
+ else
+ {
+ for (i = 0; i < row_width; i++)
+ {
+ sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ }
+ }
+ row_info->pixel_depth = 24;
+ row_info->rowbytes = row_width * 3;
+ }
+ else /* if (row_info->bit_depth == 16) */
+ {
+ if (flags & PNG_FLAG_FILLER_AFTER)
+ {
+ /* This converts from RRGGBBXX or RRGGBBAA to RRGGBB */
+ sp += 8; dp += 6;
+ for (i = 1; i < row_width; i++)
+ {
+ /* This could be (although png_memcpy is probably slower):
+ png_memcpy(dp, sp, 6);
+ sp += 8;
+ dp += 6;
+ */
+
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ sp += 2;
+ }
+ }
+ else
+ {
+ /* This converts from XXRRGGBB or AARRGGBB to RRGGBB */
+ for (i = 0; i < row_width; i++)
+ {
+ /* This could be (although png_memcpy is probably slower):
+ png_memcpy(dp, sp, 6);
+ sp += 8;
+ dp += 6;
+ */
+
+ sp+=2;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ }
+ }
+ row_info->pixel_depth = 48;
+ row_info->rowbytes = row_width * 6;
+ }
+ row_info->channels = 3;
+ }
+ else if ((row_info->color_type == PNG_COLOR_TYPE_GRAY ||
+ (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA &&
+ (flags & PNG_FLAG_STRIP_ALPHA))) &&
+ row_info->channels == 2)
+ {
+ if (row_info->bit_depth == 8)
+ {
+ /* This converts from GX or GA to G */
+ if (flags & PNG_FLAG_FILLER_AFTER)
+ {
+ for (i = 0; i < row_width; i++)
+ {
+ *dp++ = *sp++;
+ sp++;
+ }
+ }
+ /* This converts from XG or AG to G */
+ else
+ {
+ for (i = 0; i < row_width; i++)
+ {
+ sp++;
+ *dp++ = *sp++;
+ }
+ }
+ row_info->pixel_depth = 8;
+ row_info->rowbytes = row_width;
+ }
+ else /* if (row_info->bit_depth == 16) */
+ {
+ if (flags & PNG_FLAG_FILLER_AFTER)
+ {
+ /* This converts from GGXX or GGAA to GG */
+ sp += 4; dp += 2;
+ for (i = 1; i < row_width; i++)
+ {
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ sp += 2;
+ }
+ }
+ else
+ {
+ /* This converts from XXGG or AAGG to GG */
+ for (i = 0; i < row_width; i++)
+ {
+ sp += 2;
+ *dp++ = *sp++;
+ *dp++ = *sp++;
+ }
+ }
+ row_info->pixel_depth = 16;
+ row_info->rowbytes = row_width * 2;
+ }
+ row_info->channels = 1;
+ }
+ if (flags & PNG_FLAG_STRIP_ALPHA)
+ row_info->color_type &= ~PNG_COLOR_MASK_ALPHA;
+ }
+}
+#endif
+
+#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
+/* Swaps red and blue bytes within a pixel */
+void /* PRIVATE */
+png_do_bgr(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_bgr");
+
+ if (
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ (row_info->color_type & PNG_COLOR_MASK_COLOR))
+ {
+ png_uint_32 row_width = row_info->width;
+ if (row_info->bit_depth == 8)
+ {
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB)
+ {
+ png_bytep rp;
+ png_uint_32 i;
+
+ for (i = 0, rp = row; i < row_width; i++, rp += 3)
+ {
+ png_byte save = *rp;
+ *rp = *(rp + 2);
+ *(rp + 2) = save;
+ }
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_bytep rp;
+ png_uint_32 i;
+
+ for (i = 0, rp = row; i < row_width; i++, rp += 4)
+ {
+ png_byte save = *rp;
+ *rp = *(rp + 2);
+ *(rp + 2) = save;
+ }
+ }
+ }
+ else if (row_info->bit_depth == 16)
+ {
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB)
+ {
+ png_bytep rp;
+ png_uint_32 i;
+
+ for (i = 0, rp = row; i < row_width; i++, rp += 6)
+ {
+ png_byte save = *rp;
+ *rp = *(rp + 4);
+ *(rp + 4) = save;
+ save = *(rp + 1);
+ *(rp + 1) = *(rp + 5);
+ *(rp + 5) = save;
+ }
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_bytep rp;
+ png_uint_32 i;
+
+ for (i = 0, rp = row; i < row_width; i++, rp += 8)
+ {
+ png_byte save = *rp;
+ *rp = *(rp + 4);
+ *(rp + 4) = save;
+ save = *(rp + 1);
+ *(rp + 1) = *(rp + 5);
+ *(rp + 5) = save;
+ }
+ }
+ }
+ }
+}
+#endif /* PNG_READ_BGR_SUPPORTED or PNG_WRITE_BGR_SUPPORTED */
+
+#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
+ defined(PNG_LEGACY_SUPPORTED) || \
+ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
+void PNGAPI
+png_set_user_transform_info(png_structp png_ptr, png_voidp
+ user_transform_ptr, int user_transform_depth, int user_transform_channels)
+{
+ png_debug(1, "in png_set_user_transform_info");
+
+ if (png_ptr == NULL)
+ return;
+#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
+ png_ptr->user_transform_ptr = user_transform_ptr;
+ png_ptr->user_transform_depth = (png_byte)user_transform_depth;
+ png_ptr->user_transform_channels = (png_byte)user_transform_channels;
+#else
+ if (user_transform_ptr || user_transform_depth || user_transform_channels)
+ png_warning(png_ptr,
+ "This version of libpng does not support user transform info");
+#endif
+}
+#endif
+
+/* This function returns a pointer to the user_transform_ptr associated with
+ * the user transform functions. The application should free any memory
+ * associated with this pointer before png_write_destroy and png_read_destroy
+ * are called.
+ */
+png_voidp PNGAPI
+png_get_user_transform_ptr(png_structp png_ptr)
+{
+ if (png_ptr == NULL)
+ return (NULL);
+#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
+ return ((png_voidp)png_ptr->user_transform_ptr);
+#else
+ return (NULL);
+#endif
+}
+#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/Externals/libpng/pngvcrd.c b/Externals/libpng/pngvcrd.c
new file mode 100644
index 0000000000..5792af3e43
--- /dev/null
+++ b/Externals/libpng/pngvcrd.c
@@ -0,0 +1,12 @@
+/* pngvcrd.c
+ *
+ * Last changed in libpng 1.2.48 [March 8, 2012]
+ * Copyright (c) 1998-2012 Glenn Randers-Pehrson
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * This nearly empty file is for use by configure's compilation test. The
+ * remainder of the file was removed from libpng-1.2.20.
+ */
diff --git a/Externals/libpng/pngwio.c b/Externals/libpng/pngwio.c
index 95ffb3429f..9ca65d6fd6 100644
--- a/Externals/libpng/pngwio.c
+++ b/Externals/libpng/pngwio.c
@@ -1,254 +1,260 @@
-
-/* pngwio.c - functions for data output
- *
- * Last changed in libpng 1.5.0 [January 6, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- * This file provides a location for all output. Users who need
- * special handling are expected to write functions that have the same
- * arguments as these and perform similar functions, but that possibly
- * use different output methods. Note that you shouldn't change these
- * functions, but rather write replacement functions and then change
- * them at run time with png_set_write_fn(...).
- */
-
-#include "pngpriv.h"
-
-#ifdef PNG_WRITE_SUPPORTED
-
-/* Write the data to whatever output you are using. The default routine
- * writes to a file pointer. Note that this routine sometimes gets called
- * with very small lengths, so you should implement some kind of simple
- * buffering if you are using unbuffered writes. This should never be asked
- * to write more than 64K on a 16 bit machine.
- */
-
-void /* PRIVATE */
-png_write_data(png_structp png_ptr, png_const_bytep data, png_size_t length)
-{
- /* NOTE: write_data_fn must not change the buffer! */
- if (png_ptr->write_data_fn != NULL )
- (*(png_ptr->write_data_fn))(png_ptr, (png_bytep)data, length);
-
- else
- png_error(png_ptr, "Call to NULL write function");
-}
-
-#ifdef PNG_STDIO_SUPPORTED
-/* This is the function that does the actual writing of data. If you are
- * not writing to a standard C stream, you should create a replacement
- * write_data function and use it at run time with png_set_write_fn(), rather
- * than changing the library.
- */
-#ifndef USE_FAR_KEYWORD
-void PNGCBAPI
-png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
-{
- png_size_t check;
-
- if (png_ptr == NULL)
- return;
-
- check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr));
-
- if (check != length)
- png_error(png_ptr, "Write Error");
-}
-#else
-/* This is the model-independent version. Since the standard I/O library
- * can't handle far buffers in the medium and small models, we have to copy
- * the data.
- */
-
-#define NEAR_BUF_SIZE 1024
-#define MIN(a,b) (a <= b ? a : b)
-
-void PNGCBAPI
-png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
-{
- png_uint_32 check;
- png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */
- png_FILE_p io_ptr;
-
- if (png_ptr == NULL)
- return;
-
- /* Check if data really is near. If so, use usual code. */
- near_data = (png_byte *)CVT_PTR_NOCHECK(data);
- io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
-
- if ((png_bytep)near_data == data)
- {
- check = fwrite(near_data, 1, length, io_ptr);
- }
-
- else
- {
- png_byte buf[NEAR_BUF_SIZE];
- png_size_t written, remaining, err;
- check = 0;
- remaining = length;
-
- do
- {
- written = MIN(NEAR_BUF_SIZE, remaining);
- png_memcpy(buf, data, written); /* Copy far buffer to near buffer */
- err = fwrite(buf, 1, written, io_ptr);
-
- if (err != written)
- break;
-
- else
- check += err;
-
- data += written;
- remaining -= written;
- }
- while (remaining != 0);
- }
-
- if (check != length)
- png_error(png_ptr, "Write Error");
-}
-
-#endif
-#endif
-
-/* This function is called to output any data pending writing (normally
- * to disk). After png_flush is called, there should be no data pending
- * writing in any buffers.
- */
-#ifdef PNG_WRITE_FLUSH_SUPPORTED
-void /* PRIVATE */
-png_flush(png_structp png_ptr)
-{
- if (png_ptr->output_flush_fn != NULL)
- (*(png_ptr->output_flush_fn))(png_ptr);
-}
-
-# ifdef PNG_STDIO_SUPPORTED
-void PNGCBAPI
-png_default_flush(png_structp png_ptr)
-{
- png_FILE_p io_ptr;
-
- if (png_ptr == NULL)
- return;
-
- io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr));
- fflush(io_ptr);
-}
-# endif
-#endif
-
-/* This function allows the application to supply new output functions for
- * libpng if standard C streams aren't being used.
- *
- * This function takes as its arguments:
- * png_ptr - pointer to a png output data structure
- * io_ptr - pointer to user supplied structure containing info about
- * the output functions. May be NULL.
- * write_data_fn - pointer to a new output function that takes as its
- * arguments a pointer to a png_struct, a pointer to
- * data to be written, and a 32-bit unsigned int that is
- * the number of bytes to be written. The new write
- * function should call png_error(png_ptr, "Error msg")
- * to exit and output any fatal error messages. May be
- * NULL, in which case libpng's default function will
- * be used.
- * flush_data_fn - pointer to a new flush function that takes as its
- * arguments a pointer to a png_struct. After a call to
- * the flush function, there should be no data in any buffers
- * or pending transmission. If the output method doesn't do
- * any buffering of output, a function prototype must still be
- * supplied although it doesn't have to do anything. If
- * PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile
- * time, output_flush_fn will be ignored, although it must be
- * supplied for compatibility. May be NULL, in which case
- * libpng's default function will be used, if
- * PNG_WRITE_FLUSH_SUPPORTED is defined. This is not
- * a good idea if io_ptr does not point to a standard
- * *FILE structure.
- */
-void PNGAPI
-png_set_write_fn(png_structp png_ptr, png_voidp io_ptr,
- png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)
-{
- if (png_ptr == NULL)
- return;
-
- png_ptr->io_ptr = io_ptr;
-
-#ifdef PNG_STDIO_SUPPORTED
- if (write_data_fn != NULL)
- png_ptr->write_data_fn = write_data_fn;
-
- else
- png_ptr->write_data_fn = png_default_write_data;
-#else
- png_ptr->write_data_fn = write_data_fn;
-#endif
-
-#ifdef PNG_WRITE_FLUSH_SUPPORTED
-# ifdef PNG_STDIO_SUPPORTED
-
- if (output_flush_fn != NULL)
- png_ptr->output_flush_fn = output_flush_fn;
-
- else
- png_ptr->output_flush_fn = png_default_flush;
-
-# else
- png_ptr->output_flush_fn = output_flush_fn;
-# endif
-#endif /* PNG_WRITE_FLUSH_SUPPORTED */
-
- /* It is an error to read while writing a png file */
- if (png_ptr->read_data_fn != NULL)
- {
- png_ptr->read_data_fn = NULL;
-
- png_warning(png_ptr,
- "Can't set both read_data_fn and write_data_fn in the"
- " same structure");
- }
-}
-
-#ifdef USE_FAR_KEYWORD
-# ifdef _MSC_VER
-void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check)
-{
- void *near_ptr;
- void FAR *far_ptr;
- FP_OFF(near_ptr) = FP_OFF(ptr);
- far_ptr = (void FAR *)near_ptr;
-
- if (check != 0)
- if (FP_SEG(ptr) != FP_SEG(far_ptr))
- png_error(png_ptr, "segment lost in conversion");
-
- return(near_ptr);
-}
-# else
-void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check)
-{
- void *near_ptr;
- void FAR *far_ptr;
- near_ptr = (void FAR *)ptr;
- far_ptr = (void FAR *)near_ptr;
-
- if (check != 0)
- if (far_ptr != ptr)
- png_error(png_ptr, "segment lost in conversion");
-
- return(near_ptr);
-}
-# endif
-#endif
-#endif /* PNG_WRITE_SUPPORTED */
+
+/* pngwio.c - functions for data output
+ *
+ * Last changed in libpng 1.2.41 [December 3, 2009]
+ * Copyright (c) 1998-2009 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ *
+ * This file provides a location for all output. Users who need
+ * special handling are expected to write functions that have the same
+ * arguments as these and perform similar functions, but that possibly
+ * use different output methods. Note that you shouldn't change these
+ * functions, but rather write replacement functions and then change
+ * them at run time with png_set_write_fn(...).
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#ifdef PNG_WRITE_SUPPORTED
+
+/* Write the data to whatever output you are using. The default routine
+ * writes to a file pointer. Note that this routine sometimes gets called
+ * with very small lengths, so you should implement some kind of simple
+ * buffering if you are using unbuffered writes. This should never be asked
+ * to write more than 64K on a 16 bit machine.
+ */
+
+void /* PRIVATE */
+png_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ if (png_ptr->write_data_fn != NULL )
+ (*(png_ptr->write_data_fn))(png_ptr, data, length);
+ else
+ png_error(png_ptr, "Call to NULL write function");
+}
+
+#ifdef PNG_STDIO_SUPPORTED
+/* This is the function that does the actual writing of data. If you are
+ * not writing to a standard C stream, you should create a replacement
+ * write_data function and use it at run time with png_set_write_fn(), rather
+ * than changing the library.
+ */
+#ifndef USE_FAR_KEYWORD
+void PNGAPI
+png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ png_uint_32 check;
+
+ if (png_ptr == NULL)
+ return;
+#ifdef _WIN32_WCE
+ if ( !WriteFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )
+ check = 0;
+#else
+ check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr));
+#endif
+ if (check != length)
+ png_error(png_ptr, "Write Error");
+}
+#else
+/* This is the model-independent version. Since the standard I/O library
+ * can't handle far buffers in the medium and small models, we have to copy
+ * the data.
+ */
+
+#define NEAR_BUF_SIZE 1024
+#define MIN(a,b) (a <= b ? a : b)
+
+void PNGAPI
+png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ png_uint_32 check;
+ png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */
+ png_FILE_p io_ptr;
+
+ if (png_ptr == NULL)
+ return;
+ /* Check if data really is near. If so, use usual code. */
+ near_data = (png_byte *)CVT_PTR_NOCHECK(data);
+ io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
+ if ((png_bytep)near_data == data)
+ {
+#ifdef _WIN32_WCE
+ if ( !WriteFile(io_ptr, near_data, length, &check, NULL) )
+ check = 0;
+#else
+ check = fwrite(near_data, 1, length, io_ptr);
+#endif
+ }
+ else
+ {
+ png_byte buf[NEAR_BUF_SIZE];
+ png_size_t written, remaining, err;
+ check = 0;
+ remaining = length;
+ do
+ {
+ written = MIN(NEAR_BUF_SIZE, remaining);
+ png_memcpy(buf, data, written); /* Copy far buffer to near buffer */
+#ifdef _WIN32_WCE
+ if ( !WriteFile(io_ptr, buf, written, &err, NULL) )
+ err = 0;
+#else
+ err = fwrite(buf, 1, written, io_ptr);
+#endif
+ if (err != written)
+ break;
+
+ else
+ check += err;
+
+ data += written;
+ remaining -= written;
+ }
+ while (remaining != 0);
+ }
+ if (check != length)
+ png_error(png_ptr, "Write Error");
+}
+
+#endif
+#endif
+
+/* This function is called to output any data pending writing (normally
+ * to disk). After png_flush is called, there should be no data pending
+ * writing in any buffers.
+ */
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+void /* PRIVATE */
+png_flush(png_structp png_ptr)
+{
+ if (png_ptr->output_flush_fn != NULL)
+ (*(png_ptr->output_flush_fn))(png_ptr);
+}
+
+#ifdef PNG_STDIO_SUPPORTED
+void PNGAPI
+png_default_flush(png_structp png_ptr)
+{
+#ifndef _WIN32_WCE
+ png_FILE_p io_ptr;
+#endif
+ if (png_ptr == NULL)
+ return;
+#ifndef _WIN32_WCE
+ io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr));
+ fflush(io_ptr);
+#endif
+}
+#endif
+#endif
+
+/* This function allows the application to supply new output functions for
+ * libpng if standard C streams aren't being used.
+ *
+ * This function takes as its arguments:
+ * png_ptr - pointer to a png output data structure
+ * io_ptr - pointer to user supplied structure containing info about
+ * the output functions. May be NULL.
+ * write_data_fn - pointer to a new output function that takes as its
+ * arguments a pointer to a png_struct, a pointer to
+ * data to be written, and a 32-bit unsigned int that is
+ * the number of bytes to be written. The new write
+ * function should call png_error(png_ptr, "Error msg")
+ * to exit and output any fatal error messages. May be
+ * NULL, in which case libpng's default function will
+ * be used.
+ * flush_data_fn - pointer to a new flush function that takes as its
+ * arguments a pointer to a png_struct. After a call to
+ * the flush function, there should be no data in any buffers
+ * or pending transmission. If the output method doesn't do
+ * any buffering of output, a function prototype must still be
+ * supplied although it doesn't have to do anything. If
+ * PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile
+ * time, output_flush_fn will be ignored, although it must be
+ * supplied for compatibility. May be NULL, in which case
+ * libpng's default function will be used, if
+ * PNG_WRITE_FLUSH_SUPPORTED is defined. This is not
+ * a good idea if io_ptr does not point to a standard
+ * *FILE structure.
+ */
+void PNGAPI
+png_set_write_fn(png_structp png_ptr, png_voidp io_ptr,
+ png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)
+{
+ if (png_ptr == NULL)
+ return;
+
+ png_ptr->io_ptr = io_ptr;
+
+#ifdef PNG_STDIO_SUPPORTED
+ if (write_data_fn != NULL)
+ png_ptr->write_data_fn = write_data_fn;
+
+ else
+ png_ptr->write_data_fn = png_default_write_data;
+#else
+ png_ptr->write_data_fn = write_data_fn;
+#endif
+
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+#ifdef PNG_STDIO_SUPPORTED
+ if (output_flush_fn != NULL)
+ png_ptr->output_flush_fn = output_flush_fn;
+
+ else
+ png_ptr->output_flush_fn = png_default_flush;
+#else
+ png_ptr->output_flush_fn = output_flush_fn;
+#endif
+#endif /* PNG_WRITE_FLUSH_SUPPORTED */
+
+ /* It is an error to read while writing a png file */
+ if (png_ptr->read_data_fn != NULL)
+ {
+ png_ptr->read_data_fn = NULL;
+ png_warning(png_ptr,
+ "Attempted to set both read_data_fn and write_data_fn in");
+ png_warning(png_ptr,
+ "the same structure. Resetting read_data_fn to NULL.");
+ }
+}
+
+#ifdef USE_FAR_KEYWORD
+#ifdef _MSC_VER
+void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check)
+{
+ void *near_ptr;
+ void FAR *far_ptr;
+ FP_OFF(near_ptr) = FP_OFF(ptr);
+ far_ptr = (void FAR *)near_ptr;
+
+ if (check != 0)
+ if (FP_SEG(ptr) != FP_SEG(far_ptr))
+ png_error(png_ptr, "segment lost in conversion");
+
+ return(near_ptr);
+}
+# else
+void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check)
+{
+ void *near_ptr;
+ void FAR *far_ptr;
+ near_ptr = (void FAR *)ptr;
+ far_ptr = (void FAR *)near_ptr;
+
+ if (check != 0)
+ if (far_ptr != ptr)
+ png_error(png_ptr, "segment lost in conversion");
+
+ return(near_ptr);
+}
+# endif
+# endif
+#endif /* PNG_WRITE_SUPPORTED */
diff --git a/Externals/libpng/pngwrite.c b/Externals/libpng/pngwrite.c
index d90f449e30..b392aa5439 100644
--- a/Externals/libpng/pngwrite.c
+++ b/Externals/libpng/pngwrite.c
@@ -1,1605 +1,1593 @@
-
-/* pngwrite.c - general routines to write a PNG file
- *
- * Last changed in libpng 1.5.1 [February 3, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- */
-
-#include "pngpriv.h"
-
-#ifdef PNG_WRITE_SUPPORTED
-
-/* Writes all the PNG information. This is the suggested way to use the
- * library. If you have a new chunk to add, make a function to write it,
- * and put it in the correct location here. If you want the chunk written
- * after the image data, put it in png_write_end(). I strongly encourage
- * you to supply a PNG_INFO_ flag, and check info_ptr->valid before writing
- * the chunk, as that will keep the code from breaking if you want to just
- * write a plain PNG file. If you have long comments, I suggest writing
- * them in png_write_end(), and compressing them.
- */
-void PNGAPI
-png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_write_info_before_PLTE");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
- {
- /* Write PNG signature */
- png_write_sig(png_ptr);
-
-#ifdef PNG_MNG_FEATURES_SUPPORTED
- if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) && \
- (png_ptr->mng_features_permitted))
- {
- png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
- png_ptr->mng_features_permitted = 0;
- }
-#endif
-
- /* Write IHDR information. */
- png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height,
- info_ptr->bit_depth, info_ptr->color_type, info_ptr->compression_type,
- info_ptr->filter_type,
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- info_ptr->interlace_type);
-#else
- 0);
-#endif
- /* The rest of these check to see if the valid field has the appropriate
- * flag set, and if it does, writes the chunk.
- */
-#ifdef PNG_WRITE_gAMA_SUPPORTED
- if (info_ptr->valid & PNG_INFO_gAMA)
- png_write_gAMA_fixed(png_ptr, info_ptr->gamma);
-#endif
-#ifdef PNG_WRITE_sRGB_SUPPORTED
- if (info_ptr->valid & PNG_INFO_sRGB)
- png_write_sRGB(png_ptr, (int)info_ptr->srgb_intent);
-#endif
-
-#ifdef PNG_WRITE_iCCP_SUPPORTED
- if (info_ptr->valid & PNG_INFO_iCCP)
- png_write_iCCP(png_ptr, info_ptr->iccp_name, PNG_COMPRESSION_TYPE_BASE,
- (png_charp)info_ptr->iccp_profile, (int)info_ptr->iccp_proflen);
-#endif
-#ifdef PNG_WRITE_sBIT_SUPPORTED
- if (info_ptr->valid & PNG_INFO_sBIT)
- png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type);
-#endif
-#ifdef PNG_WRITE_cHRM_SUPPORTED
- if (info_ptr->valid & PNG_INFO_cHRM)
- png_write_cHRM_fixed(png_ptr,
- info_ptr->x_white, info_ptr->y_white,
- info_ptr->x_red, info_ptr->y_red,
- info_ptr->x_green, info_ptr->y_green,
- info_ptr->x_blue, info_ptr->y_blue);
-#endif
-
-#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
- if (info_ptr->unknown_chunks_num)
- {
- png_unknown_chunk *up;
-
- png_debug(5, "writing extra chunks");
-
- for (up = info_ptr->unknown_chunks;
- up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num;
- up++)
- {
- int keep = png_handle_as_unknown(png_ptr, up->name);
-
- if (keep != PNG_HANDLE_CHUNK_NEVER &&
- up->location && !(up->location & PNG_HAVE_PLTE) &&
- !(up->location & PNG_HAVE_IDAT) &&
- ((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
- (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
- {
- if (up->size == 0)
- png_warning(png_ptr, "Writing zero-length unknown chunk");
-
- png_write_chunk(png_ptr, up->name, up->data, up->size);
- }
- }
- }
-#endif
- png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE;
- }
-}
-
-void PNGAPI
-png_write_info(png_structp png_ptr, png_infop info_ptr)
-{
-#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
- int i;
-#endif
-
- png_debug(1, "in png_write_info");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- png_write_info_before_PLTE(png_ptr, info_ptr);
-
- if (info_ptr->valid & PNG_INFO_PLTE)
- png_write_PLTE(png_ptr, info_ptr->palette,
- (png_uint_32)info_ptr->num_palette);
-
- else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- png_error(png_ptr, "Valid palette required for paletted images");
-
-#ifdef PNG_WRITE_tRNS_SUPPORTED
- if (info_ptr->valid & PNG_INFO_tRNS)
- {
-#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
- /* Invert the alpha channel (in tRNS) */
- if ((png_ptr->transformations & PNG_INVERT_ALPHA) &&
- info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- int j;
- for (j = 0; j<(int)info_ptr->num_trans; j++)
- info_ptr->trans_alpha[j] =
- (png_byte)(255 - info_ptr->trans_alpha[j]);
- }
-#endif
- png_write_tRNS(png_ptr, info_ptr->trans_alpha, &(info_ptr->trans_color),
- info_ptr->num_trans, info_ptr->color_type);
- }
-#endif
-#ifdef PNG_WRITE_bKGD_SUPPORTED
- if (info_ptr->valid & PNG_INFO_bKGD)
- png_write_bKGD(png_ptr, &(info_ptr->background), info_ptr->color_type);
-#endif
-
-#ifdef PNG_WRITE_hIST_SUPPORTED
- if (info_ptr->valid & PNG_INFO_hIST)
- png_write_hIST(png_ptr, info_ptr->hist, info_ptr->num_palette);
-#endif
-
-#ifdef PNG_WRITE_oFFs_SUPPORTED
- if (info_ptr->valid & PNG_INFO_oFFs)
- png_write_oFFs(png_ptr, info_ptr->x_offset, info_ptr->y_offset,
- info_ptr->offset_unit_type);
-#endif
-
-#ifdef PNG_WRITE_pCAL_SUPPORTED
- if (info_ptr->valid & PNG_INFO_pCAL)
- png_write_pCAL(png_ptr, info_ptr->pcal_purpose, info_ptr->pcal_X0,
- info_ptr->pcal_X1, info_ptr->pcal_type, info_ptr->pcal_nparams,
- info_ptr->pcal_units, info_ptr->pcal_params);
-#endif
-
-#ifdef PNG_WRITE_sCAL_SUPPORTED
- if (info_ptr->valid & PNG_INFO_sCAL)
- png_write_sCAL_s(png_ptr, (int)info_ptr->scal_unit,
- info_ptr->scal_s_width, info_ptr->scal_s_height);
-#endif /* sCAL */
-
-#ifdef PNG_WRITE_pHYs_SUPPORTED
- if (info_ptr->valid & PNG_INFO_pHYs)
- png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit,
- info_ptr->y_pixels_per_unit, info_ptr->phys_unit_type);
-#endif /* pHYs */
-
-#ifdef PNG_WRITE_tIME_SUPPORTED
- if (info_ptr->valid & PNG_INFO_tIME)
- {
- png_write_tIME(png_ptr, &(info_ptr->mod_time));
- png_ptr->mode |= PNG_WROTE_tIME;
- }
-#endif /* tIME */
-
-#ifdef PNG_WRITE_sPLT_SUPPORTED
- if (info_ptr->valid & PNG_INFO_sPLT)
- for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
- png_write_sPLT(png_ptr, info_ptr->splt_palettes + i);
-#endif /* sPLT */
-
-#ifdef PNG_WRITE_TEXT_SUPPORTED
- /* Check to see if we need to write text chunks */
- for (i = 0; i < info_ptr->num_text; i++)
- {
- png_debug2(2, "Writing header text chunk %d, type %d", i,
- info_ptr->text[i].compression);
- /* An internationalized chunk? */
- if (info_ptr->text[i].compression > 0)
- {
-#ifdef PNG_WRITE_iTXt_SUPPORTED
- /* Write international chunk */
- png_write_iTXt(png_ptr,
- info_ptr->text[i].compression,
- info_ptr->text[i].key,
- info_ptr->text[i].lang,
- info_ptr->text[i].lang_key,
- info_ptr->text[i].text);
-#else
- png_warning(png_ptr, "Unable to write international text");
-#endif
- /* Mark this chunk as written */
- info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
- }
-
- /* If we want a compressed text chunk */
- else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_zTXt)
- {
-#ifdef PNG_WRITE_zTXt_SUPPORTED
- /* Write compressed chunk */
- png_write_zTXt(png_ptr, info_ptr->text[i].key,
- info_ptr->text[i].text, 0,
- info_ptr->text[i].compression);
-#else
- png_warning(png_ptr, "Unable to write compressed text");
-#endif
- /* Mark this chunk as written */
- info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR;
- }
-
- else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE)
- {
-#ifdef PNG_WRITE_tEXt_SUPPORTED
- /* Write uncompressed chunk */
- png_write_tEXt(png_ptr, info_ptr->text[i].key,
- info_ptr->text[i].text,
- 0);
- /* Mark this chunk as written */
- info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
-#else
- /* Can't get here */
- png_warning(png_ptr, "Unable to write uncompressed text");
-#endif
- }
- }
-#endif /* tEXt */
-
-#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
- if (info_ptr->unknown_chunks_num)
- {
- png_unknown_chunk *up;
-
- png_debug(5, "writing extra chunks");
-
- for (up = info_ptr->unknown_chunks;
- up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num;
- up++)
- {
- int keep = png_handle_as_unknown(png_ptr, up->name);
- if (keep != PNG_HANDLE_CHUNK_NEVER &&
- up->location && (up->location & PNG_HAVE_PLTE) &&
- !(up->location & PNG_HAVE_IDAT) &&
- ((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
- (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
- {
- png_write_chunk(png_ptr, up->name, up->data, up->size);
- }
- }
- }
-#endif
-}
-
-/* Writes the end of the PNG file. If you don't want to write comments or
- * time information, you can pass NULL for info. If you already wrote these
- * in png_write_info(), do not write them again here. If you have long
- * comments, I suggest writing them here, and compressing them.
- */
-void PNGAPI
-png_write_end(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_write_end");
-
- if (png_ptr == NULL)
- return;
-
- if (!(png_ptr->mode & PNG_HAVE_IDAT))
- png_error(png_ptr, "No IDATs written into file");
-
- /* See if user wants us to write information chunks */
- if (info_ptr != NULL)
- {
-#ifdef PNG_WRITE_TEXT_SUPPORTED
- int i; /* local index variable */
-#endif
-#ifdef PNG_WRITE_tIME_SUPPORTED
- /* Check to see if user has supplied a time chunk */
- if ((info_ptr->valid & PNG_INFO_tIME) &&
- !(png_ptr->mode & PNG_WROTE_tIME))
- png_write_tIME(png_ptr, &(info_ptr->mod_time));
-
-#endif
-#ifdef PNG_WRITE_TEXT_SUPPORTED
- /* Loop through comment chunks */
- for (i = 0; i < info_ptr->num_text; i++)
- {
- png_debug2(2, "Writing trailer text chunk %d, type %d", i,
- info_ptr->text[i].compression);
- /* An internationalized chunk? */
- if (info_ptr->text[i].compression > 0)
- {
-#ifdef PNG_WRITE_iTXt_SUPPORTED
- /* Write international chunk */
- png_write_iTXt(png_ptr,
- info_ptr->text[i].compression,
- info_ptr->text[i].key,
- info_ptr->text[i].lang,
- info_ptr->text[i].lang_key,
- info_ptr->text[i].text);
-#else
- png_warning(png_ptr, "Unable to write international text");
-#endif
- /* Mark this chunk as written */
- info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
- }
-
- else if (info_ptr->text[i].compression >= PNG_TEXT_COMPRESSION_zTXt)
- {
-#ifdef PNG_WRITE_zTXt_SUPPORTED
- /* Write compressed chunk */
- png_write_zTXt(png_ptr, info_ptr->text[i].key,
- info_ptr->text[i].text, 0,
- info_ptr->text[i].compression);
-#else
- png_warning(png_ptr, "Unable to write compressed text");
-#endif
- /* Mark this chunk as written */
- info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR;
- }
-
- else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE)
- {
-#ifdef PNG_WRITE_tEXt_SUPPORTED
- /* Write uncompressed chunk */
- png_write_tEXt(png_ptr, info_ptr->text[i].key,
- info_ptr->text[i].text, 0);
-#else
- png_warning(png_ptr, "Unable to write uncompressed text");
-#endif
-
- /* Mark this chunk as written */
- info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
- }
- }
-#endif
-#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
- if (info_ptr->unknown_chunks_num)
- {
- png_unknown_chunk *up;
-
- png_debug(5, "writing extra chunks");
-
- for (up = info_ptr->unknown_chunks;
- up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num;
- up++)
- {
- int keep = png_handle_as_unknown(png_ptr, up->name);
- if (keep != PNG_HANDLE_CHUNK_NEVER &&
- up->location && (up->location & PNG_AFTER_IDAT) &&
- ((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
- (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
- {
- png_write_chunk(png_ptr, up->name, up->data, up->size);
- }
- }
- }
-#endif
- }
-
- png_ptr->mode |= PNG_AFTER_IDAT;
-
- /* Write end of PNG file */
- png_write_IEND(png_ptr);
- /* This flush, added in libpng-1.0.8, removed from libpng-1.0.9beta03,
- * and restored again in libpng-1.2.30, may cause some applications that
- * do not set png_ptr->output_flush_fn to crash. If your application
- * experiences a problem, please try building libpng with
- * PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED defined, and report the event to
- * png-mng-implement at lists.sf.net .
- */
-#ifdef PNG_WRITE_FLUSH_SUPPORTED
-# ifdef PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED
- png_flush(png_ptr);
-# endif
-#endif
-}
-
-#ifdef PNG_CONVERT_tIME_SUPPORTED
-/* "tm" structure is not supported on WindowsCE */
-void PNGAPI
-png_convert_from_struct_tm(png_timep ptime, PNG_CONST struct tm FAR * ttime)
-{
- png_debug(1, "in png_convert_from_struct_tm");
-
- ptime->year = (png_uint_16)(1900 + ttime->tm_year);
- ptime->month = (png_byte)(ttime->tm_mon + 1);
- ptime->day = (png_byte)ttime->tm_mday;
- ptime->hour = (png_byte)ttime->tm_hour;
- ptime->minute = (png_byte)ttime->tm_min;
- ptime->second = (png_byte)ttime->tm_sec;
-}
-
-void PNGAPI
-png_convert_from_time_t(png_timep ptime, time_t ttime)
-{
- struct tm *tbuf;
-
- png_debug(1, "in png_convert_from_time_t");
-
- tbuf = gmtime(&ttime);
- png_convert_from_struct_tm(ptime, tbuf);
-}
-#endif
-
-/* Initialize png_ptr structure, and allocate any memory needed */
-PNG_FUNCTION(png_structp,PNGAPI
-png_create_write_struct,(png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn),PNG_ALLOCATED)
-{
-#ifdef PNG_USER_MEM_SUPPORTED
- return (png_create_write_struct_2(user_png_ver, error_ptr, error_fn,
- warn_fn, NULL, NULL, NULL));
-}
-
-/* Alternate initialize png_ptr structure, and allocate any memory needed */
-static void png_reset_filter_heuristics(png_structp png_ptr); /* forward decl */
-
-PNG_FUNCTION(png_structp,PNGAPI
-png_create_write_struct_2,(png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
- png_malloc_ptr malloc_fn, png_free_ptr free_fn),PNG_ALLOCATED)
-{
-#endif /* PNG_USER_MEM_SUPPORTED */
- volatile int png_cleanup_needed = 0;
-#ifdef PNG_SETJMP_SUPPORTED
- volatile
-#endif
- png_structp png_ptr;
-#ifdef PNG_SETJMP_SUPPORTED
-#ifdef USE_FAR_KEYWORD
- jmp_buf png_jmpbuf;
-#endif
-#endif
- int i;
-
- png_debug(1, "in png_create_write_struct");
-
-#ifdef PNG_USER_MEM_SUPPORTED
- png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
- (png_malloc_ptr)malloc_fn, (png_voidp)mem_ptr);
-#else
- png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
-#endif /* PNG_USER_MEM_SUPPORTED */
- if (png_ptr == NULL)
- return (NULL);
-
- /* Added at libpng-1.2.6 */
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
- png_ptr->user_width_max = PNG_USER_WIDTH_MAX;
- png_ptr->user_height_max = PNG_USER_HEIGHT_MAX;
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
-/* Applications that neglect to set up their own setjmp() and then
- encounter a png_error() will longjmp here. Since the jmpbuf is
- then meaningless we abort instead of returning. */
-#ifdef USE_FAR_KEYWORD
- if (setjmp(png_jmpbuf))
-#else
- if (setjmp(png_jmpbuf(png_ptr))) /* sets longjmp to match setjmp */
-#endif
-#ifdef USE_FAR_KEYWORD
- png_memcpy(png_jmpbuf(png_ptr), png_jmpbuf, png_sizeof(jmp_buf));
-#endif
- PNG_ABORT();
-#endif
-
-#ifdef PNG_USER_MEM_SUPPORTED
- png_set_mem_fn(png_ptr, mem_ptr, malloc_fn, free_fn);
-#endif /* PNG_USER_MEM_SUPPORTED */
- png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
-
- if (user_png_ver)
- {
- i = 0;
- do
- {
- if (user_png_ver[i] != png_libpng_ver[i])
- png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
- } while (png_libpng_ver[i++]);
- }
-
- if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
- {
- /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so
- * we must recompile any applications that use any older library version.
- * For versions after libpng 1.0, we will be compatible, so we need
- * only check the first digit.
- */
- if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||
- (user_png_ver[0] == '1' && user_png_ver[2] != png_libpng_ver[2]) ||
- (user_png_ver[0] == '0' && user_png_ver[2] < '9'))
- {
-#ifdef PNG_CONSOLE_IO_SUPPORTED
- char msg[80];
-
- if (user_png_ver)
- {
- png_snprintf2(msg, 80,
- "Application built with libpng-%.20s"
- " but running with %.20s",
- user_png_ver,
- png_libpng_ver);
- png_warning(png_ptr, msg);
- }
-#else
- png_warning(png_ptr,
- "Incompatible libpng version in application and library");
-#endif
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- png_ptr->flags = 0;
-#endif
- png_cleanup_needed = 1;
- }
- }
-
- /* Initialize zbuf - compression buffer */
- png_ptr->zbuf_size = PNG_ZBUF_SIZE;
-
- if (!png_cleanup_needed)
- {
- png_ptr->zbuf = (png_bytep)png_malloc_warn(png_ptr,
- png_ptr->zbuf_size);
- if (png_ptr->zbuf == NULL)
- png_cleanup_needed = 1;
- }
-
- if (png_cleanup_needed)
- {
- /* Clean up PNG structure and deallocate any memory. */
- png_free(png_ptr, png_ptr->zbuf);
- png_ptr->zbuf = NULL;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)png_ptr,
- (png_free_ptr)free_fn, (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)png_ptr);
-#endif
- return (NULL);
- }
-
- png_set_write_fn(png_ptr, NULL, NULL, NULL);
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- png_reset_filter_heuristics(png_ptr);
-#endif
-
- return (png_ptr);
-}
-
-
-/* Write a few rows of image data. If the image is interlaced,
- * either you will have to write the 7 sub images, or, if you
- * have called png_set_interlace_handling(), you will have to
- * "write" the image seven times.
- */
-void PNGAPI
-png_write_rows(png_structp png_ptr, png_bytepp row,
- png_uint_32 num_rows)
-{
- png_uint_32 i; /* row counter */
- png_bytepp rp; /* row pointer */
-
- png_debug(1, "in png_write_rows");
-
- if (png_ptr == NULL)
- return;
-
- /* Loop through the rows */
- for (i = 0, rp = row; i < num_rows; i++, rp++)
- {
- png_write_row(png_ptr, *rp);
- }
-}
-
-/* Write the image. You only need to call this function once, even
- * if you are writing an interlaced image.
- */
-void PNGAPI
-png_write_image(png_structp png_ptr, png_bytepp image)
-{
- png_uint_32 i; /* row index */
- int pass, num_pass; /* pass variables */
- png_bytepp rp; /* points to current row */
-
- if (png_ptr == NULL)
- return;
-
- png_debug(1, "in png_write_image");
-
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- /* Initialize interlace handling. If image is not interlaced,
- * this will set pass to 1
- */
- num_pass = png_set_interlace_handling(png_ptr);
-#else
- num_pass = 1;
-#endif
- /* Loop through passes */
- for (pass = 0; pass < num_pass; pass++)
- {
- /* Loop through image */
- for (i = 0, rp = image; i < png_ptr->height; i++, rp++)
- {
- png_write_row(png_ptr, *rp);
- }
- }
-}
-
-/* Called by user to write a row of image data */
-void PNGAPI
-png_write_row(png_structp png_ptr, png_const_bytep row)
-{
- if (png_ptr == NULL)
- return;
-
- png_debug2(1, "in png_write_row (row %u, pass %d)",
- png_ptr->row_number, png_ptr->pass);
-
- /* Initialize transformations and other stuff if first time */
- if (png_ptr->row_number == 0 && png_ptr->pass == 0)
- {
- /* Make sure we wrote the header info */
- if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
- png_error(png_ptr,
- "png_write_info was never called before png_write_row");
-
- /* Check for transforms that have been set but were defined out */
-#if !defined(PNG_WRITE_INVERT_SUPPORTED) && defined(PNG_READ_INVERT_SUPPORTED)
- if (png_ptr->transformations & PNG_INVERT_MONO)
- png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined");
-#endif
-
-#if !defined(PNG_WRITE_FILLER_SUPPORTED) && defined(PNG_READ_FILLER_SUPPORTED)
- if (png_ptr->transformations & PNG_FILLER)
- png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined");
-#endif
-#if !defined(PNG_WRITE_PACKSWAP_SUPPORTED) && \
- defined(PNG_READ_PACKSWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_PACKSWAP)
- png_warning(png_ptr,
- "PNG_WRITE_PACKSWAP_SUPPORTED is not defined");
-#endif
-
-#if !defined(PNG_WRITE_PACK_SUPPORTED) && defined(PNG_READ_PACK_SUPPORTED)
- if (png_ptr->transformations & PNG_PACK)
- png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined");
-#endif
-
-#if !defined(PNG_WRITE_SHIFT_SUPPORTED) && defined(PNG_READ_SHIFT_SUPPORTED)
- if (png_ptr->transformations & PNG_SHIFT)
- png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined");
-#endif
-
-#if !defined(PNG_WRITE_BGR_SUPPORTED) && defined(PNG_READ_BGR_SUPPORTED)
- if (png_ptr->transformations & PNG_BGR)
- png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined");
-#endif
-
-#if !defined(PNG_WRITE_SWAP_SUPPORTED) && defined(PNG_READ_SWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_SWAP_BYTES)
- png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined");
-#endif
-
- png_write_start_row(png_ptr);
- }
-
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- /* If interlaced and not interested in row, return */
- if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
- {
- switch (png_ptr->pass)
- {
- case 0:
- if (png_ptr->row_number & 0x07)
- {
- png_write_finish_row(png_ptr);
- return;
- }
- break;
-
- case 1:
- if ((png_ptr->row_number & 0x07) || png_ptr->width < 5)
- {
- png_write_finish_row(png_ptr);
- return;
- }
- break;
-
- case 2:
- if ((png_ptr->row_number & 0x07) != 4)
- {
- png_write_finish_row(png_ptr);
- return;
- }
- break;
-
- case 3:
- if ((png_ptr->row_number & 0x03) || png_ptr->width < 3)
- {
- png_write_finish_row(png_ptr);
- return;
- }
- break;
-
- case 4:
- if ((png_ptr->row_number & 0x03) != 2)
- {
- png_write_finish_row(png_ptr);
- return;
- }
- break;
-
- case 5:
- if ((png_ptr->row_number & 0x01) || png_ptr->width < 2)
- {
- png_write_finish_row(png_ptr);
- return;
- }
- break;
-
- case 6:
- if (!(png_ptr->row_number & 0x01))
- {
- png_write_finish_row(png_ptr);
- return;
- }
- break;
-
- default: /* error: ignore it */
- break;
- }
- }
-#endif
-
- /* Set up row info for transformations */
- png_ptr->row_info.color_type = png_ptr->color_type;
- png_ptr->row_info.width = png_ptr->usr_width;
- png_ptr->row_info.channels = png_ptr->usr_channels;
- png_ptr->row_info.bit_depth = png_ptr->usr_bit_depth;
- png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth *
- png_ptr->row_info.channels);
-
- png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
- png_ptr->row_info.width);
-
- png_debug1(3, "row_info->color_type = %d", png_ptr->row_info.color_type);
- png_debug1(3, "row_info->width = %u", png_ptr->row_info.width);
- png_debug1(3, "row_info->channels = %d", png_ptr->row_info.channels);
- png_debug1(3, "row_info->bit_depth = %d", png_ptr->row_info.bit_depth);
- png_debug1(3, "row_info->pixel_depth = %d", png_ptr->row_info.pixel_depth);
- png_debug1(3, "row_info->rowbytes = %lu",
- (unsigned long)png_ptr->row_info.rowbytes);
-
- /* Copy user's row into buffer, leaving room for filter byte. */
- png_memcpy(png_ptr->row_buf + 1, row, png_ptr->row_info.rowbytes);
-
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- /* Handle interlacing */
- if (png_ptr->interlaced && png_ptr->pass < 6 &&
- (png_ptr->transformations & PNG_INTERLACE))
- {
- png_do_write_interlace(&(png_ptr->row_info),
- png_ptr->row_buf + 1, png_ptr->pass);
- /* This should always get caught above, but still ... */
- if (!(png_ptr->row_info.width))
- {
- png_write_finish_row(png_ptr);
- return;
- }
- }
-#endif
-
- /* Handle other transformations */
- if (png_ptr->transformations)
- png_do_write_transformations(png_ptr);
-
-#ifdef PNG_MNG_FEATURES_SUPPORTED
- /* Write filter_method 64 (intrapixel differencing) only if
- * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and
- * 2. Libpng did not write a PNG signature (this filter_method is only
- * used in PNG datastreams that are embedded in MNG datastreams) and
- * 3. The application called png_permit_mng_features with a mask that
- * included PNG_FLAG_MNG_FILTER_64 and
- * 4. The filter_method is 64 and
- * 5. The color_type is RGB or RGBA
- */
- if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
- (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
- {
- /* Intrapixel differencing */
- png_do_write_intrapixel(&(png_ptr->row_info), png_ptr->row_buf + 1);
- }
-#endif
-
- /* Find a filter if necessary, filter the row and write it out. */
- png_write_find_filter(png_ptr, &(png_ptr->row_info));
-
- if (png_ptr->write_row_fn != NULL)
- (*(png_ptr->write_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);
-}
-
-#ifdef PNG_WRITE_FLUSH_SUPPORTED
-/* Set the automatic flush interval or 0 to turn flushing off */
-void PNGAPI
-png_set_flush(png_structp png_ptr, int nrows)
-{
- png_debug(1, "in png_set_flush");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->flush_dist = (nrows < 0 ? 0 : nrows);
-}
-
-/* Flush the current output buffers now */
-void PNGAPI
-png_write_flush(png_structp png_ptr)
-{
- int wrote_IDAT;
-
- png_debug(1, "in png_write_flush");
-
- if (png_ptr == NULL)
- return;
-
- /* We have already written out all of the data */
- if (png_ptr->row_number >= png_ptr->num_rows)
- return;
-
- do
- {
- int ret;
-
- /* Compress the data */
- ret = deflate(&png_ptr->zstream, Z_SYNC_FLUSH);
- wrote_IDAT = 0;
-
- /* Check for compression errors */
- if (ret != Z_OK)
- {
- if (png_ptr->zstream.msg != NULL)
- png_error(png_ptr, png_ptr->zstream.msg);
-
- else
- png_error(png_ptr, "zlib error");
- }
-
- if (!(png_ptr->zstream.avail_out))
- {
- /* Write the IDAT and reset the zlib output buffer */
- png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
- wrote_IDAT = 1;
- }
- } while (wrote_IDAT == 1);
-
- /* If there is any data left to be output, write it into a new IDAT */
- if (png_ptr->zbuf_size != png_ptr->zstream.avail_out)
- {
- /* Write the IDAT and reset the zlib output buffer */
- png_write_IDAT(png_ptr, png_ptr->zbuf,
- png_ptr->zbuf_size - png_ptr->zstream.avail_out);
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
- }
- png_ptr->flush_rows = 0;
- png_flush(png_ptr);
-}
-#endif /* PNG_WRITE_FLUSH_SUPPORTED */
-
-/* Free all memory used by the write */
-void PNGAPI
-png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)
-{
- png_structp png_ptr = NULL;
- png_infop info_ptr = NULL;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_free_ptr free_fn = NULL;
- png_voidp mem_ptr = NULL;
-#endif
-
- png_debug(1, "in png_destroy_write_struct");
-
- if (png_ptr_ptr != NULL)
- {
- png_ptr = *png_ptr_ptr;
-#ifdef PNG_USER_MEM_SUPPORTED
- free_fn = png_ptr->free_fn;
- mem_ptr = png_ptr->mem_ptr;
-#endif
- }
-
-#ifdef PNG_USER_MEM_SUPPORTED
- if (png_ptr != NULL)
- {
- free_fn = png_ptr->free_fn;
- mem_ptr = png_ptr->mem_ptr;
- }
-#endif
-
- if (info_ptr_ptr != NULL)
- info_ptr = *info_ptr_ptr;
-
- if (info_ptr != NULL)
- {
- if (png_ptr != NULL)
- {
- png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1);
-
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
- if (png_ptr->num_chunk_list)
- {
- png_free(png_ptr, png_ptr->chunk_list);
- png_ptr->num_chunk_list = 0;
- }
-#endif
- }
-
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)info_ptr, (png_free_ptr)free_fn,
- (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)info_ptr);
-#endif
- *info_ptr_ptr = NULL;
- }
-
- if (png_ptr != NULL)
- {
- png_write_destroy(png_ptr);
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn,
- (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)png_ptr);
-#endif
- *png_ptr_ptr = NULL;
- }
-}
-
-
-/* Free any memory used in png_ptr struct (old method) */
-void /* PRIVATE */
-png_write_destroy(png_structp png_ptr)
-{
-#ifdef PNG_SETJMP_SUPPORTED
- jmp_buf tmp_jmp; /* Save jump buffer */
-#endif
- png_error_ptr error_fn;
- png_error_ptr warning_fn;
- png_voidp error_ptr;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_free_ptr free_fn;
-#endif
-
- png_debug(1, "in png_write_destroy");
-
- /* Free any memory zlib uses */
- deflateEnd(&png_ptr->zstream);
-
- /* Free our memory. png_free checks NULL for us. */
- png_free(png_ptr, png_ptr->zbuf);
- png_free(png_ptr, png_ptr->row_buf);
-#ifdef PNG_WRITE_FILTER_SUPPORTED
- png_free(png_ptr, png_ptr->prev_row);
- png_free(png_ptr, png_ptr->sub_row);
- png_free(png_ptr, png_ptr->up_row);
- png_free(png_ptr, png_ptr->avg_row);
- png_free(png_ptr, png_ptr->paeth_row);
-#endif
-
-#ifdef PNG_TIME_RFC1123_SUPPORTED
- png_free(png_ptr, png_ptr->time_buffer);
-#endif
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- /* Use this to save a little code space, it doesn't free the filter_costs */
- png_reset_filter_heuristics(png_ptr);
- png_free(png_ptr, png_ptr->filter_costs);
- png_free(png_ptr, png_ptr->inv_filter_costs);
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
- /* Reset structure */
- png_memcpy(tmp_jmp, png_ptr->png_jmpbuf, png_sizeof(jmp_buf));
-#endif
-
- error_fn = png_ptr->error_fn;
- warning_fn = png_ptr->warning_fn;
- error_ptr = png_ptr->error_ptr;
-#ifdef PNG_USER_MEM_SUPPORTED
- free_fn = png_ptr->free_fn;
-#endif
-
- png_memset(png_ptr, 0, png_sizeof(png_struct));
-
- png_ptr->error_fn = error_fn;
- png_ptr->warning_fn = warning_fn;
- png_ptr->error_ptr = error_ptr;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_ptr->free_fn = free_fn;
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
- png_memcpy(png_ptr->png_jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
-#endif
-}
-
-/* Allow the application to select one or more row filters to use. */
-void PNGAPI
-png_set_filter(png_structp png_ptr, int method, int filters)
-{
- png_debug(1, "in png_set_filter");
-
- if (png_ptr == NULL)
- return;
-
-#ifdef PNG_MNG_FEATURES_SUPPORTED
- if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
- (method == PNG_INTRAPIXEL_DIFFERENCING))
- method = PNG_FILTER_TYPE_BASE;
-
-#endif
- if (method == PNG_FILTER_TYPE_BASE)
- {
- switch (filters & (PNG_ALL_FILTERS | 0x07))
- {
-#ifdef PNG_WRITE_FILTER_SUPPORTED
- case 5:
- case 6:
- case 7: png_warning(png_ptr, "Unknown row filter for method 0");
-#endif /* PNG_WRITE_FILTER_SUPPORTED */
- case PNG_FILTER_VALUE_NONE:
- png_ptr->do_filter = PNG_FILTER_NONE; break;
-
-#ifdef PNG_WRITE_FILTER_SUPPORTED
- case PNG_FILTER_VALUE_SUB:
- png_ptr->do_filter = PNG_FILTER_SUB; break;
-
- case PNG_FILTER_VALUE_UP:
- png_ptr->do_filter = PNG_FILTER_UP; break;
-
- case PNG_FILTER_VALUE_AVG:
- png_ptr->do_filter = PNG_FILTER_AVG; break;
-
- case PNG_FILTER_VALUE_PAETH:
- png_ptr->do_filter = PNG_FILTER_PAETH; break;
-
- default:
- png_ptr->do_filter = (png_byte)filters; break;
-#else
- default:
- png_warning(png_ptr, "Unknown row filter for method 0");
-#endif /* PNG_WRITE_FILTER_SUPPORTED */
- }
-
- /* If we have allocated the row_buf, this means we have already started
- * with the image and we should have allocated all of the filter buffers
- * that have been selected. If prev_row isn't already allocated, then
- * it is too late to start using the filters that need it, since we
- * will be missing the data in the previous row. If an application
- * wants to start and stop using particular filters during compression,
- * it should start out with all of the filters, and then add and
- * remove them after the start of compression.
- */
- if (png_ptr->row_buf != NULL)
- {
-#ifdef PNG_WRITE_FILTER_SUPPORTED
- if ((png_ptr->do_filter & PNG_FILTER_SUB) && png_ptr->sub_row == NULL)
- {
- png_ptr->sub_row = (png_bytep)png_malloc(png_ptr,
- (png_ptr->rowbytes + 1));
- png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB;
- }
-
- if ((png_ptr->do_filter & PNG_FILTER_UP) && png_ptr->up_row == NULL)
- {
- if (png_ptr->prev_row == NULL)
- {
- png_warning(png_ptr, "Can't add Up filter after starting");
- png_ptr->do_filter = (png_byte)(png_ptr->do_filter &
- ~PNG_FILTER_UP);
- }
-
- else
- {
- png_ptr->up_row = (png_bytep)png_malloc(png_ptr,
- (png_ptr->rowbytes + 1));
- png_ptr->up_row[0] = PNG_FILTER_VALUE_UP;
- }
- }
-
- if ((png_ptr->do_filter & PNG_FILTER_AVG) && png_ptr->avg_row == NULL)
- {
- if (png_ptr->prev_row == NULL)
- {
- png_warning(png_ptr, "Can't add Average filter after starting");
- png_ptr->do_filter = (png_byte)(png_ptr->do_filter &
- ~PNG_FILTER_AVG);
- }
-
- else
- {
- png_ptr->avg_row = (png_bytep)png_malloc(png_ptr,
- (png_ptr->rowbytes + 1));
- png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG;
- }
- }
-
- if ((png_ptr->do_filter & PNG_FILTER_PAETH) &&
- png_ptr->paeth_row == NULL)
- {
- if (png_ptr->prev_row == NULL)
- {
- png_warning(png_ptr, "Can't add Paeth filter after starting");
- png_ptr->do_filter &= (png_byte)(~PNG_FILTER_PAETH);
- }
-
- else
- {
- png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr,
- (png_ptr->rowbytes + 1));
- png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH;
- }
- }
-
- if (png_ptr->do_filter == PNG_NO_FILTERS)
-#endif /* PNG_WRITE_FILTER_SUPPORTED */
- png_ptr->do_filter = PNG_FILTER_NONE;
- }
- }
- else
- png_error(png_ptr, "Unknown custom filter method");
-}
-
-/* This allows us to influence the way in which libpng chooses the "best"
- * filter for the current scanline. While the "minimum-sum-of-absolute-
- * differences metric is relatively fast and effective, there is some
- * question as to whether it can be improved upon by trying to keep the
- * filtered data going to zlib more consistent, hopefully resulting in
- * better compression.
- */
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* GRR 970116 */
-/* Conveneince reset API. */
-static void
-png_reset_filter_heuristics(png_structp png_ptr)
-{
- /* Clear out any old values in the 'weights' - this must be done because if
- * the app calls set_filter_heuristics multiple times with different
- * 'num_weights' values we would otherwise potentially have wrong sized
- * arrays.
- */
- png_ptr->num_prev_filters = 0;
- png_ptr->heuristic_method = PNG_FILTER_HEURISTIC_UNWEIGHTED;
- if (png_ptr->prev_filters != NULL)
- {
- png_bytep old = png_ptr->prev_filters;
- png_ptr->prev_filters = NULL;
- png_free(png_ptr, old);
- }
- if (png_ptr->filter_weights != NULL)
- {
- png_uint_16p old = png_ptr->filter_weights;
- png_ptr->filter_weights = NULL;
- png_free(png_ptr, old);
- }
-
- if (png_ptr->inv_filter_weights != NULL)
- {
- png_uint_16p old = png_ptr->inv_filter_weights;
- png_ptr->inv_filter_weights = NULL;
- png_free(png_ptr, old);
- }
-
- /* Leave the filter_costs - this array is fixed size. */
-}
-
-static int
-png_init_filter_heuristics(png_structp png_ptr, int heuristic_method,
- int num_weights)
-{
- if (png_ptr == NULL)
- return 0;
-
- /* Clear out the arrays */
- png_reset_filter_heuristics(png_ptr);
-
- /* Check arguments; the 'reset' function makes the correct settings for the
- * unweighted case, but we must handle the weight case by initializing the
- * arrays for the caller.
- */
- if (heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int i;
-
- if (num_weights > 0)
- {
- png_ptr->prev_filters = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)(png_sizeof(png_byte) * num_weights));
-
- /* To make sure that the weighting starts out fairly */
- for (i = 0; i < num_weights; i++)
- {
- png_ptr->prev_filters[i] = 255;
- }
-
- png_ptr->filter_weights = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(png_sizeof(png_uint_16) * num_weights));
-
- png_ptr->inv_filter_weights = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(png_sizeof(png_uint_16) * num_weights));
-
- for (i = 0; i < num_weights; i++)
- {
- png_ptr->inv_filter_weights[i] =
- png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR;
- }
-
- /* Safe to set this now */
- png_ptr->num_prev_filters = (png_byte)num_weights;
- }
-
- /* If, in the future, there are other filter methods, this would
- * need to be based on png_ptr->filter.
- */
- if (png_ptr->filter_costs == NULL)
- {
- png_ptr->filter_costs = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(png_sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST));
-
- png_ptr->inv_filter_costs = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(png_sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST));
- }
-
- for (i = 0; i < PNG_FILTER_VALUE_LAST; i++)
- {
- png_ptr->inv_filter_costs[i] =
- png_ptr->filter_costs[i] = PNG_COST_FACTOR;
- }
-
- /* All the arrays are inited, safe to set this: */
- png_ptr->heuristic_method = PNG_FILTER_HEURISTIC_WEIGHTED;
-
- /* Return the 'ok' code. */
- return 1;
- }
- else if (heuristic_method == PNG_FILTER_HEURISTIC_DEFAULT ||
- heuristic_method == PNG_FILTER_HEURISTIC_UNWEIGHTED)
- {
- return 1;
- }
- else
- {
- png_warning(png_ptr, "Unknown filter heuristic method");
- return 0;
- }
-}
-
-/* Provide floating and fixed point APIs */
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-void PNGAPI
-png_set_filter_heuristics(png_structp png_ptr, int heuristic_method,
- int num_weights, png_const_doublep filter_weights,
- png_const_doublep filter_costs)
-{
- png_debug(1, "in png_set_filter_heuristics");
-
- /* The internal API allocates all the arrays and ensures that the elements of
- * those arrays are set to the default value.
- */
- if (!png_init_filter_heuristics(png_ptr, heuristic_method, num_weights))
- return;
-
- /* If using the weighted method copy in the weights. */
- if (heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int i;
- for (i = 0; i < num_weights; i++)
- {
- if (filter_weights[i] <= 0.0)
- {
- png_ptr->inv_filter_weights[i] =
- png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR;
- }
-
- else
- {
- png_ptr->inv_filter_weights[i] =
- (png_uint_16)(PNG_WEIGHT_FACTOR*filter_weights[i]+.5);
-
- png_ptr->filter_weights[i] =
- (png_uint_16)(PNG_WEIGHT_FACTOR/filter_weights[i]+.5);
- }
- }
-
- /* Here is where we set the relative costs of the different filters. We
- * should take the desired compression level into account when setting
- * the costs, so that Paeth, for instance, has a high relative cost at low
- * compression levels, while it has a lower relative cost at higher
- * compression settings. The filter types are in order of increasing
- * relative cost, so it would be possible to do this with an algorithm.
- */
- for (i = 0; i < PNG_FILTER_VALUE_LAST; i++) if (filter_costs[i] >= 1.0)
- {
- png_ptr->inv_filter_costs[i] =
- (png_uint_16)(PNG_COST_FACTOR / filter_costs[i] + .5);
-
- png_ptr->filter_costs[i] =
- (png_uint_16)(PNG_COST_FACTOR * filter_costs[i] + .5);
- }
- }
-}
-#endif /* FLOATING_POINT */
-
-#ifdef PNG_FIXED_POINT_SUPPORTED
-void PNGAPI
-png_set_filter_heuristics_fixed(png_structp png_ptr, int heuristic_method,
- int num_weights, png_const_fixed_point_p filter_weights,
- png_const_fixed_point_p filter_costs)
-{
- png_debug(1, "in png_set_filter_heuristics_fixed");
-
- /* The internal API allocates all the arrays and ensures that the elements of
- * those arrays are set to the default value.
- */
- if (!png_init_filter_heuristics(png_ptr, heuristic_method, num_weights))
- return;
-
- /* If using the weighted method copy in the weights. */
- if (heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int i;
- for (i = 0; i < num_weights; i++)
- {
- if (filter_weights[i] <= 0)
- {
- png_ptr->inv_filter_weights[i] =
- png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR;
- }
-
- else
- {
- png_ptr->inv_filter_weights[i] = (png_uint_16)
- ((PNG_WEIGHT_FACTOR*filter_weights[i]+PNG_FP_HALF)/PNG_FP_1);
-
- png_ptr->filter_weights[i] = (png_uint_16)((PNG_WEIGHT_FACTOR*
- PNG_FP_1+(filter_weights[i]/2))/filter_weights[i]);
- }
- }
-
- /* Here is where we set the relative costs of the different filters. We
- * should take the desired compression level into account when setting
- * the costs, so that Paeth, for instance, has a high relative cost at low
- * compression levels, while it has a lower relative cost at higher
- * compression settings. The filter types are in order of increasing
- * relative cost, so it would be possible to do this with an algorithm.
- */
- for (i = 0; i < PNG_FILTER_VALUE_LAST; i++)
- if (filter_costs[i] >= PNG_FP_1)
- {
- png_uint_32 tmp;
-
- /* Use a 32 bit unsigned temporary here because otherwise the
- * intermediate value will be a 32 bit *signed* integer (ANSI rules)
- * and this will get the wrong answer on division.
- */
- tmp = PNG_COST_FACTOR*PNG_FP_1 + (filter_costs[i]/2);
- tmp /= filter_costs[i];
-
- png_ptr->inv_filter_costs[i] = (png_uint_16)tmp;
-
- tmp = PNG_COST_FACTOR * filter_costs[i] + PNG_FP_HALF;
- tmp /= PNG_FP_1;
-
- png_ptr->filter_costs[i] = (png_uint_16)tmp;
- }
- }
-}
-#endif /* FIXED_POINT */
-#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */
-
-void PNGAPI
-png_set_compression_level(png_structp png_ptr, int level)
-{
- png_debug(1, "in png_set_compression_level");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_LEVEL;
- png_ptr->zlib_level = level;
-}
-
-void PNGAPI
-png_set_compression_mem_level(png_structp png_ptr, int mem_level)
-{
- png_debug(1, "in png_set_compression_mem_level");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL;
- png_ptr->zlib_mem_level = mem_level;
-}
-
-void PNGAPI
-png_set_compression_strategy(png_structp png_ptr, int strategy)
-{
- png_debug(1, "in png_set_compression_strategy");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_STRATEGY;
- png_ptr->zlib_strategy = strategy;
-}
-
-void PNGAPI
-png_set_compression_window_bits(png_structp png_ptr, int window_bits)
-{
- if (png_ptr == NULL)
- return;
-
- if (window_bits > 15)
- png_warning(png_ptr, "Only compression windows <= 32k supported by PNG");
-
- else if (window_bits < 8)
- png_warning(png_ptr, "Only compression windows >= 256 supported by PNG");
-
-#ifndef WBITS_8_OK
- /* Avoid libpng bug with 256-byte windows */
- if (window_bits == 8)
- {
- png_warning(png_ptr, "Compression window is being reset to 512");
- window_bits = 9;
- }
-
-#endif
- png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS;
- png_ptr->zlib_window_bits = window_bits;
-}
-
-void PNGAPI
-png_set_compression_method(png_structp png_ptr, int method)
-{
- png_debug(1, "in png_set_compression_method");
-
- if (png_ptr == NULL)
- return;
-
- if (method != 8)
- png_warning(png_ptr, "Only compression method 8 is supported by PNG");
-
- png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_METHOD;
- png_ptr->zlib_method = method;
-}
-
-void PNGAPI
-png_set_write_status_fn(png_structp png_ptr, png_write_status_ptr write_row_fn)
-{
- if (png_ptr == NULL)
- return;
-
- png_ptr->write_row_fn = write_row_fn;
-}
-
-#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
-void PNGAPI
-png_set_write_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
- write_user_transform_fn)
-{
- png_debug(1, "in png_set_write_user_transform_fn");
-
- if (png_ptr == NULL)
- return;
-
- png_ptr->transformations |= PNG_USER_TRANSFORM;
- png_ptr->write_user_transform_fn = write_user_transform_fn;
-}
-#endif
-
-
-#ifdef PNG_INFO_IMAGE_SUPPORTED
-void PNGAPI
-png_write_png(png_structp png_ptr, png_infop info_ptr,
- int transforms, voidp params)
-{
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- /* Write the file header information. */
- png_write_info(png_ptr, info_ptr);
-
- /* ------ these transformations don't touch the info structure ------- */
-
-#ifdef PNG_WRITE_INVERT_SUPPORTED
- /* Invert monochrome pixels */
- if (transforms & PNG_TRANSFORM_INVERT_MONO)
- png_set_invert_mono(png_ptr);
-#endif
-
-#ifdef PNG_WRITE_SHIFT_SUPPORTED
- /* Shift the pixels up to a legal bit depth and fill in
- * as appropriate to correctly scale the image.
- */
- if ((transforms & PNG_TRANSFORM_SHIFT)
- && (info_ptr->valid & PNG_INFO_sBIT))
- png_set_shift(png_ptr, &info_ptr->sig_bit);
-#endif
-
-#ifdef PNG_WRITE_PACK_SUPPORTED
- /* Pack pixels into bytes */
- if (transforms & PNG_TRANSFORM_PACKING)
- png_set_packing(png_ptr);
-#endif
-
-#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED
- /* Swap location of alpha bytes from ARGB to RGBA */
- if (transforms & PNG_TRANSFORM_SWAP_ALPHA)
- png_set_swap_alpha(png_ptr);
-#endif
-
-#ifdef PNG_WRITE_FILLER_SUPPORTED
- /* Pack XRGB/RGBX/ARGB/RGBA into * RGB (4 channels -> 3 channels) */
- if (transforms & PNG_TRANSFORM_STRIP_FILLER_AFTER)
- png_set_filler(png_ptr, 0, PNG_FILLER_AFTER);
-
- else if (transforms & PNG_TRANSFORM_STRIP_FILLER_BEFORE)
- png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
-#endif
-
-#ifdef PNG_WRITE_BGR_SUPPORTED
- /* Flip BGR pixels to RGB */
- if (transforms & PNG_TRANSFORM_BGR)
- png_set_bgr(png_ptr);
-#endif
-
-#ifdef PNG_WRITE_SWAP_SUPPORTED
- /* Swap bytes of 16-bit files to most significant byte first */
- if (transforms & PNG_TRANSFORM_SWAP_ENDIAN)
- png_set_swap(png_ptr);
-#endif
-
-#ifdef PNG_WRITE_PACKSWAP_SUPPORTED
- /* Swap bits of 1, 2, 4 bit packed pixel formats */
- if (transforms & PNG_TRANSFORM_PACKSWAP)
- png_set_packswap(png_ptr);
-#endif
-
-#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
- /* Invert the alpha channel from opacity to transparency */
- if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
- png_set_invert_alpha(png_ptr);
-#endif
-
- /* ----------------------- end of transformations ------------------- */
-
- /* Write the bits */
- if (info_ptr->valid & PNG_INFO_IDAT)
- png_write_image(png_ptr, info_ptr->row_pointers);
-
- /* It is REQUIRED to call this to finish writing the rest of the file */
- png_write_end(png_ptr, info_ptr);
-
- PNG_UNUSED(transforms) /* Quiet compiler warnings */
- PNG_UNUSED(params)
-}
-#endif
-#endif /* PNG_WRITE_SUPPORTED */
+
+/* pngwrite.c - general routines to write a PNG file
+ *
+ * Last changed in libpng 1.2.45 [July 7, 2011]
+ * Copyright (c) 1998-2011 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ */
+
+/* Get internal access to png.h */
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#ifdef PNG_WRITE_SUPPORTED
+
+/* Writes all the PNG information. This is the suggested way to use the
+ * library. If you have a new chunk to add, make a function to write it,
+ * and put it in the correct location here. If you want the chunk written
+ * after the image data, put it in png_write_end(). I strongly encourage
+ * you to supply a PNG_INFO_ flag, and check info_ptr->valid before writing
+ * the chunk, as that will keep the code from breaking if you want to just
+ * write a plain PNG file. If you have long comments, I suggest writing
+ * them in png_write_end(), and compressing them.
+ */
+void PNGAPI
+png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
+{
+ png_debug(1, "in png_write_info_before_PLTE");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+ if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
+ {
+ /* Write PNG signature */
+ png_write_sig(png_ptr);
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) && \
+ (png_ptr->mng_features_permitted))
+ {
+ png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
+ png_ptr->mng_features_permitted = 0;
+ }
+#endif
+ /* Write IHDR information. */
+ png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height,
+ info_ptr->bit_depth, info_ptr->color_type, info_ptr->compression_type,
+ info_ptr->filter_type,
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+ info_ptr->interlace_type);
+#else
+ 0);
+#endif
+ /* The rest of these check to see if the valid field has the appropriate
+ * flag set, and if it does, writes the chunk.
+ */
+#ifdef PNG_WRITE_gAMA_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_gAMA)
+ {
+# ifdef PNG_FLOATING_POINT_SUPPORTED
+ png_write_gAMA(png_ptr, info_ptr->gamma);
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ png_write_gAMA_fixed(png_ptr, info_ptr->int_gamma);
+# endif
+#endif
+ }
+#endif
+#ifdef PNG_WRITE_sRGB_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_sRGB)
+ png_write_sRGB(png_ptr, (int)info_ptr->srgb_intent);
+#endif
+#ifdef PNG_WRITE_iCCP_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_iCCP)
+ png_write_iCCP(png_ptr, info_ptr->iccp_name, PNG_COMPRESSION_TYPE_BASE,
+ info_ptr->iccp_profile, (int)info_ptr->iccp_proflen);
+#endif
+#ifdef PNG_WRITE_sBIT_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_sBIT)
+ png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type);
+#endif
+#ifdef PNG_WRITE_cHRM_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_cHRM)
+ {
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+ png_write_cHRM(png_ptr,
+ info_ptr->x_white, info_ptr->y_white,
+ info_ptr->x_red, info_ptr->y_red,
+ info_ptr->x_green, info_ptr->y_green,
+ info_ptr->x_blue, info_ptr->y_blue);
+#else
+# ifdef PNG_FIXED_POINT_SUPPORTED
+ png_write_cHRM_fixed(png_ptr,
+ info_ptr->int_x_white, info_ptr->int_y_white,
+ info_ptr->int_x_red, info_ptr->int_y_red,
+ info_ptr->int_x_green, info_ptr->int_y_green,
+ info_ptr->int_x_blue, info_ptr->int_y_blue);
+# endif
+#endif
+ }
+#endif
+#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
+ if (info_ptr->unknown_chunks_num)
+ {
+ png_unknown_chunk *up;
+
+ png_debug(5, "writing extra chunks");
+
+ for (up = info_ptr->unknown_chunks;
+ up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num;
+ up++)
+ {
+ int keep = png_handle_as_unknown(png_ptr, up->name);
+ if (keep != PNG_HANDLE_CHUNK_NEVER &&
+ up->location && !(up->location & PNG_HAVE_PLTE) &&
+ !(up->location & PNG_HAVE_IDAT) &&
+ ((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
+ (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
+ {
+ if (up->size == 0)
+ png_warning(png_ptr, "Writing zero-length unknown chunk");
+ png_write_chunk(png_ptr, up->name, up->data, up->size);
+ }
+ }
+ }
+#endif
+ png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE;
+ }
+}
+
+void PNGAPI
+png_write_info(png_structp png_ptr, png_infop info_ptr)
+{
+#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
+ int i;
+#endif
+
+ png_debug(1, "in png_write_info");
+
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ png_write_info_before_PLTE(png_ptr, info_ptr);
+
+ if (info_ptr->valid & PNG_INFO_PLTE)
+ png_write_PLTE(png_ptr, info_ptr->palette,
+ (png_uint_32)info_ptr->num_palette);
+ else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ png_error(png_ptr, "Valid palette required for paletted images");
+
+#ifdef PNG_WRITE_tRNS_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_tRNS)
+ {
+#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
+ /* Invert the alpha channel (in tRNS) */
+ if ((png_ptr->transformations & PNG_INVERT_ALPHA) &&
+ info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ int j;
+ for (j = 0; j<(int)info_ptr->num_trans; j++)
+ info_ptr->trans[j] = (png_byte)(255 - info_ptr->trans[j]);
+ }
+#endif
+ png_write_tRNS(png_ptr, info_ptr->trans, &(info_ptr->trans_values),
+ info_ptr->num_trans, info_ptr->color_type);
+ }
+#endif
+#ifdef PNG_WRITE_bKGD_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_bKGD)
+ png_write_bKGD(png_ptr, &(info_ptr->background), info_ptr->color_type);
+#endif
+#ifdef PNG_WRITE_hIST_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_hIST)
+ png_write_hIST(png_ptr, info_ptr->hist, info_ptr->num_palette);
+#endif
+#ifdef PNG_WRITE_oFFs_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_oFFs)
+ png_write_oFFs(png_ptr, info_ptr->x_offset, info_ptr->y_offset,
+ info_ptr->offset_unit_type);
+#endif
+#ifdef PNG_WRITE_pCAL_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_pCAL)
+ png_write_pCAL(png_ptr, info_ptr->pcal_purpose, info_ptr->pcal_X0,
+ info_ptr->pcal_X1, info_ptr->pcal_type, info_ptr->pcal_nparams,
+ info_ptr->pcal_units, info_ptr->pcal_params);
+#endif
+
+#ifdef PNG_sCAL_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_sCAL)
+#ifdef PNG_WRITE_sCAL_SUPPORTED
+#if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_STDIO_SUPPORTED)
+ png_write_sCAL(png_ptr, (int)info_ptr->scal_unit,
+ info_ptr->scal_pixel_width, info_ptr->scal_pixel_height);
+#else /* !FLOATING_POINT */
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ png_write_sCAL_s(png_ptr, (int)info_ptr->scal_unit,
+ info_ptr->scal_s_width, info_ptr->scal_s_height);
+#endif /* FIXED_POINT */
+#endif /* FLOATING_POINT */
+#else /* !WRITE_sCAL */
+ png_warning(png_ptr,
+ "png_write_sCAL not supported; sCAL chunk not written.");
+#endif /* WRITE_sCAL */
+#endif /* sCAL */
+
+#ifdef PNG_WRITE_pHYs_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_pHYs)
+ png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit,
+ info_ptr->y_pixels_per_unit, info_ptr->phys_unit_type);
+#endif /* pHYs */
+
+#ifdef PNG_WRITE_tIME_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_tIME)
+ {
+ png_write_tIME(png_ptr, &(info_ptr->mod_time));
+ png_ptr->mode |= PNG_WROTE_tIME;
+ }
+#endif /* tIME */
+
+#ifdef PNG_WRITE_sPLT_SUPPORTED
+ if (info_ptr->valid & PNG_INFO_sPLT)
+ for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
+ png_write_sPLT(png_ptr, info_ptr->splt_palettes + i);
+#endif /* sPLT */
+
+#ifdef PNG_WRITE_TEXT_SUPPORTED
+ /* Check to see if we need to write text chunks */
+ for (i = 0; i < info_ptr->num_text; i++)
+ {
+ png_debug2(2, "Writing header text chunk %d, type %d", i,
+ info_ptr->text[i].compression);
+ /* An internationalized chunk? */
+ if (info_ptr->text[i].compression > 0)
+ {
+#ifdef PNG_WRITE_iTXt_SUPPORTED
+ /* Write international chunk */
+ png_write_iTXt(png_ptr,
+ info_ptr->text[i].compression,
+ info_ptr->text[i].key,
+ info_ptr->text[i].lang,
+ info_ptr->text[i].lang_key,
+ info_ptr->text[i].text);
+#else
+ png_warning(png_ptr, "Unable to write international text");
+#endif
+ /* Mark this chunk as written */
+ info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
+ }
+ /* If we want a compressed text chunk */
+ else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_zTXt)
+ {
+#ifdef PNG_WRITE_zTXt_SUPPORTED
+ /* Write compressed chunk */
+ png_write_zTXt(png_ptr, info_ptr->text[i].key,
+ info_ptr->text[i].text, 0,
+ info_ptr->text[i].compression);
+#else
+ png_warning(png_ptr, "Unable to write compressed text");
+#endif
+ /* Mark this chunk as written */
+ info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR;
+ }
+ else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE)
+ {
+#ifdef PNG_WRITE_tEXt_SUPPORTED
+ /* Write uncompressed chunk */
+ png_write_tEXt(png_ptr, info_ptr->text[i].key,
+ info_ptr->text[i].text,
+ 0);
+ /* Mark this chunk as written */
+ info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
+#else
+ /* Can't get here */
+ png_warning(png_ptr, "Unable to write uncompressed text");
+#endif
+ }
+ }
+#endif /* tEXt */
+
+#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
+ if (info_ptr->unknown_chunks_num)
+ {
+ png_unknown_chunk *up;
+
+ png_debug(5, "writing extra chunks");
+
+ for (up = info_ptr->unknown_chunks;
+ up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num;
+ up++)
+ {
+ int keep = png_handle_as_unknown(png_ptr, up->name);
+ if (keep != PNG_HANDLE_CHUNK_NEVER &&
+ up->location && (up->location & PNG_HAVE_PLTE) &&
+ !(up->location & PNG_HAVE_IDAT) &&
+ !(up->location & PNG_AFTER_IDAT) &&
+ ((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
+ (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
+ {
+ png_write_chunk(png_ptr, up->name, up->data, up->size);
+ }
+ }
+ }
+#endif
+}
+
+/* Writes the end of the PNG file. If you don't want to write comments or
+ * time information, you can pass NULL for info. If you already wrote these
+ * in png_write_info(), do not write them again here. If you have long
+ * comments, I suggest writing them here, and compressing them.
+ */
+void PNGAPI
+png_write_end(png_structp png_ptr, png_infop info_ptr)
+{
+ png_debug(1, "in png_write_end");
+
+ if (png_ptr == NULL)
+ return;
+ if (!(png_ptr->mode & PNG_HAVE_IDAT))
+ png_error(png_ptr, "No IDATs written into file");
+
+ /* See if user wants us to write information chunks */
+ if (info_ptr != NULL)
+ {
+#ifdef PNG_WRITE_TEXT_SUPPORTED
+ int i; /* local index variable */
+#endif
+#ifdef PNG_WRITE_tIME_SUPPORTED
+ /* Check to see if user has supplied a time chunk */
+ if ((info_ptr->valid & PNG_INFO_tIME) &&
+ !(png_ptr->mode & PNG_WROTE_tIME))
+ png_write_tIME(png_ptr, &(info_ptr->mod_time));
+#endif
+#ifdef PNG_WRITE_TEXT_SUPPORTED
+ /* Loop through comment chunks */
+ for (i = 0; i < info_ptr->num_text; i++)
+ {
+ png_debug2(2, "Writing trailer text chunk %d, type %d", i,
+ info_ptr->text[i].compression);
+ /* An internationalized chunk? */
+ if (info_ptr->text[i].compression > 0)
+ {
+#ifdef PNG_WRITE_iTXt_SUPPORTED
+ /* Write international chunk */
+ png_write_iTXt(png_ptr,
+ info_ptr->text[i].compression,
+ info_ptr->text[i].key,
+ info_ptr->text[i].lang,
+ info_ptr->text[i].lang_key,
+ info_ptr->text[i].text);
+#else
+ png_warning(png_ptr, "Unable to write international text");
+#endif
+ /* Mark this chunk as written */
+ info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
+ }
+ else if (info_ptr->text[i].compression >= PNG_TEXT_COMPRESSION_zTXt)
+ {
+#ifdef PNG_WRITE_zTXt_SUPPORTED
+ /* Write compressed chunk */
+ png_write_zTXt(png_ptr, info_ptr->text[i].key,
+ info_ptr->text[i].text, 0,
+ info_ptr->text[i].compression);
+#else
+ png_warning(png_ptr, "Unable to write compressed text");
+#endif
+ /* Mark this chunk as written */
+ info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR;
+ }
+ else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE)
+ {
+#ifdef PNG_WRITE_tEXt_SUPPORTED
+ /* Write uncompressed chunk */
+ png_write_tEXt(png_ptr, info_ptr->text[i].key,
+ info_ptr->text[i].text, 0);
+#else
+ png_warning(png_ptr, "Unable to write uncompressed text");
+#endif
+
+ /* Mark this chunk as written */
+ info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
+ }
+ }
+#endif
+#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
+ if (info_ptr->unknown_chunks_num)
+ {
+ png_unknown_chunk *up;
+
+ png_debug(5, "writing extra chunks");
+
+ for (up = info_ptr->unknown_chunks;
+ up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num;
+ up++)
+ {
+ int keep = png_handle_as_unknown(png_ptr, up->name);
+ if (keep != PNG_HANDLE_CHUNK_NEVER &&
+ up->location && (up->location & PNG_AFTER_IDAT) &&
+ ((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
+ (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
+ {
+ png_write_chunk(png_ptr, up->name, up->data, up->size);
+ }
+ }
+ }
+#endif
+ }
+
+ png_ptr->mode |= PNG_AFTER_IDAT;
+
+ /* Write end of PNG file */
+ png_write_IEND(png_ptr);
+ /* This flush, added in libpng-1.0.8, removed from libpng-1.0.9beta03,
+ * and restored again in libpng-1.2.30, may cause some applications that
+ * do not set png_ptr->output_flush_fn to crash. If your application
+ * experiences a problem, please try building libpng with
+ * PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED defined, and report the event to
+ * png-mng-implement at lists.sf.net .
+ */
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+# ifdef PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED
+ png_flush(png_ptr);
+# endif
+#endif
+}
+
+#ifdef PNG_CONVERT_tIME_SUPPORTED
+/* "tm" structure is not supported on WindowsCE */
+void PNGAPI
+png_convert_from_struct_tm(png_timep ptime, struct tm FAR * ttime)
+{
+ png_debug(1, "in png_convert_from_struct_tm");
+
+ ptime->year = (png_uint_16)(1900 + ttime->tm_year);
+ ptime->month = (png_byte)(ttime->tm_mon + 1);
+ ptime->day = (png_byte)ttime->tm_mday;
+ ptime->hour = (png_byte)ttime->tm_hour;
+ ptime->minute = (png_byte)ttime->tm_min;
+ ptime->second = (png_byte)ttime->tm_sec;
+}
+
+void PNGAPI
+png_convert_from_time_t(png_timep ptime, time_t ttime)
+{
+ struct tm *tbuf;
+
+ png_debug(1, "in png_convert_from_time_t");
+
+ tbuf = gmtime(&ttime);
+ png_convert_from_struct_tm(ptime, tbuf);
+}
+#endif
+
+/* Initialize png_ptr structure, and allocate any memory needed */
+png_structp PNGAPI
+png_create_write_struct(png_const_charp user_png_ver, png_voidp error_ptr,
+ png_error_ptr error_fn, png_error_ptr warn_fn)
+{
+#ifdef PNG_USER_MEM_SUPPORTED
+ return (png_create_write_struct_2(user_png_ver, error_ptr, error_fn,
+ warn_fn, png_voidp_NULL, png_malloc_ptr_NULL, png_free_ptr_NULL));
+}
+
+/* Alternate initialize png_ptr structure, and allocate any memory needed */
+png_structp PNGAPI
+png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
+ png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
+ png_malloc_ptr malloc_fn, png_free_ptr free_fn)
+{
+#endif /* PNG_USER_MEM_SUPPORTED */
+#ifdef PNG_SETJMP_SUPPORTED
+ volatile
+#endif
+ png_structp png_ptr;
+#ifdef PNG_SETJMP_SUPPORTED
+#ifdef USE_FAR_KEYWORD
+ jmp_buf jmpbuf;
+#endif
+#endif
+ int i;
+
+ png_debug(1, "in png_create_write_struct");
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
+ (png_malloc_ptr)malloc_fn, (png_voidp)mem_ptr);
+#else
+ png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
+#endif /* PNG_USER_MEM_SUPPORTED */
+ if (png_ptr == NULL)
+ return (NULL);
+
+ /* Added at libpng-1.2.6 */
+#ifdef PNG_SET_USER_LIMITS_SUPPORTED
+ png_ptr->user_width_max = PNG_USER_WIDTH_MAX;
+ png_ptr->user_height_max = PNG_USER_HEIGHT_MAX;
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+#ifdef USE_FAR_KEYWORD
+ if (setjmp(jmpbuf))
+#else
+ if (setjmp(png_ptr->jmpbuf))
+#endif
+ {
+ png_free(png_ptr, png_ptr->zbuf);
+ png_ptr->zbuf = NULL;
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_destroy_struct_2((png_voidp)png_ptr,
+ (png_free_ptr)free_fn, (png_voidp)mem_ptr);
+#else
+ png_destroy_struct((png_voidp)png_ptr);
+#endif
+ return (NULL);
+ }
+#ifdef USE_FAR_KEYWORD
+ png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf));
+#endif
+#endif
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_set_mem_fn(png_ptr, mem_ptr, malloc_fn, free_fn);
+#endif /* PNG_USER_MEM_SUPPORTED */
+ png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
+
+ if (user_png_ver)
+ {
+ i = 0;
+ do
+ {
+ if (user_png_ver[i] != png_libpng_ver[i])
+ png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
+ } while (png_libpng_ver[i++]);
+ }
+
+ if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
+ {
+ /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so
+ * we must recompile any applications that use any older library version.
+ * For versions after libpng 1.0, we will be compatible, so we need
+ * only check the first digit.
+ */
+ if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||
+ (user_png_ver[0] == '1' && user_png_ver[2] != png_libpng_ver[2]) ||
+ (user_png_ver[0] == '0' && user_png_ver[2] < '9'))
+ {
+#if defined(PNG_STDIO_SUPPORTED) && !defined(_WIN32_WCE)
+ char msg[80];
+ if (user_png_ver)
+ {
+ png_snprintf(msg, 80,
+ "Application was compiled with png.h from libpng-%.20s",
+ user_png_ver);
+ png_warning(png_ptr, msg);
+ }
+ png_snprintf(msg, 80,
+ "Application is running with png.c from libpng-%.20s",
+ png_libpng_ver);
+ png_warning(png_ptr, msg);
+#endif
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+ png_ptr->flags = 0;
+#endif
+ png_error(png_ptr,
+ "Incompatible libpng version in application and library");
+ }
+ }
+
+ /* Initialize zbuf - compression buffer */
+ png_ptr->zbuf_size = PNG_ZBUF_SIZE;
+ png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)png_ptr->zbuf_size);
+
+ png_set_write_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL,
+ png_flush_ptr_NULL);
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT,
+ 1, png_doublep_NULL, png_doublep_NULL);
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+ /* Applications that neglect to set up their own setjmp() and then
+ * encounter a png_error() will longjmp here. Since the jmpbuf is
+ * then meaningless we abort instead of returning.
+ */
+#ifdef USE_FAR_KEYWORD
+ if (setjmp(jmpbuf))
+ PNG_ABORT();
+ png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf));
+#else
+ if (setjmp(png_ptr->jmpbuf))
+ PNG_ABORT();
+#endif
+#endif
+ return (png_ptr);
+}
+
+/* Initialize png_ptr structure, and allocate any memory needed */
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
+/* Deprecated. */
+#undef png_write_init
+void PNGAPI
+png_write_init(png_structp png_ptr)
+{
+ /* We only come here via pre-1.0.7-compiled applications */
+ png_write_init_2(png_ptr, "1.0.6 or earlier", 0, 0);
+}
+
+void PNGAPI
+png_write_init_2(png_structp png_ptr, png_const_charp user_png_ver,
+ png_size_t png_struct_size, png_size_t png_info_size)
+{
+ /* We only come here via pre-1.0.12-compiled applications */
+ if (png_ptr == NULL) return;
+#if defined(PNG_STDIO_SUPPORTED) && !defined(_WIN32_WCE)
+ if (png_sizeof(png_struct) > png_struct_size ||
+ png_sizeof(png_info) > png_info_size)
+ {
+ char msg[80];
+ png_ptr->warning_fn = NULL;
+ if (user_png_ver)
+ {
+ png_snprintf(msg, 80,
+ "Application was compiled with png.h from libpng-%.20s",
+ user_png_ver);
+ png_warning(png_ptr, msg);
+ }
+ png_snprintf(msg, 80,
+ "Application is running with png.c from libpng-%.20s",
+ png_libpng_ver);
+ png_warning(png_ptr, msg);
+ }
+#endif
+ if (png_sizeof(png_struct) > png_struct_size)
+ {
+ png_ptr->error_fn = NULL;
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+ png_ptr->flags = 0;
+#endif
+ png_error(png_ptr,
+ "The png struct allocated by the application for writing is"
+ " too small.");
+ }
+ if (png_sizeof(png_info) > png_info_size)
+ {
+ png_ptr->error_fn = NULL;
+#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+ png_ptr->flags = 0;
+#endif
+ png_error(png_ptr,
+ "The info struct allocated by the application for writing is"
+ " too small.");
+ }
+ png_write_init_3(&png_ptr, user_png_ver, png_struct_size);
+}
+#endif /* PNG_1_0_X || PNG_1_2_X */
+
+
+void PNGAPI
+png_write_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
+ png_size_t png_struct_size)
+{
+ png_structp png_ptr = *ptr_ptr;
+#ifdef PNG_SETJMP_SUPPORTED
+ jmp_buf tmp_jmp; /* to save current jump buffer */
+#endif
+
+ int i = 0;
+
+ if (png_ptr == NULL)
+ return;
+
+ do
+ {
+ if (user_png_ver[i] != png_libpng_ver[i])
+ {
+#ifdef PNG_LEGACY_SUPPORTED
+ png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
+#else
+ png_ptr->warning_fn = NULL;
+ png_warning(png_ptr,
+ "Application uses deprecated png_write_init() and should be recompiled.");
+#endif
+ }
+ } while (png_libpng_ver[i++]);
+
+ png_debug(1, "in png_write_init_3");
+
+#ifdef PNG_SETJMP_SUPPORTED
+ /* Save jump buffer and error functions */
+ png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
+#endif
+
+ if (png_sizeof(png_struct) > png_struct_size)
+ {
+ png_destroy_struct(png_ptr);
+ png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
+ *ptr_ptr = png_ptr;
+ }
+
+ /* Reset all variables to 0 */
+ png_memset(png_ptr, 0, png_sizeof(png_struct));
+
+ /* Added at libpng-1.2.6 */
+#ifdef PNG_SET_USER_LIMITS_SUPPORTED
+ png_ptr->user_width_max = PNG_USER_WIDTH_MAX;
+ png_ptr->user_height_max = PNG_USER_HEIGHT_MAX;
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+ /* Restore jump buffer */
+ png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
+#endif
+
+ png_set_write_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL,
+ png_flush_ptr_NULL);
+
+ /* Initialize zbuf - compression buffer */
+ png_ptr->zbuf_size = PNG_ZBUF_SIZE;
+ png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)png_ptr->zbuf_size);
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT,
+ 1, png_doublep_NULL, png_doublep_NULL);
+#endif
+}
+
+/* Write a few rows of image data. If the image is interlaced,
+ * either you will have to write the 7 sub images, or, if you
+ * have called png_set_interlace_handling(), you will have to
+ * "write" the image seven times.
+ */
+void PNGAPI
+png_write_rows(png_structp png_ptr, png_bytepp row,
+ png_uint_32 num_rows)
+{
+ png_uint_32 i; /* row counter */
+ png_bytepp rp; /* row pointer */
+
+ png_debug(1, "in png_write_rows");
+
+ if (png_ptr == NULL)
+ return;
+
+ /* Loop through the rows */
+ for (i = 0, rp = row; i < num_rows; i++, rp++)
+ {
+ png_write_row(png_ptr, *rp);
+ }
+}
+
+/* Write the image. You only need to call this function once, even
+ * if you are writing an interlaced image.
+ */
+void PNGAPI
+png_write_image(png_structp png_ptr, png_bytepp image)
+{
+ png_uint_32 i; /* row index */
+ int pass, num_pass; /* pass variables */
+ png_bytepp rp; /* points to current row */
+
+ if (png_ptr == NULL)
+ return;
+
+ png_debug(1, "in png_write_image");
+
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+ /* Initialize interlace handling. If image is not interlaced,
+ * this will set pass to 1
+ */
+ num_pass = png_set_interlace_handling(png_ptr);
+#else
+ num_pass = 1;
+#endif
+ /* Loop through passes */
+ for (pass = 0; pass < num_pass; pass++)
+ {
+ /* Loop through image */
+ for (i = 0, rp = image; i < png_ptr->height; i++, rp++)
+ {
+ png_write_row(png_ptr, *rp);
+ }
+ }
+}
+
+/* Called by user to write a row of image data */
+void PNGAPI
+png_write_row(png_structp png_ptr, png_bytep row)
+{
+ if (png_ptr == NULL)
+ return;
+
+ png_debug2(1, "in png_write_row (row %ld, pass %d)",
+ png_ptr->row_number, png_ptr->pass);
+
+ /* Initialize transformations and other stuff if first time */
+ if (png_ptr->row_number == 0 && png_ptr->pass == 0)
+ {
+ /* Make sure we wrote the header info */
+ if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
+ png_error(png_ptr,
+ "png_write_info was never called before png_write_row.");
+
+ /* Check for transforms that have been set but were defined out */
+#if !defined(PNG_WRITE_INVERT_SUPPORTED) && defined(PNG_READ_INVERT_SUPPORTED)
+ if (png_ptr->transformations & PNG_INVERT_MONO)
+ png_warning(png_ptr,
+ "PNG_WRITE_INVERT_SUPPORTED is not defined.");
+#endif
+#if !defined(PNG_WRITE_FILLER_SUPPORTED) && defined(PNG_READ_FILLER_SUPPORTED)
+ if (png_ptr->transformations & PNG_FILLER)
+ png_warning(png_ptr,
+ "PNG_WRITE_FILLER_SUPPORTED is not defined.");
+#endif
+#if !defined(PNG_WRITE_PACKSWAP_SUPPORTED) && \
+ defined(PNG_READ_PACKSWAP_SUPPORTED)
+ if (png_ptr->transformations & PNG_PACKSWAP)
+ png_warning(png_ptr,
+ "PNG_WRITE_PACKSWAP_SUPPORTED is not defined.");
+#endif
+#if !defined(PNG_WRITE_PACK_SUPPORTED) && defined(PNG_READ_PACK_SUPPORTED)
+ if (png_ptr->transformations & PNG_PACK)
+ png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined.");
+#endif
+#if !defined(PNG_WRITE_SHIFT_SUPPORTED) && defined(PNG_READ_SHIFT_SUPPORTED)
+ if (png_ptr->transformations & PNG_SHIFT)
+ png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined.");
+#endif
+#if !defined(PNG_WRITE_BGR_SUPPORTED) && defined(PNG_READ_BGR_SUPPORTED)
+ if (png_ptr->transformations & PNG_BGR)
+ png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined.");
+#endif
+#if !defined(PNG_WRITE_SWAP_SUPPORTED) && defined(PNG_READ_SWAP_SUPPORTED)
+ if (png_ptr->transformations & PNG_SWAP_BYTES)
+ png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined.");
+#endif
+
+ png_write_start_row(png_ptr);
+ }
+
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+ /* If interlaced and not interested in row, return */
+ if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
+ {
+ switch (png_ptr->pass)
+ {
+ case 0:
+ if (png_ptr->row_number & 0x07)
+ {
+ png_write_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 1:
+ if ((png_ptr->row_number & 0x07) || png_ptr->width < 5)
+ {
+ png_write_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 2:
+ if ((png_ptr->row_number & 0x07) != 4)
+ {
+ png_write_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 3:
+ if ((png_ptr->row_number & 0x03) || png_ptr->width < 3)
+ {
+ png_write_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 4:
+ if ((png_ptr->row_number & 0x03) != 2)
+ {
+ png_write_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 5:
+ if ((png_ptr->row_number & 0x01) || png_ptr->width < 2)
+ {
+ png_write_finish_row(png_ptr);
+ return;
+ }
+ break;
+ case 6:
+ if (!(png_ptr->row_number & 0x01))
+ {
+ png_write_finish_row(png_ptr);
+ return;
+ }
+ break;
+ }
+ }
+#endif
+
+ /* Set up row info for transformations */
+ png_ptr->row_info.color_type = png_ptr->color_type;
+ png_ptr->row_info.width = png_ptr->usr_width;
+ png_ptr->row_info.channels = png_ptr->usr_channels;
+ png_ptr->row_info.bit_depth = png_ptr->usr_bit_depth;
+ png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth *
+ png_ptr->row_info.channels);
+
+ png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
+ png_ptr->row_info.width);
+
+ png_debug1(3, "row_info->color_type = %d", png_ptr->row_info.color_type);
+ png_debug1(3, "row_info->width = %lu", png_ptr->row_info.width);
+ png_debug1(3, "row_info->channels = %d", png_ptr->row_info.channels);
+ png_debug1(3, "row_info->bit_depth = %d", png_ptr->row_info.bit_depth);
+ png_debug1(3, "row_info->pixel_depth = %d", png_ptr->row_info.pixel_depth);
+ png_debug1(3, "row_info->rowbytes = %lu", png_ptr->row_info.rowbytes);
+
+ /* Copy user's row into buffer, leaving room for filter byte. */
+ png_memcpy_check(png_ptr, png_ptr->row_buf + 1, row,
+ png_ptr->row_info.rowbytes);
+
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+ /* Handle interlacing */
+ if (png_ptr->interlaced && png_ptr->pass < 6 &&
+ (png_ptr->transformations & PNG_INTERLACE))
+ {
+ png_do_write_interlace(&(png_ptr->row_info),
+ png_ptr->row_buf + 1, png_ptr->pass);
+ /* This should always get caught above, but still ... */
+ if (!(png_ptr->row_info.width))
+ {
+ png_write_finish_row(png_ptr);
+ return;
+ }
+ }
+#endif
+
+ /* Handle other transformations */
+ if (png_ptr->transformations)
+ png_do_write_transformations(png_ptr);
+
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ /* Write filter_method 64 (intrapixel differencing) only if
+ * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and
+ * 2. Libpng did not write a PNG signature (this filter_method is only
+ * used in PNG datastreams that are embedded in MNG datastreams) and
+ * 3. The application called png_permit_mng_features with a mask that
+ * included PNG_FLAG_MNG_FILTER_64 and
+ * 4. The filter_method is 64 and
+ * 5. The color_type is RGB or RGBA
+ */
+ if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
+ (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
+ {
+ /* Intrapixel differencing */
+ png_do_write_intrapixel(&(png_ptr->row_info), png_ptr->row_buf + 1);
+ }
+#endif
+
+ /* Find a filter if necessary, filter the row and write it out. */
+ png_write_find_filter(png_ptr, &(png_ptr->row_info));
+
+ if (png_ptr->write_row_fn != NULL)
+ (*(png_ptr->write_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);
+}
+
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+/* Set the automatic flush interval or 0 to turn flushing off */
+void PNGAPI
+png_set_flush(png_structp png_ptr, int nrows)
+{
+ png_debug(1, "in png_set_flush");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->flush_dist = (nrows < 0 ? 0 : nrows);
+}
+
+/* Flush the current output buffers now */
+void PNGAPI
+png_write_flush(png_structp png_ptr)
+{
+ int wrote_IDAT;
+
+ png_debug(1, "in png_write_flush");
+
+ if (png_ptr == NULL)
+ return;
+ /* We have already written out all of the data */
+ if (png_ptr->row_number >= png_ptr->num_rows)
+ return;
+
+ do
+ {
+ int ret;
+
+ /* Compress the data */
+ ret = deflate(&png_ptr->zstream, Z_SYNC_FLUSH);
+ wrote_IDAT = 0;
+
+ /* Check for compression errors */
+ if (ret != Z_OK)
+ {
+ if (png_ptr->zstream.msg != NULL)
+ png_error(png_ptr, png_ptr->zstream.msg);
+ else
+ png_error(png_ptr, "zlib error");
+ }
+
+ if (!(png_ptr->zstream.avail_out))
+ {
+ /* Write the IDAT and reset the zlib output buffer */
+ png_write_IDAT(png_ptr, png_ptr->zbuf,
+ png_ptr->zbuf_size);
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+ wrote_IDAT = 1;
+ }
+ } while(wrote_IDAT == 1);
+
+ /* If there is any data left to be output, write it into a new IDAT */
+ if (png_ptr->zbuf_size != png_ptr->zstream.avail_out)
+ {
+ /* Write the IDAT and reset the zlib output buffer */
+ png_write_IDAT(png_ptr, png_ptr->zbuf,
+ png_ptr->zbuf_size - png_ptr->zstream.avail_out);
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+ }
+ png_ptr->flush_rows = 0;
+ png_flush(png_ptr);
+}
+#endif /* PNG_WRITE_FLUSH_SUPPORTED */
+
+/* Free all memory used by the write */
+void PNGAPI
+png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)
+{
+ png_structp png_ptr = NULL;
+ png_infop info_ptr = NULL;
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_free_ptr free_fn = NULL;
+ png_voidp mem_ptr = NULL;
+#endif
+
+ png_debug(1, "in png_destroy_write_struct");
+
+ if (png_ptr_ptr != NULL)
+ {
+ png_ptr = *png_ptr_ptr;
+#ifdef PNG_USER_MEM_SUPPORTED
+ free_fn = png_ptr->free_fn;
+ mem_ptr = png_ptr->mem_ptr;
+#endif
+ }
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ if (png_ptr != NULL)
+ {
+ free_fn = png_ptr->free_fn;
+ mem_ptr = png_ptr->mem_ptr;
+ }
+#endif
+
+ if (info_ptr_ptr != NULL)
+ info_ptr = *info_ptr_ptr;
+
+ if (info_ptr != NULL)
+ {
+ if (png_ptr != NULL)
+ {
+ png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1);
+
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+ if (png_ptr->num_chunk_list)
+ {
+ png_free(png_ptr, png_ptr->chunk_list);
+ png_ptr->chunk_list = NULL;
+ png_ptr->num_chunk_list = 0;
+ }
+#endif
+ }
+
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_destroy_struct_2((png_voidp)info_ptr, (png_free_ptr)free_fn,
+ (png_voidp)mem_ptr);
+#else
+ png_destroy_struct((png_voidp)info_ptr);
+#endif
+ *info_ptr_ptr = NULL;
+ }
+
+ if (png_ptr != NULL)
+ {
+ png_write_destroy(png_ptr);
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn,
+ (png_voidp)mem_ptr);
+#else
+ png_destroy_struct((png_voidp)png_ptr);
+#endif
+ *png_ptr_ptr = NULL;
+ }
+}
+
+
+/* Free any memory used in png_ptr struct (old method) */
+void /* PRIVATE */
+png_write_destroy(png_structp png_ptr)
+{
+#ifdef PNG_SETJMP_SUPPORTED
+ jmp_buf tmp_jmp; /* Save jump buffer */
+#endif
+ png_error_ptr error_fn;
+ png_error_ptr warning_fn;
+ png_voidp error_ptr;
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_free_ptr free_fn;
+#endif
+
+ png_debug(1, "in png_write_destroy");
+
+ /* Free any memory zlib uses */
+ deflateEnd(&png_ptr->zstream);
+
+ /* Free our memory. png_free checks NULL for us. */
+ png_free(png_ptr, png_ptr->zbuf);
+ png_free(png_ptr, png_ptr->row_buf);
+#ifdef PNG_WRITE_FILTER_SUPPORTED
+ png_free(png_ptr, png_ptr->prev_row);
+ png_free(png_ptr, png_ptr->sub_row);
+ png_free(png_ptr, png_ptr->up_row);
+ png_free(png_ptr, png_ptr->avg_row);
+ png_free(png_ptr, png_ptr->paeth_row);
+#endif
+
+#ifdef PNG_TIME_RFC1123_SUPPORTED
+ png_free(png_ptr, png_ptr->time_buffer);
+#endif
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ png_free(png_ptr, png_ptr->prev_filters);
+ png_free(png_ptr, png_ptr->filter_weights);
+ png_free(png_ptr, png_ptr->inv_filter_weights);
+ png_free(png_ptr, png_ptr->filter_costs);
+ png_free(png_ptr, png_ptr->inv_filter_costs);
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+ /* Reset structure */
+ png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
+#endif
+
+ error_fn = png_ptr->error_fn;
+ warning_fn = png_ptr->warning_fn;
+ error_ptr = png_ptr->error_ptr;
+#ifdef PNG_USER_MEM_SUPPORTED
+ free_fn = png_ptr->free_fn;
+#endif
+
+ png_memset(png_ptr, 0, png_sizeof(png_struct));
+
+ png_ptr->error_fn = error_fn;
+ png_ptr->warning_fn = warning_fn;
+ png_ptr->error_ptr = error_ptr;
+#ifdef PNG_USER_MEM_SUPPORTED
+ png_ptr->free_fn = free_fn;
+#endif
+
+#ifdef PNG_SETJMP_SUPPORTED
+ png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
+#endif
+}
+
+/* Allow the application to select one or more row filters to use. */
+void PNGAPI
+png_set_filter(png_structp png_ptr, int method, int filters)
+{
+ png_debug(1, "in png_set_filter");
+
+ if (png_ptr == NULL)
+ return;
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
+ (method == PNG_INTRAPIXEL_DIFFERENCING))
+ method = PNG_FILTER_TYPE_BASE;
+#endif
+ if (method == PNG_FILTER_TYPE_BASE)
+ {
+ switch (filters & (PNG_ALL_FILTERS | 0x07))
+ {
+#ifdef PNG_WRITE_FILTER_SUPPORTED
+ case 5:
+ case 6:
+ case 7: png_warning(png_ptr, "Unknown row filter for method 0");
+#endif /* PNG_WRITE_FILTER_SUPPORTED */
+ case PNG_FILTER_VALUE_NONE:
+ png_ptr->do_filter = PNG_FILTER_NONE; break;
+#ifdef PNG_WRITE_FILTER_SUPPORTED
+ case PNG_FILTER_VALUE_SUB:
+ png_ptr->do_filter = PNG_FILTER_SUB; break;
+ case PNG_FILTER_VALUE_UP:
+ png_ptr->do_filter = PNG_FILTER_UP; break;
+ case PNG_FILTER_VALUE_AVG:
+ png_ptr->do_filter = PNG_FILTER_AVG; break;
+ case PNG_FILTER_VALUE_PAETH:
+ png_ptr->do_filter = PNG_FILTER_PAETH; break;
+ default: png_ptr->do_filter = (png_byte)filters; break;
+#else
+ default: png_warning(png_ptr, "Unknown row filter for method 0");
+#endif /* PNG_WRITE_FILTER_SUPPORTED */
+ }
+
+ /* If we have allocated the row_buf, this means we have already started
+ * with the image and we should have allocated all of the filter buffers
+ * that have been selected. If prev_row isn't already allocated, then
+ * it is too late to start using the filters that need it, since we
+ * will be missing the data in the previous row. If an application
+ * wants to start and stop using particular filters during compression,
+ * it should start out with all of the filters, and then add and
+ * remove them after the start of compression.
+ */
+ if (png_ptr->row_buf != NULL)
+ {
+#ifdef PNG_WRITE_FILTER_SUPPORTED
+ if ((png_ptr->do_filter & PNG_FILTER_SUB) && png_ptr->sub_row == NULL)
+ {
+ png_ptr->sub_row = (png_bytep)png_malloc(png_ptr,
+ (png_ptr->rowbytes + 1));
+ png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB;
+ }
+
+ if ((png_ptr->do_filter & PNG_FILTER_UP) && png_ptr->up_row == NULL)
+ {
+ if (png_ptr->prev_row == NULL)
+ {
+ png_warning(png_ptr, "Can't add Up filter after starting");
+ png_ptr->do_filter &= ~PNG_FILTER_UP;
+ }
+ else
+ {
+ png_ptr->up_row = (png_bytep)png_malloc(png_ptr,
+ (png_ptr->rowbytes + 1));
+ png_ptr->up_row[0] = PNG_FILTER_VALUE_UP;
+ }
+ }
+
+ if ((png_ptr->do_filter & PNG_FILTER_AVG) && png_ptr->avg_row == NULL)
+ {
+ if (png_ptr->prev_row == NULL)
+ {
+ png_warning(png_ptr, "Can't add Average filter after starting");
+ png_ptr->do_filter &= ~PNG_FILTER_AVG;
+ }
+ else
+ {
+ png_ptr->avg_row = (png_bytep)png_malloc(png_ptr,
+ (png_ptr->rowbytes + 1));
+ png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG;
+ }
+ }
+
+ if ((png_ptr->do_filter & PNG_FILTER_PAETH) &&
+ png_ptr->paeth_row == NULL)
+ {
+ if (png_ptr->prev_row == NULL)
+ {
+ png_warning(png_ptr, "Can't add Paeth filter after starting");
+ png_ptr->do_filter &= (png_byte)(~PNG_FILTER_PAETH);
+ }
+ else
+ {
+ png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr,
+ (png_ptr->rowbytes + 1));
+ png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH;
+ }
+ }
+
+ if (png_ptr->do_filter == PNG_NO_FILTERS)
+#endif /* PNG_WRITE_FILTER_SUPPORTED */
+ png_ptr->do_filter = PNG_FILTER_NONE;
+ }
+ }
+ else
+ png_error(png_ptr, "Unknown custom filter method");
+}
+
+/* This allows us to influence the way in which libpng chooses the "best"
+ * filter for the current scanline. While the "minimum-sum-of-absolute-
+ * differences metric is relatively fast and effective, there is some
+ * question as to whether it can be improved upon by trying to keep the
+ * filtered data going to zlib more consistent, hopefully resulting in
+ * better compression.
+ */
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* GRR 970116 */
+void PNGAPI
+png_set_filter_heuristics(png_structp png_ptr, int heuristic_method,
+ int num_weights, png_doublep filter_weights,
+ png_doublep filter_costs)
+{
+ int i;
+
+ png_debug(1, "in png_set_filter_heuristics");
+
+ if (png_ptr == NULL)
+ return;
+ if (heuristic_method >= PNG_FILTER_HEURISTIC_LAST)
+ {
+ png_warning(png_ptr, "Unknown filter heuristic method");
+ return;
+ }
+
+ if (heuristic_method == PNG_FILTER_HEURISTIC_DEFAULT)
+ {
+ heuristic_method = PNG_FILTER_HEURISTIC_UNWEIGHTED;
+ }
+
+ if (num_weights < 0 || filter_weights == NULL ||
+ heuristic_method == PNG_FILTER_HEURISTIC_UNWEIGHTED)
+ {
+ num_weights = 0;
+ }
+
+ png_ptr->num_prev_filters = (png_byte)num_weights;
+ png_ptr->heuristic_method = (png_byte)heuristic_method;
+
+ if (num_weights > 0)
+ {
+ if (png_ptr->prev_filters == NULL)
+ {
+ png_ptr->prev_filters = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)(png_sizeof(png_byte) * num_weights));
+
+ /* To make sure that the weighting starts out fairly */
+ for (i = 0; i < num_weights; i++)
+ {
+ png_ptr->prev_filters[i] = 255;
+ }
+ }
+
+ if (png_ptr->filter_weights == NULL)
+ {
+ png_ptr->filter_weights = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(png_sizeof(png_uint_16) * num_weights));
+
+ png_ptr->inv_filter_weights = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(png_sizeof(png_uint_16) * num_weights));
+ for (i = 0; i < num_weights; i++)
+ {
+ png_ptr->inv_filter_weights[i] =
+ png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR;
+ }
+ }
+
+ for (i = 0; i < num_weights; i++)
+ {
+ if (filter_weights[i] < 0.0)
+ {
+ png_ptr->inv_filter_weights[i] =
+ png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR;
+ }
+ else
+ {
+ png_ptr->inv_filter_weights[i] =
+ (png_uint_16)((double)PNG_WEIGHT_FACTOR*filter_weights[i]+0.5);
+ png_ptr->filter_weights[i] =
+ (png_uint_16)((double)PNG_WEIGHT_FACTOR/filter_weights[i]+0.5);
+ }
+ }
+ }
+
+ /* If, in the future, there are other filter methods, this would
+ * need to be based on png_ptr->filter.
+ */
+ if (png_ptr->filter_costs == NULL)
+ {
+ png_ptr->filter_costs = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(png_sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST));
+
+ png_ptr->inv_filter_costs = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(png_sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST));
+
+ for (i = 0; i < PNG_FILTER_VALUE_LAST; i++)
+ {
+ png_ptr->inv_filter_costs[i] =
+ png_ptr->filter_costs[i] = PNG_COST_FACTOR;
+ }
+ }
+
+ /* Here is where we set the relative costs of the different filters. We
+ * should take the desired compression level into account when setting
+ * the costs, so that Paeth, for instance, has a high relative cost at low
+ * compression levels, while it has a lower relative cost at higher
+ * compression settings. The filter types are in order of increasing
+ * relative cost, so it would be possible to do this with an algorithm.
+ */
+ for (i = 0; i < PNG_FILTER_VALUE_LAST; i++)
+ {
+ if (filter_costs == NULL || filter_costs[i] < 0.0)
+ {
+ png_ptr->inv_filter_costs[i] =
+ png_ptr->filter_costs[i] = PNG_COST_FACTOR;
+ }
+ else if (filter_costs[i] >= 1.0)
+ {
+ png_ptr->inv_filter_costs[i] =
+ (png_uint_16)((double)PNG_COST_FACTOR / filter_costs[i] + 0.5);
+ png_ptr->filter_costs[i] =
+ (png_uint_16)((double)PNG_COST_FACTOR * filter_costs[i] + 0.5);
+ }
+ }
+}
+#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */
+
+void PNGAPI
+png_set_compression_level(png_structp png_ptr, int level)
+{
+ png_debug(1, "in png_set_compression_level");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_LEVEL;
+ png_ptr->zlib_level = level;
+}
+
+void PNGAPI
+png_set_compression_mem_level(png_structp png_ptr, int mem_level)
+{
+ png_debug(1, "in png_set_compression_mem_level");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL;
+ png_ptr->zlib_mem_level = mem_level;
+}
+
+void PNGAPI
+png_set_compression_strategy(png_structp png_ptr, int strategy)
+{
+ png_debug(1, "in png_set_compression_strategy");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_STRATEGY;
+ png_ptr->zlib_strategy = strategy;
+}
+
+void PNGAPI
+png_set_compression_window_bits(png_structp png_ptr, int window_bits)
+{
+ if (png_ptr == NULL)
+ return;
+ if (window_bits > 15)
+ png_warning(png_ptr, "Only compression windows <= 32k supported by PNG");
+ else if (window_bits < 8)
+ png_warning(png_ptr, "Only compression windows >= 256 supported by PNG");
+#ifndef WBITS_8_OK
+ /* Avoid libpng bug with 256-byte windows */
+ if (window_bits == 8)
+ {
+ png_warning(png_ptr, "Compression window is being reset to 512");
+ window_bits = 9;
+ }
+#endif
+ png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS;
+ png_ptr->zlib_window_bits = window_bits;
+}
+
+void PNGAPI
+png_set_compression_method(png_structp png_ptr, int method)
+{
+ png_debug(1, "in png_set_compression_method");
+
+ if (png_ptr == NULL)
+ return;
+ if (method != 8)
+ png_warning(png_ptr, "Only compression method 8 is supported by PNG");
+ png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_METHOD;
+ png_ptr->zlib_method = method;
+}
+
+void PNGAPI
+png_set_write_status_fn(png_structp png_ptr, png_write_status_ptr write_row_fn)
+{
+ if (png_ptr == NULL)
+ return;
+ png_ptr->write_row_fn = write_row_fn;
+}
+
+#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
+void PNGAPI
+png_set_write_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
+ write_user_transform_fn)
+{
+ png_debug(1, "in png_set_write_user_transform_fn");
+
+ if (png_ptr == NULL)
+ return;
+ png_ptr->transformations |= PNG_USER_TRANSFORM;
+ png_ptr->write_user_transform_fn = write_user_transform_fn;
+}
+#endif
+
+
+#ifdef PNG_INFO_IMAGE_SUPPORTED
+void PNGAPI
+png_write_png(png_structp png_ptr, png_infop info_ptr,
+ int transforms, voidp params)
+{
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
+ /* Write the file header information. */
+ png_write_info(png_ptr, info_ptr);
+
+ /* ------ these transformations don't touch the info structure ------- */
+
+#ifdef PNG_WRITE_INVERT_SUPPORTED
+ /* Invert monochrome pixels */
+ if (transforms & PNG_TRANSFORM_INVERT_MONO)
+ png_set_invert_mono(png_ptr);
+#endif
+
+#ifdef PNG_WRITE_SHIFT_SUPPORTED
+ /* Shift the pixels up to a legal bit depth and fill in
+ * as appropriate to correctly scale the image.
+ */
+ if ((transforms & PNG_TRANSFORM_SHIFT)
+ && (info_ptr->valid & PNG_INFO_sBIT))
+ png_set_shift(png_ptr, &info_ptr->sig_bit);
+#endif
+
+#ifdef PNG_WRITE_PACK_SUPPORTED
+ /* Pack pixels into bytes */
+ if (transforms & PNG_TRANSFORM_PACKING)
+ png_set_packing(png_ptr);
+#endif
+
+#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED
+ /* Swap location of alpha bytes from ARGB to RGBA */
+ if (transforms & PNG_TRANSFORM_SWAP_ALPHA)
+ png_set_swap_alpha(png_ptr);
+#endif
+
+#ifdef PNG_WRITE_FILLER_SUPPORTED
+ /* Pack XRGB/RGBX/ARGB/RGBA into * RGB (4 channels -> 3 channels) */
+ if (transforms & PNG_TRANSFORM_STRIP_FILLER_AFTER)
+ png_set_filler(png_ptr, 0, PNG_FILLER_AFTER);
+ else if (transforms & PNG_TRANSFORM_STRIP_FILLER_BEFORE)
+ png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
+#endif
+
+#ifdef PNG_WRITE_BGR_SUPPORTED
+ /* Flip BGR pixels to RGB */
+ if (transforms & PNG_TRANSFORM_BGR)
+ png_set_bgr(png_ptr);
+#endif
+
+#ifdef PNG_WRITE_SWAP_SUPPORTED
+ /* Swap bytes of 16-bit files to most significant byte first */
+ if (transforms & PNG_TRANSFORM_SWAP_ENDIAN)
+ png_set_swap(png_ptr);
+#endif
+
+#ifdef PNG_WRITE_PACKSWAP_SUPPORTED
+ /* Swap bits of 1, 2, 4 bit packed pixel formats */
+ if (transforms & PNG_TRANSFORM_PACKSWAP)
+ png_set_packswap(png_ptr);
+#endif
+
+#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
+ /* Invert the alpha channel from opacity to transparency */
+ if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
+ png_set_invert_alpha(png_ptr);
+#endif
+
+ /* ----------------------- end of transformations ------------------- */
+
+ /* Write the bits */
+ if (info_ptr->valid & PNG_INFO_IDAT)
+ png_write_image(png_ptr, info_ptr->row_pointers);
+
+ /* It is REQUIRED to call this to finish writing the rest of the file */
+ png_write_end(png_ptr, info_ptr);
+
+ transforms = transforms; /* Quiet compiler warnings */
+ params = params;
+}
+#endif
+#endif /* PNG_WRITE_SUPPORTED */
diff --git a/Externals/libpng/pngwtran.c b/Externals/libpng/pngwtran.c
index 115ca37212..473099bce9 100644
--- a/Externals/libpng/pngwtran.c
+++ b/Externals/libpng/pngwtran.c
@@ -1,631 +1,582 @@
-
-/* pngwtran.c - transforms the data in a row for PNG writers
- *
- * Last changed in libpng 1.5.0 [January 6, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- */
-
-#include "pngpriv.h"
-
-#ifdef PNG_WRITE_SUPPORTED
-
-/* Transform the data according to the user's wishes. The order of
- * transformations is significant.
- */
-void /* PRIVATE */
-png_do_write_transformations(png_structp png_ptr)
-{
- png_debug(1, "in png_do_write_transformations");
-
- if (png_ptr == NULL)
- return;
-
-#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
- if (png_ptr->transformations & PNG_USER_TRANSFORM)
- if (png_ptr->write_user_transform_fn != NULL)
- (*(png_ptr->write_user_transform_fn)) /* User write transform
- function */
- (png_ptr, /* png_ptr */
- &(png_ptr->row_info), /* row_info: */
- /* png_uint_32 width; width of row */
- /* png_size_t rowbytes; number of bytes in row */
- /* png_byte color_type; color type of pixels */
- /* png_byte bit_depth; bit depth of samples */
- /* png_byte channels; number of channels (1-4) */
- /* png_byte pixel_depth; bits per pixel (depth*channels) */
- png_ptr->row_buf + 1); /* start of pixel data for row */
-#endif
-
-#ifdef PNG_WRITE_FILLER_SUPPORTED
- if (png_ptr->transformations & PNG_FILLER)
- png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
- png_ptr->flags);
-#endif
-
-#ifdef PNG_WRITE_PACKSWAP_SUPPORTED
- if (png_ptr->transformations & PNG_PACKSWAP)
- png_do_packswap(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_WRITE_PACK_SUPPORTED
- if (png_ptr->transformations & PNG_PACK)
- png_do_pack(&(png_ptr->row_info), png_ptr->row_buf + 1,
- (png_uint_32)png_ptr->bit_depth);
-#endif
-
-#ifdef PNG_WRITE_SWAP_SUPPORTED
- if (png_ptr->transformations & PNG_SWAP_BYTES)
- png_do_swap(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_WRITE_SHIFT_SUPPORTED
- if (png_ptr->transformations & PNG_SHIFT)
- png_do_shift(&(png_ptr->row_info), png_ptr->row_buf + 1,
- &(png_ptr->shift));
-#endif
-
-#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED
- if (png_ptr->transformations & PNG_SWAP_ALPHA)
- png_do_write_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
- if (png_ptr->transformations & PNG_INVERT_ALPHA)
- png_do_write_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_WRITE_BGR_SUPPORTED
- if (png_ptr->transformations & PNG_BGR)
- png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#ifdef PNG_WRITE_INVERT_SUPPORTED
- if (png_ptr->transformations & PNG_INVERT_MONO)
- png_do_invert(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-}
-
-#ifdef PNG_WRITE_PACK_SUPPORTED
-/* Pack pixels into bytes. Pass the true bit depth in bit_depth. The
- * row_info bit depth should be 8 (one pixel per byte). The channels
- * should be 1 (this only happens on grayscale and paletted images).
- */
-void /* PRIVATE */
-png_do_pack(png_row_infop row_info, png_bytep row, png_uint_32 bit_depth)
-{
- png_debug(1, "in png_do_pack");
-
- if (row_info->bit_depth == 8 &&
- row_info->channels == 1)
- {
- switch ((int)bit_depth)
- {
- case 1:
- {
- png_bytep sp, dp;
- int mask, v;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- sp = row;
- dp = row;
- mask = 0x80;
- v = 0;
-
- for (i = 0; i < row_width; i++)
- {
- if (*sp != 0)
- v |= mask;
-
- sp++;
-
- if (mask > 1)
- mask >>= 1;
-
- else
- {
- mask = 0x80;
- *dp = (png_byte)v;
- dp++;
- v = 0;
- }
- }
-
- if (mask != 0x80)
- *dp = (png_byte)v;
-
- break;
- }
-
- case 2:
- {
- png_bytep sp, dp;
- int shift, v;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- sp = row;
- dp = row;
- shift = 6;
- v = 0;
-
- for (i = 0; i < row_width; i++)
- {
- png_byte value;
-
- value = (png_byte)(*sp & 0x03);
- v |= (value << shift);
-
- if (shift == 0)
- {
- shift = 6;
- *dp = (png_byte)v;
- dp++;
- v = 0;
- }
-
- else
- shift -= 2;
-
- sp++;
- }
-
- if (shift != 6)
- *dp = (png_byte)v;
-
- break;
- }
-
- case 4:
- {
- png_bytep sp, dp;
- int shift, v;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- sp = row;
- dp = row;
- shift = 4;
- v = 0;
-
- for (i = 0; i < row_width; i++)
- {
- png_byte value;
-
- value = (png_byte)(*sp & 0x0f);
- v |= (value << shift);
-
- if (shift == 0)
- {
- shift = 4;
- *dp = (png_byte)v;
- dp++;
- v = 0;
- }
-
- else
- shift -= 4;
-
- sp++;
- }
-
- if (shift != 4)
- *dp = (png_byte)v;
-
- break;
- }
-
- default:
- break;
- }
-
- row_info->bit_depth = (png_byte)bit_depth;
- row_info->pixel_depth = (png_byte)(bit_depth * row_info->channels);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth,
- row_info->width);
- }
-}
-#endif
-
-#ifdef PNG_WRITE_SHIFT_SUPPORTED
-/* Shift pixel values to take advantage of whole range. Pass the
- * true number of bits in bit_depth. The row should be packed
- * according to row_info->bit_depth. Thus, if you had a row of
- * bit depth 4, but the pixels only had values from 0 to 7, you
- * would pass 3 as bit_depth, and this routine would translate the
- * data to 0 to 15.
- */
-void /* PRIVATE */
-png_do_shift(png_row_infop row_info, png_bytep row,
- png_const_color_8p bit_depth)
-{
- png_debug(1, "in png_do_shift");
-
- if (row_info->color_type != PNG_COLOR_TYPE_PALETTE)
- {
- int shift_start[4], shift_dec[4];
- int channels = 0;
-
- if (row_info->color_type & PNG_COLOR_MASK_COLOR)
- {
- shift_start[channels] = row_info->bit_depth - bit_depth->red;
- shift_dec[channels] = bit_depth->red;
- channels++;
-
- shift_start[channels] = row_info->bit_depth - bit_depth->green;
- shift_dec[channels] = bit_depth->green;
- channels++;
-
- shift_start[channels] = row_info->bit_depth - bit_depth->blue;
- shift_dec[channels] = bit_depth->blue;
- channels++;
- }
-
- else
- {
- shift_start[channels] = row_info->bit_depth - bit_depth->gray;
- shift_dec[channels] = bit_depth->gray;
- channels++;
- }
-
- if (row_info->color_type & PNG_COLOR_MASK_ALPHA)
- {
- shift_start[channels] = row_info->bit_depth - bit_depth->alpha;
- shift_dec[channels] = bit_depth->alpha;
- channels++;
- }
-
- /* With low row depths, could only be grayscale, so one channel */
- if (row_info->bit_depth < 8)
- {
- png_bytep bp = row;
- png_size_t i;
- png_byte mask;
- png_size_t row_bytes = row_info->rowbytes;
-
- if (bit_depth->gray == 1 && row_info->bit_depth == 2)
- mask = 0x55;
-
- else if (row_info->bit_depth == 4 && bit_depth->gray == 3)
- mask = 0x11;
-
- else
- mask = 0xff;
-
- for (i = 0; i < row_bytes; i++, bp++)
- {
- png_uint_16 v;
- int j;
-
- v = *bp;
- *bp = 0;
-
- for (j = shift_start[0]; j > -shift_dec[0]; j -= shift_dec[0])
- {
- if (j > 0)
- *bp |= (png_byte)((v << j) & 0xff);
-
- else
- *bp |= (png_byte)((v >> (-j)) & mask);
- }
- }
- }
-
- else if (row_info->bit_depth == 8)
- {
- png_bytep bp = row;
- png_uint_32 i;
- png_uint_32 istop = channels * row_info->width;
-
- for (i = 0; i < istop; i++, bp++)
- {
-
- png_uint_16 v;
- int j;
- int c = (int)(i%channels);
-
- v = *bp;
- *bp = 0;
-
- for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c])
- {
- if (j > 0)
- *bp |= (png_byte)((v << j) & 0xff);
-
- else
- *bp |= (png_byte)((v >> (-j)) & 0xff);
- }
- }
- }
-
- else
- {
- png_bytep bp;
- png_uint_32 i;
- png_uint_32 istop = channels * row_info->width;
-
- for (bp = row, i = 0; i < istop; i++)
- {
- int c = (int)(i%channels);
- png_uint_16 value, v;
- int j;
-
- v = (png_uint_16)(((png_uint_16)(*bp) << 8) + *(bp + 1));
- value = 0;
-
- for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c])
- {
- if (j > 0)
- value |= (png_uint_16)((v << j) & (png_uint_16)0xffff);
-
- else
- value |= (png_uint_16)((v >> (-j)) & (png_uint_16)0xffff);
- }
- *bp++ = (png_byte)(value >> 8);
- *bp++ = (png_byte)(value & 0xff);
- }
- }
- }
-}
-#endif
-
-#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED
-void /* PRIVATE */
-png_do_write_swap_alpha(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_write_swap_alpha");
-
- {
- if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- if (row_info->bit_depth == 8)
- {
- /* This converts from ARGB to RGBA */
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- for (i = 0, sp = dp = row; i < row_width; i++)
- {
- png_byte save = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = save;
- }
- }
-
-#ifdef PNG_WRITE_16BIT_SUPPORTED
- else
- {
- /* This converts from AARRGGBB to RRGGBBAA */
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- for (i = 0, sp = dp = row; i < row_width; i++)
- {
- png_byte save[2];
- save[0] = *(sp++);
- save[1] = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = save[0];
- *(dp++) = save[1];
- }
- }
-#endif /* PNG_WRITE_16BIT_SUPPORTED */
- }
-
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- if (row_info->bit_depth == 8)
- {
- /* This converts from AG to GA */
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- for (i = 0, sp = dp = row; i < row_width; i++)
- {
- png_byte save = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = save;
- }
- }
-
-#ifdef PNG_WRITE_16BIT_SUPPORTED
- else
- {
- /* This converts from AAGG to GGAA */
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- for (i = 0, sp = dp = row; i < row_width; i++)
- {
- png_byte save[2];
- save[0] = *(sp++);
- save[1] = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = save[0];
- *(dp++) = save[1];
- }
- }
-#endif /* PNG_WRITE_16BIT_SUPPORTED */
- }
- }
-}
-#endif
-
-#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
-void /* PRIVATE */
-png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_write_invert_alpha");
-
- {
- if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- if (row_info->bit_depth == 8)
- {
- /* This inverts the alpha channel in RGBA */
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- for (i = 0, sp = dp = row; i < row_width; i++)
- {
- /* Does nothing
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- */
- sp+=3; dp = sp;
- *(dp++) = (png_byte)(255 - *(sp++));
- }
- }
-
-#ifdef PNG_WRITE_16BIT_SUPPORTED
- else
- {
- /* This inverts the alpha channel in RRGGBBAA */
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- for (i = 0, sp = dp = row; i < row_width; i++)
- {
- /* Does nothing
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- */
- sp+=6; dp = sp;
- *(dp++) = (png_byte)(255 - *(sp++));
- *(dp++) = (png_byte)(255 - *(sp++));
- }
- }
-#endif /* PNG_WRITE_16BIT_SUPPORTED */
- }
-
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- if (row_info->bit_depth == 8)
- {
- /* This inverts the alpha channel in GA */
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- for (i = 0, sp = dp = row; i < row_width; i++)
- {
- *(dp++) = *(sp++);
- *(dp++) = (png_byte)(255 - *(sp++));
- }
- }
-
-#ifdef PNG_WRITE_16BIT_SUPPORTED
- else
- {
- /* This inverts the alpha channel in GGAA */
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- for (i = 0, sp = dp = row; i < row_width; i++)
- {
- /* Does nothing
- *(dp++) = *(sp++);
- *(dp++) = *(sp++);
- */
- sp+=2; dp = sp;
- *(dp++) = (png_byte)(255 - *(sp++));
- *(dp++) = (png_byte)(255 - *(sp++));
- }
- }
-#endif /* PNG_WRITE_16BIT_SUPPORTED */
- }
- }
-}
-#endif
-
-#ifdef PNG_MNG_FEATURES_SUPPORTED
-/* Undoes intrapixel differencing */
-void /* PRIVATE */
-png_do_write_intrapixel(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_write_intrapixel");
-
- if ((row_info->color_type & PNG_COLOR_MASK_COLOR))
- {
- int bytes_per_pixel;
- png_uint_32 row_width = row_info->width;
- if (row_info->bit_depth == 8)
- {
- png_bytep rp;
- png_uint_32 i;
-
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- bytes_per_pixel = 3;
-
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- bytes_per_pixel = 4;
-
- else
- return;
-
- for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
- {
- *(rp) = (png_byte)((*rp - *(rp + 1)) & 0xff);
- *(rp + 2) = (png_byte)((*(rp + 2) - *(rp + 1)) & 0xff);
- }
- }
-
-#ifdef PNG_WRITE_16BIT_SUPPORTED
- else if (row_info->bit_depth == 16)
- {
- png_bytep rp;
- png_uint_32 i;
-
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- bytes_per_pixel = 6;
-
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- bytes_per_pixel = 8;
-
- else
- return;
-
- for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
- {
- png_uint_32 s0 = (*(rp ) << 8) | *(rp + 1);
- png_uint_32 s1 = (*(rp + 2) << 8) | *(rp + 3);
- png_uint_32 s2 = (*(rp + 4) << 8) | *(rp + 5);
- png_uint_32 red = (png_uint_32)((s0 - s1) & 0xffffL);
- png_uint_32 blue = (png_uint_32)((s2 - s1) & 0xffffL);
- *(rp ) = (png_byte)((red >> 8) & 0xff);
- *(rp + 1) = (png_byte)(red & 0xff);
- *(rp + 4) = (png_byte)((blue >> 8) & 0xff);
- *(rp + 5) = (png_byte)(blue & 0xff);
- }
- }
-#endif /* PNG_WRITE_16BIT_SUPPORTED */
- }
-}
-#endif /* PNG_MNG_FEATURES_SUPPORTED */
-#endif /* PNG_WRITE_SUPPORTED */
+
+/* pngwtran.c - transforms the data in a row for PNG writers
+ *
+ * Last changed in libpng 1.2.43 [February 25, 2010]
+ * Copyright (c) 1998-2010 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#ifdef PNG_WRITE_SUPPORTED
+
+/* Transform the data according to the user's wishes. The order of
+ * transformations is significant.
+ */
+void /* PRIVATE */
+png_do_write_transformations(png_structp png_ptr)
+{
+ png_debug(1, "in png_do_write_transformations");
+
+ if (png_ptr == NULL)
+ return;
+
+#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
+ if (png_ptr->transformations & PNG_USER_TRANSFORM)
+ if (png_ptr->write_user_transform_fn != NULL)
+ (*(png_ptr->write_user_transform_fn)) /* User write transform
+ function */
+ (png_ptr, /* png_ptr */
+ &(png_ptr->row_info), /* row_info: */
+ /* png_uint_32 width; width of row */
+ /* png_uint_32 rowbytes; number of bytes in row */
+ /* png_byte color_type; color type of pixels */
+ /* png_byte bit_depth; bit depth of samples */
+ /* png_byte channels; number of channels (1-4) */
+ /* png_byte pixel_depth; bits per pixel (depth*channels) */
+ png_ptr->row_buf + 1); /* start of pixel data for row */
+#endif
+#ifdef PNG_WRITE_FILLER_SUPPORTED
+ if (png_ptr->transformations & PNG_FILLER)
+ png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ png_ptr->flags);
+#endif
+#ifdef PNG_WRITE_PACKSWAP_SUPPORTED
+ if (png_ptr->transformations & PNG_PACKSWAP)
+ png_do_packswap(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+#ifdef PNG_WRITE_PACK_SUPPORTED
+ if (png_ptr->transformations & PNG_PACK)
+ png_do_pack(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ (png_uint_32)png_ptr->bit_depth);
+#endif
+#ifdef PNG_WRITE_SWAP_SUPPORTED
+ if (png_ptr->transformations & PNG_SWAP_BYTES)
+ png_do_swap(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+#ifdef PNG_WRITE_SHIFT_SUPPORTED
+ if (png_ptr->transformations & PNG_SHIFT)
+ png_do_shift(&(png_ptr->row_info), png_ptr->row_buf + 1,
+ &(png_ptr->shift));
+#endif
+#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED
+ if (png_ptr->transformations & PNG_SWAP_ALPHA)
+ png_do_write_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
+ if (png_ptr->transformations & PNG_INVERT_ALPHA)
+ png_do_write_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+#ifdef PNG_WRITE_BGR_SUPPORTED
+ if (png_ptr->transformations & PNG_BGR)
+ png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+#ifdef PNG_WRITE_INVERT_SUPPORTED
+ if (png_ptr->transformations & PNG_INVERT_MONO)
+ png_do_invert(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
+}
+
+#ifdef PNG_WRITE_PACK_SUPPORTED
+/* Pack pixels into bytes. Pass the true bit depth in bit_depth. The
+ * row_info bit depth should be 8 (one pixel per byte). The channels
+ * should be 1 (this only happens on grayscale and paletted images).
+ */
+void /* PRIVATE */
+png_do_pack(png_row_infop row_info, png_bytep row, png_uint_32 bit_depth)
+{
+ png_debug(1, "in png_do_pack");
+
+ if (row_info->bit_depth == 8 &&
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ row_info->channels == 1)
+ {
+ switch ((int)bit_depth)
+ {
+ case 1:
+ {
+ png_bytep sp, dp;
+ int mask, v;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ sp = row;
+ dp = row;
+ mask = 0x80;
+ v = 0;
+
+ for (i = 0; i < row_width; i++)
+ {
+ if (*sp != 0)
+ v |= mask;
+ sp++;
+ if (mask > 1)
+ mask >>= 1;
+ else
+ {
+ mask = 0x80;
+ *dp = (png_byte)v;
+ dp++;
+ v = 0;
+ }
+ }
+ if (mask != 0x80)
+ *dp = (png_byte)v;
+ break;
+ }
+ case 2:
+ {
+ png_bytep sp, dp;
+ int shift, v;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ sp = row;
+ dp = row;
+ shift = 6;
+ v = 0;
+ for (i = 0; i < row_width; i++)
+ {
+ png_byte value;
+
+ value = (png_byte)(*sp & 0x03);
+ v |= (value << shift);
+ if (shift == 0)
+ {
+ shift = 6;
+ *dp = (png_byte)v;
+ dp++;
+ v = 0;
+ }
+ else
+ shift -= 2;
+ sp++;
+ }
+ if (shift != 6)
+ *dp = (png_byte)v;
+ break;
+ }
+ case 4:
+ {
+ png_bytep sp, dp;
+ int shift, v;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ sp = row;
+ dp = row;
+ shift = 4;
+ v = 0;
+ for (i = 0; i < row_width; i++)
+ {
+ png_byte value;
+
+ value = (png_byte)(*sp & 0x0f);
+ v |= (value << shift);
+
+ if (shift == 0)
+ {
+ shift = 4;
+ *dp = (png_byte)v;
+ dp++;
+ v = 0;
+ }
+ else
+ shift -= 4;
+
+ sp++;
+ }
+ if (shift != 4)
+ *dp = (png_byte)v;
+ break;
+ }
+ }
+ row_info->bit_depth = (png_byte)bit_depth;
+ row_info->pixel_depth = (png_byte)(bit_depth * row_info->channels);
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth,
+ row_info->width);
+ }
+}
+#endif
+
+#ifdef PNG_WRITE_SHIFT_SUPPORTED
+/* Shift pixel values to take advantage of whole range. Pass the
+ * true number of bits in bit_depth. The row should be packed
+ * according to row_info->bit_depth. Thus, if you had a row of
+ * bit depth 4, but the pixels only had values from 0 to 7, you
+ * would pass 3 as bit_depth, and this routine would translate the
+ * data to 0 to 15.
+ */
+void /* PRIVATE */
+png_do_shift(png_row_infop row_info, png_bytep row, png_color_8p bit_depth)
+{
+ png_debug(1, "in png_do_shift");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL &&
+#else
+ if (
+#endif
+ row_info->color_type != PNG_COLOR_TYPE_PALETTE)
+ {
+ int shift_start[4], shift_dec[4];
+ int channels = 0;
+
+ if (row_info->color_type & PNG_COLOR_MASK_COLOR)
+ {
+ shift_start[channels] = row_info->bit_depth - bit_depth->red;
+ shift_dec[channels] = bit_depth->red;
+ channels++;
+ shift_start[channels] = row_info->bit_depth - bit_depth->green;
+ shift_dec[channels] = bit_depth->green;
+ channels++;
+ shift_start[channels] = row_info->bit_depth - bit_depth->blue;
+ shift_dec[channels] = bit_depth->blue;
+ channels++;
+ }
+ else
+ {
+ shift_start[channels] = row_info->bit_depth - bit_depth->gray;
+ shift_dec[channels] = bit_depth->gray;
+ channels++;
+ }
+ if (row_info->color_type & PNG_COLOR_MASK_ALPHA)
+ {
+ shift_start[channels] = row_info->bit_depth - bit_depth->alpha;
+ shift_dec[channels] = bit_depth->alpha;
+ channels++;
+ }
+
+ /* With low row depths, could only be grayscale, so one channel */
+ if (row_info->bit_depth < 8)
+ {
+ png_bytep bp = row;
+ png_uint_32 i;
+ png_byte mask;
+ png_uint_32 row_bytes = row_info->rowbytes;
+
+ if (bit_depth->gray == 1 && row_info->bit_depth == 2)
+ mask = 0x55;
+ else if (row_info->bit_depth == 4 && bit_depth->gray == 3)
+ mask = 0x11;
+ else
+ mask = 0xff;
+
+ for (i = 0; i < row_bytes; i++, bp++)
+ {
+ png_uint_16 v;
+ int j;
+
+ v = *bp;
+ *bp = 0;
+ for (j = shift_start[0]; j > -shift_dec[0]; j -= shift_dec[0])
+ {
+ if (j > 0)
+ *bp |= (png_byte)((v << j) & 0xff);
+ else
+ *bp |= (png_byte)((v >> (-j)) & mask);
+ }
+ }
+ }
+ else if (row_info->bit_depth == 8)
+ {
+ png_bytep bp = row;
+ png_uint_32 i;
+ png_uint_32 istop = channels * row_info->width;
+
+ for (i = 0; i < istop; i++, bp++)
+ {
+
+ png_uint_16 v;
+ int j;
+ int c = (int)(i%channels);
+
+ v = *bp;
+ *bp = 0;
+ for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c])
+ {
+ if (j > 0)
+ *bp |= (png_byte)((v << j) & 0xff);
+ else
+ *bp |= (png_byte)((v >> (-j)) & 0xff);
+ }
+ }
+ }
+ else
+ {
+ png_bytep bp;
+ png_uint_32 i;
+ png_uint_32 istop = channels * row_info->width;
+
+ for (bp = row, i = 0; i < istop; i++)
+ {
+ int c = (int)(i%channels);
+ png_uint_16 value, v;
+ int j;
+
+ v = (png_uint_16)(((png_uint_16)(*bp) << 8) + *(bp + 1));
+ value = 0;
+ for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c])
+ {
+ if (j > 0)
+ value |= (png_uint_16)((v << j) & (png_uint_16)0xffff);
+ else
+ value |= (png_uint_16)((v >> (-j)) & (png_uint_16)0xffff);
+ }
+ *bp++ = (png_byte)(value >> 8);
+ *bp++ = (png_byte)(value & 0xff);
+ }
+ }
+ }
+}
+#endif
+
+#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED
+void /* PRIVATE */
+png_do_write_swap_alpha(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_write_swap_alpha");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL)
+#endif
+ {
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ /* This converts from ARGB to RGBA */
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+ for (i = 0, sp = dp = row; i < row_width; i++)
+ {
+ png_byte save = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = save;
+ }
+ }
+ /* This converts from AARRGGBB to RRGGBBAA */
+ else
+ {
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ for (i = 0, sp = dp = row; i < row_width; i++)
+ {
+ png_byte save[2];
+ save[0] = *(sp++);
+ save[1] = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = save[0];
+ *(dp++) = save[1];
+ }
+ }
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ {
+ /* This converts from AG to GA */
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ for (i = 0, sp = dp = row; i < row_width; i++)
+ {
+ png_byte save = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = save;
+ }
+ }
+ /* This converts from AAGG to GGAA */
+ else
+ {
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ for (i = 0, sp = dp = row; i < row_width; i++)
+ {
+ png_byte save[2];
+ save[0] = *(sp++);
+ save[1] = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = save[0];
+ *(dp++) = save[1];
+ }
+ }
+ }
+ }
+}
+#endif
+
+#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
+void /* PRIVATE */
+png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_write_invert_alpha");
+
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL)
+#endif
+ {
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ /* This inverts the alpha channel in RGBA */
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+ for (i = 0, sp = dp = row; i < row_width; i++)
+ {
+ /* Does nothing
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ */
+ sp+=3; dp = sp;
+ *(dp++) = (png_byte)(255 - *(sp++));
+ }
+ }
+ /* This inverts the alpha channel in RRGGBBAA */
+ else
+ {
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ for (i = 0, sp = dp = row; i < row_width; i++)
+ {
+ /* Does nothing
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ */
+ sp+=6; dp = sp;
+ *(dp++) = (png_byte)(255 - *(sp++));
+ *(dp++) = (png_byte)(255 - *(sp++));
+ }
+ }
+ }
+ else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ {
+ /* This inverts the alpha channel in GA */
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ for (i = 0, sp = dp = row; i < row_width; i++)
+ {
+ *(dp++) = *(sp++);
+ *(dp++) = (png_byte)(255 - *(sp++));
+ }
+ }
+ /* This inverts the alpha channel in GGAA */
+ else
+ {
+ png_bytep sp, dp;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ for (i = 0, sp = dp = row; i < row_width; i++)
+ {
+ /* Does nothing
+ *(dp++) = *(sp++);
+ *(dp++) = *(sp++);
+ */
+ sp+=2; dp = sp;
+ *(dp++) = (png_byte)(255 - *(sp++));
+ *(dp++) = (png_byte)(255 - *(sp++));
+ }
+ }
+ }
+ }
+}
+#endif
+
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+/* Undoes intrapixel differencing */
+void /* PRIVATE */
+png_do_write_intrapixel(png_row_infop row_info, png_bytep row)
+{
+ png_debug(1, "in png_do_write_intrapixel");
+
+ if (
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ row != NULL && row_info != NULL &&
+#endif
+ (row_info->color_type & PNG_COLOR_MASK_COLOR))
+ {
+ int bytes_per_pixel;
+ png_uint_32 row_width = row_info->width;
+ if (row_info->bit_depth == 8)
+ {
+ png_bytep rp;
+ png_uint_32 i;
+
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB)
+ bytes_per_pixel = 3;
+ else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ bytes_per_pixel = 4;
+ else
+ return;
+
+ for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
+ {
+ *(rp) = (png_byte)((*rp - *(rp+1))&0xff);
+ *(rp+2) = (png_byte)((*(rp+2) - *(rp+1))&0xff);
+ }
+ }
+ else if (row_info->bit_depth == 16)
+ {
+ png_bytep rp;
+ png_uint_32 i;
+
+ if (row_info->color_type == PNG_COLOR_TYPE_RGB)
+ bytes_per_pixel = 6;
+ else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ bytes_per_pixel = 8;
+ else
+ return;
+
+ for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
+ {
+ png_uint_32 s0 = (*(rp ) << 8) | *(rp+1);
+ png_uint_32 s1 = (*(rp+2) << 8) | *(rp+3);
+ png_uint_32 s2 = (*(rp+4) << 8) | *(rp+5);
+ png_uint_32 red = (png_uint_32)((s0 - s1) & 0xffffL);
+ png_uint_32 blue = (png_uint_32)((s2 - s1) & 0xffffL);
+ *(rp ) = (png_byte)((red >> 8) & 0xff);
+ *(rp+1) = (png_byte)(red & 0xff);
+ *(rp+4) = (png_byte)((blue >> 8) & 0xff);
+ *(rp+5) = (png_byte)(blue & 0xff);
+ }
+ }
+ }
+}
+#endif /* PNG_MNG_FEATURES_SUPPORTED */
+#endif /* PNG_WRITE_SUPPORTED */
diff --git a/Externals/libpng/pngwutil.c b/Externals/libpng/pngwutil.c
index 2c35785aa1..50568f5af7 100644
--- a/Externals/libpng/pngwutil.c
+++ b/Externals/libpng/pngwutil.c
@@ -1,2948 +1,2832 @@
-
-/* pngwutil.c - utilities to write a PNG file
- *
- * Last changed in libpng 1.5.0 [January 6, 2011]
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- */
-
-#include "pngpriv.h"
-
-#ifdef PNG_WRITE_SUPPORTED
-
-#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED
-/* Place a 32-bit number into a buffer in PNG byte order. We work
- * with unsigned numbers for convenience, although one supported
- * ancillary chunk uses signed (two's complement) numbers.
- */
-void PNGAPI
-png_save_uint_32(png_bytep buf, png_uint_32 i)
-{
- buf[0] = (png_byte)((i >> 24) & 0xff);
- buf[1] = (png_byte)((i >> 16) & 0xff);
- buf[2] = (png_byte)((i >> 8) & 0xff);
- buf[3] = (png_byte)(i & 0xff);
-}
-
-#ifdef PNG_SAVE_INT_32_SUPPORTED
-/* The png_save_int_32 function assumes integers are stored in two's
- * complement format. If this isn't the case, then this routine needs to
- * be modified to write data in two's complement format. Note that,
- * the following works correctly even if png_int_32 has more than 32 bits
- * (compare the more complex code required on read for sign extention.)
- */
-void PNGAPI
-png_save_int_32(png_bytep buf, png_int_32 i)
-{
- buf[0] = (png_byte)((i >> 24) & 0xff);
- buf[1] = (png_byte)((i >> 16) & 0xff);
- buf[2] = (png_byte)((i >> 8) & 0xff);
- buf[3] = (png_byte)(i & 0xff);
-}
-#endif
-
-/* Place a 16-bit number into a buffer in PNG byte order.
- * The parameter is declared unsigned int, not png_uint_16,
- * just to avoid potential problems on pre-ANSI C compilers.
- */
-void PNGAPI
-png_save_uint_16(png_bytep buf, unsigned int i)
-{
- buf[0] = (png_byte)((i >> 8) & 0xff);
- buf[1] = (png_byte)(i & 0xff);
-}
-#endif
-
-/* Simple function to write the signature. If we have already written
- * the magic bytes of the signature, or more likely, the PNG stream is
- * being embedded into another stream and doesn't need its own signature,
- * we should call png_set_sig_bytes() to tell libpng how many of the
- * bytes have already been written.
- */
-void PNGAPI
-png_write_sig(png_structp png_ptr)
-{
- png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
-
-#ifdef PNG_IO_STATE_SUPPORTED
- /* Inform the I/O callback that the signature is being written */
- png_ptr->io_state = PNG_IO_WRITING | PNG_IO_SIGNATURE;
-#endif
-
- /* Write the rest of the 8 byte signature */
- png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes],
- (png_size_t)(8 - png_ptr->sig_bytes));
-
- if (png_ptr->sig_bytes < 3)
- png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
-}
-
-/* Write a PNG chunk all at once. The type is an array of ASCII characters
- * representing the chunk name. The array must be at least 4 bytes in
- * length, and does not need to be null terminated. To be safe, pass the
- * pre-defined chunk names here, and if you need a new one, define it
- * where the others are defined. The length is the length of the data.
- * All the data must be present. If that is not possible, use the
- * png_write_chunk_start(), png_write_chunk_data(), and png_write_chunk_end()
- * functions instead.
- */
-void PNGAPI
-png_write_chunk(png_structp png_ptr, png_const_bytep chunk_name,
- png_const_bytep data, png_size_t length)
-{
- if (png_ptr == NULL)
- return;
-
- png_write_chunk_start(png_ptr, chunk_name, (png_uint_32)length);
- png_write_chunk_data(png_ptr, data, (png_size_t)length);
- png_write_chunk_end(png_ptr);
-}
-
-/* Write the start of a PNG chunk. The type is the chunk type.
- * The total_length is the sum of the lengths of all the data you will be
- * passing in png_write_chunk_data().
- */
-void PNGAPI
-png_write_chunk_start(png_structp png_ptr, png_const_bytep chunk_name,
- png_uint_32 length)
-{
- png_byte buf[8];
-
- png_debug2(0, "Writing %s chunk, length = %lu", chunk_name,
- (unsigned long)length);
-
- if (png_ptr == NULL)
- return;
-
-#ifdef PNG_IO_STATE_SUPPORTED
- /* Inform the I/O callback that the chunk header is being written.
- * PNG_IO_CHUNK_HDR requires a single I/O call.
- */
- png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_HDR;
-#endif
-
- /* Write the length and the chunk name */
- png_save_uint_32(buf, length);
- png_memcpy(buf + 4, chunk_name, 4);
- png_write_data(png_ptr, buf, (png_size_t)8);
-
- /* Put the chunk name into png_ptr->chunk_name */
- png_memcpy(png_ptr->chunk_name, chunk_name, 4);
-
- /* Reset the crc and run it over the chunk name */
- png_reset_crc(png_ptr);
-
- png_calculate_crc(png_ptr, chunk_name, 4);
-
-#ifdef PNG_IO_STATE_SUPPORTED
- /* Inform the I/O callback that chunk data will (possibly) be written.
- * PNG_IO_CHUNK_DATA does NOT require a specific number of I/O calls.
- */
- png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_DATA;
-#endif
-}
-
-/* Write the data of a PNG chunk started with png_write_chunk_start().
- * Note that multiple calls to this function are allowed, and that the
- * sum of the lengths from these calls *must* add up to the total_length
- * given to png_write_chunk_start().
- */
-void PNGAPI
-png_write_chunk_data(png_structp png_ptr, png_const_bytep data,
- png_size_t length)
-{
- /* Write the data, and run the CRC over it */
- if (png_ptr == NULL)
- return;
-
- if (data != NULL && length > 0)
- {
- png_write_data(png_ptr, data, length);
-
- /* Update the CRC after writing the data,
- * in case that the user I/O routine alters it.
- */
- png_calculate_crc(png_ptr, data, length);
- }
-}
-
-/* Finish a chunk started with png_write_chunk_start(). */
-void PNGAPI
-png_write_chunk_end(png_structp png_ptr)
-{
- png_byte buf[4];
-
- if (png_ptr == NULL) return;
-
-#ifdef PNG_IO_STATE_SUPPORTED
- /* Inform the I/O callback that the chunk CRC is being written.
- * PNG_IO_CHUNK_CRC requires a single I/O function call.
- */
- png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_CRC;
-#endif
-
- /* Write the crc in a single operation */
- png_save_uint_32(buf, png_ptr->crc);
-
- png_write_data(png_ptr, buf, (png_size_t)4);
-}
-
-#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_iCCP_SUPPORTED)
-/* This pair of functions encapsulates the operation of (a) compressing a
- * text string, and (b) issuing it later as a series of chunk data writes.
- * The compression_state structure is shared context for these functions
- * set up by the caller in order to make the whole mess thread-safe.
- */
-
-typedef struct
-{
- png_const_bytep input; /* The uncompressed input data */
- png_size_t input_len; /* Its length */
- int num_output_ptr; /* Number of output pointers used */
- int max_output_ptr; /* Size of output_ptr */
- png_bytep *output_ptr; /* Array of pointers to output */
-} compression_state;
-
-/* Compress given text into storage in the png_ptr structure */
-static int /* PRIVATE */
-png_text_compress(png_structp png_ptr,
- png_const_charp text, png_size_t text_len, int compression,
- compression_state *comp)
-{
- int ret;
-
- comp->num_output_ptr = 0;
- comp->max_output_ptr = 0;
- comp->output_ptr = NULL;
- comp->input = NULL;
- comp->input_len = 0;
-
- /* We may just want to pass the text right through */
- if (compression == PNG_TEXT_COMPRESSION_NONE)
- {
- comp->input = (png_const_bytep)text;
- comp->input_len = text_len;
- return((int)text_len);
- }
-
- if (compression >= PNG_TEXT_COMPRESSION_LAST)
- {
-#ifdef PNG_CONSOLE_IO_SUPPORTED
- char msg[50];
- png_snprintf(msg, 50, "Unknown compression type %d", compression);
- png_warning(png_ptr, msg);
-#else
- png_warning(png_ptr, "Unknown compression type");
-#endif
- }
-
- /* We can't write the chunk until we find out how much data we have,
- * which means we need to run the compressor first and save the
- * output. This shouldn't be a problem, as the vast majority of
- * comments should be reasonable, but we will set up an array of
- * malloc'd pointers to be sure.
- *
- * If we knew the application was well behaved, we could simplify this
- * greatly by assuming we can always malloc an output buffer large
- * enough to hold the compressed text ((1001 * text_len / 1000) + 12)
- * and malloc this directly. The only time this would be a bad idea is
- * if we can't malloc more than 64K and we have 64K of random input
- * data, or if the input string is incredibly large (although this
- * wouldn't cause a failure, just a slowdown due to swapping).
- */
-
- /* Set up the compression buffers */
- /* TODO: the following cast hides a potential overflow problem. */
- png_ptr->zstream.avail_in = (uInt)text_len;
- /* NOTE: assume zlib doesn't overwrite the input */
- png_ptr->zstream.next_in = (Bytef *)text;
- png_ptr->zstream.avail_out = png_ptr->zbuf_size;
- png_ptr->zstream.next_out = png_ptr->zbuf;
-
- /* This is the same compression loop as in png_write_row() */
- do
- {
- /* Compress the data */
- ret = deflate(&png_ptr->zstream, Z_NO_FLUSH);
-
- if (ret != Z_OK)
- {
- /* Error */
- if (png_ptr->zstream.msg != NULL)
- png_error(png_ptr, png_ptr->zstream.msg);
-
- else
- png_error(png_ptr, "zlib error");
- }
-
- /* Check to see if we need more room */
- if (!(png_ptr->zstream.avail_out))
- {
- /* Make sure the output array has room */
- if (comp->num_output_ptr >= comp->max_output_ptr)
- {
- int old_max;
-
- old_max = comp->max_output_ptr;
- comp->max_output_ptr = comp->num_output_ptr + 4;
- if (comp->output_ptr != NULL)
- {
- png_bytepp old_ptr;
-
- old_ptr = comp->output_ptr;
-
- comp->output_ptr = (png_bytepp)png_malloc(png_ptr,
- (png_alloc_size_t)
- (comp->max_output_ptr * png_sizeof(png_charpp)));
-
- png_memcpy(comp->output_ptr, old_ptr, old_max
- * png_sizeof(png_charp));
-
- png_free(png_ptr, old_ptr);
- }
- else
- comp->output_ptr = (png_bytepp)png_malloc(png_ptr,
- (png_alloc_size_t)
- (comp->max_output_ptr * png_sizeof(png_charp)));
- }
-
- /* Save the data */
- comp->output_ptr[comp->num_output_ptr] =
- (png_bytep)png_malloc(png_ptr,
- (png_alloc_size_t)png_ptr->zbuf_size);
-
- png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
- png_ptr->zbuf_size);
-
- comp->num_output_ptr++;
-
- /* and reset the buffer */
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
- png_ptr->zstream.next_out = png_ptr->zbuf;
- }
- /* Continue until we don't have any more to compress */
- } while (png_ptr->zstream.avail_in);
-
- /* Finish the compression */
- do
- {
- /* Tell zlib we are finished */
- ret = deflate(&png_ptr->zstream, Z_FINISH);
-
- if (ret == Z_OK)
- {
- /* Check to see if we need more room */
- if (!(png_ptr->zstream.avail_out))
- {
- /* Check to make sure our output array has room */
- if (comp->num_output_ptr >= comp->max_output_ptr)
- {
- int old_max;
-
- old_max = comp->max_output_ptr;
- comp->max_output_ptr = comp->num_output_ptr + 4;
- if (comp->output_ptr != NULL)
- {
- png_bytepp old_ptr;
-
- old_ptr = comp->output_ptr;
-
- /* This could be optimized to realloc() */
- comp->output_ptr = (png_bytepp)png_malloc(png_ptr,
- (png_alloc_size_t)(comp->max_output_ptr *
- png_sizeof(png_charp)));
-
- png_memcpy(comp->output_ptr, old_ptr,
- old_max * png_sizeof(png_charp));
-
- png_free(png_ptr, old_ptr);
- }
-
- else
- comp->output_ptr = (png_bytepp)png_malloc(png_ptr,
- (png_alloc_size_t)(comp->max_output_ptr *
- png_sizeof(png_charp)));
- }
-
- /* Save the data */
- comp->output_ptr[comp->num_output_ptr] =
- (png_bytep)png_malloc(png_ptr,
- (png_alloc_size_t)png_ptr->zbuf_size);
-
- png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
- png_ptr->zbuf_size);
-
- comp->num_output_ptr++;
-
- /* and reset the buffer pointers */
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
- png_ptr->zstream.next_out = png_ptr->zbuf;
- }
- }
- else if (ret != Z_STREAM_END)
- {
- /* We got an error */
- if (png_ptr->zstream.msg != NULL)
- png_error(png_ptr, png_ptr->zstream.msg);
-
- else
- png_error(png_ptr, "zlib error");
- }
- } while (ret != Z_STREAM_END);
-
- /* Text length is number of buffers plus last buffer */
- text_len = png_ptr->zbuf_size * comp->num_output_ptr;
-
- if (png_ptr->zstream.avail_out < png_ptr->zbuf_size)
- text_len += png_ptr->zbuf_size - (png_size_t)png_ptr->zstream.avail_out;
-
- return((int)text_len);
-}
-
-/* Ship the compressed text out via chunk writes */
-static void /* PRIVATE */
-png_write_compressed_data_out(png_structp png_ptr, compression_state *comp)
-{
- int i;
-
- /* Handle the no-compression case */
- if (comp->input)
- {
- png_write_chunk_data(png_ptr, comp->input, comp->input_len);
-
- return;
- }
-
- /* Write saved output buffers, if any */
- for (i = 0; i < comp->num_output_ptr; i++)
- {
- png_write_chunk_data(png_ptr, comp->output_ptr[i],
- (png_size_t)png_ptr->zbuf_size);
-
- png_free(png_ptr, comp->output_ptr[i]);
- }
-
- if (comp->max_output_ptr != 0)
- png_free(png_ptr, comp->output_ptr);
-
- /* Write anything left in zbuf */
- if (png_ptr->zstream.avail_out < (png_uint_32)png_ptr->zbuf_size)
- png_write_chunk_data(png_ptr, png_ptr->zbuf,
- (png_size_t)(png_ptr->zbuf_size - png_ptr->zstream.avail_out));
-
- /* Reset zlib for another zTXt/iTXt or image data */
- deflateReset(&png_ptr->zstream);
- png_ptr->zstream.data_type = Z_BINARY;
-}
-#endif
-
-/* Write the IHDR chunk, and update the png_struct with the necessary
- * information. Note that the rest of this code depends upon this
- * information being correct.
- */
-void /* PRIVATE */
-png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
- int bit_depth, int color_type, int compression_type, int filter_type,
- int interlace_type)
-{
- PNG_IHDR;
- int ret;
-
- png_byte buf[13]; /* Buffer to store the IHDR info */
-
- png_debug(1, "in png_write_IHDR");
-
- /* Check that we have valid input data from the application info */
- switch (color_type)
- {
- case PNG_COLOR_TYPE_GRAY:
- switch (bit_depth)
- {
- case 1:
- case 2:
- case 4:
- case 8:
-#ifdef PNG_WRITE_16BIT_SUPPORTED
- case 16:
-#endif
- png_ptr->channels = 1; break;
-
- default:
- png_error(png_ptr,
- "Invalid bit depth for grayscale image");
- }
- break;
-
- case PNG_COLOR_TYPE_RGB:
-#ifdef PNG_WRITE_16BIT_SUPPORTED
- if (bit_depth != 8 && bit_depth != 16)
-#else
- if (bit_depth != 8)
-#endif
- png_error(png_ptr, "Invalid bit depth for RGB image");
-
- png_ptr->channels = 3;
- break;
-
- case PNG_COLOR_TYPE_PALETTE:
- switch (bit_depth)
- {
- case 1:
- case 2:
- case 4:
- case 8:
- png_ptr->channels = 1;
- break;
-
- default:
- png_error(png_ptr, "Invalid bit depth for paletted image");
- }
- break;
-
- case PNG_COLOR_TYPE_GRAY_ALPHA:
- if (bit_depth != 8 && bit_depth != 16)
- png_error(png_ptr, "Invalid bit depth for grayscale+alpha image");
-
- png_ptr->channels = 2;
- break;
-
- case PNG_COLOR_TYPE_RGB_ALPHA:
-#ifdef PNG_WRITE_16BIT_SUPPORTED
- if (bit_depth != 8 && bit_depth != 16)
-#else
- if (bit_depth != 8)
-#endif
- png_error(png_ptr, "Invalid bit depth for RGBA image");
-
- png_ptr->channels = 4;
- break;
-
- default:
- png_error(png_ptr, "Invalid image color type specified");
- }
-
- if (compression_type != PNG_COMPRESSION_TYPE_BASE)
- {
- png_warning(png_ptr, "Invalid compression type specified");
- compression_type = PNG_COMPRESSION_TYPE_BASE;
- }
-
- /* Write filter_method 64 (intrapixel differencing) only if
- * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and
- * 2. Libpng did not write a PNG signature (this filter_method is only
- * used in PNG datastreams that are embedded in MNG datastreams) and
- * 3. The application called png_permit_mng_features with a mask that
- * included PNG_FLAG_MNG_FILTER_64 and
- * 4. The filter_method is 64 and
- * 5. The color_type is RGB or RGBA
- */
- if (
-#ifdef PNG_MNG_FEATURES_SUPPORTED
- !((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
- ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) &&
- (color_type == PNG_COLOR_TYPE_RGB ||
- color_type == PNG_COLOR_TYPE_RGB_ALPHA) &&
- (filter_type == PNG_INTRAPIXEL_DIFFERENCING)) &&
-#endif
- filter_type != PNG_FILTER_TYPE_BASE)
- {
- png_warning(png_ptr, "Invalid filter type specified");
- filter_type = PNG_FILTER_TYPE_BASE;
- }
-
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- if (interlace_type != PNG_INTERLACE_NONE &&
- interlace_type != PNG_INTERLACE_ADAM7)
- {
- png_warning(png_ptr, "Invalid interlace type specified");
- interlace_type = PNG_INTERLACE_ADAM7;
- }
-#else
- interlace_type=PNG_INTERLACE_NONE;
-#endif
-
- /* Save the relevent information */
- png_ptr->bit_depth = (png_byte)bit_depth;
- png_ptr->color_type = (png_byte)color_type;
- png_ptr->interlaced = (png_byte)interlace_type;
-#ifdef PNG_MNG_FEATURES_SUPPORTED
- png_ptr->filter_type = (png_byte)filter_type;
-#endif
- png_ptr->compression_type = (png_byte)compression_type;
- png_ptr->width = width;
- png_ptr->height = height;
-
- png_ptr->pixel_depth = (png_byte)(bit_depth * png_ptr->channels);
- png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width);
- /* Set the usr info, so any transformations can modify it */
- png_ptr->usr_width = png_ptr->width;
- png_ptr->usr_bit_depth = png_ptr->bit_depth;
- png_ptr->usr_channels = png_ptr->channels;
-
- /* Pack the header information into the buffer */
- png_save_uint_32(buf, width);
- png_save_uint_32(buf + 4, height);
- buf[8] = (png_byte)bit_depth;
- buf[9] = (png_byte)color_type;
- buf[10] = (png_byte)compression_type;
- buf[11] = (png_byte)filter_type;
- buf[12] = (png_byte)interlace_type;
-
- /* Write the chunk */
- png_write_chunk(png_ptr, png_IHDR, buf, (png_size_t)13);
-
- /* Initialize zlib with PNG info */
- png_ptr->zstream.zalloc = png_zalloc;
- png_ptr->zstream.zfree = png_zfree;
- png_ptr->zstream.opaque = (voidpf)png_ptr;
-
- if (!(png_ptr->do_filter))
- {
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE ||
- png_ptr->bit_depth < 8)
- png_ptr->do_filter = PNG_FILTER_NONE;
-
- else
- png_ptr->do_filter = PNG_ALL_FILTERS;
- }
-
- if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_STRATEGY))
- {
- if (png_ptr->do_filter != PNG_FILTER_NONE)
- png_ptr->zlib_strategy = Z_FILTERED;
-
- else
- png_ptr->zlib_strategy = Z_DEFAULT_STRATEGY;
- }
-
- if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_LEVEL))
- png_ptr->zlib_level = Z_DEFAULT_COMPRESSION;
-
- if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL))
- png_ptr->zlib_mem_level = 8;
-
- if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS))
- png_ptr->zlib_window_bits = 15;
-
- if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_METHOD))
- png_ptr->zlib_method = 8;
-
- ret = deflateInit2(&png_ptr->zstream, png_ptr->zlib_level,
- png_ptr->zlib_method, png_ptr->zlib_window_bits,
- png_ptr->zlib_mem_level, png_ptr->zlib_strategy);
-
- if (ret != Z_OK)
- {
- if (ret == Z_VERSION_ERROR)
- png_error(png_ptr,
- "zlib failed to initialize compressor -- version error");
-
- if (ret == Z_STREAM_ERROR)
- png_error(png_ptr,
- "zlib failed to initialize compressor -- stream error");
-
- if (ret == Z_MEM_ERROR)
- png_error(png_ptr,
- "zlib failed to initialize compressor -- mem error");
-
- png_error(png_ptr, "zlib failed to initialize compressor");
- }
-
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
- /* libpng is not interested in zstream.data_type, so set it
- * to a predefined value, to avoid its evaluation inside zlib
- */
- png_ptr->zstream.data_type = Z_BINARY;
-
- png_ptr->mode = PNG_HAVE_IHDR;
-}
-
-/* Write the palette. We are careful not to trust png_color to be in the
- * correct order for PNG, so people can redefine it to any convenient
- * structure.
- */
-void /* PRIVATE */
-png_write_PLTE(png_structp png_ptr, png_const_colorp palette,
- png_uint_32 num_pal)
-{
- PNG_PLTE;
- png_uint_32 i;
- png_const_colorp pal_ptr;
- png_byte buf[3];
-
- png_debug(1, "in png_write_PLTE");
-
- if ((
-#ifdef PNG_MNG_FEATURES_SUPPORTED
- !(png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) &&
-#endif
- num_pal == 0) || num_pal > 256)
- {
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_error(png_ptr, "Invalid number of colors in palette");
- }
-
- else
- {
- png_warning(png_ptr, "Invalid number of colors in palette");
- return;
- }
- }
-
- if (!(png_ptr->color_type&PNG_COLOR_MASK_COLOR))
- {
- png_warning(png_ptr,
- "Ignoring request to write a PLTE chunk in grayscale PNG");
-
- return;
- }
-
- png_ptr->num_palette = (png_uint_16)num_pal;
- png_debug1(3, "num_palette = %d", png_ptr->num_palette);
-
- png_write_chunk_start(png_ptr, png_PLTE, (png_uint_32)(num_pal * 3));
-#ifdef PNG_POINTER_INDEXING_SUPPORTED
-
- for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++)
- {
- buf[0] = pal_ptr->red;
- buf[1] = pal_ptr->green;
- buf[2] = pal_ptr->blue;
- png_write_chunk_data(png_ptr, buf, (png_size_t)3);
- }
-
-#else
- /* This is a little slower but some buggy compilers need to do this
- * instead
- */
- pal_ptr=palette;
-
- for (i = 0; i < num_pal; i++)
- {
- buf[0] = pal_ptr[i].red;
- buf[1] = pal_ptr[i].green;
- buf[2] = pal_ptr[i].blue;
- png_write_chunk_data(png_ptr, buf, (png_size_t)3);
- }
-
-#endif
- png_write_chunk_end(png_ptr);
- png_ptr->mode |= PNG_HAVE_PLTE;
-}
-
-/* Write an IDAT chunk */
-void /* PRIVATE */
-png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length)
-{
- PNG_IDAT;
-
- png_debug(1, "in png_write_IDAT");
-
- /* Optimize the CMF field in the zlib stream. */
- /* This hack of the zlib stream is compliant to the stream specification. */
- if (!(png_ptr->mode & PNG_HAVE_IDAT) &&
- png_ptr->compression_type == PNG_COMPRESSION_TYPE_BASE)
- {
- unsigned int z_cmf = data[0]; /* zlib compression method and flags */
- if ((z_cmf & 0x0f) == 8 && (z_cmf & 0xf0) <= 0x70)
- {
- /* Avoid memory underflows and multiplication overflows.
- *
- * The conditions below are practically always satisfied;
- * however, they still must be checked.
- */
- if (length >= 2 &&
- png_ptr->height < 16384 && png_ptr->width < 16384)
- {
- png_uint_32 uncompressed_idat_size = png_ptr->height *
- ((png_ptr->width *
- png_ptr->channels * png_ptr->bit_depth + 15) >> 3);
- unsigned int z_cinfo = z_cmf >> 4;
- unsigned int half_z_window_size = 1 << (z_cinfo + 7);
- while (uncompressed_idat_size <= half_z_window_size &&
- half_z_window_size >= 256)
- {
- z_cinfo--;
- half_z_window_size >>= 1;
- }
-
- z_cmf = (z_cmf & 0x0f) | (z_cinfo << 4);
-
- if (data[0] != z_cmf)
- {
- int tmp;
- data[0] = (png_byte)z_cmf;
- tmp = data[1] & 0xe0;
- tmp += 0x1f - ((z_cmf << 8) + tmp) % 0x1f;
- data[1] = (png_byte)tmp;
- }
- }
- }
-
- else
- png_error(png_ptr,
- "Invalid zlib compression method or flags in IDAT");
- }
-
- png_write_chunk(png_ptr, png_IDAT, data, length);
- png_ptr->mode |= PNG_HAVE_IDAT;
-}
-
-/* Write an IEND chunk */
-void /* PRIVATE */
-png_write_IEND(png_structp png_ptr)
-{
- PNG_IEND;
-
- png_debug(1, "in png_write_IEND");
-
- png_write_chunk(png_ptr, png_IEND, NULL, (png_size_t)0);
- png_ptr->mode |= PNG_HAVE_IEND;
-}
-
-#ifdef PNG_WRITE_gAMA_SUPPORTED
-/* Write a gAMA chunk */
-void /* PRIVATE */
-png_write_gAMA_fixed(png_structp png_ptr, png_fixed_point file_gamma)
-{
- PNG_gAMA;
- png_byte buf[4];
-
- png_debug(1, "in png_write_gAMA");
-
- /* file_gamma is saved in 1/100,000ths */
- png_save_uint_32(buf, (png_uint_32)file_gamma);
- png_write_chunk(png_ptr, png_gAMA, buf, (png_size_t)4);
-}
-#endif
-
-#ifdef PNG_WRITE_sRGB_SUPPORTED
-/* Write a sRGB chunk */
-void /* PRIVATE */
-png_write_sRGB(png_structp png_ptr, int srgb_intent)
-{
- PNG_sRGB;
- png_byte buf[1];
-
- png_debug(1, "in png_write_sRGB");
-
- if (srgb_intent >= PNG_sRGB_INTENT_LAST)
- png_warning(png_ptr,
- "Invalid sRGB rendering intent specified");
-
- buf[0]=(png_byte)srgb_intent;
- png_write_chunk(png_ptr, png_sRGB, buf, (png_size_t)1);
-}
-#endif
-
-#ifdef PNG_WRITE_iCCP_SUPPORTED
-/* Write an iCCP chunk */
-void /* PRIVATE */
-png_write_iCCP(png_structp png_ptr, png_const_charp name, int compression_type,
- png_const_charp profile, int profile_len)
-{
- PNG_iCCP;
- png_size_t name_len;
- png_charp new_name;
- compression_state comp;
- int embedded_profile_len = 0;
-
- png_debug(1, "in png_write_iCCP");
-
- comp.num_output_ptr = 0;
- comp.max_output_ptr = 0;
- comp.output_ptr = NULL;
- comp.input = NULL;
- comp.input_len = 0;
-
- if ((name_len = png_check_keyword(png_ptr, name, &new_name)) == 0)
- return;
-
- if (compression_type != PNG_COMPRESSION_TYPE_BASE)
- png_warning(png_ptr, "Unknown compression type in iCCP chunk");
-
- if (profile == NULL)
- profile_len = 0;
-
- if (profile_len > 3)
- embedded_profile_len =
- ((*( (png_const_bytep)profile ))<<24) |
- ((*( (png_const_bytep)profile + 1))<<16) |
- ((*( (png_const_bytep)profile + 2))<< 8) |
- ((*( (png_const_bytep)profile + 3)) );
-
- if (embedded_profile_len < 0)
- {
- png_warning(png_ptr,
- "Embedded profile length in iCCP chunk is negative");
-
- png_free(png_ptr, new_name);
- return;
- }
-
- if (profile_len < embedded_profile_len)
- {
- png_warning(png_ptr,
- "Embedded profile length too large in iCCP chunk");
-
- png_free(png_ptr, new_name);
- return;
- }
-
- if (profile_len > embedded_profile_len)
- {
- png_warning(png_ptr,
- "Truncating profile to actual length in iCCP chunk");
-
- profile_len = embedded_profile_len;
- }
-
- if (profile_len)
- profile_len = png_text_compress(png_ptr, profile,
- (png_size_t)profile_len, PNG_COMPRESSION_TYPE_BASE, &comp);
-
- /* Make sure we include the NULL after the name and the compression type */
- png_write_chunk_start(png_ptr, png_iCCP,
- (png_uint_32)(name_len + profile_len + 2));
-
- new_name[name_len + 1] = 0x00;
-
- png_write_chunk_data(png_ptr, (png_bytep)new_name,
- (png_size_t)(name_len + 2));
-
- if (profile_len)
- png_write_compressed_data_out(png_ptr, &comp);
-
- png_write_chunk_end(png_ptr);
- png_free(png_ptr, new_name);
-}
-#endif
-
-#ifdef PNG_WRITE_sPLT_SUPPORTED
-/* Write a sPLT chunk */
-void /* PRIVATE */
-png_write_sPLT(png_structp png_ptr, png_const_sPLT_tp spalette)
-{
- PNG_sPLT;
- png_size_t name_len;
- png_charp new_name;
- png_byte entrybuf[10];
- png_size_t entry_size = (spalette->depth == 8 ? 6 : 10);
- png_size_t palette_size = entry_size * spalette->nentries;
- png_sPLT_entryp ep;
-#ifndef PNG_POINTER_INDEXING_SUPPORTED
- int i;
-#endif
-
- png_debug(1, "in png_write_sPLT");
-
- if ((name_len = png_check_keyword(png_ptr,spalette->name, &new_name))==0)
- return;
-
- /* Make sure we include the NULL after the name */
- png_write_chunk_start(png_ptr, png_sPLT,
- (png_uint_32)(name_len + 2 + palette_size));
-
- png_write_chunk_data(png_ptr, (png_bytep)new_name,
- (png_size_t)(name_len + 1));
-
- png_write_chunk_data(png_ptr, &spalette->depth, (png_size_t)1);
-
- /* Loop through each palette entry, writing appropriately */
-#ifdef PNG_POINTER_INDEXING_SUPPORTED
- for (ep = spalette->entries; epentries + spalette->nentries; ep++)
- {
- if (spalette->depth == 8)
- {
- entrybuf[0] = (png_byte)ep->red;
- entrybuf[1] = (png_byte)ep->green;
- entrybuf[2] = (png_byte)ep->blue;
- entrybuf[3] = (png_byte)ep->alpha;
- png_save_uint_16(entrybuf + 4, ep->frequency);
- }
-
- else
- {
- png_save_uint_16(entrybuf + 0, ep->red);
- png_save_uint_16(entrybuf + 2, ep->green);
- png_save_uint_16(entrybuf + 4, ep->blue);
- png_save_uint_16(entrybuf + 6, ep->alpha);
- png_save_uint_16(entrybuf + 8, ep->frequency);
- }
-
- png_write_chunk_data(png_ptr, entrybuf, (png_size_t)entry_size);
- }
-#else
- ep=spalette->entries;
- for (i = 0; i>spalette->nentries; i++)
- {
- if (spalette->depth == 8)
- {
- entrybuf[0] = (png_byte)ep[i].red;
- entrybuf[1] = (png_byte)ep[i].green;
- entrybuf[2] = (png_byte)ep[i].blue;
- entrybuf[3] = (png_byte)ep[i].alpha;
- png_save_uint_16(entrybuf + 4, ep[i].frequency);
- }
-
- else
- {
- png_save_uint_16(entrybuf + 0, ep[i].red);
- png_save_uint_16(entrybuf + 2, ep[i].green);
- png_save_uint_16(entrybuf + 4, ep[i].blue);
- png_save_uint_16(entrybuf + 6, ep[i].alpha);
- png_save_uint_16(entrybuf + 8, ep[i].frequency);
- }
-
- png_write_chunk_data(png_ptr, entrybuf, (png_size_t)entry_size);
- }
-#endif
-
- png_write_chunk_end(png_ptr);
- png_free(png_ptr, new_name);
-}
-#endif
-
-#ifdef PNG_WRITE_sBIT_SUPPORTED
-/* Write the sBIT chunk */
-void /* PRIVATE */
-png_write_sBIT(png_structp png_ptr, png_const_color_8p sbit, int color_type)
-{
- PNG_sBIT;
- png_byte buf[4];
- png_size_t size;
-
- png_debug(1, "in png_write_sBIT");
-
- /* Make sure we don't depend upon the order of PNG_COLOR_8 */
- if (color_type & PNG_COLOR_MASK_COLOR)
- {
- png_byte maxbits;
-
- maxbits = (png_byte)(color_type==PNG_COLOR_TYPE_PALETTE ? 8 :
- png_ptr->usr_bit_depth);
-
- if (sbit->red == 0 || sbit->red > maxbits ||
- sbit->green == 0 || sbit->green > maxbits ||
- sbit->blue == 0 || sbit->blue > maxbits)
- {
- png_warning(png_ptr, "Invalid sBIT depth specified");
- return;
- }
-
- buf[0] = sbit->red;
- buf[1] = sbit->green;
- buf[2] = sbit->blue;
- size = 3;
- }
-
- else
- {
- if (sbit->gray == 0 || sbit->gray > png_ptr->usr_bit_depth)
- {
- png_warning(png_ptr, "Invalid sBIT depth specified");
- return;
- }
-
- buf[0] = sbit->gray;
- size = 1;
- }
-
- if (color_type & PNG_COLOR_MASK_ALPHA)
- {
- if (sbit->alpha == 0 || sbit->alpha > png_ptr->usr_bit_depth)
- {
- png_warning(png_ptr, "Invalid sBIT depth specified");
- return;
- }
-
- buf[size++] = sbit->alpha;
- }
-
- png_write_chunk(png_ptr, png_sBIT, buf, size);
-}
-#endif
-
-#ifdef PNG_WRITE_cHRM_SUPPORTED
-/* Write the cHRM chunk */
-void /* PRIVATE */
-png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
- png_fixed_point white_y, png_fixed_point red_x, png_fixed_point red_y,
- png_fixed_point green_x, png_fixed_point green_y, png_fixed_point blue_x,
- png_fixed_point blue_y)
-{
- PNG_cHRM;
- png_byte buf[32];
-
- png_debug(1, "in png_write_cHRM");
-
- /* Each value is saved in 1/100,000ths */
-#ifdef PNG_CHECK_cHRM_SUPPORTED
- if (png_check_cHRM_fixed(png_ptr, white_x, white_y, red_x, red_y,
- green_x, green_y, blue_x, blue_y))
-#endif
- {
- png_save_uint_32(buf, (png_uint_32)white_x);
- png_save_uint_32(buf + 4, (png_uint_32)white_y);
-
- png_save_uint_32(buf + 8, (png_uint_32)red_x);
- png_save_uint_32(buf + 12, (png_uint_32)red_y);
-
- png_save_uint_32(buf + 16, (png_uint_32)green_x);
- png_save_uint_32(buf + 20, (png_uint_32)green_y);
-
- png_save_uint_32(buf + 24, (png_uint_32)blue_x);
- png_save_uint_32(buf + 28, (png_uint_32)blue_y);
-
- png_write_chunk(png_ptr, png_cHRM, buf, (png_size_t)32);
- }
-}
-#endif
-
-#ifdef PNG_WRITE_tRNS_SUPPORTED
-/* Write the tRNS chunk */
-void /* PRIVATE */
-png_write_tRNS(png_structp png_ptr, png_const_bytep trans_alpha,
- png_const_color_16p tran, int num_trans, int color_type)
-{
- PNG_tRNS;
- png_byte buf[6];
-
- png_debug(1, "in png_write_tRNS");
-
- if (color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (num_trans <= 0 || num_trans > (int)png_ptr->num_palette)
- {
- png_warning(png_ptr, "Invalid number of transparent colors specified");
- return;
- }
-
- /* Write the chunk out as it is */
- png_write_chunk(png_ptr, png_tRNS, trans_alpha, (png_size_t)num_trans);
- }
-
- else if (color_type == PNG_COLOR_TYPE_GRAY)
- {
- /* One 16 bit value */
- if (tran->gray >= (1 << png_ptr->bit_depth))
- {
- png_warning(png_ptr,
- "Ignoring attempt to write tRNS chunk out-of-range for bit_depth");
-
- return;
- }
-
- png_save_uint_16(buf, tran->gray);
- png_write_chunk(png_ptr, png_tRNS, buf, (png_size_t)2);
- }
-
- else if (color_type == PNG_COLOR_TYPE_RGB)
- {
- /* Three 16 bit values */
- png_save_uint_16(buf, tran->red);
- png_save_uint_16(buf + 2, tran->green);
- png_save_uint_16(buf + 4, tran->blue);
-#ifdef PNG_WRITE_16BIT_SUPPORTED
- if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]))
-#else
- if (buf[0] | buf[2] | buf[4])
-#endif
- {
- png_warning(png_ptr,
- "Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8");
- return;
- }
-
- png_write_chunk(png_ptr, png_tRNS, buf, (png_size_t)6);
- }
-
- else
- {
- png_warning(png_ptr, "Can't write tRNS with an alpha channel");
- }
-}
-#endif
-
-#ifdef PNG_WRITE_bKGD_SUPPORTED
-/* Write the background chunk */
-void /* PRIVATE */
-png_write_bKGD(png_structp png_ptr, png_const_color_16p back, int color_type)
-{
- PNG_bKGD;
- png_byte buf[6];
-
- png_debug(1, "in png_write_bKGD");
-
- if (color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (
-#ifdef PNG_MNG_FEATURES_SUPPORTED
- (png_ptr->num_palette ||
- (!(png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE))) &&
-#endif
- back->index >= png_ptr->num_palette)
- {
- png_warning(png_ptr, "Invalid background palette index");
- return;
- }
-
- buf[0] = back->index;
- png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)1);
- }
-
- else if (color_type & PNG_COLOR_MASK_COLOR)
- {
- png_save_uint_16(buf, back->red);
- png_save_uint_16(buf + 2, back->green);
- png_save_uint_16(buf + 4, back->blue);
-#ifdef PNG_WRITE_16BIT_SUPPORTED
- if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]))
-#else
- if (buf[0] | buf[2] | buf[4])
-#endif
- {
- png_warning(png_ptr,
- "Ignoring attempt to write 16-bit bKGD chunk when bit_depth is 8");
-
- return;
- }
-
- png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)6);
- }
-
- else
- {
- if (back->gray >= (1 << png_ptr->bit_depth))
- {
- png_warning(png_ptr,
- "Ignoring attempt to write bKGD chunk out-of-range for bit_depth");
-
- return;
- }
-
- png_save_uint_16(buf, back->gray);
- png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)2);
- }
-}
-#endif
-
-#ifdef PNG_WRITE_hIST_SUPPORTED
-/* Write the histogram */
-void /* PRIVATE */
-png_write_hIST(png_structp png_ptr, png_const_uint_16p hist, int num_hist)
-{
- PNG_hIST;
- int i;
- png_byte buf[3];
-
- png_debug(1, "in png_write_hIST");
-
- if (num_hist > (int)png_ptr->num_palette)
- {
- png_debug2(3, "num_hist = %d, num_palette = %d", num_hist,
- png_ptr->num_palette);
-
- png_warning(png_ptr, "Invalid number of histogram entries specified");
- return;
- }
-
- png_write_chunk_start(png_ptr, png_hIST, (png_uint_32)(num_hist * 2));
-
- for (i = 0; i < num_hist; i++)
- {
- png_save_uint_16(buf, hist[i]);
- png_write_chunk_data(png_ptr, buf, (png_size_t)2);
- }
-
- png_write_chunk_end(png_ptr);
-}
-#endif
-
-#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \
- defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
-/* Check that the tEXt or zTXt keyword is valid per PNG 1.0 specification,
- * and if invalid, correct the keyword rather than discarding the entire
- * chunk. The PNG 1.0 specification requires keywords 1-79 characters in
- * length, forbids leading or trailing whitespace, multiple internal spaces,
- * and the non-break space (0x80) from ISO 8859-1. Returns keyword length.
- *
- * The new_key is allocated to hold the corrected keyword and must be freed
- * by the calling routine. This avoids problems with trying to write to
- * static keywords without having to have duplicate copies of the strings.
- */
-png_size_t /* PRIVATE */
-png_check_keyword(png_structp png_ptr, png_const_charp key, png_charpp new_key)
-{
- png_size_t key_len;
- png_const_charp ikp;
- png_charp kp, dp;
- int kflag;
- int kwarn=0;
-
- png_debug(1, "in png_check_keyword");
-
- *new_key = NULL;
-
- if (key == NULL || (key_len = png_strlen(key)) == 0)
- {
- png_warning(png_ptr, "zero length keyword");
- return ((png_size_t)0);
- }
-
- png_debug1(2, "Keyword to be checked is '%s'", key);
-
- *new_key = (png_charp)png_malloc_warn(png_ptr, (png_uint_32)(key_len + 2));
-
- if (*new_key == NULL)
- {
- png_warning(png_ptr, "Out of memory while procesing keyword");
- return ((png_size_t)0);
- }
-
- /* Replace non-printing characters with a blank and print a warning */
- for (ikp = key, dp = *new_key; *ikp != '\0'; ikp++, dp++)
- {
- if ((png_byte)*ikp < 0x20 ||
- ((png_byte)*ikp > 0x7E && (png_byte)*ikp < 0xA1))
- {
-#ifdef PNG_CONSOLE_IO_SUPPORTED
- char msg[40];
-
- png_snprintf(msg, 40,
- "invalid keyword character 0x%02X", (png_byte)*ikp);
- png_warning(png_ptr, msg);
-#else
- png_warning(png_ptr, "invalid character in keyword");
-#endif
- *dp = ' ';
- }
-
- else
- {
- *dp = *ikp;
- }
- }
- *dp = '\0';
-
- /* Remove any trailing white space. */
- kp = *new_key + key_len - 1;
- if (*kp == ' ')
- {
- png_warning(png_ptr, "trailing spaces removed from keyword");
-
- while (*kp == ' ')
- {
- *(kp--) = '\0';
- key_len--;
- }
- }
-
- /* Remove any leading white space. */
- kp = *new_key;
- if (*kp == ' ')
- {
- png_warning(png_ptr, "leading spaces removed from keyword");
-
- while (*kp == ' ')
- {
- kp++;
- key_len--;
- }
- }
-
- png_debug1(2, "Checking for multiple internal spaces in '%s'", kp);
-
- /* Remove multiple internal spaces. */
- for (kflag = 0, dp = *new_key; *kp != '\0'; kp++)
- {
- if (*kp == ' ' && kflag == 0)
- {
- *(dp++) = *kp;
- kflag = 1;
- }
-
- else if (*kp == ' ')
- {
- key_len--;
- kwarn = 1;
- }
-
- else
- {
- *(dp++) = *kp;
- kflag = 0;
- }
- }
- *dp = '\0';
- if (kwarn)
- png_warning(png_ptr, "extra interior spaces removed from keyword");
-
- if (key_len == 0)
- {
- png_free(png_ptr, *new_key);
- png_warning(png_ptr, "Zero length keyword");
- }
-
- if (key_len > 79)
- {
- png_warning(png_ptr, "keyword length must be 1 - 79 characters");
- (*new_key)[79] = '\0';
- key_len = 79;
- }
-
- return (key_len);
-}
-#endif
-
-#ifdef PNG_WRITE_tEXt_SUPPORTED
-/* Write a tEXt chunk */
-void /* PRIVATE */
-png_write_tEXt(png_structp png_ptr, png_const_charp key, png_const_charp text,
- png_size_t text_len)
-{
- PNG_tEXt;
- png_size_t key_len;
- png_charp new_key;
-
- png_debug(1, "in png_write_tEXt");
-
- if ((key_len = png_check_keyword(png_ptr, key, &new_key))==0)
- return;
-
- if (text == NULL || *text == '\0')
- text_len = 0;
-
- else
- text_len = png_strlen(text);
-
- /* Make sure we include the 0 after the key */
- png_write_chunk_start(png_ptr, png_tEXt,
- (png_uint_32)(key_len + text_len + 1));
- /*
- * We leave it to the application to meet PNG-1.0 requirements on the
- * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of
- * any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them.
- * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
- */
- png_write_chunk_data(png_ptr, (png_bytep)new_key,
- (png_size_t)(key_len + 1));
-
- if (text_len)
- png_write_chunk_data(png_ptr, (png_const_bytep)text,
- (png_size_t)text_len);
-
- png_write_chunk_end(png_ptr);
- png_free(png_ptr, new_key);
-}
-#endif
-
-#ifdef PNG_WRITE_zTXt_SUPPORTED
-/* Write a compressed text chunk */
-void /* PRIVATE */
-png_write_zTXt(png_structp png_ptr, png_const_charp key, png_const_charp text,
- png_size_t text_len, int compression)
-{
- PNG_zTXt;
- png_size_t key_len;
- png_byte buf;
- png_charp new_key;
- compression_state comp;
-
- png_debug(1, "in png_write_zTXt");
-
- comp.num_output_ptr = 0;
- comp.max_output_ptr = 0;
- comp.output_ptr = NULL;
- comp.input = NULL;
- comp.input_len = 0;
-
- if ((key_len = png_check_keyword(png_ptr, key, &new_key)) == 0)
- {
- png_free(png_ptr, new_key);
- return;
- }
-
- if (text == NULL || *text == '\0' || compression==PNG_TEXT_COMPRESSION_NONE)
- {
- png_write_tEXt(png_ptr, new_key, text, (png_size_t)0);
- png_free(png_ptr, new_key);
- return;
- }
-
- text_len = png_strlen(text);
-
- /* Compute the compressed data; do it now for the length */
- text_len = png_text_compress(png_ptr, text, text_len, compression,
- &comp);
-
- /* Write start of chunk */
- png_write_chunk_start(png_ptr, png_zTXt,
- (png_uint_32)(key_len+text_len + 2));
-
- /* Write key */
- png_write_chunk_data(png_ptr, (png_bytep)new_key,
- (png_size_t)(key_len + 1));
-
- png_free(png_ptr, new_key);
-
- buf = (png_byte)compression;
-
- /* Write compression */
- png_write_chunk_data(png_ptr, &buf, (png_size_t)1);
-
- /* Write the compressed data */
- png_write_compressed_data_out(png_ptr, &comp);
-
- /* Close the chunk */
- png_write_chunk_end(png_ptr);
-}
-#endif
-
-#ifdef PNG_WRITE_iTXt_SUPPORTED
-/* Write an iTXt chunk */
-void /* PRIVATE */
-png_write_iTXt(png_structp png_ptr, int compression, png_const_charp key,
- png_const_charp lang, png_const_charp lang_key, png_const_charp text)
-{
- PNG_iTXt;
- png_size_t lang_len, key_len, lang_key_len, text_len;
- png_charp new_lang;
- png_charp new_key = NULL;
- png_byte cbuf[2];
- compression_state comp;
-
- png_debug(1, "in png_write_iTXt");
-
- comp.num_output_ptr = 0;
- comp.max_output_ptr = 0;
- comp.output_ptr = NULL;
- comp.input = NULL;
-
- if ((key_len = png_check_keyword(png_ptr, key, &new_key)) == 0)
- return;
-
- if ((lang_len = png_check_keyword(png_ptr, lang, &new_lang)) == 0)
- {
- png_warning(png_ptr, "Empty language field in iTXt chunk");
- new_lang = NULL;
- lang_len = 0;
- }
-
- if (lang_key == NULL)
- lang_key_len = 0;
-
- else
- lang_key_len = png_strlen(lang_key);
-
- if (text == NULL)
- text_len = 0;
-
- else
- text_len = png_strlen(text);
-
- /* Compute the compressed data; do it now for the length */
- text_len = png_text_compress(png_ptr, text, text_len, compression - 2,
- &comp);
-
-
- /* Make sure we include the compression flag, the compression byte,
- * and the NULs after the key, lang, and lang_key parts
- */
-
- png_write_chunk_start(png_ptr, png_iTXt, (png_uint_32)(
- 5 /* comp byte, comp flag, terminators for key, lang and lang_key */
- + key_len
- + lang_len
- + lang_key_len
- + text_len));
-
- /* We leave it to the application to meet PNG-1.0 requirements on the
- * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of
- * any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them.
- * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
- */
- png_write_chunk_data(png_ptr, (png_bytep)new_key, (png_size_t)(key_len + 1));
-
- /* Set the compression flag */
- if (compression == PNG_ITXT_COMPRESSION_NONE ||
- compression == PNG_TEXT_COMPRESSION_NONE)
- cbuf[0] = 0;
-
- else /* compression == PNG_ITXT_COMPRESSION_zTXt */
- cbuf[0] = 1;
-
- /* Set the compression method */
- cbuf[1] = 0;
-
- png_write_chunk_data(png_ptr, cbuf, (png_size_t)2);
-
- cbuf[0] = 0;
- png_write_chunk_data(png_ptr, (new_lang ? (png_const_bytep)new_lang : cbuf),
- (png_size_t)(lang_len + 1));
-
- png_write_chunk_data(png_ptr, (lang_key ? (png_const_bytep)lang_key : cbuf),
- (png_size_t)(lang_key_len + 1));
-
- png_write_compressed_data_out(png_ptr, &comp);
-
- png_write_chunk_end(png_ptr);
-
- png_free(png_ptr, new_key);
- png_free(png_ptr, new_lang);
-}
-#endif
-
-#ifdef PNG_WRITE_oFFs_SUPPORTED
-/* Write the oFFs chunk */
-void /* PRIVATE */
-png_write_oFFs(png_structp png_ptr, png_int_32 x_offset, png_int_32 y_offset,
- int unit_type)
-{
- PNG_oFFs;
- png_byte buf[9];
-
- png_debug(1, "in png_write_oFFs");
-
- if (unit_type >= PNG_OFFSET_LAST)
- png_warning(png_ptr, "Unrecognized unit type for oFFs chunk");
-
- png_save_int_32(buf, x_offset);
- png_save_int_32(buf + 4, y_offset);
- buf[8] = (png_byte)unit_type;
-
- png_write_chunk(png_ptr, png_oFFs, buf, (png_size_t)9);
-}
-#endif
-#ifdef PNG_WRITE_pCAL_SUPPORTED
-/* Write the pCAL chunk (described in the PNG extensions document) */
-void /* PRIVATE */
-png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0,
- png_int_32 X1, int type, int nparams, png_const_charp units,
- png_charpp params)
-{
- PNG_pCAL;
- png_size_t purpose_len, units_len, total_len;
- png_uint_32p params_len;
- png_byte buf[10];
- png_charp new_purpose;
- int i;
-
- png_debug1(1, "in png_write_pCAL (%d parameters)", nparams);
-
- if (type >= PNG_EQUATION_LAST)
- png_warning(png_ptr, "Unrecognized equation type for pCAL chunk");
-
- purpose_len = png_check_keyword(png_ptr, purpose, &new_purpose) + 1;
- png_debug1(3, "pCAL purpose length = %d", (int)purpose_len);
- units_len = png_strlen(units) + (nparams == 0 ? 0 : 1);
- png_debug1(3, "pCAL units length = %d", (int)units_len);
- total_len = purpose_len + units_len + 10;
-
- params_len = (png_uint_32p)png_malloc(png_ptr,
- (png_alloc_size_t)(nparams * png_sizeof(png_uint_32)));
-
- /* Find the length of each parameter, making sure we don't count the
- * null terminator for the last parameter.
- */
- for (i = 0; i < nparams; i++)
- {
- params_len[i] = png_strlen(params[i]) + (i == nparams - 1 ? 0 : 1);
- png_debug2(3, "pCAL parameter %d length = %lu", i,
- (unsigned long)params_len[i]);
- total_len += (png_size_t)params_len[i];
- }
-
- png_debug1(3, "pCAL total length = %d", (int)total_len);
- png_write_chunk_start(png_ptr, png_pCAL, (png_uint_32)total_len);
- png_write_chunk_data(png_ptr, (png_const_bytep)new_purpose,
- (png_size_t)purpose_len);
- png_save_int_32(buf, X0);
- png_save_int_32(buf + 4, X1);
- buf[8] = (png_byte)type;
- buf[9] = (png_byte)nparams;
- png_write_chunk_data(png_ptr, buf, (png_size_t)10);
- png_write_chunk_data(png_ptr, (png_const_bytep)units, (png_size_t)units_len);
-
- png_free(png_ptr, new_purpose);
-
- for (i = 0; i < nparams; i++)
- {
- png_write_chunk_data(png_ptr, (png_const_bytep)params[i],
- (png_size_t)params_len[i]);
- }
-
- png_free(png_ptr, params_len);
- png_write_chunk_end(png_ptr);
-}
-#endif
-
-#ifdef PNG_WRITE_sCAL_SUPPORTED
-/* Write the sCAL chunk */
-void /* PRIVATE */
-png_write_sCAL_s(png_structp png_ptr, int unit, png_const_charp width,
- png_const_charp height)
-{
- PNG_sCAL;
- png_byte buf[64];
- png_size_t wlen, hlen, total_len;
-
- png_debug(1, "in png_write_sCAL_s");
-
- wlen = png_strlen(width);
- hlen = png_strlen(height);
- total_len = wlen + hlen + 2;
-
- if (total_len > 64)
- {
- png_warning(png_ptr, "Can't write sCAL (buffer too small)");
- return;
- }
-
- buf[0] = (png_byte)unit;
- png_memcpy(buf + 1, width, wlen + 1); /* Append the '\0' here */
- png_memcpy(buf + wlen + 2, height, hlen); /* Do NOT append the '\0' here */
-
- png_debug1(3, "sCAL total length = %u", (unsigned int)total_len);
- png_write_chunk(png_ptr, png_sCAL, buf, total_len);
-}
-#endif
-
-#ifdef PNG_WRITE_pHYs_SUPPORTED
-/* Write the pHYs chunk */
-void /* PRIVATE */
-png_write_pHYs(png_structp png_ptr, png_uint_32 x_pixels_per_unit,
- png_uint_32 y_pixels_per_unit,
- int unit_type)
-{
- PNG_pHYs;
- png_byte buf[9];
-
- png_debug(1, "in png_write_pHYs");
-
- if (unit_type >= PNG_RESOLUTION_LAST)
- png_warning(png_ptr, "Unrecognized unit type for pHYs chunk");
-
- png_save_uint_32(buf, x_pixels_per_unit);
- png_save_uint_32(buf + 4, y_pixels_per_unit);
- buf[8] = (png_byte)unit_type;
-
- png_write_chunk(png_ptr, png_pHYs, buf, (png_size_t)9);
-}
-#endif
-
-#ifdef PNG_WRITE_tIME_SUPPORTED
-/* Write the tIME chunk. Use either png_convert_from_struct_tm()
- * or png_convert_from_time_t(), or fill in the structure yourself.
- */
-void /* PRIVATE */
-png_write_tIME(png_structp png_ptr, png_const_timep mod_time)
-{
- PNG_tIME;
- png_byte buf[7];
-
- png_debug(1, "in png_write_tIME");
-
- if (mod_time->month > 12 || mod_time->month < 1 ||
- mod_time->day > 31 || mod_time->day < 1 ||
- mod_time->hour > 23 || mod_time->second > 60)
- {
- png_warning(png_ptr, "Invalid time specified for tIME chunk");
- return;
- }
-
- png_save_uint_16(buf, mod_time->year);
- buf[2] = mod_time->month;
- buf[3] = mod_time->day;
- buf[4] = mod_time->hour;
- buf[5] = mod_time->minute;
- buf[6] = mod_time->second;
-
- png_write_chunk(png_ptr, png_tIME, buf, (png_size_t)7);
-}
-#endif
-
-/* Initializes the row writing capability of libpng */
-void /* PRIVATE */
-png_write_start_row(png_structp png_ptr)
-{
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
-
- /* Start of interlace block */
- int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
-
- /* Offset to next interlace block */
- int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
-
- /* Start of interlace block in the y direction */
- int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
-
- /* Offset to next interlace block in the y direction */
- int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
-#endif
-
- png_size_t buf_size;
-
- png_debug(1, "in png_write_start_row");
-
- buf_size = (png_size_t)(PNG_ROWBYTES(
- png_ptr->usr_channels*png_ptr->usr_bit_depth, png_ptr->width) + 1);
-
- /* Set up row buffer */
- png_ptr->row_buf = (png_bytep)png_malloc(png_ptr,
- (png_alloc_size_t)buf_size);
-
- png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE;
-
-#ifdef PNG_WRITE_FILTER_SUPPORTED
- /* Set up filtering buffer, if using this filter */
- if (png_ptr->do_filter & PNG_FILTER_SUB)
- {
- png_ptr->sub_row = (png_bytep)png_malloc(png_ptr, png_ptr->rowbytes + 1);
-
- png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB;
- }
-
- /* We only need to keep the previous row if we are using one of these. */
- if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH))
- {
- /* Set up previous row buffer */
- png_ptr->prev_row = (png_bytep)png_calloc(png_ptr,
- (png_alloc_size_t)buf_size);
-
- if (png_ptr->do_filter & PNG_FILTER_UP)
- {
- png_ptr->up_row = (png_bytep)png_malloc(png_ptr,
- png_ptr->rowbytes + 1);
-
- png_ptr->up_row[0] = PNG_FILTER_VALUE_UP;
- }
-
- if (png_ptr->do_filter & PNG_FILTER_AVG)
- {
- png_ptr->avg_row = (png_bytep)png_malloc(png_ptr,
- png_ptr->rowbytes + 1);
-
- png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG;
- }
-
- if (png_ptr->do_filter & PNG_FILTER_PAETH)
- {
- png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr,
- png_ptr->rowbytes + 1);
-
- png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH;
- }
- }
-#endif /* PNG_WRITE_FILTER_SUPPORTED */
-
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- /* If interlaced, we need to set up width and height of pass */
- if (png_ptr->interlaced)
- {
- if (!(png_ptr->transformations & PNG_INTERLACE))
- {
- png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 -
- png_pass_ystart[0]) / png_pass_yinc[0];
-
- png_ptr->usr_width = (png_ptr->width + png_pass_inc[0] - 1 -
- png_pass_start[0]) / png_pass_inc[0];
- }
-
- else
- {
- png_ptr->num_rows = png_ptr->height;
- png_ptr->usr_width = png_ptr->width;
- }
- }
-
- else
-#endif
- {
- png_ptr->num_rows = png_ptr->height;
- png_ptr->usr_width = png_ptr->width;
- }
-
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
- png_ptr->zstream.next_out = png_ptr->zbuf;
-}
-
-/* Internal use only. Called when finished processing a row of data. */
-void /* PRIVATE */
-png_write_finish_row(png_structp png_ptr)
-{
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
-
- /* Start of interlace block */
- int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
-
- /* Offset to next interlace block */
- int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
-
- /* Start of interlace block in the y direction */
- int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
-
- /* Offset to next interlace block in the y direction */
- int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
-#endif
-
- int ret;
-
- png_debug(1, "in png_write_finish_row");
-
- /* Next row */
- png_ptr->row_number++;
-
- /* See if we are done */
- if (png_ptr->row_number < png_ptr->num_rows)
- return;
-
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- /* If interlaced, go to next pass */
- if (png_ptr->interlaced)
- {
- png_ptr->row_number = 0;
- if (png_ptr->transformations & PNG_INTERLACE)
- {
- png_ptr->pass++;
- }
-
- else
- {
- /* Loop until we find a non-zero width or height pass */
- do
- {
- png_ptr->pass++;
-
- if (png_ptr->pass >= 7)
- break;
-
- png_ptr->usr_width = (png_ptr->width +
- png_pass_inc[png_ptr->pass] - 1 -
- png_pass_start[png_ptr->pass]) /
- png_pass_inc[png_ptr->pass];
-
- png_ptr->num_rows = (png_ptr->height +
- png_pass_yinc[png_ptr->pass] - 1 -
- png_pass_ystart[png_ptr->pass]) /
- png_pass_yinc[png_ptr->pass];
-
- if (png_ptr->transformations & PNG_INTERLACE)
- break;
-
- } while (png_ptr->usr_width == 0 || png_ptr->num_rows == 0);
-
- }
-
- /* Reset the row above the image for the next pass */
- if (png_ptr->pass < 7)
- {
- if (png_ptr->prev_row != NULL)
- png_memset(png_ptr->prev_row, 0,
- (png_size_t)(PNG_ROWBYTES(png_ptr->usr_channels*
- png_ptr->usr_bit_depth, png_ptr->width)) + 1);
-
- return;
- }
- }
-#endif
-
- /* If we get here, we've just written the last row, so we need
- to flush the compressor */
- do
- {
- /* Tell the compressor we are done */
- ret = deflate(&png_ptr->zstream, Z_FINISH);
-
- /* Check for an error */
- if (ret == Z_OK)
- {
- /* Check to see if we need more room */
- if (!(png_ptr->zstream.avail_out))
- {
- png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
- }
- }
-
- else if (ret != Z_STREAM_END)
- {
- if (png_ptr->zstream.msg != NULL)
- png_error(png_ptr, png_ptr->zstream.msg);
-
- else
- png_error(png_ptr, "zlib error");
- }
- } while (ret != Z_STREAM_END);
-
- /* Write any extra space */
- if (png_ptr->zstream.avail_out < png_ptr->zbuf_size)
- {
- png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size -
- png_ptr->zstream.avail_out);
- }
-
- deflateReset(&png_ptr->zstream);
- png_ptr->zstream.data_type = Z_BINARY;
-}
-
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
-/* Pick out the correct pixels for the interlace pass.
- * The basic idea here is to go through the row with a source
- * pointer and a destination pointer (sp and dp), and copy the
- * correct pixels for the pass. As the row gets compacted,
- * sp will always be >= dp, so we should never overwrite anything.
- * See the default: case for the easiest code to understand.
- */
-void /* PRIVATE */
-png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
-{
- /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
-
- /* Start of interlace block */
- int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
-
- /* Offset to next interlace block */
- int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
-
- png_debug(1, "in png_do_write_interlace");
-
- /* We don't have to do anything on the last pass (6) */
- if (pass < 6)
- {
- /* Each pixel depth is handled separately */
- switch (row_info->pixel_depth)
- {
- case 1:
- {
- png_bytep sp;
- png_bytep dp;
- int shift;
- int d;
- int value;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- dp = row;
- d = 0;
- shift = 7;
-
- for (i = png_pass_start[pass]; i < row_width;
- i += png_pass_inc[pass])
- {
- sp = row + (png_size_t)(i >> 3);
- value = (int)(*sp >> (7 - (int)(i & 0x07))) & 0x01;
- d |= (value << shift);
-
- if (shift == 0)
- {
- shift = 7;
- *dp++ = (png_byte)d;
- d = 0;
- }
-
- else
- shift--;
-
- }
- if (shift != 7)
- *dp = (png_byte)d;
-
- break;
- }
-
- case 2:
- {
- png_bytep sp;
- png_bytep dp;
- int shift;
- int d;
- int value;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- dp = row;
- shift = 6;
- d = 0;
-
- for (i = png_pass_start[pass]; i < row_width;
- i += png_pass_inc[pass])
- {
- sp = row + (png_size_t)(i >> 2);
- value = (*sp >> ((3 - (int)(i & 0x03)) << 1)) & 0x03;
- d |= (value << shift);
-
- if (shift == 0)
- {
- shift = 6;
- *dp++ = (png_byte)d;
- d = 0;
- }
-
- else
- shift -= 2;
- }
- if (shift != 6)
- *dp = (png_byte)d;
-
- break;
- }
-
- case 4:
- {
- png_bytep sp;
- png_bytep dp;
- int shift;
- int d;
- int value;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- dp = row;
- shift = 4;
- d = 0;
- for (i = png_pass_start[pass]; i < row_width;
- i += png_pass_inc[pass])
- {
- sp = row + (png_size_t)(i >> 1);
- value = (*sp >> ((1 - (int)(i & 0x01)) << 2)) & 0x0f;
- d |= (value << shift);
-
- if (shift == 0)
- {
- shift = 4;
- *dp++ = (png_byte)d;
- d = 0;
- }
-
- else
- shift -= 4;
- }
- if (shift != 4)
- *dp = (png_byte)d;
-
- break;
- }
-
- default:
- {
- png_bytep sp;
- png_bytep dp;
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
- png_size_t pixel_bytes;
-
- /* Start at the beginning */
- dp = row;
-
- /* Find out how many bytes each pixel takes up */
- pixel_bytes = (row_info->pixel_depth >> 3);
-
- /* Loop through the row, only looking at the pixels that matter */
- for (i = png_pass_start[pass]; i < row_width;
- i += png_pass_inc[pass])
- {
- /* Find out where the original pixel is */
- sp = row + (png_size_t)i * pixel_bytes;
-
- /* Move the pixel */
- if (dp != sp)
- png_memcpy(dp, sp, pixel_bytes);
-
- /* Next pixel */
- dp += pixel_bytes;
- }
- break;
- }
- }
- /* Set new row width */
- row_info->width = (row_info->width +
- png_pass_inc[pass] - 1 -
- png_pass_start[pass]) /
- png_pass_inc[pass];
-
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth,
- row_info->width);
- }
-}
-#endif
-
-/* This filters the row, chooses which filter to use, if it has not already
- * been specified by the application, and then writes the row out with the
- * chosen filter.
- */
-#define PNG_MAXSUM (((png_uint_32)(-1)) >> 1)
-#define PNG_HISHIFT 10
-#define PNG_LOMASK ((png_uint_32)0xffffL)
-#define PNG_HIMASK ((png_uint_32)(~PNG_LOMASK >> PNG_HISHIFT))
-void /* PRIVATE */
-png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
-{
- png_bytep best_row;
-#ifdef PNG_WRITE_FILTER_SUPPORTED
- png_bytep prev_row, row_buf;
- png_uint_32 mins, bpp;
- png_byte filter_to_do = png_ptr->do_filter;
- png_size_t row_bytes = row_info->rowbytes;
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- int num_p_filters = (int)png_ptr->num_prev_filters;
-#endif
-
- png_debug(1, "in png_write_find_filter");
-
-#ifndef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- if (png_ptr->row_number == 0 && filter_to_do == PNG_ALL_FILTERS)
- {
- /* These will never be selected so we need not test them. */
- filter_to_do &= ~(PNG_FILTER_UP | PNG_FILTER_PAETH);
- }
-#endif
-
- /* Find out how many bytes offset each pixel is */
- bpp = (row_info->pixel_depth + 7) >> 3;
-
- prev_row = png_ptr->prev_row;
-#endif
- best_row = png_ptr->row_buf;
-#ifdef PNG_WRITE_FILTER_SUPPORTED
- row_buf = best_row;
- mins = PNG_MAXSUM;
-
- /* The prediction method we use is to find which method provides the
- * smallest value when summing the absolute values of the distances
- * from zero, using anything >= 128 as negative numbers. This is known
- * as the "minimum sum of absolute differences" heuristic. Other
- * heuristics are the "weighted minimum sum of absolute differences"
- * (experimental and can in theory improve compression), and the "zlib
- * predictive" method (not implemented yet), which does test compressions
- * of lines using different filter methods, and then chooses the
- * (series of) filter(s) that give minimum compressed data size (VERY
- * computationally expensive).
- *
- * GRR 980525: consider also
- *
- * (1) minimum sum of absolute differences from running average (i.e.,
- * keep running sum of non-absolute differences & count of bytes)
- * [track dispersion, too? restart average if dispersion too large?]
- *
- * (1b) minimum sum of absolute differences from sliding average, probably
- * with window size <= deflate window (usually 32K)
- *
- * (2) minimum sum of squared differences from zero or running average
- * (i.e., ~ root-mean-square approach)
- */
-
-
- /* We don't need to test the 'no filter' case if this is the only filter
- * that has been chosen, as it doesn't actually do anything to the data.
- */
- if ((filter_to_do & PNG_FILTER_NONE) && filter_to_do != PNG_FILTER_NONE)
- {
- png_bytep rp;
- png_uint_32 sum = 0;
- png_size_t i;
- int v;
-
- for (i = 0, rp = row_buf + 1; i < row_bytes; i++, rp++)
- {
- v = *rp;
- sum += (v < 128) ? v : 256 - v;
- }
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- png_uint_32 sumhi, sumlo;
- int j;
- sumlo = sum & PNG_LOMASK;
- sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; /* Gives us some footroom */
-
- /* Reduce the sum if we match any of the previous rows */
- for (j = 0; j < num_p_filters; j++)
- {
- if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_NONE)
- {
- sumlo = (sumlo * png_ptr->filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
-
- sumhi = (sumhi * png_ptr->filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
- }
- }
-
- /* Factor in the cost of this filter (this is here for completeness,
- * but it makes no sense to have a "cost" for the NONE filter, as
- * it has the minimum possible computational cost - none).
- */
- sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_NONE]) >>
- PNG_COST_SHIFT;
-
- sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_NONE]) >>
- PNG_COST_SHIFT;
-
- if (sumhi > PNG_HIMASK)
- sum = PNG_MAXSUM;
-
- else
- sum = (sumhi << PNG_HISHIFT) + sumlo;
- }
-#endif
- mins = sum;
- }
-
- /* Sub filter */
- if (filter_to_do == PNG_FILTER_SUB)
- /* It's the only filter so no testing is needed */
- {
- png_bytep rp, lp, dp;
- png_size_t i;
-
- for (i = 0, rp = row_buf + 1, dp = png_ptr->sub_row + 1; i < bpp;
- i++, rp++, dp++)
- {
- *dp = *rp;
- }
-
- for (lp = row_buf + 1; i < row_bytes;
- i++, rp++, lp++, dp++)
- {
- *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff);
- }
-
- best_row = png_ptr->sub_row;
- }
-
- else if (filter_to_do & PNG_FILTER_SUB)
- {
- png_bytep rp, dp, lp;
- png_uint_32 sum = 0, lmins = mins;
- png_size_t i;
- int v;
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- /* We temporarily increase the "minimum sum" by the factor we
- * would reduce the sum of this filter, so that we can do the
- * early exit comparison without scaling the sum each time.
- */
- if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int j;
- png_uint_32 lmhi, lmlo;
- lmlo = lmins & PNG_LOMASK;
- lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK;
-
- for (j = 0; j < num_p_filters; j++)
- {
- if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_SUB)
- {
- lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
-
- lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
- }
- }
-
- lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >>
- PNG_COST_SHIFT;
-
- lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >>
- PNG_COST_SHIFT;
-
- if (lmhi > PNG_HIMASK)
- lmins = PNG_MAXSUM;
-
- else
- lmins = (lmhi << PNG_HISHIFT) + lmlo;
- }
-#endif
-
- for (i = 0, rp = row_buf + 1, dp = png_ptr->sub_row + 1; i < bpp;
- i++, rp++, dp++)
- {
- v = *dp = *rp;
-
- sum += (v < 128) ? v : 256 - v;
- }
-
- for (lp = row_buf + 1; i < row_bytes;
- i++, rp++, lp++, dp++)
- {
- v = *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff);
-
- sum += (v < 128) ? v : 256 - v;
-
- if (sum > lmins) /* We are already worse, don't continue. */
- break;
- }
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int j;
- png_uint_32 sumhi, sumlo;
- sumlo = sum & PNG_LOMASK;
- sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK;
-
- for (j = 0; j < num_p_filters; j++)
- {
- if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_SUB)
- {
- sumlo = (sumlo * png_ptr->inv_filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
-
- sumhi = (sumhi * png_ptr->inv_filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
- }
- }
-
- sumlo = (sumlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >>
- PNG_COST_SHIFT;
-
- sumhi = (sumhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >>
- PNG_COST_SHIFT;
-
- if (sumhi > PNG_HIMASK)
- sum = PNG_MAXSUM;
-
- else
- sum = (sumhi << PNG_HISHIFT) + sumlo;
- }
-#endif
-
- if (sum < mins)
- {
- mins = sum;
- best_row = png_ptr->sub_row;
- }
- }
-
- /* Up filter */
- if (filter_to_do == PNG_FILTER_UP)
- {
- png_bytep rp, dp, pp;
- png_size_t i;
-
- for (i = 0, rp = row_buf + 1, dp = png_ptr->up_row + 1,
- pp = prev_row + 1; i < row_bytes;
- i++, rp++, pp++, dp++)
- {
- *dp = (png_byte)(((int)*rp - (int)*pp) & 0xff);
- }
-
- best_row = png_ptr->up_row;
- }
-
- else if (filter_to_do & PNG_FILTER_UP)
- {
- png_bytep rp, dp, pp;
- png_uint_32 sum = 0, lmins = mins;
- png_size_t i;
- int v;
-
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int j;
- png_uint_32 lmhi, lmlo;
- lmlo = lmins & PNG_LOMASK;
- lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK;
-
- for (j = 0; j < num_p_filters; j++)
- {
- if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_UP)
- {
- lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
-
- lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
- }
- }
-
- lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_UP]) >>
- PNG_COST_SHIFT;
-
- lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_UP]) >>
- PNG_COST_SHIFT;
-
- if (lmhi > PNG_HIMASK)
- lmins = PNG_MAXSUM;
-
- else
- lmins = (lmhi << PNG_HISHIFT) + lmlo;
- }
-#endif
-
- for (i = 0, rp = row_buf + 1, dp = png_ptr->up_row + 1,
- pp = prev_row + 1; i < row_bytes; i++)
- {
- v = *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff);
-
- sum += (v < 128) ? v : 256 - v;
-
- if (sum > lmins) /* We are already worse, don't continue. */
- break;
- }
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int j;
- png_uint_32 sumhi, sumlo;
- sumlo = sum & PNG_LOMASK;
- sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK;
-
- for (j = 0; j < num_p_filters; j++)
- {
- if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_UP)
- {
- sumlo = (sumlo * png_ptr->filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
-
- sumhi = (sumhi * png_ptr->filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
- }
- }
-
- sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_UP]) >>
- PNG_COST_SHIFT;
-
- sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_UP]) >>
- PNG_COST_SHIFT;
-
- if (sumhi > PNG_HIMASK)
- sum = PNG_MAXSUM;
-
- else
- sum = (sumhi << PNG_HISHIFT) + sumlo;
- }
-#endif
-
- if (sum < mins)
- {
- mins = sum;
- best_row = png_ptr->up_row;
- }
- }
-
- /* Avg filter */
- if (filter_to_do == PNG_FILTER_AVG)
- {
- png_bytep rp, dp, pp, lp;
- png_uint_32 i;
-
- for (i = 0, rp = row_buf + 1, dp = png_ptr->avg_row + 1,
- pp = prev_row + 1; i < bpp; i++)
- {
- *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff);
- }
-
- for (lp = row_buf + 1; i < row_bytes; i++)
- {
- *dp++ = (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2))
- & 0xff);
- }
- best_row = png_ptr->avg_row;
- }
-
- else if (filter_to_do & PNG_FILTER_AVG)
- {
- png_bytep rp, dp, pp, lp;
- png_uint_32 sum = 0, lmins = mins;
- png_size_t i;
- int v;
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int j;
- png_uint_32 lmhi, lmlo;
- lmlo = lmins & PNG_LOMASK;
- lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK;
-
- for (j = 0; j < num_p_filters; j++)
- {
- if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_AVG)
- {
- lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
-
- lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
- }
- }
-
- lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_AVG]) >>
- PNG_COST_SHIFT;
-
- lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_AVG]) >>
- PNG_COST_SHIFT;
-
- if (lmhi > PNG_HIMASK)
- lmins = PNG_MAXSUM;
-
- else
- lmins = (lmhi << PNG_HISHIFT) + lmlo;
- }
-#endif
-
- for (i = 0, rp = row_buf + 1, dp = png_ptr->avg_row + 1,
- pp = prev_row + 1; i < bpp; i++)
- {
- v = *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff);
-
- sum += (v < 128) ? v : 256 - v;
- }
-
- for (lp = row_buf + 1; i < row_bytes; i++)
- {
- v = *dp++ =
- (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2)) & 0xff);
-
- sum += (v < 128) ? v : 256 - v;
-
- if (sum > lmins) /* We are already worse, don't continue. */
- break;
- }
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int j;
- png_uint_32 sumhi, sumlo;
- sumlo = sum & PNG_LOMASK;
- sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK;
-
- for (j = 0; j < num_p_filters; j++)
- {
- if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_NONE)
- {
- sumlo = (sumlo * png_ptr->filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
-
- sumhi = (sumhi * png_ptr->filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
- }
- }
-
- sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_AVG]) >>
- PNG_COST_SHIFT;
-
- sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_AVG]) >>
- PNG_COST_SHIFT;
-
- if (sumhi > PNG_HIMASK)
- sum = PNG_MAXSUM;
-
- else
- sum = (sumhi << PNG_HISHIFT) + sumlo;
- }
-#endif
-
- if (sum < mins)
- {
- mins = sum;
- best_row = png_ptr->avg_row;
- }
- }
-
- /* Paeth filter */
- if (filter_to_do == PNG_FILTER_PAETH)
- {
- png_bytep rp, dp, pp, cp, lp;
- png_size_t i;
-
- for (i = 0, rp = row_buf + 1, dp = png_ptr->paeth_row + 1,
- pp = prev_row + 1; i < bpp; i++)
- {
- *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff);
- }
-
- for (lp = row_buf + 1, cp = prev_row + 1; i < row_bytes; i++)
- {
- int a, b, c, pa, pb, pc, p;
-
- b = *pp++;
- c = *cp++;
- a = *lp++;
-
- p = b - c;
- pc = a - c;
-
-#ifdef PNG_USE_ABS
- pa = abs(p);
- pb = abs(pc);
- pc = abs(p + pc);
-#else
- pa = p < 0 ? -p : p;
- pb = pc < 0 ? -pc : pc;
- pc = (p + pc) < 0 ? -(p + pc) : p + pc;
-#endif
-
- p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c;
-
- *dp++ = (png_byte)(((int)*rp++ - p) & 0xff);
- }
- best_row = png_ptr->paeth_row;
- }
-
- else if (filter_to_do & PNG_FILTER_PAETH)
- {
- png_bytep rp, dp, pp, cp, lp;
- png_uint_32 sum = 0, lmins = mins;
- png_size_t i;
- int v;
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int j;
- png_uint_32 lmhi, lmlo;
- lmlo = lmins & PNG_LOMASK;
- lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK;
-
- for (j = 0; j < num_p_filters; j++)
- {
- if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_PAETH)
- {
- lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
-
- lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
- }
- }
-
- lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_PAETH]) >>
- PNG_COST_SHIFT;
-
- lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_PAETH]) >>
- PNG_COST_SHIFT;
-
- if (lmhi > PNG_HIMASK)
- lmins = PNG_MAXSUM;
-
- else
- lmins = (lmhi << PNG_HISHIFT) + lmlo;
- }
-#endif
-
- for (i = 0, rp = row_buf + 1, dp = png_ptr->paeth_row + 1,
- pp = prev_row + 1; i < bpp; i++)
- {
- v = *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff);
-
- sum += (v < 128) ? v : 256 - v;
- }
-
- for (lp = row_buf + 1, cp = prev_row + 1; i < row_bytes; i++)
- {
- int a, b, c, pa, pb, pc, p;
-
- b = *pp++;
- c = *cp++;
- a = *lp++;
-
-#ifndef PNG_SLOW_PAETH
- p = b - c;
- pc = a - c;
-#ifdef PNG_USE_ABS
- pa = abs(p);
- pb = abs(pc);
- pc = abs(p + pc);
-#else
- pa = p < 0 ? -p : p;
- pb = pc < 0 ? -pc : pc;
- pc = (p + pc) < 0 ? -(p + pc) : p + pc;
-#endif
- p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c;
-#else /* PNG_SLOW_PAETH */
- p = a + b - c;
- pa = abs(p - a);
- pb = abs(p - b);
- pc = abs(p - c);
-
- if (pa <= pb && pa <= pc)
- p = a;
-
- else if (pb <= pc)
- p = b;
-
- else
- p = c;
-#endif /* PNG_SLOW_PAETH */
-
- v = *dp++ = (png_byte)(((int)*rp++ - p) & 0xff);
-
- sum += (v < 128) ? v : 256 - v;
-
- if (sum > lmins) /* We are already worse, don't continue. */
- break;
- }
-
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
- {
- int j;
- png_uint_32 sumhi, sumlo;
- sumlo = sum & PNG_LOMASK;
- sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK;
-
- for (j = 0; j < num_p_filters; j++)
- {
- if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_PAETH)
- {
- sumlo = (sumlo * png_ptr->filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
-
- sumhi = (sumhi * png_ptr->filter_weights[j]) >>
- PNG_WEIGHT_SHIFT;
- }
- }
-
- sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_PAETH]) >>
- PNG_COST_SHIFT;
-
- sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_PAETH]) >>
- PNG_COST_SHIFT;
-
- if (sumhi > PNG_HIMASK)
- sum = PNG_MAXSUM;
-
- else
- sum = (sumhi << PNG_HISHIFT) + sumlo;
- }
-#endif
-
- if (sum < mins)
- {
- best_row = png_ptr->paeth_row;
- }
- }
-#endif /* PNG_WRITE_FILTER_SUPPORTED */
- /* Do the actual writing of the filtered row data from the chosen filter. */
-
- png_write_filtered_row(png_ptr, best_row);
-
-#ifdef PNG_WRITE_FILTER_SUPPORTED
-#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
- /* Save the type of filter we picked this time for future calculations */
- if (png_ptr->num_prev_filters > 0)
- {
- int j;
-
- for (j = 1; j < num_p_filters; j++)
- {
- png_ptr->prev_filters[j] = png_ptr->prev_filters[j - 1];
- }
-
- png_ptr->prev_filters[j] = best_row[0];
- }
-#endif
-#endif /* PNG_WRITE_FILTER_SUPPORTED */
-}
-
-
-/* Do the actual writing of a previously filtered row. */
-void /* PRIVATE */
-png_write_filtered_row(png_structp png_ptr, png_bytep filtered_row)
-{
- png_size_t avail;
-
- png_debug(1, "in png_write_filtered_row");
-
- png_debug1(2, "filter = %d", filtered_row[0]);
- /* Set up the zlib input buffer */
-
- png_ptr->zstream.next_in = filtered_row;
- png_ptr->zstream.avail_in = 0;
- avail = png_ptr->row_info.rowbytes + 1;
- /* Repeat until we have compressed all the data */
- do
- {
- int ret; /* Return of zlib */
-
- /* Record the number of bytes available - zlib supports at least 65535
- * bytes at one step, depending on the size of the zlib type 'uInt', the
- * maximum size zlib can write at once is ZLIB_IO_MAX (from pngpriv.h).
- * Use this because on 16 bit systems 'rowbytes' can be up to 65536 (i.e.
- * one more than 16 bits) and, in this case 'rowbytes+1' can overflow a
- * uInt. ZLIB_IO_MAX can be safely reduced to cause zlib to be called
- * with smaller chunks of data.
- */
- if (png_ptr->zstream.avail_in == 0)
- {
- if (avail > ZLIB_IO_MAX)
- {
- png_ptr->zstream.avail_in = ZLIB_IO_MAX;
- avail -= ZLIB_IO_MAX;
- }
-
- else
- {
- /* So this will fit in the available uInt space: */
- png_ptr->zstream.avail_in = (uInt)avail;
- avail = 0;
- }
- }
-
- /* Compress the data */
- ret = deflate(&png_ptr->zstream, Z_NO_FLUSH);
-
- /* Check for compression errors */
- if (ret != Z_OK)
- {
- if (png_ptr->zstream.msg != NULL)
- png_error(png_ptr, png_ptr->zstream.msg);
-
- else
- png_error(png_ptr, "zlib error");
- }
-
- /* See if it is time to write another IDAT */
- if (!(png_ptr->zstream.avail_out))
- {
- /* Write the IDAT and reset the zlib output buffer */
- png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
- }
- /* Repeat until all data has been compressed */
- } while (avail > 0 || png_ptr->zstream.avail_in > 0);
-
- /* Swap the current and previous rows */
- if (png_ptr->prev_row != NULL)
- {
- png_bytep tptr;
-
- tptr = png_ptr->prev_row;
- png_ptr->prev_row = png_ptr->row_buf;
- png_ptr->row_buf = tptr;
- }
-
- /* Finish row - updates counters and flushes zlib if last row */
- png_write_finish_row(png_ptr);
-
-#ifdef PNG_WRITE_FLUSH_SUPPORTED
- png_ptr->flush_rows++;
-
- if (png_ptr->flush_dist > 0 &&
- png_ptr->flush_rows >= png_ptr->flush_dist)
- {
- png_write_flush(png_ptr);
- }
-#endif
-}
-#endif /* PNG_WRITE_SUPPORTED */
+
+/* pngwutil.c - utilities to write a PNG file
+ *
+ * Last changed in libpng 1.2.43 [February 25, 2010]
+ * Copyright (c) 1998-2010 Glenn Randers-Pehrson
+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ *
+ * This code is released under the libpng license.
+ * For conditions of distribution and use, see the disclaimer
+ * and license in png.h
+ */
+
+#define PNG_INTERNAL
+#define PNG_NO_PEDANTIC_WARNINGS
+#include "png.h"
+#ifdef PNG_WRITE_SUPPORTED
+
+/* Place a 32-bit number into a buffer in PNG byte order. We work
+ * with unsigned numbers for convenience, although one supported
+ * ancillary chunk uses signed (two's complement) numbers.
+ */
+void PNGAPI
+png_save_uint_32(png_bytep buf, png_uint_32 i)
+{
+ buf[0] = (png_byte)((i >> 24) & 0xff);
+ buf[1] = (png_byte)((i >> 16) & 0xff);
+ buf[2] = (png_byte)((i >> 8) & 0xff);
+ buf[3] = (png_byte)(i & 0xff);
+}
+
+/* The png_save_int_32 function assumes integers are stored in two's
+ * complement format. If this isn't the case, then this routine needs to
+ * be modified to write data in two's complement format.
+ */
+void PNGAPI
+png_save_int_32(png_bytep buf, png_int_32 i)
+{
+ buf[0] = (png_byte)((i >> 24) & 0xff);
+ buf[1] = (png_byte)((i >> 16) & 0xff);
+ buf[2] = (png_byte)((i >> 8) & 0xff);
+ buf[3] = (png_byte)(i & 0xff);
+}
+
+/* Place a 16-bit number into a buffer in PNG byte order.
+ * The parameter is declared unsigned int, not png_uint_16,
+ * just to avoid potential problems on pre-ANSI C compilers.
+ */
+void PNGAPI
+png_save_uint_16(png_bytep buf, unsigned int i)
+{
+ buf[0] = (png_byte)((i >> 8) & 0xff);
+ buf[1] = (png_byte)(i & 0xff);
+}
+
+/* Simple function to write the signature. If we have already written
+ * the magic bytes of the signature, or more likely, the PNG stream is
+ * being embedded into another stream and doesn't need its own signature,
+ * we should call png_set_sig_bytes() to tell libpng how many of the
+ * bytes have already been written.
+ */
+void /* PRIVATE */
+png_write_sig(png_structp png_ptr)
+{
+ png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
+
+ /* Write the rest of the 8 byte signature */
+ png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes],
+ (png_size_t)(8 - png_ptr->sig_bytes));
+ if (png_ptr->sig_bytes < 3)
+ png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
+}
+
+/* Write a PNG chunk all at once. The type is an array of ASCII characters
+ * representing the chunk name. The array must be at least 4 bytes in
+ * length, and does not need to be null terminated. To be safe, pass the
+ * pre-defined chunk names here, and if you need a new one, define it
+ * where the others are defined. The length is the length of the data.
+ * All the data must be present. If that is not possible, use the
+ * png_write_chunk_start(), png_write_chunk_data(), and png_write_chunk_end()
+ * functions instead.
+ */
+void PNGAPI
+png_write_chunk(png_structp png_ptr, png_bytep chunk_name,
+ png_bytep data, png_size_t length)
+{
+ if (png_ptr == NULL)
+ return;
+ png_write_chunk_start(png_ptr, chunk_name, (png_uint_32)length);
+ png_write_chunk_data(png_ptr, data, (png_size_t)length);
+ png_write_chunk_end(png_ptr);
+}
+
+/* Write the start of a PNG chunk. The type is the chunk type.
+ * The total_length is the sum of the lengths of all the data you will be
+ * passing in png_write_chunk_data().
+ */
+void PNGAPI
+png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name,
+ png_uint_32 length)
+{
+ png_byte buf[8];
+
+ png_debug2(0, "Writing %s chunk, length = %lu", chunk_name,
+ (unsigned long)length);
+
+ if (png_ptr == NULL)
+ return;
+
+
+ /* Write the length and the chunk name */
+ png_save_uint_32(buf, length);
+ png_memcpy(buf + 4, chunk_name, 4);
+ png_write_data(png_ptr, buf, (png_size_t)8);
+ /* Put the chunk name into png_ptr->chunk_name */
+ png_memcpy(png_ptr->chunk_name, chunk_name, 4);
+ /* Reset the crc and run it over the chunk name */
+ png_reset_crc(png_ptr);
+ png_calculate_crc(png_ptr, chunk_name, (png_size_t)4);
+}
+
+/* Write the data of a PNG chunk started with png_write_chunk_start().
+ * Note that multiple calls to this function are allowed, and that the
+ * sum of the lengths from these calls *must* add up to the total_length
+ * given to png_write_chunk_start().
+ */
+void PNGAPI
+png_write_chunk_data(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+ /* Write the data, and run the CRC over it */
+ if (png_ptr == NULL)
+ return;
+ if (data != NULL && length > 0)
+ {
+ png_write_data(png_ptr, data, length);
+ /* Update the CRC after writing the data,
+ * in case that the user I/O routine alters it.
+ */
+ png_calculate_crc(png_ptr, data, length);
+ }
+}
+
+/* Finish a chunk started with png_write_chunk_start(). */
+void PNGAPI
+png_write_chunk_end(png_structp png_ptr)
+{
+ png_byte buf[4];
+
+ if (png_ptr == NULL) return;
+
+ /* Write the crc in a single operation */
+ png_save_uint_32(buf, png_ptr->crc);
+
+ png_write_data(png_ptr, buf, (png_size_t)4);
+}
+
+#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_iCCP_SUPPORTED)
+/* This pair of functions encapsulates the operation of (a) compressing a
+ * text string, and (b) issuing it later as a series of chunk data writes.
+ * The compression_state structure is shared context for these functions
+ * set up by the caller in order to make the whole mess thread-safe.
+ */
+
+typedef struct
+{
+ char *input; /* The uncompressed input data */
+ int input_len; /* Its length */
+ int num_output_ptr; /* Number of output pointers used */
+ int max_output_ptr; /* Size of output_ptr */
+ png_charpp output_ptr; /* Array of pointers to output */
+} compression_state;
+
+/* Compress given text into storage in the png_ptr structure */
+static int /* PRIVATE */
+png_text_compress(png_structp png_ptr,
+ png_charp text, png_size_t text_len, int compression,
+ compression_state *comp)
+{
+ int ret;
+
+ comp->num_output_ptr = 0;
+ comp->max_output_ptr = 0;
+ comp->output_ptr = NULL;
+ comp->input = NULL;
+ comp->input_len = 0;
+
+ /* We may just want to pass the text right through */
+ if (compression == PNG_TEXT_COMPRESSION_NONE)
+ {
+ comp->input = text;
+ comp->input_len = text_len;
+ return((int)text_len);
+ }
+
+ if (compression >= PNG_TEXT_COMPRESSION_LAST)
+ {
+#if defined(PNG_STDIO_SUPPORTED) && !defined(_WIN32_WCE)
+ char msg[50];
+ png_snprintf(msg, 50, "Unknown compression type %d", compression);
+ png_warning(png_ptr, msg);
+#else
+ png_warning(png_ptr, "Unknown compression type");
+#endif
+ }
+
+ /* We can't write the chunk until we find out how much data we have,
+ * which means we need to run the compressor first and save the
+ * output. This shouldn't be a problem, as the vast majority of
+ * comments should be reasonable, but we will set up an array of
+ * malloc'd pointers to be sure.
+ *
+ * If we knew the application was well behaved, we could simplify this
+ * greatly by assuming we can always malloc an output buffer large
+ * enough to hold the compressed text ((1001 * text_len / 1000) + 12)
+ * and malloc this directly. The only time this would be a bad idea is
+ * if we can't malloc more than 64K and we have 64K of random input
+ * data, or if the input string is incredibly large (although this
+ * wouldn't cause a failure, just a slowdown due to swapping).
+ */
+
+ /* Set up the compression buffers */
+ png_ptr->zstream.avail_in = (uInt)text_len;
+ png_ptr->zstream.next_in = (Bytef *)text;
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+ png_ptr->zstream.next_out = (Bytef *)png_ptr->zbuf;
+
+ /* This is the same compression loop as in png_write_row() */
+ do
+ {
+ /* Compress the data */
+ ret = deflate(&png_ptr->zstream, Z_NO_FLUSH);
+ if (ret != Z_OK)
+ {
+ /* Error */
+ if (png_ptr->zstream.msg != NULL)
+ png_error(png_ptr, png_ptr->zstream.msg);
+ else
+ png_error(png_ptr, "zlib error");
+ }
+ /* Check to see if we need more room */
+ if (!(png_ptr->zstream.avail_out))
+ {
+ /* Make sure the output array has room */
+ if (comp->num_output_ptr >= comp->max_output_ptr)
+ {
+ int old_max;
+
+ old_max = comp->max_output_ptr;
+ comp->max_output_ptr = comp->num_output_ptr + 4;
+ if (comp->output_ptr != NULL)
+ {
+ png_charpp old_ptr;
+
+ old_ptr = comp->output_ptr;
+ comp->output_ptr = (png_charpp)png_malloc(png_ptr,
+ (png_uint_32)
+ (comp->max_output_ptr * png_sizeof(png_charpp)));
+ png_memcpy(comp->output_ptr, old_ptr, old_max
+ * png_sizeof(png_charp));
+ png_free(png_ptr, old_ptr);
+ }
+ else
+ comp->output_ptr = (png_charpp)png_malloc(png_ptr,
+ (png_uint_32)
+ (comp->max_output_ptr * png_sizeof(png_charp)));
+ }
+
+ /* Save the data */
+ comp->output_ptr[comp->num_output_ptr] =
+ (png_charp)png_malloc(png_ptr,
+ (png_uint_32)png_ptr->zbuf_size);
+ png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
+ png_ptr->zbuf_size);
+ comp->num_output_ptr++;
+
+ /* and reset the buffer */
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ }
+ /* Continue until we don't have any more to compress */
+ } while (png_ptr->zstream.avail_in);
+
+ /* Finish the compression */
+ do
+ {
+ /* Tell zlib we are finished */
+ ret = deflate(&png_ptr->zstream, Z_FINISH);
+
+ if (ret == Z_OK)
+ {
+ /* Check to see if we need more room */
+ if (!(png_ptr->zstream.avail_out))
+ {
+ /* Check to make sure our output array has room */
+ if (comp->num_output_ptr >= comp->max_output_ptr)
+ {
+ int old_max;
+
+ old_max = comp->max_output_ptr;
+ comp->max_output_ptr = comp->num_output_ptr + 4;
+ if (comp->output_ptr != NULL)
+ {
+ png_charpp old_ptr;
+
+ old_ptr = comp->output_ptr;
+ /* This could be optimized to realloc() */
+ comp->output_ptr = (png_charpp)png_malloc(png_ptr,
+ (png_uint_32)(comp->max_output_ptr *
+ png_sizeof(png_charp)));
+ png_memcpy(comp->output_ptr, old_ptr,
+ old_max * png_sizeof(png_charp));
+ png_free(png_ptr, old_ptr);
+ }
+ else
+ comp->output_ptr = (png_charpp)png_malloc(png_ptr,
+ (png_uint_32)(comp->max_output_ptr *
+ png_sizeof(png_charp)));
+ }
+
+ /* Save the data */
+ comp->output_ptr[comp->num_output_ptr] =
+ (png_charp)png_malloc(png_ptr,
+ (png_uint_32)png_ptr->zbuf_size);
+ png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
+ png_ptr->zbuf_size);
+ comp->num_output_ptr++;
+
+ /* and reset the buffer pointers */
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ }
+ }
+ else if (ret != Z_STREAM_END)
+ {
+ /* We got an error */
+ if (png_ptr->zstream.msg != NULL)
+ png_error(png_ptr, png_ptr->zstream.msg);
+ else
+ png_error(png_ptr, "zlib error");
+ }
+ } while (ret != Z_STREAM_END);
+
+ /* Text length is number of buffers plus last buffer */
+ text_len = png_ptr->zbuf_size * comp->num_output_ptr;
+ if (png_ptr->zstream.avail_out < png_ptr->zbuf_size)
+ text_len += png_ptr->zbuf_size - (png_size_t)png_ptr->zstream.avail_out;
+
+ return((int)text_len);
+}
+
+/* Ship the compressed text out via chunk writes */
+static void /* PRIVATE */
+png_write_compressed_data_out(png_structp png_ptr, compression_state *comp)
+{
+ int i;
+
+ /* Handle the no-compression case */
+ if (comp->input)
+ {
+ png_write_chunk_data(png_ptr, (png_bytep)comp->input,
+ (png_size_t)comp->input_len);
+ return;
+ }
+
+ /* Write saved output buffers, if any */
+ for (i = 0; i < comp->num_output_ptr; i++)
+ {
+ png_write_chunk_data(png_ptr, (png_bytep)comp->output_ptr[i],
+ (png_size_t)png_ptr->zbuf_size);
+ png_free(png_ptr, comp->output_ptr[i]);
+ comp->output_ptr[i]=NULL;
+ }
+ if (comp->max_output_ptr != 0)
+ png_free(png_ptr, comp->output_ptr);
+ comp->output_ptr=NULL;
+ /* Write anything left in zbuf */
+ if (png_ptr->zstream.avail_out < (png_uint_32)png_ptr->zbuf_size)
+ png_write_chunk_data(png_ptr, png_ptr->zbuf,
+ (png_size_t)(png_ptr->zbuf_size - png_ptr->zstream.avail_out));
+
+ /* Reset zlib for another zTXt/iTXt or image data */
+ deflateReset(&png_ptr->zstream);
+ png_ptr->zstream.data_type = Z_BINARY;
+}
+#endif
+
+/* Write the IHDR chunk, and update the png_struct with the necessary
+ * information. Note that the rest of this code depends upon this
+ * information being correct.
+ */
+void /* PRIVATE */
+png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
+ int bit_depth, int color_type, int compression_type, int filter_type,
+ int interlace_type)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_IHDR;
+#endif
+ int ret;
+
+ png_byte buf[13]; /* Buffer to store the IHDR info */
+
+ png_debug(1, "in png_write_IHDR");
+
+ /* Check that we have valid input data from the application info */
+ switch (color_type)
+ {
+ case PNG_COLOR_TYPE_GRAY:
+ switch (bit_depth)
+ {
+ case 1:
+ case 2:
+ case 4:
+ case 8:
+ case 16: png_ptr->channels = 1; break;
+ default: png_error(png_ptr,
+ "Invalid bit depth for grayscale image");
+ }
+ break;
+ case PNG_COLOR_TYPE_RGB:
+ if (bit_depth != 8 && bit_depth != 16)
+ png_error(png_ptr, "Invalid bit depth for RGB image");
+ png_ptr->channels = 3;
+ break;
+ case PNG_COLOR_TYPE_PALETTE:
+ switch (bit_depth)
+ {
+ case 1:
+ case 2:
+ case 4:
+ case 8: png_ptr->channels = 1; break;
+ default: png_error(png_ptr, "Invalid bit depth for paletted image");
+ }
+ break;
+ case PNG_COLOR_TYPE_GRAY_ALPHA:
+ if (bit_depth != 8 && bit_depth != 16)
+ png_error(png_ptr, "Invalid bit depth for grayscale+alpha image");
+ png_ptr->channels = 2;
+ break;
+ case PNG_COLOR_TYPE_RGB_ALPHA:
+ if (bit_depth != 8 && bit_depth != 16)
+ png_error(png_ptr, "Invalid bit depth for RGBA image");
+ png_ptr->channels = 4;
+ break;
+ default:
+ png_error(png_ptr, "Invalid image color type specified");
+ }
+
+ if (compression_type != PNG_COMPRESSION_TYPE_BASE)
+ {
+ png_warning(png_ptr, "Invalid compression type specified");
+ compression_type = PNG_COMPRESSION_TYPE_BASE;
+ }
+
+ /* Write filter_method 64 (intrapixel differencing) only if
+ * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and
+ * 2. Libpng did not write a PNG signature (this filter_method is only
+ * used in PNG datastreams that are embedded in MNG datastreams) and
+ * 3. The application called png_permit_mng_features with a mask that
+ * included PNG_FLAG_MNG_FILTER_64 and
+ * 4. The filter_method is 64 and
+ * 5. The color_type is RGB or RGBA
+ */
+ if (
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ !((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
+ ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) &&
+ (color_type == PNG_COLOR_TYPE_RGB ||
+ color_type == PNG_COLOR_TYPE_RGB_ALPHA) &&
+ (filter_type == PNG_INTRAPIXEL_DIFFERENCING)) &&
+#endif
+ filter_type != PNG_FILTER_TYPE_BASE)
+ {
+ png_warning(png_ptr, "Invalid filter type specified");
+ filter_type = PNG_FILTER_TYPE_BASE;
+ }
+
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+ if (interlace_type != PNG_INTERLACE_NONE &&
+ interlace_type != PNG_INTERLACE_ADAM7)
+ {
+ png_warning(png_ptr, "Invalid interlace type specified");
+ interlace_type = PNG_INTERLACE_ADAM7;
+ }
+#else
+ interlace_type=PNG_INTERLACE_NONE;
+#endif
+
+ /* Save the relevent information */
+ png_ptr->bit_depth = (png_byte)bit_depth;
+ png_ptr->color_type = (png_byte)color_type;
+ png_ptr->interlaced = (png_byte)interlace_type;
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ png_ptr->filter_type = (png_byte)filter_type;
+#endif
+ png_ptr->compression_type = (png_byte)compression_type;
+ png_ptr->width = width;
+ png_ptr->height = height;
+
+ png_ptr->pixel_depth = (png_byte)(bit_depth * png_ptr->channels);
+ png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width);
+ /* Set the usr info, so any transformations can modify it */
+ png_ptr->usr_width = png_ptr->width;
+ png_ptr->usr_bit_depth = png_ptr->bit_depth;
+ png_ptr->usr_channels = png_ptr->channels;
+
+ /* Pack the header information into the buffer */
+ png_save_uint_32(buf, width);
+ png_save_uint_32(buf + 4, height);
+ buf[8] = (png_byte)bit_depth;
+ buf[9] = (png_byte)color_type;
+ buf[10] = (png_byte)compression_type;
+ buf[11] = (png_byte)filter_type;
+ buf[12] = (png_byte)interlace_type;
+
+ /* Write the chunk */
+ png_write_chunk(png_ptr, (png_bytep)png_IHDR, buf, (png_size_t)13);
+
+ /* Initialize zlib with PNG info */
+ png_ptr->zstream.zalloc = png_zalloc;
+ png_ptr->zstream.zfree = png_zfree;
+ png_ptr->zstream.opaque = (voidpf)png_ptr;
+ if (!(png_ptr->do_filter))
+ {
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE ||
+ png_ptr->bit_depth < 8)
+ png_ptr->do_filter = PNG_FILTER_NONE;
+ else
+ png_ptr->do_filter = PNG_ALL_FILTERS;
+ }
+ if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_STRATEGY))
+ {
+ if (png_ptr->do_filter != PNG_FILTER_NONE)
+ png_ptr->zlib_strategy = Z_FILTERED;
+ else
+ png_ptr->zlib_strategy = Z_DEFAULT_STRATEGY;
+ }
+ if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_LEVEL))
+ png_ptr->zlib_level = Z_DEFAULT_COMPRESSION;
+ if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL))
+ png_ptr->zlib_mem_level = 8;
+ if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS))
+ png_ptr->zlib_window_bits = 15;
+ if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_METHOD))
+ png_ptr->zlib_method = 8;
+ ret = deflateInit2(&png_ptr->zstream, png_ptr->zlib_level,
+ png_ptr->zlib_method, png_ptr->zlib_window_bits,
+ png_ptr->zlib_mem_level, png_ptr->zlib_strategy);
+ if (ret != Z_OK)
+ {
+ if (ret == Z_VERSION_ERROR) png_error(png_ptr,
+ "zlib failed to initialize compressor -- version error");
+ if (ret == Z_STREAM_ERROR) png_error(png_ptr,
+ "zlib failed to initialize compressor -- stream error");
+ if (ret == Z_MEM_ERROR) png_error(png_ptr,
+ "zlib failed to initialize compressor -- mem error");
+ png_error(png_ptr, "zlib failed to initialize compressor");
+ }
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+ /* libpng is not interested in zstream.data_type */
+ /* Set it to a predefined value, to avoid its evaluation inside zlib */
+ png_ptr->zstream.data_type = Z_BINARY;
+
+ png_ptr->mode = PNG_HAVE_IHDR;
+}
+
+/* Write the palette. We are careful not to trust png_color to be in the
+ * correct order for PNG, so people can redefine it to any convenient
+ * structure.
+ */
+void /* PRIVATE */
+png_write_PLTE(png_structp png_ptr, png_colorp palette, png_uint_32 num_pal)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_PLTE;
+#endif
+ png_uint_32 i;
+ png_colorp pal_ptr;
+ png_byte buf[3];
+
+ png_debug(1, "in png_write_PLTE");
+
+ if ((
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ !(png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) &&
+#endif
+ num_pal == 0) || num_pal > 256)
+ {
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_error(png_ptr, "Invalid number of colors in palette");
+ }
+ else
+ {
+ png_warning(png_ptr, "Invalid number of colors in palette");
+ return;
+ }
+ }
+
+ if (!(png_ptr->color_type&PNG_COLOR_MASK_COLOR))
+ {
+ png_warning(png_ptr,
+ "Ignoring request to write a PLTE chunk in grayscale PNG");
+ return;
+ }
+
+ png_ptr->num_palette = (png_uint_16)num_pal;
+ png_debug1(3, "num_palette = %d", png_ptr->num_palette);
+
+ png_write_chunk_start(png_ptr, (png_bytep)png_PLTE,
+ (png_uint_32)(num_pal * 3));
+#ifdef PNG_POINTER_INDEXING_SUPPORTED
+ for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++)
+ {
+ buf[0] = pal_ptr->red;
+ buf[1] = pal_ptr->green;
+ buf[2] = pal_ptr->blue;
+ png_write_chunk_data(png_ptr, buf, (png_size_t)3);
+ }
+#else
+ /* This is a little slower but some buggy compilers need to do this
+ * instead
+ */
+ pal_ptr=palette;
+ for (i = 0; i < num_pal; i++)
+ {
+ buf[0] = pal_ptr[i].red;
+ buf[1] = pal_ptr[i].green;
+ buf[2] = pal_ptr[i].blue;
+ png_write_chunk_data(png_ptr, buf, (png_size_t)3);
+ }
+#endif
+ png_write_chunk_end(png_ptr);
+ png_ptr->mode |= PNG_HAVE_PLTE;
+}
+
+/* Write an IDAT chunk */
+void /* PRIVATE */
+png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_IDAT;
+#endif
+
+ png_debug(1, "in png_write_IDAT");
+
+ /* Optimize the CMF field in the zlib stream. */
+ /* This hack of the zlib stream is compliant to the stream specification. */
+ if (!(png_ptr->mode & PNG_HAVE_IDAT) &&
+ png_ptr->compression_type == PNG_COMPRESSION_TYPE_BASE)
+ {
+ unsigned int z_cmf = data[0]; /* zlib compression method and flags */
+ if ((z_cmf & 0x0f) == 8 && (z_cmf & 0xf0) <= 0x70)
+ {
+ /* Avoid memory underflows and multiplication overflows.
+ *
+ * The conditions below are practically always satisfied;
+ * however, they still must be checked.
+ */
+ if (length >= 2 &&
+ png_ptr->height < 16384 && png_ptr->width < 16384)
+ {
+ png_uint_32 uncompressed_idat_size = png_ptr->height *
+ ((png_ptr->width *
+ png_ptr->channels * png_ptr->bit_depth + 15) >> 3);
+ unsigned int z_cinfo = z_cmf >> 4;
+ unsigned int half_z_window_size = 1 << (z_cinfo + 7);
+ while (uncompressed_idat_size <= half_z_window_size &&
+ half_z_window_size >= 256)
+ {
+ z_cinfo--;
+ half_z_window_size >>= 1;
+ }
+ z_cmf = (z_cmf & 0x0f) | (z_cinfo << 4);
+ if (data[0] != (png_byte)z_cmf)
+ {
+ data[0] = (png_byte)z_cmf;
+ data[1] &= 0xe0;
+ data[1] += (png_byte)(0x1f - ((z_cmf << 8) + data[1]) % 0x1f);
+ }
+ }
+ }
+ else
+ png_error(png_ptr,
+ "Invalid zlib compression method or flags in IDAT");
+ }
+
+ png_write_chunk(png_ptr, (png_bytep)png_IDAT, data, length);
+ png_ptr->mode |= PNG_HAVE_IDAT;
+}
+
+/* Write an IEND chunk */
+void /* PRIVATE */
+png_write_IEND(png_structp png_ptr)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_IEND;
+#endif
+
+ png_debug(1, "in png_write_IEND");
+
+ png_write_chunk(png_ptr, (png_bytep)png_IEND, png_bytep_NULL,
+ (png_size_t)0);
+ png_ptr->mode |= PNG_HAVE_IEND;
+}
+
+#ifdef PNG_WRITE_gAMA_SUPPORTED
+/* Write a gAMA chunk */
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+void /* PRIVATE */
+png_write_gAMA(png_structp png_ptr, double file_gamma)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_gAMA;
+#endif
+ png_uint_32 igamma;
+ png_byte buf[4];
+
+ png_debug(1, "in png_write_gAMA");
+
+ /* file_gamma is saved in 1/100,000ths */
+ igamma = (png_uint_32)(file_gamma * 100000.0 + 0.5);
+ png_save_uint_32(buf, igamma);
+ png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, (png_size_t)4);
+}
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+void /* PRIVATE */
+png_write_gAMA_fixed(png_structp png_ptr, png_fixed_point file_gamma)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_gAMA;
+#endif
+ png_byte buf[4];
+
+ png_debug(1, "in png_write_gAMA");
+
+ /* file_gamma is saved in 1/100,000ths */
+ png_save_uint_32(buf, (png_uint_32)file_gamma);
+ png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, (png_size_t)4);
+}
+#endif
+#endif
+
+#ifdef PNG_WRITE_sRGB_SUPPORTED
+/* Write a sRGB chunk */
+void /* PRIVATE */
+png_write_sRGB(png_structp png_ptr, int srgb_intent)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_sRGB;
+#endif
+ png_byte buf[1];
+
+ png_debug(1, "in png_write_sRGB");
+
+ if (srgb_intent >= PNG_sRGB_INTENT_LAST)
+ png_warning(png_ptr,
+ "Invalid sRGB rendering intent specified");
+ buf[0]=(png_byte)srgb_intent;
+ png_write_chunk(png_ptr, (png_bytep)png_sRGB, buf, (png_size_t)1);
+}
+#endif
+
+#ifdef PNG_WRITE_iCCP_SUPPORTED
+/* Write an iCCP chunk */
+void /* PRIVATE */
+png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
+ png_charp profile, int profile_len)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_iCCP;
+#endif
+ png_size_t name_len;
+ png_charp new_name;
+ compression_state comp;
+ int embedded_profile_len = 0;
+
+ png_debug(1, "in png_write_iCCP");
+
+ comp.num_output_ptr = 0;
+ comp.max_output_ptr = 0;
+ comp.output_ptr = NULL;
+ comp.input = NULL;
+ comp.input_len = 0;
+
+ if ((name_len = png_check_keyword(png_ptr, name,
+ &new_name)) == 0)
+ return;
+
+ if (compression_type != PNG_COMPRESSION_TYPE_BASE)
+ png_warning(png_ptr, "Unknown compression type in iCCP chunk");
+
+ if (profile == NULL)
+ profile_len = 0;
+
+ if (profile_len > 3)
+ embedded_profile_len =
+ ((*( (png_bytep)profile ))<<24) |
+ ((*( (png_bytep)profile + 1))<<16) |
+ ((*( (png_bytep)profile + 2))<< 8) |
+ ((*( (png_bytep)profile + 3)) );
+
+ if (embedded_profile_len < 0)
+ {
+ png_warning(png_ptr,
+ "Embedded profile length in iCCP chunk is negative");
+ png_free(png_ptr, new_name);
+ return;
+ }
+
+ if (profile_len < embedded_profile_len)
+ {
+ png_warning(png_ptr,
+ "Embedded profile length too large in iCCP chunk");
+ png_free(png_ptr, new_name);
+ return;
+ }
+
+ if (profile_len > embedded_profile_len)
+ {
+ png_warning(png_ptr,
+ "Truncating profile to actual length in iCCP chunk");
+ profile_len = embedded_profile_len;
+ }
+
+ if (profile_len)
+ profile_len = png_text_compress(png_ptr, profile,
+ (png_size_t)profile_len, PNG_COMPRESSION_TYPE_BASE, &comp);
+
+ /* Make sure we include the NULL after the name and the compression type */
+ png_write_chunk_start(png_ptr, (png_bytep)png_iCCP,
+ (png_uint_32)(name_len + profile_len + 2));
+ new_name[name_len + 1] = 0x00;
+ png_write_chunk_data(png_ptr, (png_bytep)new_name,
+ (png_size_t)(name_len + 2));
+
+ if (profile_len)
+ png_write_compressed_data_out(png_ptr, &comp);
+
+ png_write_chunk_end(png_ptr);
+ png_free(png_ptr, new_name);
+}
+#endif
+
+#ifdef PNG_WRITE_sPLT_SUPPORTED
+/* Write a sPLT chunk */
+void /* PRIVATE */
+png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_sPLT;
+#endif
+ png_size_t name_len;
+ png_charp new_name;
+ png_byte entrybuf[10];
+ int entry_size = (spalette->depth == 8 ? 6 : 10);
+ int palette_size = entry_size * spalette->nentries;
+ png_sPLT_entryp ep;
+#ifndef PNG_POINTER_INDEXING_SUPPORTED
+ int i;
+#endif
+
+ png_debug(1, "in png_write_sPLT");
+
+ if ((name_len = png_check_keyword(png_ptr,spalette->name, &new_name))==0)
+ return;
+
+ /* Make sure we include the NULL after the name */
+ png_write_chunk_start(png_ptr, (png_bytep)png_sPLT,
+ (png_uint_32)(name_len + 2 + palette_size));
+ png_write_chunk_data(png_ptr, (png_bytep)new_name,
+ (png_size_t)(name_len + 1));
+ png_write_chunk_data(png_ptr, (png_bytep)&spalette->depth, (png_size_t)1);
+
+ /* Loop through each palette entry, writing appropriately */
+#ifdef PNG_POINTER_INDEXING_SUPPORTED
+ for (ep = spalette->entries; epentries + spalette->nentries; ep++)
+ {
+ if (spalette->depth == 8)
+ {
+ entrybuf[0] = (png_byte)ep->red;
+ entrybuf[1] = (png_byte)ep->green;
+ entrybuf[2] = (png_byte)ep->blue;
+ entrybuf[3] = (png_byte)ep->alpha;
+ png_save_uint_16(entrybuf + 4, ep->frequency);
+ }
+ else
+ {
+ png_save_uint_16(entrybuf + 0, ep->red);
+ png_save_uint_16(entrybuf + 2, ep->green);
+ png_save_uint_16(entrybuf + 4, ep->blue);
+ png_save_uint_16(entrybuf + 6, ep->alpha);
+ png_save_uint_16(entrybuf + 8, ep->frequency);
+ }
+ png_write_chunk_data(png_ptr, entrybuf, (png_size_t)entry_size);
+ }
+#else
+ ep=spalette->entries;
+ for (i=0; i>spalette->nentries; i++)
+ {
+ if (spalette->depth == 8)
+ {
+ entrybuf[0] = (png_byte)ep[i].red;
+ entrybuf[1] = (png_byte)ep[i].green;
+ entrybuf[2] = (png_byte)ep[i].blue;
+ entrybuf[3] = (png_byte)ep[i].alpha;
+ png_save_uint_16(entrybuf + 4, ep[i].frequency);
+ }
+ else
+ {
+ png_save_uint_16(entrybuf + 0, ep[i].red);
+ png_save_uint_16(entrybuf + 2, ep[i].green);
+ png_save_uint_16(entrybuf + 4, ep[i].blue);
+ png_save_uint_16(entrybuf + 6, ep[i].alpha);
+ png_save_uint_16(entrybuf + 8, ep[i].frequency);
+ }
+ png_write_chunk_data(png_ptr, entrybuf, (png_size_t)entry_size);
+ }
+#endif
+
+ png_write_chunk_end(png_ptr);
+ png_free(png_ptr, new_name);
+}
+#endif
+
+#ifdef PNG_WRITE_sBIT_SUPPORTED
+/* Write the sBIT chunk */
+void /* PRIVATE */
+png_write_sBIT(png_structp png_ptr, png_color_8p sbit, int color_type)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_sBIT;
+#endif
+ png_byte buf[4];
+ png_size_t size;
+
+ png_debug(1, "in png_write_sBIT");
+
+ /* Make sure we don't depend upon the order of PNG_COLOR_8 */
+ if (color_type & PNG_COLOR_MASK_COLOR)
+ {
+ png_byte maxbits;
+
+ maxbits = (png_byte)(color_type==PNG_COLOR_TYPE_PALETTE ? 8 :
+ png_ptr->usr_bit_depth);
+ if (sbit->red == 0 || sbit->red > maxbits ||
+ sbit->green == 0 || sbit->green > maxbits ||
+ sbit->blue == 0 || sbit->blue > maxbits)
+ {
+ png_warning(png_ptr, "Invalid sBIT depth specified");
+ return;
+ }
+ buf[0] = sbit->red;
+ buf[1] = sbit->green;
+ buf[2] = sbit->blue;
+ size = 3;
+ }
+ else
+ {
+ if (sbit->gray == 0 || sbit->gray > png_ptr->usr_bit_depth)
+ {
+ png_warning(png_ptr, "Invalid sBIT depth specified");
+ return;
+ }
+ buf[0] = sbit->gray;
+ size = 1;
+ }
+
+ if (color_type & PNG_COLOR_MASK_ALPHA)
+ {
+ if (sbit->alpha == 0 || sbit->alpha > png_ptr->usr_bit_depth)
+ {
+ png_warning(png_ptr, "Invalid sBIT depth specified");
+ return;
+ }
+ buf[size++] = sbit->alpha;
+ }
+
+ png_write_chunk(png_ptr, (png_bytep)png_sBIT, buf, size);
+}
+#endif
+
+#ifdef PNG_WRITE_cHRM_SUPPORTED
+/* Write the cHRM chunk */
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+void /* PRIVATE */
+png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
+ double red_x, double red_y, double green_x, double green_y,
+ double blue_x, double blue_y)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_cHRM;
+#endif
+ png_byte buf[32];
+
+ png_fixed_point int_white_x, int_white_y, int_red_x, int_red_y,
+ int_green_x, int_green_y, int_blue_x, int_blue_y;
+
+ png_debug(1, "in png_write_cHRM");
+
+ int_white_x = (png_uint_32)(white_x * 100000.0 + 0.5);
+ int_white_y = (png_uint_32)(white_y * 100000.0 + 0.5);
+ int_red_x = (png_uint_32)(red_x * 100000.0 + 0.5);
+ int_red_y = (png_uint_32)(red_y * 100000.0 + 0.5);
+ int_green_x = (png_uint_32)(green_x * 100000.0 + 0.5);
+ int_green_y = (png_uint_32)(green_y * 100000.0 + 0.5);
+ int_blue_x = (png_uint_32)(blue_x * 100000.0 + 0.5);
+ int_blue_y = (png_uint_32)(blue_y * 100000.0 + 0.5);
+
+#ifdef PNG_CHECK_cHRM_SUPPORTED
+ if (png_check_cHRM_fixed(png_ptr, int_white_x, int_white_y,
+ int_red_x, int_red_y, int_green_x, int_green_y, int_blue_x, int_blue_y))
+#endif
+ {
+ /* Each value is saved in 1/100,000ths */
+
+ png_save_uint_32(buf, int_white_x);
+ png_save_uint_32(buf + 4, int_white_y);
+
+ png_save_uint_32(buf + 8, int_red_x);
+ png_save_uint_32(buf + 12, int_red_y);
+
+ png_save_uint_32(buf + 16, int_green_x);
+ png_save_uint_32(buf + 20, int_green_y);
+
+ png_save_uint_32(buf + 24, int_blue_x);
+ png_save_uint_32(buf + 28, int_blue_y);
+
+ png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
+ }
+}
+#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
+void /* PRIVATE */
+png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
+ png_fixed_point white_y, png_fixed_point red_x, png_fixed_point red_y,
+ png_fixed_point green_x, png_fixed_point green_y, png_fixed_point blue_x,
+ png_fixed_point blue_y)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_cHRM;
+#endif
+ png_byte buf[32];
+
+ png_debug(1, "in png_write_cHRM");
+
+ /* Each value is saved in 1/100,000ths */
+#ifdef PNG_CHECK_cHRM_SUPPORTED
+ if (png_check_cHRM_fixed(png_ptr, white_x, white_y, red_x, red_y,
+ green_x, green_y, blue_x, blue_y))
+#endif
+ {
+ png_save_uint_32(buf, (png_uint_32)white_x);
+ png_save_uint_32(buf + 4, (png_uint_32)white_y);
+
+ png_save_uint_32(buf + 8, (png_uint_32)red_x);
+ png_save_uint_32(buf + 12, (png_uint_32)red_y);
+
+ png_save_uint_32(buf + 16, (png_uint_32)green_x);
+ png_save_uint_32(buf + 20, (png_uint_32)green_y);
+
+ png_save_uint_32(buf + 24, (png_uint_32)blue_x);
+ png_save_uint_32(buf + 28, (png_uint_32)blue_y);
+
+ png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
+ }
+}
+#endif
+#endif
+
+#ifdef PNG_WRITE_tRNS_SUPPORTED
+/* Write the tRNS chunk */
+void /* PRIVATE */
+png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
+ int num_trans, int color_type)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_tRNS;
+#endif
+ png_byte buf[6];
+
+ png_debug(1, "in png_write_tRNS");
+
+ if (color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ if (num_trans <= 0 || num_trans > (int)png_ptr->num_palette)
+ {
+ png_warning(png_ptr, "Invalid number of transparent colors specified");
+ return;
+ }
+ /* Write the chunk out as it is */
+ png_write_chunk(png_ptr, (png_bytep)png_tRNS, trans,
+ (png_size_t)num_trans);
+ }
+ else if (color_type == PNG_COLOR_TYPE_GRAY)
+ {
+ /* One 16 bit value */
+ if (tran->gray >= (1 << png_ptr->bit_depth))
+ {
+ png_warning(png_ptr,
+ "Ignoring attempt to write tRNS chunk out-of-range for bit_depth");
+ return;
+ }
+ png_save_uint_16(buf, tran->gray);
+ png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, (png_size_t)2);
+ }
+ else if (color_type == PNG_COLOR_TYPE_RGB)
+ {
+ /* Three 16 bit values */
+ png_save_uint_16(buf, tran->red);
+ png_save_uint_16(buf + 2, tran->green);
+ png_save_uint_16(buf + 4, tran->blue);
+ if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]))
+ {
+ png_warning(png_ptr,
+ "Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8");
+ return;
+ }
+ png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, (png_size_t)6);
+ }
+ else
+ {
+ png_warning(png_ptr, "Can't write tRNS with an alpha channel");
+ }
+}
+#endif
+
+#ifdef PNG_WRITE_bKGD_SUPPORTED
+/* Write the background chunk */
+void /* PRIVATE */
+png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_bKGD;
+#endif
+ png_byte buf[6];
+
+ png_debug(1, "in png_write_bKGD");
+
+ if (color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ if (
+#ifdef PNG_MNG_FEATURES_SUPPORTED
+ (png_ptr->num_palette ||
+ (!(png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE))) &&
+#endif
+ back->index >= png_ptr->num_palette)
+ {
+ png_warning(png_ptr, "Invalid background palette index");
+ return;
+ }
+ buf[0] = back->index;
+ png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)1);
+ }
+ else if (color_type & PNG_COLOR_MASK_COLOR)
+ {
+ png_save_uint_16(buf, back->red);
+ png_save_uint_16(buf + 2, back->green);
+ png_save_uint_16(buf + 4, back->blue);
+ if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]))
+ {
+ png_warning(png_ptr,
+ "Ignoring attempt to write 16-bit bKGD chunk when bit_depth is 8");
+ return;
+ }
+ png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)6);
+ }
+ else
+ {
+ if (back->gray >= (1 << png_ptr->bit_depth))
+ {
+ png_warning(png_ptr,
+ "Ignoring attempt to write bKGD chunk out-of-range for bit_depth");
+ return;
+ }
+ png_save_uint_16(buf, back->gray);
+ png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)2);
+ }
+}
+#endif
+
+#ifdef PNG_WRITE_hIST_SUPPORTED
+/* Write the histogram */
+void /* PRIVATE */
+png_write_hIST(png_structp png_ptr, png_uint_16p hist, int num_hist)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_hIST;
+#endif
+ int i;
+ png_byte buf[3];
+
+ png_debug(1, "in png_write_hIST");
+
+ if (num_hist > (int)png_ptr->num_palette)
+ {
+ png_debug2(3, "num_hist = %d, num_palette = %d", num_hist,
+ png_ptr->num_palette);
+ png_warning(png_ptr, "Invalid number of histogram entries specified");
+ return;
+ }
+
+ png_write_chunk_start(png_ptr, (png_bytep)png_hIST,
+ (png_uint_32)(num_hist * 2));
+ for (i = 0; i < num_hist; i++)
+ {
+ png_save_uint_16(buf, hist[i]);
+ png_write_chunk_data(png_ptr, buf, (png_size_t)2);
+ }
+ png_write_chunk_end(png_ptr);
+}
+#endif
+
+#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \
+ defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
+/* Check that the tEXt or zTXt keyword is valid per PNG 1.0 specification,
+ * and if invalid, correct the keyword rather than discarding the entire
+ * chunk. The PNG 1.0 specification requires keywords 1-79 characters in
+ * length, forbids leading or trailing whitespace, multiple internal spaces,
+ * and the non-break space (0x80) from ISO 8859-1. Returns keyword length.
+ *
+ * The new_key is allocated to hold the corrected keyword and must be freed
+ * by the calling routine. This avoids problems with trying to write to
+ * static keywords without having to have duplicate copies of the strings.
+ */
+png_size_t /* PRIVATE */
+png_check_keyword(png_structp png_ptr, png_charp key, png_charpp new_key)
+{
+ png_size_t key_len;
+ png_charp kp, dp;
+ int kflag;
+ int kwarn=0;
+
+ png_debug(1, "in png_check_keyword");
+
+ *new_key = NULL;
+
+ if (key == NULL || (key_len = png_strlen(key)) == 0)
+ {
+ png_warning(png_ptr, "zero length keyword");
+ return ((png_size_t)0);
+ }
+
+ png_debug1(2, "Keyword to be checked is '%s'", key);
+
+ *new_key = (png_charp)png_malloc_warn(png_ptr, (png_uint_32)(key_len + 2));
+ if (*new_key == NULL)
+ {
+ png_warning(png_ptr, "Out of memory while procesing keyword");
+ return ((png_size_t)0);
+ }
+
+ /* Replace non-printing characters with a blank and print a warning */
+ for (kp = key, dp = *new_key; *kp != '\0'; kp++, dp++)
+ {
+ if ((png_byte)*kp < 0x20 ||
+ ((png_byte)*kp > 0x7E && (png_byte)*kp < 0xA1))
+ {
+#if defined(PNG_STDIO_SUPPORTED) && !defined(_WIN32_WCE)
+ char msg[40];
+
+ png_snprintf(msg, 40,
+ "invalid keyword character 0x%02X", (png_byte)*kp);
+ png_warning(png_ptr, msg);
+#else
+ png_warning(png_ptr, "invalid character in keyword");
+#endif
+ *dp = ' ';
+ }
+ else
+ {
+ *dp = *kp;
+ }
+ }
+ *dp = '\0';
+
+ /* Remove any trailing white space. */
+ kp = *new_key + key_len - 1;
+ if (*kp == ' ')
+ {
+ png_warning(png_ptr, "trailing spaces removed from keyword");
+
+ while (*kp == ' ')
+ {
+ *(kp--) = '\0';
+ key_len--;
+ }
+ }
+
+ /* Remove any leading white space. */
+ kp = *new_key;
+ if (*kp == ' ')
+ {
+ png_warning(png_ptr, "leading spaces removed from keyword");
+
+ while (*kp == ' ')
+ {
+ kp++;
+ key_len--;
+ }
+ }
+
+ png_debug1(2, "Checking for multiple internal spaces in '%s'", kp);
+
+ /* Remove multiple internal spaces. */
+ for (kflag = 0, dp = *new_key; *kp != '\0'; kp++)
+ {
+ if (*kp == ' ' && kflag == 0)
+ {
+ *(dp++) = *kp;
+ kflag = 1;
+ }
+ else if (*kp == ' ')
+ {
+ key_len--;
+ kwarn=1;
+ }
+ else
+ {
+ *(dp++) = *kp;
+ kflag = 0;
+ }
+ }
+ *dp = '\0';
+ if (kwarn)
+ png_warning(png_ptr, "extra interior spaces removed from keyword");
+
+ if (key_len == 0)
+ {
+ png_free(png_ptr, *new_key);
+ *new_key=NULL;
+ png_warning(png_ptr, "Zero length keyword");
+ }
+
+ if (key_len > 79)
+ {
+ png_warning(png_ptr, "keyword length must be 1 - 79 characters");
+ (*new_key)[79] = '\0';
+ key_len = 79;
+ }
+
+ return (key_len);
+}
+#endif
+
+#ifdef PNG_WRITE_tEXt_SUPPORTED
+/* Write a tEXt chunk */
+void /* PRIVATE */
+png_write_tEXt(png_structp png_ptr, png_charp key, png_charp text,
+ png_size_t text_len)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_tEXt;
+#endif
+ png_size_t key_len;
+ png_charp new_key;
+
+ png_debug(1, "in png_write_tEXt");
+
+ if ((key_len = png_check_keyword(png_ptr, key, &new_key))==0)
+ return;
+
+ if (text == NULL || *text == '\0')
+ text_len = 0;
+ else
+ text_len = png_strlen(text);
+
+ /* Make sure we include the 0 after the key */
+ png_write_chunk_start(png_ptr, (png_bytep)png_tEXt,
+ (png_uint_32)(key_len + text_len + 1));
+ /*
+ * We leave it to the application to meet PNG-1.0 requirements on the
+ * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of
+ * any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them.
+ * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
+ */
+ png_write_chunk_data(png_ptr, (png_bytep)new_key,
+ (png_size_t)(key_len + 1));
+ if (text_len)
+ png_write_chunk_data(png_ptr, (png_bytep)text, (png_size_t)text_len);
+
+ png_write_chunk_end(png_ptr);
+ png_free(png_ptr, new_key);
+}
+#endif
+
+#ifdef PNG_WRITE_zTXt_SUPPORTED
+/* Write a compressed text chunk */
+void /* PRIVATE */
+png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text,
+ png_size_t text_len, int compression)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_zTXt;
+#endif
+ png_size_t key_len;
+ char buf[1];
+ png_charp new_key;
+ compression_state comp;
+
+ png_debug(1, "in png_write_zTXt");
+
+ comp.num_output_ptr = 0;
+ comp.max_output_ptr = 0;
+ comp.output_ptr = NULL;
+ comp.input = NULL;
+ comp.input_len = 0;
+
+ if ((key_len = png_check_keyword(png_ptr, key, &new_key))==0)
+ {
+ png_free(png_ptr, new_key);
+ return;
+ }
+
+ if (text == NULL || *text == '\0' || compression==PNG_TEXT_COMPRESSION_NONE)
+ {
+ png_write_tEXt(png_ptr, new_key, text, (png_size_t)0);
+ png_free(png_ptr, new_key);
+ return;
+ }
+
+ text_len = png_strlen(text);
+
+ /* Compute the compressed data; do it now for the length */
+ text_len = png_text_compress(png_ptr, text, text_len, compression,
+ &comp);
+
+ /* Write start of chunk */
+ png_write_chunk_start(png_ptr, (png_bytep)png_zTXt,
+ (png_uint_32)(key_len+text_len + 2));
+ /* Write key */
+ png_write_chunk_data(png_ptr, (png_bytep)new_key,
+ (png_size_t)(key_len + 1));
+ png_free(png_ptr, new_key);
+
+ buf[0] = (png_byte)compression;
+ /* Write compression */
+ png_write_chunk_data(png_ptr, (png_bytep)buf, (png_size_t)1);
+ /* Write the compressed data */
+ png_write_compressed_data_out(png_ptr, &comp);
+
+ /* Close the chunk */
+ png_write_chunk_end(png_ptr);
+}
+#endif
+
+#ifdef PNG_WRITE_iTXt_SUPPORTED
+/* Write an iTXt chunk */
+void /* PRIVATE */
+png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
+ png_charp lang, png_charp lang_key, png_charp text)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_iTXt;
+#endif
+ png_size_t lang_len, key_len, lang_key_len, text_len;
+ png_charp new_lang;
+ png_charp new_key = NULL;
+ png_byte cbuf[2];
+ compression_state comp;
+
+ png_debug(1, "in png_write_iTXt");
+
+ comp.num_output_ptr = 0;
+ comp.max_output_ptr = 0;
+ comp.output_ptr = NULL;
+ comp.input = NULL;
+
+ if ((key_len = png_check_keyword(png_ptr, key, &new_key))==0)
+ return;
+
+ if ((lang_len = png_check_keyword(png_ptr, lang, &new_lang))==0)
+ {
+ png_warning(png_ptr, "Empty language field in iTXt chunk");
+ new_lang = NULL;
+ lang_len = 0;
+ }
+
+ if (lang_key == NULL)
+ lang_key_len = 0;
+ else
+ lang_key_len = png_strlen(lang_key);
+
+ if (text == NULL)
+ text_len = 0;
+ else
+ text_len = png_strlen(text);
+
+ /* Compute the compressed data; do it now for the length */
+ text_len = png_text_compress(png_ptr, text, text_len, compression-2,
+ &comp);
+
+
+ /* Make sure we include the compression flag, the compression byte,
+ * and the NULs after the key, lang, and lang_key parts */
+
+ png_write_chunk_start(png_ptr, (png_bytep)png_iTXt,
+ (png_uint_32)(
+ 5 /* comp byte, comp flag, terminators for key, lang and lang_key */
+ + key_len
+ + lang_len
+ + lang_key_len
+ + text_len));
+
+ /* We leave it to the application to meet PNG-1.0 requirements on the
+ * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of
+ * any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them.
+ * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
+ */
+ png_write_chunk_data(png_ptr, (png_bytep)new_key,
+ (png_size_t)(key_len + 1));
+
+ /* Set the compression flag */
+ if (compression == PNG_ITXT_COMPRESSION_NONE || \
+ compression == PNG_TEXT_COMPRESSION_NONE)
+ cbuf[0] = 0;
+ else /* compression == PNG_ITXT_COMPRESSION_zTXt */
+ cbuf[0] = 1;
+ /* Set the compression method */
+ cbuf[1] = 0;
+ png_write_chunk_data(png_ptr, cbuf, (png_size_t)2);
+
+ cbuf[0] = 0;
+ png_write_chunk_data(png_ptr, (new_lang ? (png_bytep)new_lang : cbuf),
+ (png_size_t)(lang_len + 1));
+ png_write_chunk_data(png_ptr, (lang_key ? (png_bytep)lang_key : cbuf),
+ (png_size_t)(lang_key_len + 1));
+ png_write_compressed_data_out(png_ptr, &comp);
+
+ png_write_chunk_end(png_ptr);
+ png_free(png_ptr, new_key);
+ png_free(png_ptr, new_lang);
+}
+#endif
+
+#ifdef PNG_WRITE_oFFs_SUPPORTED
+/* Write the oFFs chunk */
+void /* PRIVATE */
+png_write_oFFs(png_structp png_ptr, png_int_32 x_offset, png_int_32 y_offset,
+ int unit_type)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_oFFs;
+#endif
+ png_byte buf[9];
+
+ png_debug(1, "in png_write_oFFs");
+
+ if (unit_type >= PNG_OFFSET_LAST)
+ png_warning(png_ptr, "Unrecognized unit type for oFFs chunk");
+
+ png_save_int_32(buf, x_offset);
+ png_save_int_32(buf + 4, y_offset);
+ buf[8] = (png_byte)unit_type;
+
+ png_write_chunk(png_ptr, (png_bytep)png_oFFs, buf, (png_size_t)9);
+}
+#endif
+#ifdef PNG_WRITE_pCAL_SUPPORTED
+/* Write the pCAL chunk (described in the PNG extensions document) */
+void /* PRIVATE */
+png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0,
+ png_int_32 X1, int type, int nparams, png_charp units, png_charpp params)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_pCAL;
+#endif
+ png_size_t purpose_len, units_len, total_len;
+ png_uint_32p params_len;
+ png_byte buf[10];
+ png_charp new_purpose;
+ int i;
+
+ png_debug1(1, "in png_write_pCAL (%d parameters)", nparams);
+
+ if (type >= PNG_EQUATION_LAST)
+ png_warning(png_ptr, "Unrecognized equation type for pCAL chunk");
+
+ purpose_len = png_check_keyword(png_ptr, purpose, &new_purpose) + 1;
+ png_debug1(3, "pCAL purpose length = %d", (int)purpose_len);
+ units_len = png_strlen(units) + (nparams == 0 ? 0 : 1);
+ png_debug1(3, "pCAL units length = %d", (int)units_len);
+ total_len = purpose_len + units_len + 10;
+
+ params_len = (png_uint_32p)png_malloc(png_ptr,
+ (png_uint_32)(nparams * png_sizeof(png_uint_32)));
+
+ /* Find the length of each parameter, making sure we don't count the
+ null terminator for the last parameter. */
+ for (i = 0; i < nparams; i++)
+ {
+ params_len[i] = png_strlen(params[i]) + (i == nparams - 1 ? 0 : 1);
+ png_debug2(3, "pCAL parameter %d length = %lu", i,
+ (unsigned long) params_len[i]);
+ total_len += (png_size_t)params_len[i];
+ }
+
+ png_debug1(3, "pCAL total length = %d", (int)total_len);
+ png_write_chunk_start(png_ptr, (png_bytep)png_pCAL, (png_uint_32)total_len);
+ png_write_chunk_data(png_ptr, (png_bytep)new_purpose,
+ (png_size_t)purpose_len);
+ png_save_int_32(buf, X0);
+ png_save_int_32(buf + 4, X1);
+ buf[8] = (png_byte)type;
+ buf[9] = (png_byte)nparams;
+ png_write_chunk_data(png_ptr, buf, (png_size_t)10);
+ png_write_chunk_data(png_ptr, (png_bytep)units, (png_size_t)units_len);
+
+ png_free(png_ptr, new_purpose);
+
+ for (i = 0; i < nparams; i++)
+ {
+ png_write_chunk_data(png_ptr, (png_bytep)params[i],
+ (png_size_t)params_len[i]);
+ }
+
+ png_free(png_ptr, params_len);
+ png_write_chunk_end(png_ptr);
+}
+#endif
+
+#ifdef PNG_WRITE_sCAL_SUPPORTED
+/* Write the sCAL chunk */
+#if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_STDIO_SUPPORTED)
+void /* PRIVATE */
+png_write_sCAL(png_structp png_ptr, int unit, double width, double height)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_sCAL;
+#endif
+ char buf[64];
+ png_size_t total_len;
+
+ png_debug(1, "in png_write_sCAL");
+
+ buf[0] = (char)unit;
+#ifdef _WIN32_WCE
+/* sprintf() function is not supported on WindowsCE */
+ {
+ wchar_t wc_buf[32];
+ size_t wc_len;
+ swprintf(wc_buf, TEXT("%12.12e"), width);
+ wc_len = wcslen(wc_buf);
+ WideCharToMultiByte(CP_ACP, 0, wc_buf, -1, buf + 1, wc_len, NULL,
+ NULL);
+ total_len = wc_len + 2;
+ swprintf(wc_buf, TEXT("%12.12e"), height);
+ wc_len = wcslen(wc_buf);
+ WideCharToMultiByte(CP_ACP, 0, wc_buf, -1, buf + total_len, wc_len,
+ NULL, NULL);
+ total_len += wc_len;
+ }
+#else
+ png_snprintf(buf + 1, 63, "%12.12e", width);
+ total_len = 1 + png_strlen(buf + 1) + 1;
+ png_snprintf(buf + total_len, 64-total_len, "%12.12e", height);
+ total_len += png_strlen(buf + total_len);
+#endif
+
+ png_debug1(3, "sCAL total length = %u", (unsigned int)total_len);
+ png_write_chunk(png_ptr, (png_bytep)png_sCAL, (png_bytep)buf, total_len);
+}
+#else
+#ifdef PNG_FIXED_POINT_SUPPORTED
+void /* PRIVATE */
+png_write_sCAL_s(png_structp png_ptr, int unit, png_charp width,
+ png_charp height)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_sCAL;
+#endif
+ png_byte buf[64];
+ png_size_t wlen, hlen, total_len;
+
+ png_debug(1, "in png_write_sCAL_s");
+
+ wlen = png_strlen(width);
+ hlen = png_strlen(height);
+ total_len = wlen + hlen + 2;
+ if (total_len > 64)
+ {
+ png_warning(png_ptr, "Can't write sCAL (buffer too small)");
+ return;
+ }
+
+ buf[0] = (png_byte)unit;
+ png_memcpy(buf + 1, width, wlen + 1); /* Append the '\0' here */
+ png_memcpy(buf + wlen + 2, height, hlen); /* Do NOT append the '\0' here */
+
+ png_debug1(3, "sCAL total length = %u", (unsigned int)total_len);
+ png_write_chunk(png_ptr, (png_bytep)png_sCAL, buf, total_len);
+}
+#endif
+#endif
+#endif
+
+#ifdef PNG_WRITE_pHYs_SUPPORTED
+/* Write the pHYs chunk */
+void /* PRIVATE */
+png_write_pHYs(png_structp png_ptr, png_uint_32 x_pixels_per_unit,
+ png_uint_32 y_pixels_per_unit,
+ int unit_type)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_pHYs;
+#endif
+ png_byte buf[9];
+
+ png_debug(1, "in png_write_pHYs");
+
+ if (unit_type >= PNG_RESOLUTION_LAST)
+ png_warning(png_ptr, "Unrecognized unit type for pHYs chunk");
+
+ png_save_uint_32(buf, x_pixels_per_unit);
+ png_save_uint_32(buf + 4, y_pixels_per_unit);
+ buf[8] = (png_byte)unit_type;
+
+ png_write_chunk(png_ptr, (png_bytep)png_pHYs, buf, (png_size_t)9);
+}
+#endif
+
+#ifdef PNG_WRITE_tIME_SUPPORTED
+/* Write the tIME chunk. Use either png_convert_from_struct_tm()
+ * or png_convert_from_time_t(), or fill in the structure yourself.
+ */
+void /* PRIVATE */
+png_write_tIME(png_structp png_ptr, png_timep mod_time)
+{
+#ifdef PNG_USE_LOCAL_ARRAYS
+ PNG_tIME;
+#endif
+ png_byte buf[7];
+
+ png_debug(1, "in png_write_tIME");
+
+ if (mod_time->month > 12 || mod_time->month < 1 ||
+ mod_time->day > 31 || mod_time->day < 1 ||
+ mod_time->hour > 23 || mod_time->second > 60)
+ {
+ png_warning(png_ptr, "Invalid time specified for tIME chunk");
+ return;
+ }
+
+ png_save_uint_16(buf, mod_time->year);
+ buf[2] = mod_time->month;
+ buf[3] = mod_time->day;
+ buf[4] = mod_time->hour;
+ buf[5] = mod_time->minute;
+ buf[6] = mod_time->second;
+
+ png_write_chunk(png_ptr, (png_bytep)png_tIME, buf, (png_size_t)7);
+}
+#endif
+
+/* Initializes the row writing capability of libpng */
+void /* PRIVATE */
+png_write_start_row(png_structp png_ptr)
+{
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
+
+ /* Start of interlace block */
+ int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
+
+ /* Offset to next interlace block */
+ int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
+
+ /* Start of interlace block in the y direction */
+ int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
+
+ /* Offset to next interlace block in the y direction */
+ int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
+#endif
+
+ png_size_t buf_size;
+
+ png_debug(1, "in png_write_start_row");
+
+ buf_size = (png_size_t)(PNG_ROWBYTES(
+ png_ptr->usr_channels*png_ptr->usr_bit_depth, png_ptr->width) + 1);
+
+ /* Set up row buffer */
+ png_ptr->row_buf = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)buf_size);
+ png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE;
+
+#ifdef PNG_WRITE_FILTER_SUPPORTED
+ /* Set up filtering buffer, if using this filter */
+ if (png_ptr->do_filter & PNG_FILTER_SUB)
+ {
+ png_ptr->sub_row = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)(png_ptr->rowbytes + 1));
+ png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB;
+ }
+
+ /* We only need to keep the previous row if we are using one of these. */
+ if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH))
+ {
+ /* Set up previous row buffer */
+ png_ptr->prev_row = (png_bytep)png_calloc(png_ptr,
+ (png_uint_32)buf_size);
+
+ if (png_ptr->do_filter & PNG_FILTER_UP)
+ {
+ png_ptr->up_row = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)(png_ptr->rowbytes + 1));
+ png_ptr->up_row[0] = PNG_FILTER_VALUE_UP;
+ }
+
+ if (png_ptr->do_filter & PNG_FILTER_AVG)
+ {
+ png_ptr->avg_row = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)(png_ptr->rowbytes + 1));
+ png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG;
+ }
+
+ if (png_ptr->do_filter & PNG_FILTER_PAETH)
+ {
+ png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)(png_ptr->rowbytes + 1));
+ png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH;
+ }
+ }
+#endif /* PNG_WRITE_FILTER_SUPPORTED */
+
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+ /* If interlaced, we need to set up width and height of pass */
+ if (png_ptr->interlaced)
+ {
+ if (!(png_ptr->transformations & PNG_INTERLACE))
+ {
+ png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 -
+ png_pass_ystart[0]) / png_pass_yinc[0];
+ png_ptr->usr_width = (png_ptr->width + png_pass_inc[0] - 1 -
+ png_pass_start[0]) / png_pass_inc[0];
+ }
+ else
+ {
+ png_ptr->num_rows = png_ptr->height;
+ png_ptr->usr_width = png_ptr->width;
+ }
+ }
+ else
+#endif
+ {
+ png_ptr->num_rows = png_ptr->height;
+ png_ptr->usr_width = png_ptr->width;
+ }
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+}
+
+/* Internal use only. Called when finished processing a row of data. */
+void /* PRIVATE */
+png_write_finish_row(png_structp png_ptr)
+{
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
+
+ /* Start of interlace block */
+ int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
+
+ /* Offset to next interlace block */
+ int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
+
+ /* Start of interlace block in the y direction */
+ int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
+
+ /* Offset to next interlace block in the y direction */
+ int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
+#endif
+
+ int ret;
+
+ png_debug(1, "in png_write_finish_row");
+
+ /* Next row */
+ png_ptr->row_number++;
+
+ /* See if we are done */
+ if (png_ptr->row_number < png_ptr->num_rows)
+ return;
+
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+ /* If interlaced, go to next pass */
+ if (png_ptr->interlaced)
+ {
+ png_ptr->row_number = 0;
+ if (png_ptr->transformations & PNG_INTERLACE)
+ {
+ png_ptr->pass++;
+ }
+ else
+ {
+ /* Loop until we find a non-zero width or height pass */
+ do
+ {
+ png_ptr->pass++;
+ if (png_ptr->pass >= 7)
+ break;
+ png_ptr->usr_width = (png_ptr->width +
+ png_pass_inc[png_ptr->pass] - 1 -
+ png_pass_start[png_ptr->pass]) /
+ png_pass_inc[png_ptr->pass];
+ png_ptr->num_rows = (png_ptr->height +
+ png_pass_yinc[png_ptr->pass] - 1 -
+ png_pass_ystart[png_ptr->pass]) /
+ png_pass_yinc[png_ptr->pass];
+ if (png_ptr->transformations & PNG_INTERLACE)
+ break;
+ } while (png_ptr->usr_width == 0 || png_ptr->num_rows == 0);
+
+ }
+
+ /* Reset the row above the image for the next pass */
+ if (png_ptr->pass < 7)
+ {
+ if (png_ptr->prev_row != NULL)
+ png_memset(png_ptr->prev_row, 0,
+ (png_size_t)(PNG_ROWBYTES(png_ptr->usr_channels*
+ png_ptr->usr_bit_depth, png_ptr->width)) + 1);
+ return;
+ }
+ }
+#endif
+
+ /* If we get here, we've just written the last row, so we need
+ to flush the compressor */
+ do
+ {
+ /* Tell the compressor we are done */
+ ret = deflate(&png_ptr->zstream, Z_FINISH);
+ /* Check for an error */
+ if (ret == Z_OK)
+ {
+ /* Check to see if we need more room */
+ if (!(png_ptr->zstream.avail_out))
+ {
+ png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+ }
+ }
+ else if (ret != Z_STREAM_END)
+ {
+ if (png_ptr->zstream.msg != NULL)
+ png_error(png_ptr, png_ptr->zstream.msg);
+ else
+ png_error(png_ptr, "zlib error");
+ }
+ } while (ret != Z_STREAM_END);
+
+ /* Write any extra space */
+ if (png_ptr->zstream.avail_out < png_ptr->zbuf_size)
+ {
+ png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size -
+ png_ptr->zstream.avail_out);
+ }
+
+ deflateReset(&png_ptr->zstream);
+ png_ptr->zstream.data_type = Z_BINARY;
+}
+
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+/* Pick out the correct pixels for the interlace pass.
+ * The basic idea here is to go through the row with a source
+ * pointer and a destination pointer (sp and dp), and copy the
+ * correct pixels for the pass. As the row gets compacted,
+ * sp will always be >= dp, so we should never overwrite anything.
+ * See the default: case for the easiest code to understand.
+ */
+void /* PRIVATE */
+png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
+{
+ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
+
+ /* Start of interlace block */
+ int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
+
+ /* Offset to next interlace block */
+ int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
+
+ png_debug(1, "in png_do_write_interlace");
+
+ /* We don't have to do anything on the last pass (6) */
+#ifdef PNG_USELESS_TESTS_SUPPORTED
+ if (row != NULL && row_info != NULL && pass < 6)
+#else
+ if (pass < 6)
+#endif
+ {
+ /* Each pixel depth is handled separately */
+ switch (row_info->pixel_depth)
+ {
+ case 1:
+ {
+ png_bytep sp;
+ png_bytep dp;
+ int shift;
+ int d;
+ int value;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ dp = row;
+ d = 0;
+ shift = 7;
+ for (i = png_pass_start[pass]; i < row_width;
+ i += png_pass_inc[pass])
+ {
+ sp = row + (png_size_t)(i >> 3);
+ value = (int)(*sp >> (7 - (int)(i & 0x07))) & 0x01;
+ d |= (value << shift);
+
+ if (shift == 0)
+ {
+ shift = 7;
+ *dp++ = (png_byte)d;
+ d = 0;
+ }
+ else
+ shift--;
+
+ }
+ if (shift != 7)
+ *dp = (png_byte)d;
+ break;
+ }
+ case 2:
+ {
+ png_bytep sp;
+ png_bytep dp;
+ int shift;
+ int d;
+ int value;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ dp = row;
+ shift = 6;
+ d = 0;
+ for (i = png_pass_start[pass]; i < row_width;
+ i += png_pass_inc[pass])
+ {
+ sp = row + (png_size_t)(i >> 2);
+ value = (*sp >> ((3 - (int)(i & 0x03)) << 1)) & 0x03;
+ d |= (value << shift);
+
+ if (shift == 0)
+ {
+ shift = 6;
+ *dp++ = (png_byte)d;
+ d = 0;
+ }
+ else
+ shift -= 2;
+ }
+ if (shift != 6)
+ *dp = (png_byte)d;
+ break;
+ }
+ case 4:
+ {
+ png_bytep sp;
+ png_bytep dp;
+ int shift;
+ int d;
+ int value;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+
+ dp = row;
+ shift = 4;
+ d = 0;
+ for (i = png_pass_start[pass]; i < row_width;
+ i += png_pass_inc[pass])
+ {
+ sp = row + (png_size_t)(i >> 1);
+ value = (*sp >> ((1 - (int)(i & 0x01)) << 2)) & 0x0f;
+ d |= (value << shift);
+
+ if (shift == 0)
+ {
+ shift = 4;
+ *dp++ = (png_byte)d;
+ d = 0;
+ }
+ else
+ shift -= 4;
+ }
+ if (shift != 4)
+ *dp = (png_byte)d;
+ break;
+ }
+ default:
+ {
+ png_bytep sp;
+ png_bytep dp;
+ png_uint_32 i;
+ png_uint_32 row_width = row_info->width;
+ png_size_t pixel_bytes;
+
+ /* Start at the beginning */
+ dp = row;
+ /* Find out how many bytes each pixel takes up */
+ pixel_bytes = (row_info->pixel_depth >> 3);
+ /* Loop through the row, only looking at the pixels that
+ matter */
+ for (i = png_pass_start[pass]; i < row_width;
+ i += png_pass_inc[pass])
+ {
+ /* Find out where the original pixel is */
+ sp = row + (png_size_t)i * pixel_bytes;
+ /* Move the pixel */
+ if (dp != sp)
+ png_memcpy(dp, sp, pixel_bytes);
+ /* Next pixel */
+ dp += pixel_bytes;
+ }
+ break;
+ }
+ }
+ /* Set new row width */
+ row_info->width = (row_info->width +
+ png_pass_inc[pass] - 1 -
+ png_pass_start[pass]) /
+ png_pass_inc[pass];
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth,
+ row_info->width);
+ }
+}
+#endif
+
+/* This filters the row, chooses which filter to use, if it has not already
+ * been specified by the application, and then writes the row out with the
+ * chosen filter.
+ */
+#define PNG_MAXSUM (((png_uint_32)(-1)) >> 1)
+#define PNG_HISHIFT 10
+#define PNG_LOMASK ((png_uint_32)0xffffL)
+#define PNG_HIMASK ((png_uint_32)(~PNG_LOMASK >> PNG_HISHIFT))
+void /* PRIVATE */
+png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
+{
+ png_bytep best_row;
+#ifdef PNG_WRITE_FILTER_SUPPORTED
+ png_bytep prev_row, row_buf;
+ png_uint_32 mins, bpp;
+ png_byte filter_to_do = png_ptr->do_filter;
+ png_uint_32 row_bytes = row_info->rowbytes;
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ int num_p_filters = (int)png_ptr->num_prev_filters;
+#endif
+
+ png_debug(1, "in png_write_find_filter");
+
+#ifndef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ if (png_ptr->row_number == 0 && filter_to_do == PNG_ALL_FILTERS)
+ {
+ /* These will never be selected so we need not test them. */
+ filter_to_do &= ~(PNG_FILTER_UP | PNG_FILTER_PAETH);
+ }
+#endif
+
+ /* Find out how many bytes offset each pixel is */
+ bpp = (row_info->pixel_depth + 7) >> 3;
+
+ prev_row = png_ptr->prev_row;
+#endif
+ best_row = png_ptr->row_buf;
+#ifdef PNG_WRITE_FILTER_SUPPORTED
+ row_buf = best_row;
+ mins = PNG_MAXSUM;
+
+ /* The prediction method we use is to find which method provides the
+ * smallest value when summing the absolute values of the distances
+ * from zero, using anything >= 128 as negative numbers. This is known
+ * as the "minimum sum of absolute differences" heuristic. Other
+ * heuristics are the "weighted minimum sum of absolute differences"
+ * (experimental and can in theory improve compression), and the "zlib
+ * predictive" method (not implemented yet), which does test compressions
+ * of lines using different filter methods, and then chooses the
+ * (series of) filter(s) that give minimum compressed data size (VERY
+ * computationally expensive).
+ *
+ * GRR 980525: consider also
+ * (1) minimum sum of absolute differences from running average (i.e.,
+ * keep running sum of non-absolute differences & count of bytes)
+ * [track dispersion, too? restart average if dispersion too large?]
+ * (1b) minimum sum of absolute differences from sliding average, probably
+ * with window size <= deflate window (usually 32K)
+ * (2) minimum sum of squared differences from zero or running average
+ * (i.e., ~ root-mean-square approach)
+ */
+
+
+ /* We don't need to test the 'no filter' case if this is the only filter
+ * that has been chosen, as it doesn't actually do anything to the data.
+ */
+ if ((filter_to_do & PNG_FILTER_NONE) &&
+ filter_to_do != PNG_FILTER_NONE)
+ {
+ png_bytep rp;
+ png_uint_32 sum = 0;
+ png_uint_32 i;
+ int v;
+
+ for (i = 0, rp = row_buf + 1; i < row_bytes; i++, rp++)
+ {
+ v = *rp;
+ sum += (v < 128) ? v : 256 - v;
+ }
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
+ {
+ png_uint_32 sumhi, sumlo;
+ int j;
+ sumlo = sum & PNG_LOMASK;
+ sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; /* Gives us some footroom */
+
+ /* Reduce the sum if we match any of the previous rows */
+ for (j = 0; j < num_p_filters; j++)
+ {
+ if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_NONE)
+ {
+ sumlo = (sumlo * png_ptr->filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ sumhi = (sumhi * png_ptr->filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ }
+ }
+
+ /* Factor in the cost of this filter (this is here for completeness,
+ * but it makes no sense to have a "cost" for the NONE filter, as
+ * it has the minimum possible computational cost - none).
+ */
+ sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_NONE]) >>
+ PNG_COST_SHIFT;
+ sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_NONE]) >>
+ PNG_COST_SHIFT;
+
+ if (sumhi > PNG_HIMASK)
+ sum = PNG_MAXSUM;
+ else
+ sum = (sumhi << PNG_HISHIFT) + sumlo;
+ }
+#endif
+ mins = sum;
+ }
+
+ /* Sub filter */
+ if (filter_to_do == PNG_FILTER_SUB)
+ /* It's the only filter so no testing is needed */
+ {
+ png_bytep rp, lp, dp;
+ png_uint_32 i;
+ for (i = 0, rp = row_buf + 1, dp = png_ptr->sub_row + 1; i < bpp;
+ i++, rp++, dp++)
+ {
+ *dp = *rp;
+ }
+ for (lp = row_buf + 1; i < row_bytes;
+ i++, rp++, lp++, dp++)
+ {
+ *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff);
+ }
+ best_row = png_ptr->sub_row;
+ }
+
+ else if (filter_to_do & PNG_FILTER_SUB)
+ {
+ png_bytep rp, dp, lp;
+ png_uint_32 sum = 0, lmins = mins;
+ png_uint_32 i;
+ int v;
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ /* We temporarily increase the "minimum sum" by the factor we
+ * would reduce the sum of this filter, so that we can do the
+ * early exit comparison without scaling the sum each time.
+ */
+ if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
+ {
+ int j;
+ png_uint_32 lmhi, lmlo;
+ lmlo = lmins & PNG_LOMASK;
+ lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK;
+
+ for (j = 0; j < num_p_filters; j++)
+ {
+ if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_SUB)
+ {
+ lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ }
+ }
+
+ lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >>
+ PNG_COST_SHIFT;
+ lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >>
+ PNG_COST_SHIFT;
+
+ if (lmhi > PNG_HIMASK)
+ lmins = PNG_MAXSUM;
+ else
+ lmins = (lmhi << PNG_HISHIFT) + lmlo;
+ }
+#endif
+
+ for (i = 0, rp = row_buf + 1, dp = png_ptr->sub_row + 1; i < bpp;
+ i++, rp++, dp++)
+ {
+ v = *dp = *rp;
+
+ sum += (v < 128) ? v : 256 - v;
+ }
+ for (lp = row_buf + 1; i < row_bytes;
+ i++, rp++, lp++, dp++)
+ {
+ v = *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff);
+
+ sum += (v < 128) ? v : 256 - v;
+
+ if (sum > lmins) /* We are already worse, don't continue. */
+ break;
+ }
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
+ {
+ int j;
+ png_uint_32 sumhi, sumlo;
+ sumlo = sum & PNG_LOMASK;
+ sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK;
+
+ for (j = 0; j < num_p_filters; j++)
+ {
+ if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_SUB)
+ {
+ sumlo = (sumlo * png_ptr->inv_filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ sumhi = (sumhi * png_ptr->inv_filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ }
+ }
+
+ sumlo = (sumlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >>
+ PNG_COST_SHIFT;
+ sumhi = (sumhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >>
+ PNG_COST_SHIFT;
+
+ if (sumhi > PNG_HIMASK)
+ sum = PNG_MAXSUM;
+ else
+ sum = (sumhi << PNG_HISHIFT) + sumlo;
+ }
+#endif
+
+ if (sum < mins)
+ {
+ mins = sum;
+ best_row = png_ptr->sub_row;
+ }
+ }
+
+ /* Up filter */
+ if (filter_to_do == PNG_FILTER_UP)
+ {
+ png_bytep rp, dp, pp;
+ png_uint_32 i;
+
+ for (i = 0, rp = row_buf + 1, dp = png_ptr->up_row + 1,
+ pp = prev_row + 1; i < row_bytes;
+ i++, rp++, pp++, dp++)
+ {
+ *dp = (png_byte)(((int)*rp - (int)*pp) & 0xff);
+ }
+ best_row = png_ptr->up_row;
+ }
+
+ else if (filter_to_do & PNG_FILTER_UP)
+ {
+ png_bytep rp, dp, pp;
+ png_uint_32 sum = 0, lmins = mins;
+ png_uint_32 i;
+ int v;
+
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
+ {
+ int j;
+ png_uint_32 lmhi, lmlo;
+ lmlo = lmins & PNG_LOMASK;
+ lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK;
+
+ for (j = 0; j < num_p_filters; j++)
+ {
+ if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_UP)
+ {
+ lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ }
+ }
+
+ lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_UP]) >>
+ PNG_COST_SHIFT;
+ lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_UP]) >>
+ PNG_COST_SHIFT;
+
+ if (lmhi > PNG_HIMASK)
+ lmins = PNG_MAXSUM;
+ else
+ lmins = (lmhi << PNG_HISHIFT) + lmlo;
+ }
+#endif
+
+ for (i = 0, rp = row_buf + 1, dp = png_ptr->up_row + 1,
+ pp = prev_row + 1; i < row_bytes; i++)
+ {
+ v = *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff);
+
+ sum += (v < 128) ? v : 256 - v;
+
+ if (sum > lmins) /* We are already worse, don't continue. */
+ break;
+ }
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
+ {
+ int j;
+ png_uint_32 sumhi, sumlo;
+ sumlo = sum & PNG_LOMASK;
+ sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK;
+
+ for (j = 0; j < num_p_filters; j++)
+ {
+ if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_UP)
+ {
+ sumlo = (sumlo * png_ptr->filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ sumhi = (sumhi * png_ptr->filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ }
+ }
+
+ sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_UP]) >>
+ PNG_COST_SHIFT;
+ sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_UP]) >>
+ PNG_COST_SHIFT;
+
+ if (sumhi > PNG_HIMASK)
+ sum = PNG_MAXSUM;
+ else
+ sum = (sumhi << PNG_HISHIFT) + sumlo;
+ }
+#endif
+
+ if (sum < mins)
+ {
+ mins = sum;
+ best_row = png_ptr->up_row;
+ }
+ }
+
+ /* Avg filter */
+ if (filter_to_do == PNG_FILTER_AVG)
+ {
+ png_bytep rp, dp, pp, lp;
+ png_uint_32 i;
+ for (i = 0, rp = row_buf + 1, dp = png_ptr->avg_row + 1,
+ pp = prev_row + 1; i < bpp; i++)
+ {
+ *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff);
+ }
+ for (lp = row_buf + 1; i < row_bytes; i++)
+ {
+ *dp++ = (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2))
+ & 0xff);
+ }
+ best_row = png_ptr->avg_row;
+ }
+
+ else if (filter_to_do & PNG_FILTER_AVG)
+ {
+ png_bytep rp, dp, pp, lp;
+ png_uint_32 sum = 0, lmins = mins;
+ png_uint_32 i;
+ int v;
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
+ {
+ int j;
+ png_uint_32 lmhi, lmlo;
+ lmlo = lmins & PNG_LOMASK;
+ lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK;
+
+ for (j = 0; j < num_p_filters; j++)
+ {
+ if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_AVG)
+ {
+ lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ }
+ }
+
+ lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_AVG]) >>
+ PNG_COST_SHIFT;
+ lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_AVG]) >>
+ PNG_COST_SHIFT;
+
+ if (lmhi > PNG_HIMASK)
+ lmins = PNG_MAXSUM;
+ else
+ lmins = (lmhi << PNG_HISHIFT) + lmlo;
+ }
+#endif
+
+ for (i = 0, rp = row_buf + 1, dp = png_ptr->avg_row + 1,
+ pp = prev_row + 1; i < bpp; i++)
+ {
+ v = *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff);
+
+ sum += (v < 128) ? v : 256 - v;
+ }
+ for (lp = row_buf + 1; i < row_bytes; i++)
+ {
+ v = *dp++ =
+ (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2)) & 0xff);
+
+ sum += (v < 128) ? v : 256 - v;
+
+ if (sum > lmins) /* We are already worse, don't continue. */
+ break;
+ }
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
+ {
+ int j;
+ png_uint_32 sumhi, sumlo;
+ sumlo = sum & PNG_LOMASK;
+ sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK;
+
+ for (j = 0; j < num_p_filters; j++)
+ {
+ if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_NONE)
+ {
+ sumlo = (sumlo * png_ptr->filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ sumhi = (sumhi * png_ptr->filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ }
+ }
+
+ sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_AVG]) >>
+ PNG_COST_SHIFT;
+ sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_AVG]) >>
+ PNG_COST_SHIFT;
+
+ if (sumhi > PNG_HIMASK)
+ sum = PNG_MAXSUM;
+ else
+ sum = (sumhi << PNG_HISHIFT) + sumlo;
+ }
+#endif
+
+ if (sum < mins)
+ {
+ mins = sum;
+ best_row = png_ptr->avg_row;
+ }
+ }
+
+ /* Paeth filter */
+ if (filter_to_do == PNG_FILTER_PAETH)
+ {
+ png_bytep rp, dp, pp, cp, lp;
+ png_uint_32 i;
+ for (i = 0, rp = row_buf + 1, dp = png_ptr->paeth_row + 1,
+ pp = prev_row + 1; i < bpp; i++)
+ {
+ *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff);
+ }
+
+ for (lp = row_buf + 1, cp = prev_row + 1; i < row_bytes; i++)
+ {
+ int a, b, c, pa, pb, pc, p;
+
+ b = *pp++;
+ c = *cp++;
+ a = *lp++;
+
+ p = b - c;
+ pc = a - c;
+
+#ifdef PNG_USE_ABS
+ pa = abs(p);
+ pb = abs(pc);
+ pc = abs(p + pc);
+#else
+ pa = p < 0 ? -p : p;
+ pb = pc < 0 ? -pc : pc;
+ pc = (p + pc) < 0 ? -(p + pc) : p + pc;
+#endif
+
+ p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c;
+
+ *dp++ = (png_byte)(((int)*rp++ - p) & 0xff);
+ }
+ best_row = png_ptr->paeth_row;
+ }
+
+ else if (filter_to_do & PNG_FILTER_PAETH)
+ {
+ png_bytep rp, dp, pp, cp, lp;
+ png_uint_32 sum = 0, lmins = mins;
+ png_uint_32 i;
+ int v;
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
+ {
+ int j;
+ png_uint_32 lmhi, lmlo;
+ lmlo = lmins & PNG_LOMASK;
+ lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK;
+
+ for (j = 0; j < num_p_filters; j++)
+ {
+ if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_PAETH)
+ {
+ lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ }
+ }
+
+ lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_PAETH]) >>
+ PNG_COST_SHIFT;
+ lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_PAETH]) >>
+ PNG_COST_SHIFT;
+
+ if (lmhi > PNG_HIMASK)
+ lmins = PNG_MAXSUM;
+ else
+ lmins = (lmhi << PNG_HISHIFT) + lmlo;
+ }
+#endif
+
+ for (i = 0, rp = row_buf + 1, dp = png_ptr->paeth_row + 1,
+ pp = prev_row + 1; i < bpp; i++)
+ {
+ v = *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff);
+
+ sum += (v < 128) ? v : 256 - v;
+ }
+
+ for (lp = row_buf + 1, cp = prev_row + 1; i < row_bytes; i++)
+ {
+ int a, b, c, pa, pb, pc, p;
+
+ b = *pp++;
+ c = *cp++;
+ a = *lp++;
+
+#ifndef PNG_SLOW_PAETH
+ p = b - c;
+ pc = a - c;
+#ifdef PNG_USE_ABS
+ pa = abs(p);
+ pb = abs(pc);
+ pc = abs(p + pc);
+#else
+ pa = p < 0 ? -p : p;
+ pb = pc < 0 ? -pc : pc;
+ pc = (p + pc) < 0 ? -(p + pc) : p + pc;
+#endif
+ p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c;
+#else /* PNG_SLOW_PAETH */
+ p = a + b - c;
+ pa = abs(p - a);
+ pb = abs(p - b);
+ pc = abs(p - c);
+ if (pa <= pb && pa <= pc)
+ p = a;
+ else if (pb <= pc)
+ p = b;
+ else
+ p = c;
+#endif /* PNG_SLOW_PAETH */
+
+ v = *dp++ = (png_byte)(((int)*rp++ - p) & 0xff);
+
+ sum += (v < 128) ? v : 256 - v;
+
+ if (sum > lmins) /* We are already worse, don't continue. */
+ break;
+ }
+
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED)
+ {
+ int j;
+ png_uint_32 sumhi, sumlo;
+ sumlo = sum & PNG_LOMASK;
+ sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK;
+
+ for (j = 0; j < num_p_filters; j++)
+ {
+ if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_PAETH)
+ {
+ sumlo = (sumlo * png_ptr->filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ sumhi = (sumhi * png_ptr->filter_weights[j]) >>
+ PNG_WEIGHT_SHIFT;
+ }
+ }
+
+ sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_PAETH]) >>
+ PNG_COST_SHIFT;
+ sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_PAETH]) >>
+ PNG_COST_SHIFT;
+
+ if (sumhi > PNG_HIMASK)
+ sum = PNG_MAXSUM;
+ else
+ sum = (sumhi << PNG_HISHIFT) + sumlo;
+ }
+#endif
+
+ if (sum < mins)
+ {
+ best_row = png_ptr->paeth_row;
+ }
+ }
+#endif /* PNG_WRITE_FILTER_SUPPORTED */
+ /* Do the actual writing of the filtered row data from the chosen filter. */
+
+ png_write_filtered_row(png_ptr, best_row);
+
+#ifdef PNG_WRITE_FILTER_SUPPORTED
+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
+ /* Save the type of filter we picked this time for future calculations */
+ if (png_ptr->num_prev_filters > 0)
+ {
+ int j;
+ for (j = 1; j < num_p_filters; j++)
+ {
+ png_ptr->prev_filters[j] = png_ptr->prev_filters[j - 1];
+ }
+ png_ptr->prev_filters[j] = best_row[0];
+ }
+#endif
+#endif /* PNG_WRITE_FILTER_SUPPORTED */
+}
+
+
+/* Do the actual writing of a previously filtered row. */
+void /* PRIVATE */
+png_write_filtered_row(png_structp png_ptr, png_bytep filtered_row)
+{
+ png_debug(1, "in png_write_filtered_row");
+
+ png_debug1(2, "filter = %d", filtered_row[0]);
+ /* Set up the zlib input buffer */
+
+ png_ptr->zstream.next_in = filtered_row;
+ png_ptr->zstream.avail_in = (uInt)png_ptr->row_info.rowbytes + 1;
+ /* Repeat until we have compressed all the data */
+ do
+ {
+ int ret; /* Return of zlib */
+
+ /* Compress the data */
+ ret = deflate(&png_ptr->zstream, Z_NO_FLUSH);
+ /* Check for compression errors */
+ if (ret != Z_OK)
+ {
+ if (png_ptr->zstream.msg != NULL)
+ png_error(png_ptr, png_ptr->zstream.msg);
+ else
+ png_error(png_ptr, "zlib error");
+ }
+
+ /* See if it is time to write another IDAT */
+ if (!(png_ptr->zstream.avail_out))
+ {
+ /* Write the IDAT and reset the zlib output buffer */
+ png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
+ png_ptr->zstream.next_out = png_ptr->zbuf;
+ png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+ }
+ /* Repeat until all data has been compressed */
+ } while (png_ptr->zstream.avail_in);
+
+ /* Swap the current and previous rows */
+ if (png_ptr->prev_row != NULL)
+ {
+ png_bytep tptr;
+
+ tptr = png_ptr->prev_row;
+ png_ptr->prev_row = png_ptr->row_buf;
+ png_ptr->row_buf = tptr;
+ }
+
+ /* Finish row - updates counters and flushes zlib if last row */
+ png_write_finish_row(png_ptr);
+
+#ifdef PNG_WRITE_FLUSH_SUPPORTED
+ png_ptr->flush_rows++;
+
+ if (png_ptr->flush_dist > 0 &&
+ png_ptr->flush_rows >= png_ptr->flush_dist)
+ {
+ png_write_flush(png_ptr);
+ }
+#endif
+}
+#endif /* PNG_WRITE_SUPPORTED */
diff --git a/Externals/wxWidgets3/build_wx.sh b/Externals/wxWidgets3/build_wx.sh
index 2173572bfa..82670d6e9f 100755
--- a/Externals/wxWidgets3/build_wx.sh
+++ b/Externals/wxWidgets3/build_wx.sh
@@ -5,7 +5,9 @@ cd wxWidgets
case $OSTYPE in
darwin*)
+export CC=clang CXX=clang++ CFLAGS="-stdlib=libc++" CXXFLAGS="-stdlib=libc++" CPPFLAGS="-stdlib=libc++"
BACKEND="osx_cocoa"
+ADD_OPTS=--with-macosx-version-min=10.7 --enable-stl
;;
linux*)
BACKEND="gtk"
@@ -15,5 +17,5 @@ esac
mkdir build-local
cd build-local
-../configure --with-$BACKEND --disable-shared --enable-unicode --disable-compat28 --disable-exceptions --disable-fswatcher --without-regex --without-expat --disable-xml --disable-ribbon --disable-propgrid --disable-stc --disable-html --disable-richtext --without-libjpeg --without-libtiff --disable-webview --disable-markup
+../configure --with-$BACKEND --disable-shared --enable-unicode --disable-compat28 --disable-exceptions --disable-fswatcher --without-regex --without-expat --disable-xml --disable-ribbon --disable-propgrid --disable-stc --disable-html --disable-richtext --without-libjpeg --without-libtiff --disable-webview --disable-markup $ADD_OPTS
make
diff --git a/Externals/wxWidgets3/wx/wxcocoa.h b/Externals/wxWidgets3/wx/wxcocoa.h
index 841d17e949..33a19cda5b 100644
--- a/Externals/wxWidgets3/wx/wxcocoa.h
+++ b/Externals/wxWidgets3/wx/wxcocoa.h
@@ -16,7 +16,7 @@
#endif /* __cplusplus */
/* fill in with the string wxGetOsDescription() will return */
-#define WXWIN_OS_DESCRIPTION "Darwin 11.3.0 i386"
+#define WXWIN_OS_DESCRIPTION "Darwin 11.4.2 x86_64"
/* the installation location prefix from configure */
#define wxINSTALL_PREFIX "/usr/local"
@@ -205,7 +205,7 @@
-#define wxUSE_STL 0
+#define wxUSE_STL 1
#if defined(__DMC__) || defined(__WATCOMC__) \
|| (defined(_MSC_VER) && _MSC_VER < 1200)
@@ -214,7 +214,7 @@
#define wxUSE_STD_DEFAULT 0
#endif
-#define wxUSE_STD_CONTAINERS 0
+#define wxUSE_STD_CONTAINERS 1
#define wxUSE_STD_IOSTREAM 1
@@ -715,7 +715,7 @@
/*
* Define if your compiler has compliant std::string::compare
*/
-/* #undef HAVE_STD_STRING_COMPARE */
+#define HAVE_STD_STRING_COMPARE 1
/*
* Define if your compiler has
*/
@@ -736,12 +736,12 @@
/*
* Define if your compiler has std::unordered_map
*/
-/* #undef HAVE_STD_UNORDERED_MAP */
+#define HAVE_STD_UNORDERED_MAP 1
/*
* Define if your compiler has std::unordered_set
*/
-/* #undef HAVE_STD_UNORDERED_SET */
+#define HAVE_STD_UNORDERED_SET 1
/*
* Define if your compiler has std::tr1::unordered_map
@@ -756,12 +756,12 @@
/*
* Define if your compiler has
*/
-#define HAVE_TR1_TYPE_TRAITS 1
+/* #undef HAVE_TR1_TYPE_TRAITS */
/*
* Define if your compiler has
*/
-/* #undef HAVE_TYPE_TRAITS */
+#define HAVE_TYPE_TRAITS 1
/*
* Define if the compiler supports simple visibility declarations.
@@ -830,7 +830,7 @@
/*
* Define if compiler has __thread keyword.
*/
-/* #undef HAVE___THREAD_KEYWORD */
+#define HAVE___THREAD_KEYWORD 1
/*
* Define if large (64 bit file offsets) files are supported.
*/
@@ -996,25 +996,25 @@
#define HAVE_USLEEP 1
/* Define if you have wcscasecmp() function */
-/* #undef HAVE_WCSCASECMP 1 */
+#define HAVE_WCSCASECMP 1
/* Define if you have wcsncasecmp() function */
-/* #undef HAVE_WCSNCASECMP 1 */
+#define HAVE_WCSNCASECMP 1
/* Define if you have wcslen function */
#define HAVE_WCSLEN 1
/* Define if you have wcsdup function */
-/* #undef HAVE_WCSDUP 1 */
+#define HAVE_WCSDUP 1
/* Define if you have wcsftime() function */
#define HAVE_WCSFTIME 1
/* Define if you have strnlen() function */
-/* #undef HAVE_STRNLEN 1 */
+#define HAVE_STRNLEN 1
/* Define if you have wcsnlen() function */
-/* #undef HAVE_WCSNLEN 1 */
+#define HAVE_WCSNLEN 1
/* Define if you have wcstoull() and wcstoll() */
/* #undef HAVE_WCSTOULL */
diff --git a/Languages/Languages.vcxproj b/Languages/Languages.vcxproj
index b10b94bfcd..1e1ac6d7ba 100644
--- a/Languages/Languages.vcxproj
+++ b/Languages/Languages.vcxproj
@@ -74,6 +74,7 @@
+
@@ -99,8 +100,9 @@
-
+
+
diff --git a/Languages/po/ar.po b/Languages/po/ar.po
index 21b3dabdbd..63679d1f50 100644
--- a/Languages/po/ar.po
+++ b/Languages/po/ar.po
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the dolphin-emu package.
#
# Translators:
-# mansoor, 2011.
+# mansoor, 2011
msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emulator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
-"PO-Revision-Date: 2013-02-02 17:46+0000\n"
+"POT-Creation-Date: 2013-04-18 23:00-0500\n"
+"PO-Revision-Date: 2013-04-04 08:13+0000\n"
"Last-Translator: glennricster \n"
"Language-Team: Arabic (http://www.transifex.com/projects/p/dolphin-emu/"
"language/ar/)\n"
@@ -20,21 +20,21 @@ msgstr ""
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
msgstr "(كثير جدا العرض)"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr " لعبة : "
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr "! لا"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
@@ -43,47 +43,57 @@ msgstr ""
"\"%s\" لا وجود لها.\n"
" إنشاء جديد بطاقة الذاكرة ?"
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
msgstr "%08X: "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
msgstr "%1$sنسخ%1$s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr ""
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
msgstr "%s موجود بالفعل، الكتابة فوقة؟"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
msgstr "%s فشل في أن تكون نقيت. ربما كانت الصورة معطوب."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
" Card file size is invalid (0x%x bytes)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
" Card size is invalid (0x%x bytes)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -92,48 +102,37 @@ msgstr ""
"%s فشل تحميل في بطاقة الذاكرة \n"
"الملف ليس كبيرا بما يكفي لتكون بطاقة الذاكرة ملف صحيح (0x%x bytes)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr "%s فشل في فتح"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-"%s لديه التجزئة غير صحيحة.\n"
-"تريد أن تتوقف الآن لإصلاح المشكلة?\n"
-"سيتم تشويش الصوت \"لا\", إذا قمت باختيار."
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
msgstr "%s ملف 0 بايت"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
msgstr "%s مضغوط بالفعل! لا يستطيع أن يضغط أكثر من ذلك."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr "%s اسم الملف طويل جدا الحد الاقصى هو 45 "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr "%sمسح%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr "%sتصدير GCI%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr "%sاستيراد GCI%s"
@@ -143,251 +142,273 @@ msgstr "%sاستيراد GCI%s"
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr "&& و"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr "&حول البرنامج "
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr "&التشغيل من محرك الاقراص"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr "&نقاط التوقف"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr "&استعراض الايزو "
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
msgstr "&مدير الاسرار"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
msgstr "&إعدادات الصوت"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr "&مسح ايزو"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr "&حذف تحديد ايزو"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr "&محاكاة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr "&ملف"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr "&الاطار المسبق"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr "&ملء الشاشة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
msgstr "&إعدادات الرسومات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr "&مساعدة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr "&إعدادات الاختصارات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr "&JIT"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
msgstr "&تحميل الحالة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
msgstr "&بطاقه الذكره جيم كيوب"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr "&الذاكرة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr "&فتح"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr "&خيارات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr "&وقفة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr "&ابداء اللعبه"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr "&خصائص"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
msgstr "&وضع للقراءة فقط"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
msgstr "&تحديث القائمة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr "&تسجل"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr "&إعادة اللعبه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
msgstr "&الصوت"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr "اغلق اللعبه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
msgstr "&أدوات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr "&فديو"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr "&القائمة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
msgstr "&إعدادات تحكم الوي"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr "&معلومات عن اللعبة"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr "'"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr "(-)+zFar"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr "(-)+zNear"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr "(معروف)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr "(ايقاف)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr "0x44"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr "16 بت"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr "32 بت"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr "الرؤية ثلاثية الأبعاد"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr "8 بت"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr "<أدخل اسم هنا>"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
msgstr "<لم يتم العثور على القرارات>"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr "<لا شيء>"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr "<اضغط على مفتاح>"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr "<النظام>"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr "A"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
msgstr "نافذة اللعب عبر النت مفتوح بالفعل!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
msgstr "اللعبة ليست قيد التشغيل حاليا."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:68
-#, fuzzy
msgid ""
"A supported bluetooth device could not be found.\n"
"You must manually connect your wiimotes."
msgstr ""
-"لم يتم العثور على جهاز بلوتوث!\n"
-"(فقط بلوتوث مايكروسوفت معتمد.)"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
+#, fuzzy
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
"تنبيه:\n"
"\n"
@@ -403,17 +424,17 @@ msgstr ""
"\n"
"يجب عليك إعادة توجيه البرنامج منفذ الهوست!!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr "AM-Baseboard"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr "اسرار"
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr "ترجمة البرنامج بواسطة منصور العسيري"
@@ -421,15 +442,11 @@ msgstr "ترجمة البرنامج بواسطة منصور العسيري"
msgid "Acceleration"
msgstr "تسريع"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr "ضبط:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr "Accurate VBeam emulation"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -442,12 +459,12 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا التحقق."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr "العمل"
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -457,102 +474,102 @@ msgid ""
"%s"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
"(%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
"Fill (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
"Pointer (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
"Master codes are not needed. Do not use master codes."
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr "كرت الشاشه :"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr "أضف"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
msgstr "إضافة رمز ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr "أضف باتش"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr "إضافة جزء جديد"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr "أضف"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
msgstr "العنوان :"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -563,7 +580,7 @@ msgid ""
"NOTE: Check LogWindow/Console for the acquired values."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -574,48 +591,48 @@ msgid ""
"NOTE: Check LogWindow/Console for the acquired values."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr "ضبط السيطرة على ضغط التناظرية المطلوبة لتنشيط الأزرار."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr "متقدم"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr "إعدادات متقدمة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
msgstr "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
msgstr "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
msgstr "جميع ملفات الجيم كيوب (gcm)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr "حفظ جميع الحالات (sav, s##)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr "جميع ملفات ايزو الوي"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr "جميع مضغوط GC/Wii ISO files (gcz)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr "جميع الملفات (*.*)|*.*"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
@@ -623,39 +640,39 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr "تحليل"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
msgstr "تصفية متباينة الخواص :"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
msgstr "تنعيم الحواف:"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr "محمل التطبيق هو حجم الخطأ... هل حقا محمل التطبيق؟"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr "Apploader غير قادر على تحميل ملف من"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr "Apploader:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr "تطبيق"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
@@ -665,11 +682,11 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا حدد إيقاف."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr "العربية"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
msgstr "هل أنت متأكد أنك تريد حذف \"%s\"?"
@@ -684,46 +701,50 @@ msgstr "هل أنت متأكد أنك تريد حذف هذه الملف؟ "
msgid "Are you sure you want to delete this file? It will be gone forever!"
msgstr "هل أنت متأكد أنك تريد حذف هذه الملفات؟"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr "نسبة العرض :"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr "يجب أن لا يقل عن جزء واحد لا تزال مفتوحة."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr "الصوت"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr "صوت الخلفية :"
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr "تلقائي"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
msgstr "تلقائي (Multiple of 640x528)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
msgstr "تلقائي حجم النافذة"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr "ضبط حجم النافذة تلقائي "
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
@@ -733,160 +754,160 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr "B"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
msgstr "BP تسجل"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr "رجوع"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
msgstr "إعدادات الخلفية"
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr "الخلفية:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr "خلفية الإدخال"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr "الى الوراء"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr "سيء بداية الملف "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr "بنر"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
msgstr "تفاصيل بنر"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr "بنر:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr "شريط"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr "الأساسية"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr "إعدادات أساسية"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr "صوت عميق"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr "كتلة الاختباري جدول تخصيص فشل"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr "كتل"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr "أزرق"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr "اليسار أزرق"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr "اليمين أزرق"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr "أسفل"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr "يلزم التحكم: %lu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
msgstr "معطلة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr "أستعرض"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr "لتصفح دليل لإضافة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr "لاستعراض الدليل ايزو"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr "لاستعراض الدليل الإخراج"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr "العازلة :"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr "أزرار"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr "C"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr "العصا الأيمن "
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr "العصا الأيمن "
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr "CP reg"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr "محرك محاكي المعالج"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr "شاشة القوائم المؤقته"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -900,23 +921,38 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr ""
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr "إلغاء"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr "لا يمكن فتح %s"
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr "لا يمكن إلغاء تسجيل الأحداث مع الأحداث المعلقة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
@@ -927,7 +963,7 @@ msgstr ""
"%s\n"
"ليست ذاكرة جيم كيوب ملف بطاقة صالحة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
@@ -935,30 +971,15 @@ msgstr ""
"لا يمكن استخدام هذا الملف كبطاقة الذاكرة.\n"
"هل تحاول استخدام نفس الملف في كل من فتحات?"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr "غير قادر العثور على ويموت: %02x:%02x:%02x:%02x:%02x:%02x"
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr "غير قادر على العثور ويموت بواسطة معالج الاتصال %02x"
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
msgstr "Caps Lock"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr "الكاتالونية"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr "مركز"
@@ -966,12 +987,12 @@ msgstr "مركز"
msgid "Change"
msgstr "تغيير"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr "تغيير &القرص"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr "تغيير القرص"
@@ -979,7 +1000,7 @@ msgstr "تغيير القرص"
msgid "Change Game"
msgstr "تغيير اللعبة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
@@ -987,102 +1008,102 @@ msgstr ""
"تغيير لغة واجهة المستخدم.\n"
"يتطلب إعادة التشغيل."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr "Changes sign to zFar Parameter (بعد التصحيح)"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr "Changes sign to zNear Parameter (بعد التصحيح)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr "تغيير هذه ليس لها أي أثر في حين أن المحاكي قيد التشغيل!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr "شات"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr "اسرار"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
msgstr "بحث عن اسرار"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
msgstr "قائمة الاسرار"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr "تحقق سلامة التقسيم"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr "التحقق من سلامة ..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
msgstr "الصينية المبسطة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr "الصينية التقليدية"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr "DVD اختيار الدليل أصل :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr "Choose a NAND root directory:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr "اختيار ايزو الافتراضية :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr "اختيار دليل لإضافة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
msgstr "اختيار ملف لفتح"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr "اختيار بطاقة الذاكرة :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
msgstr ""
"اختيار ملف لاستخدام رافعة التطبيقات: (ينطبق على الأقراص مصنوعة من الادله فقط)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
msgstr "اختيار مجلد لاستخراج"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr "دائرة العصا"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr "الكلاسيكية"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr "أزال"
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
@@ -1090,122 +1111,122 @@ msgstr ""
"أثناء قطع الاتصال اللعبة العميل قيد التشغيل! يتم تعطيل اللعب شبكة. يجب عليك "
"يدويا إيقاف اللعبة."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr "إغلاق"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
msgstr "الإعدادات العامة"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
msgstr "رمز المعلومات"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
msgstr "رمز: "
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr "الأمر"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr "التعليق"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr "التعليق:"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr "ضغط ايزو"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
msgstr "اختيار ضغط ايزو"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr "ضغط ايزو"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr "إعدادات"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr "إعدادات"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr "إعدادات التحكم"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr "تكوين منصات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr "إعدادات"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr "تأكيد الكتابة فوق ملف"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
msgstr "تأكيد على التوقف"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr "اتصال"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
msgstr "ربط كيبورد يو اس بي"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr " توصيل ويموت%i"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr "توصيل ويموت 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr "توصيل ويموت 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr "توصيل ويموت 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr "توصيل ويموت 4"
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr "توصيل"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr "وحدة التحكم"
@@ -1213,15 +1234,15 @@ msgstr "وحدة التحكم"
msgid "Continuous Scanning"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr "عصا تحكم"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr "GCIتحويل إلى "
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr "فشل نسخ"
@@ -1230,21 +1251,21 @@ msgstr "فشل نسخ"
msgid "Copy to Memcard %c"
msgstr "نسخ إلى بطاقة الذاكرة %c"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr "الأساسية"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr "لا يمكن إنشاء %s"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr "لا يمكن تهيئة الخلفية %s."
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
@@ -1255,12 +1276,12 @@ msgstr ""
"backup. يرجى ملاحظة أن جيم كيوب الأصلي وأقراص الوي لا يمكن قراءتها من قبل "
"معظم أجهزة الكمبيوتر محركات الأقراص دي في دي."
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr "لا يمكن التعرف ملف ايزو %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
msgstr "لا يمكن حفظ %s"
@@ -1273,24 +1294,24 @@ msgstr ""
"تعذر تعيين منصات. وغادر لاعب أو لعبة قيد التشغيل حاليا!\n"
"(منصات الإعداد أثناء قيد التشغيل اللعبة غير معتمد حتى الآن)"
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
-msgstr ""
-"لا يمكن كتابة ملف بطاقة الذكرة %s.\n"
+"protected?\n"
"\n"
-"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
msgstr "لا يمكن العثور فتح الأوامر للتمديد 'ini'!"
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
@@ -1298,38 +1319,38 @@ msgstr ""
"لا يمكن التهيئة الأساسية.\n"
"تحقق التكوين الخاص بك."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr "الاحصاء :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr "البلد:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr "إنشاء رموز اسرار"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr "إنشاء منظور جديد"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
msgstr "المنشئ :"
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr "حرج"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
msgstr "محصول"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
@@ -1339,140 +1360,140 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
msgstr "الإبهات المتداخل"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
-msgstr "المسار الحالي تغيرت من %s to %s after wxFileSelector!"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
msgid "Custom Projection Hack"
msgstr "هاك مخصص العرض"
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
msgid "Custom Projection Hack Settings"
msgstr "إعدادات هاك مخصص العرض"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
msgstr "تخصيص بعض المعلمات العرض على إملائي."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr "التشيكية"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr "D"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr "الاسهم"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr "الصوت"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr "محرك محاكي الصوت"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr "DSP HLE emulation (سريع)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr "DSP LLE interpreter (بطيء)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr "DSP LLE on Thread"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr "DSP LLE recompiler"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP settings"
msgstr "إعدادات الصوت"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr "DVD Root:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr "حجم البيانات"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr "التاريخ :"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr "المنطقة الميتة"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr "التصحيح"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr "التصحيح"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
msgstr "عشري"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr "ضغط ايزو"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr "اختيار إلغاء ضغط ايزو "
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr "فك ايزو"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr "الافتراضي"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr "ايزو الافتراضية :"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr "الخط الافتراضي"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
msgstr "حذف"
@@ -1480,49 +1501,49 @@ msgstr "حذف"
msgid "Delete Save"
msgstr "حذف الحفظ"
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr "حذف الملف الموجود '%s'?"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr "الوصف"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr "كشف"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr "أداة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr "إعدادات الجهاز"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr "الاتصال الهاتفي"
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr "Direct3D11"
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr "Direct3D9"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
@@ -1530,16 +1551,20 @@ msgstr ""
"فشل الدليل الاختباري\n"
" و فشل دليل الاختباري الاحتياطية"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr "تعطيل"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
msgid "Disable Fog"
msgstr "تعطيل الضباب"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1553,7 +1578,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا التحقق."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1569,20 +1594,32 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#, fuzzy
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"تخطي الوجهة في كثير من الألعاب لمختلف التأثيرات الرسومية.\n"
+"\n"
+"إذا لم تكن متأكدا اترك هذا غير محددة."
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr "القرص"
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr "خطأ قراءة القرص"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr "العرض"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
@@ -1592,32 +1629,32 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
msgstr "انقسام"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr "هل تريد اغلق اللعبة الحالية؟"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr "دولفين"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr "Dolphin %s إعدادات الرسومات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
msgstr "موقع دولفين"
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
msgstr "إعدادات دولفين"
@@ -1625,16 +1662,16 @@ msgstr "إعدادات دولفين"
msgid "Dolphin Emulated Wiimote Configuration"
msgstr "إعدادات تحكم الوي"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
msgstr "دولفين"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr "إعدادات تحكم الجيم كيوب"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr ""
@@ -1642,68 +1679,77 @@ msgstr ""
msgid "Dolphin Wiimote Configuration"
msgstr "إعدادات تحكم الوي"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr "دولفين على مدونة قوقل"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
msgstr ""
"لايمكن العثور على اي لعبه جيم كيوب او وي . دبل كيك هنا لاستعراض الملفات "
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
msgstr ""
"تم تعيين دولفين حاليا إخفاء جميع الألعاب. دبل كليك هنا لإظهار جميع الألعاب..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#, fuzzy
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+"تمكين الوصول السريع القرص.اللازمة لعدد قليل من الألعاب. (ON = Fast, OFF = "
+"Compatible)"
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
msgstr "أسفل"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
msgstr "تحميل اسرار للعبة"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr "%lu وأضاف %lu تم تحميل الاسرار "
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr "الطبول"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
msgstr "وهمي "
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr "Dump Audio"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr "Dump EFB Target"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr "تفريغ الإطارات"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr "Dump Textures"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
@@ -1713,7 +1759,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
@@ -1723,7 +1769,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
@@ -1733,21 +1779,21 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr "الهولندية"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr "خروج"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr "EFB Copies"
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1756,52 +1802,52 @@ msgid ""
"driver."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr "أوروبا"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
msgstr "بداية تحديث الذاكرة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr "تحرير"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr "تعديل رمز ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr "تعديل الاعدادات"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr "تعديل الباتش"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr "تعديل المنظور الحالي"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr "تحرير"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr "تأثير"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr "عازل الإطار المضمن "
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr "المحاكي قيد التشغيل بالفعل"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1810,7 +1856,7 @@ msgid ""
"If unsure, check virtual XFB emulation instead."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1830,7 +1876,7 @@ msgstr ""
msgid "Emulated Wiimote"
msgstr "محاكاة ويموت"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
msgstr "حالة المحاكاه: "
@@ -1838,7 +1884,7 @@ msgstr "حالة المحاكاه: "
msgid "Enable"
msgstr "تمكين"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1855,72 +1901,71 @@ msgstr ""
"يتطلب ملء الشاشة للعمل.\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr "تمكين منع الدمج"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr "تمكين تنظيم حساب الإطار"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr "تمكين التخزين المؤقت"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr "تمكين الاسرار "
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr "Enable Dual Core"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr "Enable Dual Core (لزيادة السرعة)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
msgstr "تمكين الاختصارات"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr "Enable Idle Skipping"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
msgstr "Enable Idle Skipping (لزيادة السرعة)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr "MMU تمكين"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
msgstr "تمكين المسح التقدمي"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
msgstr "تمكين شاشة التوقف"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:75
-#, fuzzy
msgid "Enable Speaker Data"
-msgstr "تمكين صفحات"
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr "تمكين شاشة عريضة"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
msgstr "تمكين الإطار السلكي"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -1934,7 +1979,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا حدد X1."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
@@ -1946,7 +1991,7 @@ msgstr ""
msgid "Enable pages"
msgstr "تمكين صفحات"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -1958,7 +2003,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -1970,34 +2015,34 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
msgstr "تمكين هذا لتسريع أسطورة زيلدا : الشفق الاميرة. لتعطيل أي لعبة أخرى."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr "يمكن توقعات مخصص هاك"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
@@ -2009,13 +2054,13 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذه غير محددة."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
@@ -2025,57 +2070,57 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr "نهاية"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr "الإنجليزية"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
msgstr "تحسينات"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr "أدخل اسم للمنظور جديد :"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr "دخول %d/%d"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr "دخول 1/%d"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr "المساواة"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr "خطأ"
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr "خطأ في تحميل اللغة المختارة. يتراجع إلى النظام الافتراضية."
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
"Aborting savestate load..."
msgstr ""
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
@@ -2084,38 +2129,38 @@ msgstr ""
"ولكن لم يتم تحميلها. ألعاب قد لا تظهر الخطوط بشكل صحيح، أو تعطل %s خطأ : "
"محاولة الوصول إلى الخطوط."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr ""
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr "تنفيذ"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr "فشل تصدير"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr "فشل تصدير"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr "تصدير تسجيل"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr "تصدير تسجيل"
@@ -2123,7 +2168,7 @@ msgstr "تصدير تسجيل"
msgid "Export Save"
msgstr "تصدير حفظ"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr "تصدير حفظ الوي"
@@ -2131,100 +2176,100 @@ msgstr "تصدير حفظ الوي"
msgid "Export all saves"
msgstr "تصدير جميع الحفظ"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr "فشل تصدير، حاول مرة أخرى؟"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr "تصدير حفظ باسم"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr "تمديد"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr "عزل الاطار الخارجي"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr "معلمة إضافية"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr "استخراج كافة الملفات"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr "استخراج Apploader"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr "استخراج دليل"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr "استخراج الملفات"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr "استخراج التقسيم"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr "استخراج %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
msgstr "استخراج كافة الملفات"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
msgstr "استخراج دليل"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr "استخراج"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr "بايت"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr "لاعبين"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr "فرنسا"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr "الحجم :"
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr "خطأ الاتصال"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr "لم اسمع!"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
msgstr "اللعبه لاتوجد في قاعده البيانات."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
msgstr "فشل في الاستخراج إلى %s!"
@@ -2242,26 +2287,30 @@ msgid ""
"(Choose it from the \"Audio\" tab of the configuration dialog.)"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr "فشل تحميل hid.dll"
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr "فشل في قراءة banner.bin"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
@@ -2272,98 +2321,107 @@ msgstr ""
"Memcard may be truncated\n"
"FilePosition:%llx"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr "فشل في قراءة البيانات من ملف %d"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
msgstr ""
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr "فشل في قراءة معرف فريد من صورة القرص"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr "فشل لكتابة bkhdr"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr "فشل لكتابة عنوان لملف %d"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
msgstr "الفارسية"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr "سريع"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr " لا يعمل في كل لعبة MMU إصدار سريع من."
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr "لاعبين"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
msgstr "ملف المعلومات"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr "الملف لا يتضمن اسرار."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr "تحويل ملف إلى .gci"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
@@ -2371,7 +2429,7 @@ msgstr ""
"قد لا يمكن فتح ملف\n"
"أو لا يكون امتداد صالح"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
@@ -2380,36 +2438,36 @@ msgstr ""
"ملف يحتوي على ملحق \"%s\"\n"
"ملحقات الصالحة (.raw/.gcp)"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr "لم يتم التعرف على الملف كملف بطاقة ذاكرة"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr "ملف غير مضغوط "
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr "الملفات"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
msgstr "نوع الملف غير معروف! لن تفتح!"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr "بحث عن التالي"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr "البحث السابقة"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr "أول بلوك"
@@ -2417,23 +2475,23 @@ msgstr "أول بلوك"
msgid "Fix Checksums"
msgstr "الإصلاح اختبارية"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr "العرض 16:9"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr "العرض 4:3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
msgstr "فرض وحدة التحكم على النظام الياباني"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2445,7 +2503,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2457,7 +2515,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
@@ -2467,154 +2525,153 @@ msgstr ""
"ترك دون ,المحاكي يكون افتراضي على النظام الانجليزي ويتيح هذا الاعداد تلقائيا "
"عند اللعب اليابانية ."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr "إلى الأمام"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr "الإطار"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
msgstr "الإطار"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr "الإطار المسبق"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr "Frame Dumps use FFV1"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr "معلومات الإطار "
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr "مجموعة الإطار "
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr "تخطي الإطار "
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr "حد الإطار:"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr "إطارات لتسجيل"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr "تحكم بكاميرا اللعبة"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr "الفرنسية"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr "الحنق"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr "من"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr "شاشه كامله"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr "دقة العرض :"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr "GCI File(*.gci)"
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr "GCMic اعدادات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr "تحكم الجيم كيوب"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
msgstr "معرف اللعبة:"
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr "لعبة تستخدم بالفعل!"
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr "اللعبة ليست على التوالي!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
-#, fuzzy
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
-msgstr "لم يتم العثور على لعبة"
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr "إعدادات معينه للعبه"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr "إعدادات اللعبة"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr "ملفات حفظ لعبة جيم كيوب(*.gci;*.gcs;*.sav)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr "جيم كيوب"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr "إعدادات تحكم جيم كيوب"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
msgstr "بطاقه ذاكره الجيم كيوب (*.raw,*.gcp) "
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr "إعدادات تحكم جيم كيوب"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
msgstr "تحميل اسرار"
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2625,10 +2682,10 @@ msgstr ""
"GeckoCode فشل تشغيل (CT%i CST%i) (%s)\n"
"(إما غير رمز سيئة أو نوع رمز غير مدعومة حتى الآن.)"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr "عام"
@@ -2636,30 +2693,30 @@ msgstr "عام"
msgid "General Settings"
msgstr "الإعدادات العامة"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr "الألمانية"
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr "الرسومات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
msgstr "إعدادات الرسومات"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr "أكبر من"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2675,51 +2732,67 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا، اترك هذا التحقق."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr "اليونانية"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr "أخضر"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr "اليسار أخضر"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr "اليمين أخضر"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr "غيتار"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr "هاك"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr "عنوان اختباري فشل"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr "العبرية"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr "ارتفاع"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr "مساعدة"
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2736,15 +2809,15 @@ msgstr ""
"\n"
"الوداع!\n"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr "إخفاء"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
msgstr "إخفاء مؤشر الماوس"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
@@ -2754,26 +2827,26 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا ترك هذا التحقق."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
msgstr "الصفحة الرئيسية"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr "هوست"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
msgstr "إعدادات الاختصارات"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
msgstr "الاختصارات"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr "الهنغارية"
@@ -2781,29 +2854,29 @@ msgstr "الهنغارية"
msgid "Hybrid Wiimote"
msgstr "ويموت هجين"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
msgstr "IPL إعدادات"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr "IR"
@@ -2815,23 +2888,23 @@ msgstr "IR المؤشر"
msgid "IR Sensitivity:"
msgstr "IR حساسية:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
msgstr "تفاصيل ايزو"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
msgstr "مجلد الايزو"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr "إيطاليا"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr " أيقونة"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
@@ -2839,25 +2912,11 @@ msgstr ""
"إذا كانت محددة، سيتم تحديث سجلات المربع المحيط. المستخدمة من قبل لعبه بابير "
"ماريو"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-"لجعلها فعالة Audio Throttle يجب عليك تعطيل NTSC:60, PAL:50 إذا قمت بتعيين "
-"حد الإطار أعلى من السرعة لعبة الافتراضية "
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr "تجاهل تنسيق التغييرات "
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -2871,7 +2930,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا التحقق."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -2889,39 +2948,27 @@ msgstr ""
msgid "Import Save"
msgstr "حفظ استيراد"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr "فشل الاستيراد، حاول مرة أخرى؟"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr "الملف يحتوي على طول المستوردة غير صالحة"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"تحسين الأداء لكن يسبب الخلل في معظم الألعاب التي تعتمد على المضاهاة الضباب "
-"الصحيح.\n"
-"\n"
-"إذا لم تكن متأكدا ترك هذا غير محددة."
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
msgstr "تتعطل في اللعبة"
@@ -2929,84 +2976,84 @@ msgstr "تتعطل في اللعبة"
msgid "In-Game"
msgstr "في اللعبة"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr "معلومات"
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
msgstr "المعلومات"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr "معلومات"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr "إدراج"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr "إدراج رمز المشفرة أو فك شفرة هنا"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
msgstr "SD Card ادرج "
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr "أدخل اسم هنا"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
msgstr "wad تثبيت"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr "تثبيت إلى قائمة الوي"
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
msgstr "wad تثبيت"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr "تحقق من سلامة الخطأ"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr "التحقق من سلامة الانتهاء"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr "انتهاء التدقيق من سلامة لم يتم العثور على أخطاء"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
"or has been patched incorrectly."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
msgstr "الواجهة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
msgstr "واجهة الإعدادات"
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr ""
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
@@ -3015,41 +3062,45 @@ msgstr ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
"حاول تحميل الحالة مرة أخرى"
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr "الدقة الداخلية :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr "تتعطل في المقدمة"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
msgstr "قيمة غير صالحة!"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr ""
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr "غير صالح نوع الحدث %i"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr "ملف غير صالح"
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -3057,46 +3108,54 @@ msgid ""
" You may need to redump this game."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr "تسجيل الملف غير صالح"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr ""
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr "غير صالح حالة"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr "الإيطالية"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr "اليابان"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr "اليابانية"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr "كوريا"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
@@ -3106,62 +3165,62 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا ترك هذا التحقق."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
msgstr "إبقاء النافذة على أعلى"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr "المفتاح"
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr "الكورية"
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr "L"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
msgstr "L Button"
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr "L-Analog"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr "اللغة :"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr "الكتابة فوق آخر حالة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr "آخر حالة محفوظة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr "اليسار"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr "العصا الأيسر"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
@@ -3169,89 +3228,89 @@ msgstr ""
"انقر الأيسر لاكتشاف مفاتيح الاختصار.\n"
"أدخل لمسح المساحة."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
"Right-click for more options."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr "أقل من"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr "الحد من عدد الإطارات في الثانية "
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr "تحميل"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr "تحميل القوام المخصص"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr "1 تحميل حالة "
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr "2 تحميل حالة "
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr "3 تحميل حالة "
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr "4 تحميل حالة "
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr "5 تحميل حالة "
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr "6 تحميل حالة"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr "7 تحميل حالة"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr "8 تحميل حالة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr "تحميل حالة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
msgstr "تحميل قائمة نظام الوي"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
msgstr "تحميل قائمة نظام الوي %d%c"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
@@ -3261,7 +3320,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr "قيمة تحميل إعداد مسبق من هاك نماذج المتوفرة."
@@ -3269,23 +3328,23 @@ msgstr "قيمة تحميل إعداد مسبق من هاك نماذج المت
msgid "Local"
msgstr "المحلية"
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr "سجل"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr "سجل الإعدادات"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr "تسجيل عدد الاطارات في ملف"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr "نوع السجل"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3297,81 +3356,90 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr "مختلفان النواتج"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr "تسجيل"
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr "إنقطع الإتصال الملقم!"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr "M Button"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
" %016llx%016llx != %016llx%016llx"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr "MMU سرعة هاك"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr "العصا الأيسر"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
msgstr "معرف المنتج :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr "المنتج :"
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr "عالي"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
msgstr "بطاقة الذاكرة لديه بالفعل باستثناء هذا العنوان"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr "بطاقة الذاكرة فتحت بالفعل"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr "ذاكرة بايت"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
msgstr "بطاقة الذاكرة"
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
msgstr "إدارة بطاقة الذاكرة تنبية قم بعمل نسخة احتياطية قبل الاستخدام"
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3388,15 +3456,15 @@ msgstr ""
"%s\n"
"هل ترغب في نسخ الملف القديم إلى هذا الموقع الجديد?\n"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr "حجم بطاقة الذاكرة لا تتطابق مع حجم الملف "
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr "القائمة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr "الميكروفون"
@@ -3405,20 +3473,20 @@ msgstr "الميكروفون"
msgid "Min"
msgstr "منخفض"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr "متفرقات"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr "إعدادات منوعة"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr "معدل"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3430,20 +3498,20 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr "الخط أحادي المسافة"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr "موشن بلس"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr "محرك"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3461,224 +3529,235 @@ msgstr ""
"\n"
"\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
msgstr "تضاعف"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
msgstr "NOP"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr "ملاحظة: حجم التدفق لا يطابق مدة البيانات الفعلية\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
msgstr "أضف"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr "بدء"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
msgstr "عشري"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
msgstr "حذف"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
msgid "NP Divide"
msgstr "انقسام"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
msgstr "أسفل"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
msgstr "نهاية"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
msgstr "دخول"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
msgstr "متساوية"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr "منزل"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
msgstr "أدخل"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
msgid "NP Left"
msgstr "اليسار"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
msgid "NP Multiply"
msgstr "ضرب"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
msgid "NP Page Down"
msgstr "صفحة لأسفل"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
msgid "NP Page Up"
msgstr "صفحة لأ أعلى"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
msgid "NP Right"
msgstr "اليمين"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
msgid "NP Separator"
msgstr "الفاصل"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
msgstr "مساحة"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
msgid "NP Subtract"
msgstr "طرح"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
msgid "NP Tab"
msgstr "التبويب"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
msgid "NP Up"
msgstr "فوق"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr "الاسم :"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr "الاسم :"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr "Native GCI files(*.gci)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
msgstr "بحث جديد"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr "الصفحة التالية"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
msgstr "البحث التالي"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr "اسمك :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr "لا يوجد بلد (SDK)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr "لم يتم العثور على الايزو "
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
msgid "No banner file found for title %s"
msgstr "لم يتم العثور على ملف البنر %s"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
msgid "No description available"
msgstr "لا يوجد وصف متاح"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
msgid "No docking"
msgstr "لا الالتحام"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
msgid "No file loaded"
msgstr "لا يوجد ملف تحميل"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
msgid "No free dir index entries"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
msgid "No recorded file"
msgstr "لا ملف مسجل"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
#, c-format
msgid "No save folder found for title %s"
msgstr "لا حفظ المجلد نتيجة البحث عن العنوان %s"
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr "لا شيء"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr "النرويجية"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr "لا يساوي"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr "غير مجموعة"
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr "غير متصل"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr "ملاحظات"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr "ملاحظات :"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr "إشعار"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr "ارقام القفل"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
msgstr "عدد من رموز :"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr "ننشوك"
@@ -3687,96 +3766,97 @@ msgstr "ننشوك"
msgid "Nunchuk Acceleration"
msgstr "تسريع ننشوك"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr "الهدف"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr "نطاق الهدف"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr "إيقاف"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr "تعويض :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr "عرض الرسائل التي تظهر على الشاشة"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr "فقط %d كتل متاحة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr "فتح"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr "فتح المجلد المتضمن"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr "افتح مجلد حفظ الوي"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr "فتح الملف"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr "OpenAL : لا يمكن إنشاء سياق الجهاز %s"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr "OpenAL : لا يمكن العثور على أجهزة الصوت"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr "OpenAL : لا يمكن فتح الجهاز %s"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
msgstr "خيارات"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr "البرتقالي"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
+#, fuzzy
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
"ترتيب الملفات في دليل الملفات لا تتطابق مع ترتيب كتلة\n"
"انقر بالزر الأيمن للتصدير كافة حفظ,\n"
"واستيراد وحفظ لبطاقة ذاكرة جديدة\n"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr "أخرى"
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
@@ -3784,15 +3864,15 @@ msgstr ""
"العميل قطع أخرى في حين يتم تشغيل اللعبة! تم تعطيل تشغيل نت. كنت يدويا إيقاف "
"اللعبة."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr "الإخراج"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr "تشغيل التسجيل"
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr "تحكم"
@@ -3800,160 +3880,160 @@ msgstr "تحكم"
msgid "Pad "
msgstr "تحكم"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr "منصات"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
msgstr "صفحة لأسفل"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
msgstr "أعلى الصفحة"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr "الفقرة"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr "معلمات"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr "قسم %i"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
msgstr "باتش"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr "مسارات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr "وقفة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr "توقف في نهاية الفيلم"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr "لكل بكسل إضاءة"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr "مثالية"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr "مشهد %d"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr "بدأ اللعبه"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr "تشغيل التسجيل"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr "بدأ/ايقاف"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr "قابلة للتشغيل"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr "خيارات التشغيل"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr "لاعبين"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr "يرجى تأكيد"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr "الرجاء إنشاء منظور قبل الحفظ"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr "البولندية"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
msgstr "تحكم 1"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
msgstr "تحكم 2"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
msgstr "تحكم 3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
msgstr "تحكم 4"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr "المنفذ :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr "البرتغالية"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr "البرتغالية البرازيلية"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr "بعد معالجة تأثير:"
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr "إعدادات مسبقة :"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr "الصفحة السابقة"
@@ -3961,67 +4041,67 @@ msgstr "الصفحة السابقة"
msgid "Previous Page"
msgstr "الصفحة السابقة"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr "القيمة السابقة"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr "طباعة"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr "الملف الشخصي"
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr "خصائص"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
msgstr "إزالة التخزين المؤقت"
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr "السؤال"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr "خروج"
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr "R"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
msgstr "R Button"
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr "R-Analog"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr "RAM"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr "روسيا"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr "قوه"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr "وضع القراءة فقط"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr "حقيقي"
@@ -4037,33 +4117,33 @@ msgstr "ويموت حقيقي "
msgid "Reconnect Wiimote on State Loading"
msgstr "إعادة تحميل حالة ويموت"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr "تسجيل"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr "تسجيل معلومات"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr "تسجيل الخيارات"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr "أحمر"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr "اليسار أحمر"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr "اليمين أحمر"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -4078,28 +4158,28 @@ msgstr ""
"إذا لم تكن متأكدا حدد لا شيء."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr "تحديث"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr "تحديث قائمة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr "تحديث القائمة"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr "إزالة"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
@@ -4109,196 +4189,202 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr "تقدم إلى الشاشة الرئيسية"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr "إعادة ضبط"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr "النتائج"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
msgstr "Enter"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr "اليمين"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr "العصا الايمن"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr "هزاز"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
-msgstr "Run DSP LLE on a dedicated thread (غير مستحسن)."
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
+msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr "الروسية"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr "حفظ الحالة"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr "آمنة"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr "حفظ"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
msgstr "GCI حفظ باسم "
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
msgstr "1 حفظ حالة"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
msgstr "2 حفظ حالة"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
msgstr "3 حفظ حالة"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
msgstr "4 حفظ حالة"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
msgstr "5 حفظ حالة"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
msgstr "6 حفظ حالة"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
msgstr "7 حفظ حالة"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
msgstr "8 حفظ حالة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
msgstr "حفظ حالة"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr "حفظ باسم"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr "حفظ مضغوط GCM/ISO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr "حفظ المنظور الحالي"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr "حفظ الضغط GCM/ISO"
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr "EFB Copia a escala"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr "فحص %s"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
msgstr "بحث ايزو"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr "فحص"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr "التقاط صوره"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
msgstr "انتقل تأمين"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr "بحث"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr "بحث فلتر"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr "البحث في المجلدات الفرعية"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr "البحث عن الكائن الحالي"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr "البحث عن قيمة هيكس:"
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr "حدد"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr "اختر ملف تسجيل"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr "لتثبيت wad حدد ملف"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
@@ -4308,31 +4394,31 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا استخدم أول واحد."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr "اختر حفظ ملف للاستيراد"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr "اختر النوافذ العائمة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr "حدد الملف لتحميل"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr "حدد حفظ الملف"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr "حدد حالة التحميل"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr "حدد حالة الحفظ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4350,15 +4436,15 @@ msgstr ""
"\n"
"إذاغير متأكد حدد التلقائي."
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
msgstr "اختيار الملف التحكم الشخصي غير موجود "
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr "تحديد الخط"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4374,23 +4460,27 @@ msgstr ""
"إذا لم تكن متأكدا، استخدم دقة سطح المكتب.\n"
"إذا لم تكن متأكدا من ذلك ، استخدم أعلى دقة."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
-"حدد الجرافيك لاستخدام داخليا.\n"
-"ديركت 9 هو عادة أسرع واحد. اوبن جل هو أكثر دقة على الرغم من. ديركت 11 هو في "
-"مكان ما بين الاثنين.\n"
-"تتوفر فقط على ويندوز Direct3D علما بأن.\n"
-"\n"
-"Direct3D إذا لم تكن متأكدا استخدام ."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr "إرسال"
@@ -4398,24 +4488,24 @@ msgstr "إرسال"
msgid "Sensor Bar Position:"
msgstr "موضع الاستشعار:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr "الفاصل"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr "الصربية"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr "المنفذ التسلسلي 1 -- وهذا هو المنفذ الذي الأجهزة مثل استخدام محول شبكة"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr "ضبط"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr "تعيين كافتراضي ايزو"
@@ -4424,134 +4514,134 @@ msgstr "تعيين كافتراضي ايزو"
msgid "Set as default Memcard %c"
msgstr "تعيين كافتراضي بطاقة الذاكرة %c"
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr "إعدادات"
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr "SetupWiiMem: الإعداد غير قادر على إيجاد ملف"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr "هزة"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr "الاسم المختصر :"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr "أزرار الكتف"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr "اظهار &لوحة المراقبة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr "اظهار السجل"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr "عرض شريط الحالة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr "أظهر شريط الأدوات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr "اظهر محرك الاقراص"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr "إظهار نسخة الصادرات للمناطق"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr "أظهر عدد الاطارات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr "فرنسا"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr "جيم كيوب"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr "إظهار مدخلات العرض"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr "إيطاليا"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr "اليابان"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr "كوريا"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
msgstr "أظهر اللغة :"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr "عرض سجل الاعدادات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr "اوروبا"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr "عرض الاجهزه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr "إظهار المناطق"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
msgstr "إظهار الإحصاءات"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr "تايوان"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr "امريكا"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr "Wad اظهار"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr "الوي"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
msgstr "ظهور رسالة قبل وقف اللعبة."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4565,11 +4655,11 @@ msgstr ""
msgid "Show first block"
msgstr "إظهار اول كتلة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr "إظهار عداد التأخر"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4592,7 +4682,7 @@ msgstr "إظهار أيقونة الحفظ "
msgid "Show save title"
msgstr "إظهارعنوان الحفظ "
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4603,11 +4693,11 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr "غير معروف"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
@@ -4617,46 +4707,31 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا ترك هذا غير محددة."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr "ويموت جانبي"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
msgstr "الصينية المبسطة"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr "الحجم"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
msgstr "تخطي البيوس"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr "Skip EFB Access from CPU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"تخطي الوجهة في كثير من الألعاب لمختلف التأثيرات الرسومية.\n"
-"\n"
-"إذا لم تكن متأكدا اترك هذا غير محددة."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4672,25 +4747,25 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr "فتحة %i"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
msgstr "A خانة "
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
msgstr "B خانة "
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr "لقطة"
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
msgstr "Software Renderer"
@@ -4705,27 +4780,27 @@ msgstr ""
"انها مفيدة فقط لأغراض التصحيح.\n"
"هل حقا تريد تمكين تقديم البرامج؟ إذا لم تكن متأكدا، اختر 'لا'.."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
msgstr "إعدادات الصوت"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr "غير صالحة %s خلفية الصوت."
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr "فشل إنشاء المخزن المؤقت الصوت : %s"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr "مجال"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr "الأسبانية"
@@ -4733,7 +4808,7 @@ msgstr "الأسبانية"
msgid "Speaker Volume:"
msgstr "مكبر الصوت:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4753,63 +4828,63 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا حدد 528*640 ."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr "تسريع معدل نقل القرص"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr "مربع العصا"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr "وحدة تحكم القياسية"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr "Start"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
msgstr "بدء &اللعب عبر الشبكة"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr "بدء التسجيل"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr "بدء التسجيل"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr "الحالة"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr "حفظ الحالة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
msgstr "عجلة القيادة"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr "عصا"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr "اغلق اللعبه"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -4823,107 +4898,117 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا التحقق."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr "امتداد لنافذة"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr "داعب الأ وتار"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr "طرح"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr "بنجاح تصدير الملف إلى %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr "استيرادها بنجاح حفظ الملفات"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
msgstr "هز"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr "نظام اللغة :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr "تايوان"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr "الإدخال"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr "التبويب"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr "تقسيم الجدول"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr "الجدول الأيسر"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr "الجدول الأيمن"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr "اخذ لقطه من الشاشه"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr "TaruKonga (Bongos)"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr "اختبار"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr "Texture Cache"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr " بنجاح wad وقد تم تركيب"
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr "عنوان غير صالح"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr "تم إصلاح بنجاح الاختباري"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr "الدليل المختار هو بالفعل في قائمة"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
@@ -4932,7 +5017,7 @@ msgstr ""
"The file %s already exists.\n"
"هل ترغب في استبدالها?"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
@@ -4940,29 +5025,29 @@ msgid ""
msgstr ""
"الملف %s تعذر فتح للكتابة. يرجى التحقق من إذا فتحت بالفعل من قبل برنامج آخر."
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr "الملف %s بالفعل مفتوح، لن الملف غير عنوان مكتوب."
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr "لا وجود له (%s) الملف الذي حددته"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr "يمكن أن يكون اسم لا يتم فارغا"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr "يمكن أن يكون اسم لا تحتوي على الأحرف '،'"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -4974,69 +5059,69 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا، استخدم القيمة الثانية الأسرع من الجهة اليمنى."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr "حفظ تحاول نسخة له حجم ملف غير صالح"
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
msgstr ""
"لا يتم اعتماد اللغة المحددة من قبل النظام. يتراجع إلى النظام الافتراضية."
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr "الملقم والعميل إصدارات لعب نت تتعارض"
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr "الملقم ممتلئ"
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
msgstr "أجاب الخادم : اللعبة قيد التشغيل حاليا"
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
msgstr "بعث الملقم رسالة خطأ غير معروف"
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
msgstr "قيمة غير صالحة"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
msgstr "ثيم:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
msgstr "تجاوز هذه الإعدادات إعدادات دولفين الأساسية ."
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
msgstr "هذه المحاكاة إعادة العمل لا تدعم تعديل الرموز التي اعادتها العمل نفسه."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr "هذا يمكن أن يسبب بطء في القائمة لوى وبعض الألعاب."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -5048,7 +5133,18 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+#, fuzzy
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+"لجعلها فعالة Audio Throttle يجب عليك تعطيل NTSC:60, PAL:50 إذا قمت بتعيين "
+"حد الإطار أعلى من السرعة لعبة الافتراضية "
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -5056,75 +5152,75 @@ msgid ""
"cause occasional crashes/glitches."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr "هذا تسمح لك التعديل اليدوي رسائل كتبها هذا المؤلف ملف التكوين"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr "بداية"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr "إمالة"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr "العنوان"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr "إلى"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr "تبديل جميع أنواع السجل"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
msgstr "اللعب بالشاشة كاملة"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr "أعلى"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
msgstr "الصينية التقليدية"
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr "حاول تحميل نوع ملف غير معروف."
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr "Triggers"
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr "محاولة قراءة من SYSCONF غير صالحة"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr "التركية"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr "القرص الدوار"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr "نوع"
@@ -5132,25 +5228,25 @@ msgstr "نوع"
msgid "UDP Port:"
msgstr "UDP منفذ :"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
msgstr "UDP Wiimote"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr "غير معروف"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
msgstr "غير معروف_%02X"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr "امريكا"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
@@ -5158,7 +5254,7 @@ msgstr ""
"غير قادر على إنشاء التصحيح من قيم المعينة.\n"
"الدخول غير معدل."
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -5169,74 +5265,88 @@ msgstr ""
"decrypted code. Make sure you typed it correctly.\n"
"هل ترغب في تجاهل هذا الخط ، ومواصلة تحليل?"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr "غير محدود %i"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr "التراجع عن تحميل الحالة"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr "غير معروف"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr ""
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr ""
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr "تلقى رسالة مجهولة مع معرف : %d"
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr "أعلى"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr "التحديث"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr "ويموت مستقيم"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr "(PAL60) استخدم وضع "
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr "استخدام شاشة كاملة"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr "استخدام الهيكس"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -5249,7 +5359,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -5263,53 +5373,58 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr "فائدة"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr "تحديد أقصى معدل الاطار"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+#, fuzzy
+msgid "VBeam Speed Hack"
+msgstr "MMU سرعة هاك"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr "القيمة"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr "القيمة:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr "القيمة:"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr "فديو"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr "الظاهري"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr "الصوت"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
msgstr "خطأ في إنشاء wad: فشل التثبيت %s"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
msgstr "خطأ في إنشاء wad: فشل التثبيت %s"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5321,25 +5436,25 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr "التنبيه"
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
msgstr "تحذير -- ايزو ابتداء من الخطأ وضع وحدة التحكم!"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5350,7 +5465,7 @@ msgstr ""
"%s\n"
"هل ترغب في الاستمرار?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5363,7 +5478,7 @@ msgstr ""
"ولها نفس اسم الملف على بطاقة ذاكرة الخاصة بك\n"
"تستمر?"
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
@@ -5371,7 +5486,7 @@ msgid ""
"load this state with read-only mode off."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
@@ -5379,7 +5494,7 @@ msgid ""
"only mode off. Otherwise you'll probably get a desync."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5398,49 +5513,49 @@ msgid ""
"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
msgstr ""
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr "الضربة"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
msgstr "شاشة واسعة هاك"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr "عرض"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr "الوي"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
msgstr "جهاز الوي"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr "Wii NAND Root:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
msgstr "استيراد حفظ الوي"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
msgstr "ملفات حفظ الوي (*.bin)|*.bin"
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr "WiiWAD: لا يمكن القراءة من الملف"
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr "تحكم الوي"
@@ -5449,7 +5564,7 @@ msgstr "تحكم الوي"
msgid "Wiimote %i"
msgstr "ويموت %i"
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr "ويموت متصل"
@@ -5457,7 +5572,7 @@ msgstr "ويموت متصل"
msgid "Wiimote Motor"
msgstr "محرك ويموت"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
msgstr "إعدادات ويموت"
@@ -5465,105 +5580,123 @@ msgstr "إعدادات ويموت"
msgid "Wiimotes"
msgstr "تحكم الوي"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr "نوافذ اليسار"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
msgstr "نوافذ القائمة"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr "نوافذ اليمين"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr "كلمة ختامية"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr "العمل"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr "الكتابة إلى وحدة التحكم"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
msgstr "كتابة إلى مصحح الأخطاء"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
msgstr "الكتابة على الملف"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
msgstr "الكتابة إلى نافذة"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr "XF reg"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr "أصفر"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr "لا يمكنك إغلاق أجزاء الصفحات التي فيها."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr "عليك اختيار لعبة!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
msgstr "يجب إدخال اسم!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
msgstr "يجب إدخال صالح العشري، أو الست عشرية قيمة ثماني."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr "يجب إدخال اسم الملف صالح."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr "يجب إعادة تشغيل دولفين من أجل التغيير نافذ المفعول."
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
msgstr ""
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
@@ -5574,25 +5707,25 @@ msgstr ""
"يجب أن يكون 0x%04x (but is 0x%04llx)\n"
"هل تريد إنشاء واحدة جديدة?"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
msgstr "ZTP هاك"
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr "[انتظار]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5604,11 +5737,11 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr "[مخصص]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5626,7 +5759,7 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5640,97 +5773,38 @@ msgstr ""
"\n"
"إذا لم تكن متأكدا اترك هذا غير محددة."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr "^أضف "
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr "apploader (.img)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr "فشل في قراءة عنوان"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr "فشل في قراءة البيانات من ملف: %s"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr "فشل في قراءة عنوان"
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr "iCacheJIT: قراءة شفرة تشغيل من %x. الرجاء التقرير."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr "ليس حفظ الوي أو قراءة فشلة لحجم عنوان الملف %x"
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr "s"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr "أمر غير معروف 0x%08x"
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
msgstr "wxExecute returned -1 on application run!"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr "zFar تصحيح: "
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr "zNear تصحيح: "
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr "أو"
-#~ msgid "%i connected"
-#~ msgstr "%i متصل"
-
-#~ msgid "Alternate Wiimote Timing"
-#~ msgstr "بديل ويموت"
-
-#~ msgid "Interpreter (VERY slow)"
-#~ msgstr "Interpreter (بطيئة جدا)"
-
-#~ msgid "JIT Recompiler (recommended)"
-#~ msgstr "JIT Recompiler (موصى به)"
-
-#~ msgid "JITIL experimental recompiler"
-#~ msgstr "JITIL recompiler (تجريبي )"
-
-#~ msgid ""
-#~ "Mutes the Wiimote speaker. Fixes random disconnections on real wiimotes. "
-#~ "No effect on emulated wiimotes."
-#~ msgstr ""
-#~ "كتم صوت الويموت بإصلاح الانقطاع العشوائي على الويموت الحقيقي. أي تأثير "
-#~ "على الويموت يحتذى به."
-
-#~ msgid "Pair Up"
-#~ msgstr "اقتران"
-
-#~ msgid "Reconnect Wiimote Confirm"
-#~ msgstr "إعادة توصيل تأكيد ويموت"
-
-#~ msgid ""
-#~ "Wiimote %i has been disconnected by system.\n"
-#~ "Maybe this game doesn't support multi-wiimote,\n"
-#~ "or maybe it is due to idle time out or other reason.\n"
-#~ "Do you want to reconnect immediately?"
-#~ msgstr ""
-#~ "ويموت %i تم قطع الاتصال من قبل النظام.\n"
-#~ "ربما هذه اللعبة لا تدعم متعددة ييموت,\n"
-#~ "أو ربما هو بسبب الخمول وقت مستقطع أو لسبب آخر.\n"
-#~ "هل تريد إعادة الاتصال على الفور?"
+#~ msgid "Accurate VBeam emulation"
+#~ msgstr "Accurate VBeam emulation"
diff --git a/Languages/po/ca.po b/Languages/po/ca.po
index 87458946cd..a718c2a240 100644
--- a/Languages/po/ca.po
+++ b/Languages/po/ca.po
@@ -3,15 +3,16 @@
# This file is distributed under the same license as the dolphin-emu package.
#
# Translators:
-# Jordi Coma, 2011.
-# Jordi Coma , 2011.
-# , 2013.
+# Jordi Coma, 2011
+# Jordi Coma , 2011
+# Puniasterus , 2013
+# Puniasterus , 2013
msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emulator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
-"PO-Revision-Date: 2013-02-27 12:02+0000\n"
+"POT-Creation-Date: 2013-04-18 23:00-0500\n"
+"PO-Revision-Date: 2013-04-04 08:13+0000\n"
"Last-Translator: Puniasterus \n"
"Language-Team: Catalan (http://www.transifex.com/projects/p/dolphin-emu/"
"language/ca/)\n"
@@ -21,21 +22,21 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
-msgstr " (massa per ensenyar)"
+msgstr "(massa per ensenyar)"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr "Joc:"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr "! NO"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
@@ -44,33 +45,43 @@ msgstr ""
"\"%s \" no existeix.\n"
" Crear una nova targeta de memòria de 16MB?"
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
msgstr "\"%s\" no és un fitxer GCM/ISO valid, o no és una ISO GC/Wii."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
msgstr "%08X: "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
msgstr "%1$sCopia%1$s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr ""
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
msgstr "%s ja existeix, vols sobreescriure?"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
msgstr "%s no s'ha pogut esborrar. Probablement, la imatge està danyada."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -79,7 +90,7 @@ msgstr ""
"%s ha fallat la càrrega com a targeta de memòria\n"
"La mida del fitxer no és vàlida (0x%x bytes)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -88,7 +99,7 @@ msgstr ""
"%s ha fallat la càrrega com a targeta de memòria\n"
"La mida de la targeta no és vàlida (0x%x bytes)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -98,50 +109,39 @@ msgstr ""
"El fitxer no és suficientment gran per ser una targeta de memòria vàlida (0x"
"%x bytes)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr "%s no s'ha pogut obrir"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-"%s té un hash incorrecte.\n"
-"T'agradaria parar ara per solucionar el problema?\n"
-"Si selecciones \"No\", el so serà distorsionat."
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
msgstr "%s és un arxiu de 0 bytes"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
msgstr "%s ja està comprimit! No es pot comprimir encara més."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr ""
"%s és massa llarg per al nom de l'arxiu, el nombre de caràcters màxim és de "
"45"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr "%sEsborra%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr "%sExportar com a GCI%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr "%sImportar GCI%s"
@@ -151,252 +151,275 @@ msgstr "%sImportar GCI%s"
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr "%u Blocs lliures; %u entrades de dir. lliures"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr "&& I"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr "&Sobre..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr "&Arrencar des de la unitat de DVD..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr "&Punts d'interrupció"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr "&Cerca ISOs..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
msgstr "Gestor de &Trucs"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
msgstr "Configuració de &DSP"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr "&Eliminar ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr "&Eliminar ISOs seleccionades..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr "&Emulació"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr "&Arxiu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr "&Avança imatge"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr "&Pantalla completa"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
msgstr "Configuració de &gràfics"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr "&Ajuda"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr "Configuració de &tecles d'accés"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr "&JIT"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
msgstr "&Càrrega estat"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
msgstr "&Administrador de targeta de memòria (GC)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr "&Memòria"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr "&Obrir..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr "&Opcions"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr "&Pausa"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr "&Executar"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr "&Propietats"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
msgstr "Modalitat de només &lectura"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
msgstr "&Actualitzar llista"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr "&Registres"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr "&Reiniciar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
msgstr "&So"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr "&Aturar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
msgstr "&Eines"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr "&Vídeo"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr "&Visualitzar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
msgstr "Configuració &Wiimote"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr "&Wiki"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr "'"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr "(-)+zLluny"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr "(-)+zAprop"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr "(DESCONEGUT)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr "(Deshabilitat)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr "0x44"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr "16 bits"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr "32 bits"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr "3D Vision"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr "8 bits"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr "A"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
msgstr "Una finestra de NetPlay ja està oberta!!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
msgstr "No s'està executant cap joc actualment."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:68
-#, fuzzy
msgid ""
"A supported bluetooth device could not be found.\n"
"You must manually connect your wiimotes."
msgstr ""
-"No s'ha trobat cap dispositiu bluetooth compatible!\n"
-"Si no estàs fent servir un dispositiu Microsoft bluetooth hauràs de "
-"sincronitzar els wiimotes manualment fent servir el botó \"Refrescar\"."
+"No s'ha trobat cap dispositiu bluetooth compatible.\n"
+"Has de connectar manualment els wiimotes."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
+#, fuzzy
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
"ALERTA:\n"
"\n"
@@ -416,17 +439,17 @@ msgstr ""
"\n"
"Has de redireccionar el port TCP per fer d'amfitrió!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr "AM-placa base"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr "Codis AR "
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr "Sobre Dolphin"
@@ -434,15 +457,11 @@ msgstr "Sobre Dolphin"
msgid "Acceleration"
msgstr "Acceleració"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr "Precisió:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr "Emulació acurada de Vbeam"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -456,12 +475,12 @@ msgstr ""
"\n"
"Si no n'estàs segur, activa l'EFB a mode textura."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr "Acció"
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -476,7 +495,7 @@ msgstr ""
"Codi culpable: \n"
"%s"
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
@@ -484,7 +503,7 @@ msgstr ""
"Error d'Action Replay: Mida no vàlida (%08x: Adreça = %08x) a codi afegit "
"(%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
@@ -492,7 +511,7 @@ msgid ""
msgstr ""
"Error d'Action Replay: Mida no vàlida (%08x: Adreça = %08X) a emplenar (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
@@ -501,7 +520,7 @@ msgstr ""
"Error d Action Replay: Mida no vàlida (%08x: Adreça = %08x) a escriure i "
"farciment de RAM (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
@@ -510,13 +529,13 @@ msgstr ""
"Error d'Action Replay: Mida no vàlida (%08x: Adreça = %08x) a l'escriure al "
"punter (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr ""
"Error d'Action Replay: Valor no vàlid (%08x) en la copia de memòria (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
@@ -526,63 +545,63 @@ msgstr ""
"(% s)\n"
"Els Codis Mestres no fan falta. No els utilitzis."
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr "Error d'Action Replay: línia de codi AR no vàlida: %s"
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr "Action Replay: Codi condicional: Mida no vàlida %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr "Action Replay: Tipus de codi Normal no vàlid %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr "Action Replay: Codi Normal %i: %08x subtipus invàlid (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr "Action Replay: Codi Normal 0: Subtipus no vàlid %08x (%s)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr "Adaptador:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr "Afegeix"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
msgstr "Afegeix codi ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr "Afegeix Pedaç"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr "Afegeix una nova finestra"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr "Afegir..."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
msgstr "Adreça IP/Nom màquina:"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -600,7 +619,7 @@ msgstr ""
"\n"
"NOTA: Comproveu la Finestra de Log o consola dels valors adquirits."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -618,48 +637,48 @@ msgstr ""
"\n"
"NOTA: Comproveu la finestra de Log o consola dels valors adquirits."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr "Ajustar la pressió de control analògic per activar els botons."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr "Avançada"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr "Configuració avançada"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
msgstr "Tots els arxius GC/Wii (elf, dol, gcm, iso, ciso, GCZ, wad)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
msgstr "Totes les imatges GC/Wii (gcm, iso, ciso, gcz)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
msgstr "Tots els fitxers GameCube GCM (gcm)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr "Tots els Estats Guardats (sav, s##)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr "Tots els fitxers ISO Wii (iso)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr "Tots els fitxers ISO comprimits de GC/Wii (gcz)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr "Tots els fitxers (*.*)|*.*"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
@@ -672,39 +691,39 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr "Analitzar"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
msgstr "Angle"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
msgstr "Filtrat anisotròpic:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
msgstr "Anti-Aliasing:"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr "Apploader té una mida dolenta... realment és un apploader?"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr "Apploader no s'ha pogut carregar des de l'arxiu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr "Apploader:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr "Aplicar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
@@ -714,11 +733,11 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat (off)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr "Àrab"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
msgstr "Estàs segur que vols suprimir \"%s\"?"
@@ -735,46 +754,50 @@ msgstr ""
msgid "Are you sure you want to delete this file? It will be gone forever!"
msgstr "Estàs segur d'eliminar aquest fitxer? Aquesta acció serà definitiva!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr "Arm JIT (experimental)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr "Relació d'aspecte:"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr "Almenys un panell ha de romandre obert."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr "Àudio"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr "Suport d'àudio:"
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr "AudioCommon: Error en obrir el dispositiu AO \n"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr "Auto"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
msgstr "Auto (Múltiple de 640x528)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
msgstr "Auto (Mida de la finestra)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr "Ajust automàtic de la mida de la finestra"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
@@ -784,130 +807,130 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr "B"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
msgstr "Registre BP"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr "Enrere"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
msgstr "Configuració del motor"
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr "Suport:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr "Suport d'entrada"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr "Suport"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr "Mala capçalera a l'arxiu"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr "Imatge"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
msgstr "Detalls del Imatge"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr "Imatge:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr "Barra"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr "Bàsic"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr "Configuració bàsica"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr "Baix"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr "La comprovació de la «checksum» de la taula de blocs ha fallat"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr "Blocs"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr "Blau"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr "Blau esquerra"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr "Blau dret"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr "Fons"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr "Controls enllaçats: %lu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
msgstr "Trencat"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr "Examinar"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr "Examineu un directori per afegir"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr "Examina un directori ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr "Examina el directori de sortida"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr "Buffer:"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr "Botons"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
@@ -915,31 +938,31 @@ msgstr ""
"Ometre la neteja de la memòria cau mitjançant la instrucció DCBZ. En general "
"deixa aquesta opció desactivada."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr "C"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr "Palanca C"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr "Palanca-C"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr "Registre CP"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr "Motor d'emulació de CPU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr "Llistes de memòria cau de pantalla"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -954,23 +977,38 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr ""
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr "Cancel·lar"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr "No es pot obrir% s"
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr "No es pot des-registrar esdeveniments amb esdeveniments pendents"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
@@ -981,7 +1019,7 @@ msgstr ""
"%s\n"
"No és un arxiu de targeta de memòria gamecube vàlid."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
@@ -989,30 +1027,15 @@ msgstr ""
"No es pot usar aquest arxiu com una targeta de memòria. \n"
"Està tractant d'usar el mateix arxiu en les dues ranures?"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr "No es pot trobar WiiMote per bd: %02x:%02x:%02x:%02x:%02x:%02x"
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr "No es pot trobar l'identificador de connexió WiiMote %02x"
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr "No es pot llegir des del connector DVD - Interfície DVD: Error greu"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
msgstr "Bloc Maj."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr "Català"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr "Centre"
@@ -1020,12 +1043,12 @@ msgstr "Centre"
msgid "Change"
msgstr "Canviar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr "Canviar &Disc..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr "Canviar Disc"
@@ -1033,7 +1056,7 @@ msgstr "Canviar Disc"
msgid "Change Game"
msgstr "Canvi de joc"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
@@ -1041,75 +1064,75 @@ msgstr ""
"Canviar l'idioma de la interfície d'usuari. \n"
"Requereix reiniciar."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr "Canvia el signe del paràmetre zLluny (després de correcció)"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr "Canvia el signe del paràmetre zAprop (després de correcció)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr "Canviar això no tindrà cap efecte mentre l'emulador s'executa!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr "Chat"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr "Codi de trucs"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
msgstr "Cerca trucs"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
msgstr "Administrador de trucs"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr "Comprovar la integritat de la partició"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr "Comprovant integritat..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
msgstr "Xinès (simplificat)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr "Xinès (tradicional)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr "Tria un directori arrel del DVD:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr "Tria el directori arrel del NAND:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr "Triar una ISO per defecte:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr "Trieu un directori per afegir"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
msgstr "Trieu un arxiu per obrir"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr "Triar una targeta de memòria:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
@@ -1117,27 +1140,27 @@ msgstr ""
"Trieu l'arxiu a utilitzar com «apploader»: (s'aplica als discos construïts a "
"partir de només els directoris)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
msgstr "Selecciona la carpeta on extreure"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr "Palanca Cercle"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr "Clàssic"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr "Esborrar"
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
@@ -1145,138 +1168,138 @@ msgstr ""
"Client desconnectat mentre el joc s'estava executant! NetPlay s'ha "
"desactivat. Haurà d'aturar manualment el joc."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr "Tancar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
msgstr "&Configurar..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
msgstr "Codi d'Informació"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
msgstr "Codi:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr "Comanda"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr "Comentari"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr "Comentari:"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr "Comprimir ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
msgstr "Comprimir ISOs seleccionades..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr "Comprimeix ISO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr "Configuració"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr "Configuració"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr "Configurar Control"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr "Configurar Control"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr "Configuració..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr "Confirmar contraescriptura del fitxer"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
msgstr "Confirmar a l'aturar"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr "Connectar"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
msgstr "Connectar el teclat USB"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr "Connectar Wiimote %i"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr "Connectar Wiimote 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr "Connectar Wiimote 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr "Connectar Wiimote 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr "Connectar Wiimote 4"
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr "Connectant..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr "Consola"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:71
msgid "Continuous Scanning"
-msgstr ""
+msgstr "Escaneig continu"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr "Control"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr "Convertir a GCI"
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr "Copia fallada"
@@ -1285,21 +1308,21 @@ msgstr "Copia fallada"
msgid "Copy to Memcard %c"
msgstr "Copiar a la targeta de memòria %c"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr "Nucli"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr "No s'ha pogut crear %s"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr "No s'ha pogut inicialitzar el suport %s."
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
@@ -1310,12 +1333,12 @@ msgstr ""
"Wii. Els discs originals de Gamecube i Wii no es poden llegir per la majoria "
"de lectors DVD."
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr "No es pot reconèixer el fitxer ISO %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
msgstr "No s'ha pogut desar %s"
@@ -1329,24 +1352,24 @@ msgstr ""
"executant actualment! \n"
"(Configurar els controls mentre el joc s'executa no està actualment suportat)"
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
-msgstr ""
-"No es pot escriure el fitxer de targeta de memòria %s. \n"
+"protected?\n"
"\n"
-"Estàs executant Dolphin des d'un CD / DVD, o l'arxiu de targeta de memòria "
-"està protegit contra escriptura?"
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
msgstr "No s'ha trobat la comanda d'obertura per l'extensió 'ini'!"
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
@@ -1354,38 +1377,38 @@ msgstr ""
"No s'ha pogut inicialitzar el nucli. \n"
"Verifiqueu la configuració."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr "Compta:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr "País:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr "Crear Codi AR"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr "Crear una nova perspectiva"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
msgstr "Creador:"
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr "Crític"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
msgstr "Retallar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
@@ -1395,140 +1418,140 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
msgstr "Atenuar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
-msgstr "El directori actual ha canviat de %s a %s després de wxFileSelector!"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
msgid "Custom Projection Hack"
msgstr "Projecció personalitzada"
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
msgid "Custom Projection Hack Settings"
msgstr "Configuració de la projecció personalitzada"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
msgstr "Configuració d'alguns paràmetres de projecció Ortogràfica."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr "Txec"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr "D"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr "Direcció digital"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr "DSP"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr "Motor d'emulació DSP"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr "Emulació DSP HLE (ràpid)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr "Intèrpret DSP LLE (lent)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr "DSP LLE al fil d'execució"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr "Recompilador DSP LLE "
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP settings"
msgstr "Configuració DSP "
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr "Arrel del DVD:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr "DVDLowRead - Error fatal: error al llegir el volumen"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr "DVDLowUnencryptedRead - Error fatal: error al llegir el volumen"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr "Mida de dades"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr "Data:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr "Arxius Datel MaxDrive/Pro (*. sav)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr "Zona morta"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr "Depuració"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr "Depuració"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
msgstr "Decimals"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr "Descomprimir ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr "Descomprimir ISO seleccionades..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr "Descomprimint ISO"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr "Per defecte"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr "ISO per defecte:"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr "Font per defecte"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
msgstr "Eliminar"
@@ -1536,50 +1559,50 @@ msgstr "Eliminar"
msgid "Delete Save"
msgstr "Eliminar partida desada"
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr "Eliminar el fitxer existent '%s'?"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr "Descripció"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr "Detectar"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
msgstr ""
"Detectat intent de llegir més dades des del DVD que caben dins de la memòria."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr "Dispositiu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr "Configuració del dispositiu"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr "Dial"
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr "Direct3D11"
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr "Direct3D9"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
@@ -1587,16 +1610,20 @@ msgstr ""
"Ha fallat la suma de comprovació\n"
"i també ha fallat la comprovació de la suma de la copia del directory"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr "Deshabilitar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
msgid "Disable Fog"
msgstr "Deshabilitar boira"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1611,7 +1638,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1627,20 +1654,33 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#, fuzzy
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Saltar el destí del pas d'alfa que utilitzen molts de jocs per varis efectes "
+"gràfics.\n"
+"\n"
+"Si no n'estàs segur, deixa-ho desactivat."
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr "Disc"
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr "Error de lectura de disc"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr "Pantalla"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
@@ -1650,32 +1690,32 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
msgstr "Divideix"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr "Voleu aturar l'emulació actual?"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
msgstr "Decodificador Dolby Pro Logic II"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr "Dolphin"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr "Configuració de gràfics de Dolphin %s"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
msgstr "Lloc &Web Dolphin"
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
msgstr "Configuració de Dolphin"
@@ -1683,16 +1723,16 @@ msgstr "Configuració de Dolphin"
msgid "Dolphin Emulated Wiimote Configuration"
msgstr "Configuració de Wiimote emulat"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
msgstr "FIFO Dolphin"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr "Configuració del control GC Dolphin"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr "Dolphin Pel·lícules TAS (*.dtm)"
@@ -1700,11 +1740,11 @@ msgstr "Dolphin Pel·lícules TAS (*.dtm)"
msgid "Dolphin Wiimote Configuration"
msgstr "Configuració Wiimote Dolphin"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr "Dolphin a &Google Code"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
@@ -1712,7 +1752,7 @@ msgstr ""
"Dolphin no ha pogut trobar cap ISO GC/Wii. Fes doble clic aquí per buscar-"
"les..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
@@ -1720,50 +1760,59 @@ msgstr ""
"Dolphin està actualment configurat per ocultar tots els jocs. Fea doble clic "
"aquí per mostrar-los tots..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
msgstr "Dolphin no ha pogut completar l'acció sol·licitada."
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#, fuzzy
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+"Habilitar l'accés al disc ràpid. Necessari per a alguns jocs. (Activat = "
+"ràpid, Desactivat = Compatible)"
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
msgstr "Avall"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
msgstr "Descarregar Codis (base de dades WiiRD)"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr "Descarregat %lu codis. (Afegits %lu)"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr "Tambors"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
msgstr "Maniquí"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr "Bolcat d'àudio"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr "Bolcat de destinació EFB"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr "Bolcat d'imatges"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr "Bolcat de textures"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
@@ -1774,7 +1823,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
@@ -1784,7 +1833,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
@@ -1794,21 +1843,21 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr "Holandès"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr "&Sortir"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr "Còpies EFB"
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1821,52 +1870,52 @@ msgstr ""
"Dolphin, probablement serà necessari reiniciar el Windows per veure el nou "
"controlador."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr "EUROPA"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
msgstr "Actualitzacions recents de memòria"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr "Edita"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr "Modificar codi ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr "Modificar configuració"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr "Modificar el pedaç"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr "Modificar perspectiva actual"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr "Modificació..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr "Efecte"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr "Activar la memòria cau d'imatge («Frame Buffer»)"
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr "El fil de l'emulador ja s'està executant"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1880,7 +1929,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, activa l'emulació virtual de XFB."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1900,7 +1949,7 @@ msgstr ""
msgid "Emulated Wiimote"
msgstr "Wiimote emulat"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
msgstr "Estat d'emulació:"
@@ -1908,7 +1957,7 @@ msgstr "Estat d'emulació:"
msgid "Enable"
msgstr "Habilitar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1925,72 +1974,71 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr "Habilitar el registre de logs d'AR"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr "Habilitar fusió de Bloc"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr "Permetre el càlcul del quadre delimitador"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr "Habilitar memòria cau"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr "Activar Trucs"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr "Habilitar Doble nucli"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr "Habilitar Doble nucli (acceleració)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
msgstr "Activar tecles d'accés ràpid"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr "Habilitar salt d'inactiu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
msgstr "Habilitar salt d'inactiu (acceleració)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr "Habilitar MMU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
msgstr "Habilitar exploració &Progressiva"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
msgstr "Habilitar el protector de pantalla"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:75
-#, fuzzy
msgid "Enable Speaker Data"
-msgstr "Habilitar pàgines"
+msgstr "Activar altaveu de dades"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr "Habilitar pantalla panoràmica"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
msgstr "Habilitar filferro (wireframe)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -2005,7 +2053,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, selecciona 1x."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
@@ -2017,7 +2065,7 @@ msgstr ""
msgid "Enable pages"
msgstr "Habilitar pàgines"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -2029,7 +2077,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -2041,7 +2089,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
@@ -2049,11 +2097,11 @@ msgstr ""
"Activa aquesta opció per accelerar The Legend of Zelda: Twilight Princess. "
"Deshabilitar per a qualsevol altre joc."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr "Activa la modificació personalitzada de projecció"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
@@ -2061,12 +2109,12 @@ msgstr ""
"Activa la emulació de Dolby Pro Logic II fent servir 5.1 surround. No "
"disponible a OSX."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr "Activa la emulació de Dolby Pro Logic II. Només pel motor OpenAL."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
@@ -2074,7 +2122,7 @@ msgstr ""
"Activa la emulació de Dolby Pro Logic II. Només pel motor OpenAL. Pot ser "
"que tinguis que renombrar soft_oal.dll a OpenAL.dll perquè funcioni."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
@@ -2086,7 +2134,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
@@ -2094,7 +2142,7 @@ msgstr ""
"Activa la memòria de la Unitat de Gestió, necessari per a alguns jocs. "
"(Activat = compatible, Desactivat = ràpid)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
@@ -2104,52 +2152,52 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr "Fi"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr "Anglès"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
msgstr "Millores"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr "Escriviu un nom per la nova perspectiva:"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr "Entrada %d/%d"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr "Entrada 1/%d"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr "Igual"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr "Error"
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr ""
"Error en carregar l'idioma seleccionat. Es retorna a l'idioma per defecte "
"del sistema."
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
@@ -2158,7 +2206,7 @@ msgstr ""
"Error: Després de \"%s\", s'ha trobat %d (0x%X) en lloc de la marca de "
"guardat %d (0x%X). Cancel·lant carrega del guardat..."
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
@@ -2167,39 +2215,39 @@ msgstr ""
"Error: Provant d'accedir a fonts %s però no es carreguen. Els jocs pot ser "
"que no mostrin les fonts correctament, o un tancar-se."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr "Escape"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr "Eufòria"
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr ""
"Controlador d'excepcions - accés per sota d'espai de memòria. %08llx%08llx"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr "Executar"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr "Fallada d'exportació"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr "Exportar fitxer"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr "Exportar gravació"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr "Exportar gravació..."
@@ -2207,7 +2255,7 @@ msgstr "Exportar gravació..."
msgid "Export Save"
msgstr "Exportar partida desada"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr "Exportar partida desada Wii (Experimental)"
@@ -2215,100 +2263,100 @@ msgstr "Exportar partida desada Wii (Experimental)"
msgid "Export all saves"
msgstr "Exportar totes les partides desades"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr "Exportació fallada, intenteu de nou?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr "Desar exportació com a..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr "Extensió"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr "Memòria cau d'imatge externa"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr "Paràmetre addicional"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
msgstr "Paràmetre addicional útil només a ''Metroid: Other M''."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr "Extreure tots els arxius..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr "Extreure Apploader..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr "Extreure DOL..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr "Extreure directori..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr "Extreure arxiu..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr "Extreure partició..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr "Extraient %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
msgstr "Extreure tots els arxius"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
msgstr "Extraient Directori"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr "Extraient..."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr "Byte FIFO"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr "Jugador FIFO"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr "FRANÇA"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr "Mida FST:"
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr "Error al connectar!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr "Error a l'escoltar!"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
msgstr "Error al descarregar codis."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
msgstr "Error a l' extreure a %s!"
@@ -2334,26 +2382,30 @@ msgstr ""
"Podríeu utilitzar el motor DSP HLE que no requereix bolcat ROM.\n"
"(Esculliu-ho des de la pastanya \"Audio\" de la finestra de configuració)"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr "No s'ha pogut carregar bthprops.cpl"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr "No s'ha pogut carregar hid.dll"
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
msgstr "Error al llegir %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr "No s'ha pogut llegir Imatge.bin"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
@@ -2364,7 +2416,7 @@ msgstr ""
"La targeta de memòria pot estar trencada\n"
"Posició de l'arxiu:%llx"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
@@ -2372,7 +2424,7 @@ msgstr ""
"No s'ha pogut llegir la còpia de taula d'assignació de blocs correctament\n"
"(0x8000-0x9FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
@@ -2380,12 +2432,17 @@ msgstr ""
"No s'ha pogut llegir la taula d'assignació de blocs correctament\n"
"(0x6000-0x7FFF)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr "No s'han pogut llegir les dades des del fitxer %d"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
@@ -2393,7 +2450,7 @@ msgstr ""
"No s'ha pogut llegir la carpeta de còpia correctament\n"
"(0x4000-0x5FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
@@ -2401,7 +2458,11 @@ msgstr ""
"No es pot llegir el directori correctament \n"
"(0x2000-0x3fff)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
@@ -2409,41 +2470,41 @@ msgstr ""
"No s'ha pogut llegir la capçalera correctament\n"
"(0x0000-0x1FFF)"
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr "No s'ha pogut llegir Identificador únic de la imatge de disc"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr "No s'ha pogut escriure BT.DINF a SYSCONF"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr "No s'ha pogut escriure bkhdr"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr "No s'ha pogut escriure la capçalera per %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr "No s'ha pogut escriure la capçalera pel fitxer% d"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
msgstr "Persa"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr "Ràpid"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr "Versió ràpida de la MMU. No funciona per a tots els jocs."
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
@@ -2451,23 +2512,23 @@ msgstr ""
"Desincronització fatal. Cancel·lant reproducció. (Error a PlayWiimote: %u != "
"%u, byte %u.)%s"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr "Jugador fifo"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
msgstr "informació del fitxer"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr "L'arxiu no conté codis."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr "Arxiu convertit a. GCI"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
@@ -2475,7 +2536,7 @@ msgstr ""
"L'arxiu no s'ha pogut obrir \n"
"o no té una extensió vàlida"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
@@ -2484,36 +2545,36 @@ msgstr ""
"L'arxiu té la extensió \"%s\n"
"les extensions vàlides són (.raw /.gcp)"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr "L'arxiu no es pot reconèixer com una targeta de memòria"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr "Arxiu no comprimit"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr "FileIO: Mode d'obertura desconegut: 0x% 02x "
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr "Sistema d'arxius"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
msgstr "Tipus de fitxer 'ini' és desconegut! No s'obrirà!"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr "Trobar següent"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr "Trobar anterior"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr "Primer Bloc"
@@ -2521,23 +2582,23 @@ msgstr "Primer Bloc"
msgid "Fix Checksums"
msgstr "Arregla les sumes de comprovació"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr "Forçar 16:9"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr "Forçar 4:3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
msgstr "Força la consola com NTSC-J"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
msgstr "Forçar Filtrat de textura"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2550,7 +2611,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2562,7 +2623,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
@@ -2572,7 +2633,7 @@ msgstr ""
"Sent desactivat, dolphin posa per defecte NTSC-U i automàticament ho activa "
"quant es juga amb jocs Japonesos."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
@@ -2580,148 +2641,147 @@ msgstr ""
"Format ascii (NTSC \\PAL)? \n"
"Tria no per sjis (NTSC-J)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr "Endavant"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr "Trobats %d resultats per '"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr "Imatge"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
msgstr "Imatge"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr "Avançar imatges"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr "Bolcat d'imatges utilitzant FFV1"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr "Info del frame"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr "Rang d'imatges"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr "Salta imatge&s"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr "Limit d'imatges/s:"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr "Imatges a Enregistrar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr "Visió lliure"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr "Francès"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr "Trasts"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr "de"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr "Pantalla completa"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr "Resolució de pantalla a pantalla completa:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr "Arxiu de GCI (*.gci)"
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr "Configuració del micro de GC"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr "Control GC"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr "GX_CMD_INVL_VC"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
msgstr "ID del Joc:"
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr "El joc encara està en marxa!"
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr "El joc no està funcionant!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
-#, fuzzy
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
msgstr "Joc no trobat!"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr "Configuració de jocs específics"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr "Configuració de joc"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr "Fitxers de guardat de GameCube (*.gci;*.gcs;*.sav)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr "Gamecube"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr "Configuració control «&Gamecube»"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
msgstr "Targetes de memòria per GameCube (*.raw, *.gcp)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr "Configuració control Gamecube"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
msgstr "Codis Gecko"
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2734,10 +2794,10 @@ msgstr ""
"Prova fent servir el controlador de codi natiu col·locant el arxiu "
"codehandler.bin al directori Sys i reiniciant Dolphin.)"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr "General"
@@ -2745,32 +2805,32 @@ msgstr "General"
msgid "General Settings"
msgstr "Configuració General"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr "Alemany"
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr ""
"Aconseguir codi AR: l'índex és major que la grandària de la llista de codis "
"%lu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr "Gràfics"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
msgstr "Configuració de gràfics"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr "Més gran que"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2788,51 +2848,67 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr "Grec"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr "Verd"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr "Verd Esquerra"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr "Verd Dret"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr "Guitarra"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr "S'ha cridat HCI_CMD_INQUIRY , si us plau informeu!"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr "Modificacions"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr "Comprovació de la checksum de capçalera ha fallat"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr "Hebreu"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr "Alçada"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr "Ajuda"
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2849,15 +2925,15 @@ msgstr ""
"\n"
"Sayonara! \n"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr "Oculta"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
msgstr "Ocultar el cursor del ratolí"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
@@ -2867,26 +2943,26 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
msgstr "Inici"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr "Amfitrió"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
msgstr "Tecla d'accés de configuració"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
msgstr "Tecles d'accés"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr "Hongarès"
@@ -2894,35 +2970,31 @@ msgstr "Hongarès"
msgid "Hybrid Wiimote"
msgstr "Wiimote Híbrid"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr ""
"IOCTL_ES_GETVIEWS: Ha Tractat d'obtenir dades d'un bitllet desconegut:%08x/"
"%08x"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-"IOCTL_ES_LAUNCH: Joc ha intentat de tornar a carregar ios o un títol que no "
-"està disponible en el seu bolcat de la nand \n"
-"TitleID %016llx. \n"
-"Probablement Dolphin es penjarà ara."
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
msgstr "IOCTL_ES_READCONTENT - destinació dolenta"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
msgstr "Configuració de IPL"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr "IR"
@@ -2934,23 +3006,23 @@ msgstr "Punter IR"
msgid "IR Sensitivity:"
msgstr "Sensibilitat d'IR:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
msgstr "Detalls d'ISO:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
msgstr "Directoris ISO:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr "ITÀLIA"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr "Icona"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
@@ -2958,28 +3030,11 @@ msgstr ""
"Si es selecciona, els registres del quadre delimitador seràn actualitzats. "
"Es utilitzat pels jocs de Paper Mario."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-"Si el FPS és irregular, aquesta opció pot ser útil. (Activat = compatible, "
-"Desactivat = ràpid)"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-"Si s'ha establert un límit al nombre d'imatges per segon major que la "
-"velocitat del joc màxima (NTSC: 60, PAL: 50), també cal deshabilitar la "
-"regulació de so DSP per a fer-ho efectiu."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr "Ignora els canvis de format"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -2993,7 +3048,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -3011,11 +3066,11 @@ msgstr ""
msgid "Import Save"
msgstr "Desar importació"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr "Fallada a l'importació, tornar a provar?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
@@ -3023,11 +3078,11 @@ msgstr ""
"L'arxiu importat té extensió sgc \n"
"però té una capçalera incorrecte."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr "l'Arxiu importat té una longitud no vàlida"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
@@ -3035,19 +3090,7 @@ msgstr ""
"L'Arxiu importat té extensio sav \n"
"però la capçalera és incorrecte"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"Millora el rendiment en molts jocs, però causa errors gràfics en els jocs "
-"que es basen en l'emulació de boira\n"
-"\n"
-"Si no n'estàs segur, deixa-ho desactivat."
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
msgstr "En Joc"
@@ -3055,67 +3098,67 @@ msgstr "En Joc"
msgid "In-Game"
msgstr "En-joc"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr "Info"
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
msgstr "Informació"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr "Entrada"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr "Insereix"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr "Inserta el codi xifrat o desxifrat aquí..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
msgstr "Inserir la targeta SD"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr "Introduïu un nom aquí .."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
msgstr "Instal·lar WAD"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr "Instal·lar al Menú de Wii"
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
"InstallExceptionHandler cridat, però aquesta plataforma no està suportada "
"encara."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
msgstr "Instal·lant WAD..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr "Error de comprovació d'integritat"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr "Comprovació d'integritat finalitzat"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr "Comprovació d'integritat finalitzat. No s'han trobat errors."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
@@ -3124,19 +3167,19 @@ msgstr ""
"Comprovació d'integritat per la partició %d ha fallat. El teu bolcat "
"probablement s'ha corromput o s'ha apedaçat incorrectament."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
msgstr "Interfície"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
msgstr "Configuració d'interfície"
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr "Error intern LZO - la compressió ha fallat"
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
@@ -3145,41 +3188,45 @@ msgstr ""
"Error intern LZO - descompressió fallada (% d) (%li, %li) \n"
"Intenteu carregar l'estat de nou"
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr "Error intern LZO - lzo_init () ha fallat"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr "Resolució Interna:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr "Introducció"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr "Mida no vàlida (%x) o paraula màgica (%x)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
msgstr "Valor invàlid!"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr "Invàlid bat.map o entrada al directori"
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr "Tipus d'esdeveniment invàlid %i"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr "Arxiu invàlid"
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -3190,46 +3237,54 @@ msgstr ""
"% s\n"
"És possible que necessiti re-descarregar aquest joc."
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr "Enregistrament de fitxer invàlid"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr "Paràmetres de búsqueda invàlids (cap objecte seleccionat)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr "Cerca de cadena invàlida (no s'ha pogut convertir a número)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr "Cerca de cadena invàlida (només es soporten algunes longituds)"
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr "Estat invàlid"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr "Italià"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr "JAPÓ"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr "Recompilador experimental JITIL"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr "Japonès"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr "COREA"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
@@ -3239,62 +3294,62 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
msgstr "Mantenir la finestra sempre visible"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr "Clau"
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr "Corea"
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr "L"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
msgstr "Botó L"
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr "L-Analògic"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr "Idioma:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr "Últim estat sobreescrit"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr "Últim estat desat"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
msgstr "Latència:"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr "Esquerra"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr "Palanca esquerra"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
@@ -3302,7 +3357,7 @@ msgstr ""
"Clic esquerre per detectar tecles d'accés. \n"
"Entrar a l'espai per esborrar."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
@@ -3312,7 +3367,7 @@ msgstr ""
"Clic mig per desactivar. \n"
"Clic det per més opcions."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
@@ -3320,76 +3375,76 @@ msgstr ""
"Clic Esquerra/Dreta per més opcions. \n"
"Clic Mig per deshabilitar."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr "Menys de"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr "Limitar per FPS "
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr "Carregar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr "Carrega textures personalitzades"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr "Carregar ranura d'estat 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr "Carregar ranura d'estat 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr "Carregar ranura d'estat 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr "Carregar ranura d'estat 4"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr "Carregar ranura d'estat 5"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr "Carregar ranura d'estat 6"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr "Carregar ranura d'estat 7"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr "Carregar ranura d'estat 8"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr "Carregar Estat..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
msgstr "Carregar el menú del sistema Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
msgstr "Carregar menú del sistema Wii %d%c"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
@@ -3399,7 +3454,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr "Carrega els valors preestablerts dels patrons disponibles."
@@ -3407,23 +3462,23 @@ msgstr "Carrega els valors preestablerts dels patrons disponibles."
msgid "Local"
msgstr "Local"
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr "Registre Log"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr "Configuració del registre Log"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr "Escriure FPS en un fitxer"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr "Tipus de registre Log"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3435,24 +3490,24 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr "Sortides del registrador Log"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr "Inici de sessió"
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr "Perdut la connexió amb el servidor!"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr "Botó M"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
@@ -3461,51 +3516,60 @@ msgstr ""
"desajust MD5 \n"
" %016llx%016llx != %016llx%016llx"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr "Modificació de velocitat MMU"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr "Arxius MadCatz Gameshark (*.gcs)"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr "Palanca principal"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
msgstr "ID Fabricant:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr "Fabricant:"
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr "Màxim"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
msgstr "La targeta de memòria ja té una entrada amb aquest títol."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr "Targeta de memòria ja oberta"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr "Byte de memòria"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
msgstr "Targeta de memòria"
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
@@ -3513,7 +3577,7 @@ msgstr ""
"Targeta de memòria Administrador ADVERTÈNCIA-Fes còpies de seguretat abans "
"d'utilitzar, hauria d'estar arreglat, però pots perdre dades!"
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3530,16 +3594,16 @@ msgstr ""
"%s \n"
"Voleu copiar el fitxer antic a aquesta nova ubicació? \n"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr ""
"La mida de la targeta de memòria no correspon a la mida de la capçalera"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr "Menú"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr "Micròfon"
@@ -3548,20 +3612,20 @@ msgstr "Micròfon"
msgid "Min"
msgstr "Mínim"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr "Varis"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr "Varies Configuracions"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr "Modificador"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3573,20 +3637,20 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr "Fonts d'espiat simple"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr "Motion Plus®"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr "Motor"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3605,225 +3669,236 @@ msgstr ""
"\n"
"\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
msgstr "Múltiple"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
msgstr "NOP"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr ""
"NOTA: El tamany de fluxe no coincideix amb la longitud actual de dades\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
msgstr "NP Afegir"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr "NP Començar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
msgstr "NP Decimal"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
msgstr "NP Esborrar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
msgid "NP Divide"
msgstr "NP Dividir"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
msgstr "NP Avall"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
msgstr "NP Fi"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
msgstr "NP Entrar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
msgstr "NP Igual"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr "NP Inici"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
msgstr "NP Inserir"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
msgid "NP Left"
msgstr "NP Esquerra"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
msgid "NP Multiply"
msgstr "NP Multiplicar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
msgid "NP Page Down"
msgstr "NP Baixar pagina"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
msgid "NP Page Up"
msgstr "NP Pàgina"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
msgid "NP Right"
msgstr "Dret NP"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
msgid "NP Separator"
msgstr "NP Separador"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
msgstr "NP Espai"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
msgid "NP Subtract"
msgstr "NP Restar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
msgid "NP Tab"
msgstr "NP Tabulador"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
msgid "NP Up"
msgstr "NP Amunt"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr "Nom:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr "Nom:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr "Arxius natius GCI (*.gci)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
msgstr "Nou escaneig"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr "Pàgina següent"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
msgstr "Següent escaneig"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr "Sobrenom:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr "No país (SDK)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr "No s'han trobat ISOs o WADs"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
msgid "No banner file found for title %s"
msgstr "No s'ha trobat la imatge pel joc %s"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
msgid "No description available"
msgstr "No hi ha descripció disponible"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
msgid "No docking"
msgstr "No acoblament"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
msgid "No file loaded"
msgstr "No s'ha carregat cap fitxer"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
msgid "No free dir index entries"
msgstr "No hi ha entrades lliures a l'índex de directoris"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
msgid "No recorded file"
msgstr "Arxiu no enregistrat"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
#, c-format
msgid "No save folder found for title %s"
msgstr "No s'ha trobat la carpeta de partides desades per el joc %s"
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr "Cap"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr "Noruega Bokmaal"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr "No igual"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr "Sense establir"
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr "No està connectat"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr "Notes"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr "Notes:"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr "Avís"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr "Bloq Numèric"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
msgstr "Nombre de codis:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr "Nunchuk"
@@ -3832,96 +3907,97 @@ msgstr "Nunchuk"
msgid "Nunchuk Acceleration"
msgstr "Acceleració del Nunchuk"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr "Objecte"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr "Rang d'objecte"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr "Apagar"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr "Desplaçament:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr "Missatges en pantalla"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr "Només queden %d blocs disponibles"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr "Obrir"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr "Obrir directori &contingut"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr "Obrir la carpeta de partide&s desades"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr "Obrir fitxer..."
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr "OpenAL: no es pot crear el context pel dispositiu %s"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr "OpenAL: no es poden trobar dispositius de so"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr "OpenAL: no es pot obrir el dispositiu %s"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
msgstr "Descodificador de textura OpenCL"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr "Activar descodificador de textura OpenMP"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
msgstr "Opcions"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr "Taronja"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
+#, fuzzy
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
"L'ordre dels arxius en el directori no coincideix amb l'ordre de blocs\n"
"Feu clic dret i exporteu totes les partides desades,\n"
"i importeu les partides desades una targeta de memòria nova\n"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr "Altres"
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
@@ -3929,15 +4005,15 @@ msgstr ""
"Un altre client s'ha desconnectat mentre el joc s'estava executant! NetPlay "
"s'ha desactivat. Aturar manualment el joc."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr "Sortida"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr "&Reproduir gravació..."
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr "Control"
@@ -3945,160 +4021,160 @@ msgstr "Control"
msgid "Pad "
msgstr "Control"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr "Controls"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
msgstr "Retocedir pàgina"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
msgstr "Avançar Pàgina"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr "Paràgraf"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr "Paràmetres"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr "Partició %i"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
msgstr "Pedaços"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr "Camins"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr "Pausa"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr "Pausar al acabar la pel·lícula"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr "Il·luminació per píxel"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr "Perfecte"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr "Perspectiva %d"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr "Executar"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr "Reproduir enregistrament"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr "Reproduir/Pausa"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr "Jugable"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr "Opcions de reproducció"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr "Jugadors"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr "Confirma..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr "Creeu una perspectiva abans de desar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr "Més-Menys"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr "Polonès"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
msgstr "Port 1"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
msgstr "Port 2"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
msgstr "Port 3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
msgstr "Port 4"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr "Port :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr "Portuguès"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr "Portuguès (Brasil)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr "Efectes de post-procés:"
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr "Final prematur de la pel·lícula a PlayController. %u + 8 > %u"
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr "Final prematur de la pel·lícula a PlayWiimote. %u + %d > %u"
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr "Final prematur de la pel·lícula a PlayWiimote. %u > %u"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr "Preestablerts:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr "Pàgina anterior"
@@ -4106,67 +4182,67 @@ msgstr "Pàgina anterior"
msgid "Previous Page"
msgstr "Pàgina anterior"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr "Valor anterior"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr "Imprimir"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr "Perfil"
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr "Propietats"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
msgstr "Netejar memòria cau"
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr "Pregunta"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr "Sortir"
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr "R"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
msgstr "Botó R"
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr "R-Analògic"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr "RAM"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr "RÚSSIA"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr "Rang"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr "Només lectura"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr "Real"
@@ -4182,33 +4258,33 @@ msgstr "Wiimotes reals"
msgid "Reconnect Wiimote on State Loading"
msgstr "Tornar a connectar el Wiimote al carregar l'estat"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr "Enregistrar"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr "Informació d'enregistrament"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr "Enregistrant Opcions"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr "Vermell"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr "Vermell Esquerra"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr "Vermell Dret"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -4224,28 +4300,28 @@ msgstr ""
"Si no n'estàs segur, selecciona Cap."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr "Actualitzar"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr "Actualitzar llista"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr "Actualitza la llista de jocs"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr "Treure"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
@@ -4255,197 +4331,203 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr "Renderitzar a la finestra principal"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr "Reiniciar"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr "Resultats"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
msgstr "Tornar"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr "Dreta"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr "Palanca dreta"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr "Vibració"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
-msgstr "Executar DSP LLE en un fil d'execució dedicat (no recomanat)."
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
+msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr "Rus"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr "&Desa l'estat"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr "Segur"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr "Desar"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
msgstr "Anomena i desa GCI..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
msgstr "Desar ranura estat 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
msgstr "Desar ranura estat 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
msgstr "Desar ranura estat 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
msgstr "Desar ranura estat 4"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
msgstr "Desar ranura estat 5"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
msgstr "Desar ranura estat 6"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
msgstr "Desar ranura estat 7"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
msgstr "Desar ranura estat 8"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
msgstr "Desar Estat..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr "Desar com..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr "Desar GCM/ISO comprimit"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr "Desar perspectiva actual"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr "Desar GCM/ISO descomprimit"
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr ""
"El guardat de la pel·lícula %s és corrupta, la gravació s'està aturant..."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr "Copia EFB escalada"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr "Escanejant %s"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
msgstr "Cercant ISOs"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr "Cercant..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr "Capturar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
msgstr "Bloc desplaçament"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr "Buscar"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr "Filtre de cerca"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr "Cercar en subcarpetes"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr "Buscar objecte actual"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr "Buscar valor hexadecimal:"
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr "La secció %s no trobada a SYSCONF"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr "Seleccionar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr "Selecciona el fitxer de gravació"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr "Selecciona un fitxer WAD de Wii per instal·lar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
@@ -4454,31 +4536,31 @@ msgstr ""
"Seleccionar un adaptador de maquinari per utilitzar.\n"
"En cas de dubte, utilitza el primer."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr "Selecciona un arxiu per guardar la importació"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr "Selecciona finestres flotants"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr "Selecciona el fitxer a carregar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr "Selecciona el fitxer de partida guardada"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr "Selecciona l'estat a carregar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr "Selecciona l'estat a guardar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4496,15 +4578,15 @@ msgstr ""
"\n"
"Si no n'estàs segur, selecciona Automàtic."
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
msgstr "El perfil del controlador seleccionat no existeix"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr "Font seleccionada"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4520,23 +4602,27 @@ msgstr ""
"Si no n'estàs segur, utilitza la resolució de l'escriptori.\n"
"Si encara no n'estàs segurs, utilitza la resolució més alta que et funcioni."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
-"Escull la API gràfica que utilitza internament.\n"
-"Direct3D 9 normalment és la més ràpida. Però OpenGL és la més exacta. "
-"Direct3D 11 és en un punt entre mig.\n"
-"Tingues en compte que Direct3D només funciona a Windows.\n"
-"\n"
-"Si no n'estàs segur, utilitza Direct3D 9."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr "Enviar"
@@ -4544,26 +4630,26 @@ msgstr "Enviar"
msgid "Sensor Bar Position:"
msgstr "Barra de sensors de posició"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr "Separador"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr "Serbi"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr ""
"Port Sèrie 1 - Aquest és el port que utilitzen els dispositius com "
"l'adaptador de xarxa"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr "Definir"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr "Definir la imatge ISO per &defecte"
@@ -4572,14 +4658,14 @@ msgstr "Definir la imatge ISO per &defecte"
msgid "Set as default Memcard %c"
msgstr "Definir com a targeta de memòria predeterminada %c"
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr ""
"SetARCode_IsActive: L'índex és major que la grandària de la llista de codis "
"AR %lu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
@@ -4587,123 +4673,123 @@ msgstr ""
"Ajusta la latència (en ms). Valors més alts poden reduir el soroll. Només "
"pel motor Open AL."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr "Configuració..."
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr "SetupWiiMem: No es troba el fitxer de configuració"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr "Sacsejar"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr "Nom curt:"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr "Botons LR"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr "Mostrar &Consola"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr "Mostrar &Log"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr "Mostrar Barra d'e&stat"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr "Mostrar Barra d'&eines"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr "Mostrar unitats"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr "Mostrar regions de copia EFB"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr "Mostra FPS (imatges/s)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr "Mostrar França"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr "Mostrar GameCube"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr "Mostrar entrada"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr "Mostrar Itàlia"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr "Mostrar Japó"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr "Mostrar Corea"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
msgstr "Mostrar Idioma:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr "Mostrar la &Configuració del registre de log"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr "Mostrar PAL"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr "Mostrar Plataformes"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr "Mostrar Regions"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
msgstr "Mostrar estadístiques"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr "Mostrar Taiwan"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr "Mostrar EUA"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr "Mostrar Wad"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr "Mostrar Wii"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
msgstr "Mostrar un missatge de confirmació abans d'aturar el joc."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4717,11 +4803,11 @@ msgstr ""
msgid "Show first block"
msgstr "Mostra primer bloc"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr "Mostrar contador de lag"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4747,7 +4833,7 @@ msgstr "Mostra icona de desar"
msgid "Show save title"
msgstr "Mostra títol desat"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4759,11 +4845,11 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr "Mostrar desconeguda"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
@@ -4773,47 +4859,31 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr "Wiimote horitzontal"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
msgstr "Xinès simplificat"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr "Mida"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
msgstr "Saltar BIOS"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
msgstr "Saltar la neteja DCBZ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr "Salta pas Dest. Alpha"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr "Salta l'accés d'EFB des de la CPU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"Saltar el destí del pas d'alfa que utilitzen molts de jocs per varis efectes "
-"gràfics.\n"
-"\n"
-"Si no n'estàs segur, deixa-ho desactivat."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4830,25 +4900,25 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr "Ranura %i"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
msgstr "Ranura A"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
msgstr "Ranura B"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr "Captura"
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
msgstr "Renderitzat per programari"
@@ -4864,27 +4934,27 @@ msgstr ""
"Realment vols activar el renderitzat per software? Si no n'estàs segur, "
"selecciona 'No'."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
msgstr "Configuració de so"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr "Suport de so %s invàlid."
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr "Ha fallat la creació del buffer de so: %s"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr "Espai"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr "Espanyol"
@@ -4892,7 +4962,7 @@ msgstr "Espanyol"
msgid "Speaker Volume:"
msgstr "Volum de l'altaveu:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4912,63 +4982,63 @@ msgstr ""
"\n"
"Si no n'estàs segur, selecciona 640x528."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr "Accelerar la tassa de transferència de Disc"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr "Palanca quadrada"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr "Control estàndard"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr "Començar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
msgstr "Iniciar &NetPlay"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr "Iniciar grava&ció"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr "Iniciar gravació"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr "Estat"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr "Estats desats"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
msgstr "Volant"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr "Palanca"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr "Aturar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -4982,107 +5052,117 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr "Ajustar a la finestra"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr "Cop"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr "Extreure"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr "Arxiu exportat amb èxit a %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr "Arxius de partides desades importats correctament"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
msgstr "Oscil·lació"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr "Idioma del sistema:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr "TAIWAN"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr "Entrada TAS"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr "Pestanya"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr "Divisió de pestanya"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr "Taula esquerra"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr "Taula dreta"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr "Capturar pantalla"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr "TaruKonga (Bongos)"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr "Prova"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr "Textura"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr "Memòria cau de textura"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr "Superposició del format de textura"
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr "El WAD s'ha instal·lat amb èxit"
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr "L'adreça és invàlida"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr "La suma de comprovació s'ha fixat amb èxit"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr "El directori triat ja és a la llista"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
@@ -5091,7 +5171,7 @@ msgstr ""
"El fitxer %s ja existeix. \n"
"Voleu reemplaçar-lo?"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
@@ -5100,29 +5180,29 @@ msgstr ""
"El fitxer %s no s'ha pogut obrir per escriptura. Comproveu si ja està obert "
"per un altre programa."
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr "El fitxer %s ja estava oberta, la capçalera de l'arxiu no s'escriurà."
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr "L'arxiu especificat (%s) no existeix"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr "El nom no pot estar buit"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr "El nom no pot contenir el caràcter ','"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr "El resultat del desxifratge el codi AR no conté cap línia."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -5134,12 +5214,12 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho al màxim valor de la dreta."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr ""
"El fitxer de partida guardada que està intentant copiar té la mida invàlida"
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
@@ -5147,36 +5227,36 @@ msgstr ""
"L'idioma seleccionat no és compatible amb el seu sistema. Es tornarà a "
"l'idioma per defecte del sistema."
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr "El servidor i les versions de client NetPlay són incompatibles!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr "El servidor està ple!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
msgstr "El servidor ha espòs: el joc està en marxa!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
msgstr "El servidor ha enviat un missatge d'error desconegut!"
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr "L'arxiu especificat \"%s\" no existeix"
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
msgstr "El valor és invàlid."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
msgstr "Tema visual:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
@@ -5184,7 +5264,7 @@ msgstr ""
"Hi ha d'haver una entrada per 00000001/00000002. El seu bolcat de la NAND "
"probablement és incompleta."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
@@ -5192,7 +5272,7 @@ msgstr ""
"Aquesta configuració sobreescriu la configuració de Dolphin.\n"
"Indeterminat vol dir que el joc utilitza el valor de Dolphin."
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
@@ -5200,11 +5280,11 @@ msgstr ""
"Aquest simulador d'ActionReplay no és compatible amb els codis que "
"modifiquen ActionReplay."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr "Pot causar alentiment al Menú Wii i alguns jocs."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -5224,7 +5304,19 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desactivat."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+#, fuzzy
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+"Si s'ha establert un límit al nombre d'imatges per segon major que la "
+"velocitat del joc màxima (NTSC: 60, PAL: 50), també cal deshabilitar la "
+"regulació de so DSP per a fer-ho efectiu."
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -5236,61 +5328,61 @@ msgstr ""
"Causa millores importants de velocitat en ordinadors amb més d'un nucli, "
"però també poden causar interferències/fallades."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr "Li permetrà editar manualment el fitxer de configuració INI"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr "Llindar"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr "Inclinació"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr "Títol"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr "A"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr "Activar tots els tipus de registre de Log"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
msgstr "Activar pantalla completa"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr "Dalt"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
msgstr "Xinès tradicional"
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr "S'ha intentat de carregar un tipus de fitxer desconegut."
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr "Gatells"
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr "Provant de llegir des d'un SYSCONF invàlid"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
@@ -5298,15 +5390,15 @@ msgstr ""
"Intentant de llegir des d'un SYSCONF invàlid \n"
"identificadors de Wiimote bt no estan disponibles"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr "Turc"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr "Taula DJ"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr "Tipus"
@@ -5314,25 +5406,25 @@ msgstr "Tipus"
msgid "UDP Port:"
msgstr "Port UDP:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
msgstr "Wiimote UDP"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr "DESCONEGUT"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
msgstr "DESCONEGUT_%02X"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr "EUA"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
@@ -5340,7 +5432,7 @@ msgstr ""
"Incapaç de crear un pedaç amb els valors donats.\n"
"No s'ha modificat l'entrada."
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -5351,75 +5443,89 @@ msgstr ""
"desenciptat vàlid. Assegura't d'haver-lo escrit correctament.\n"
"Vols ignorar aquesta línia i continuar analitzant?"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr "%i Indefinit"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr "Desfer la càrrega de l'estat"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr "Trucada inesperada a 0x80? Cancel·lant..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr "Desconegut"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr "Comanda de DVD desconeguda %08x - error crític"
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr ""
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
msgstr "Tipus desconegut d'entrada %i a SYSCONF (%s@%x)!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr "Missatge desconegut rebut amb id: %d"
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr ""
"Missatge desconegut amb id: %d rebut des del jugador: Expulsant jugador %d!"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr "Amunt"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr "Actualitzar"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr "Wiimote vertical"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr "Utilitzar mode EuRGB60 (PAL60)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr "Utilitzar pantalla completa"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr "Utilitzar hexadecimal"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr "Utilitzar advertències"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -5432,7 +5538,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -5447,53 +5553,58 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr "Utilitat"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr "Sincronització Vertical"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+#, fuzzy
+msgid "VBeam Speed Hack"
+msgstr "Modificació de velocitat MMU"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr "Valor"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr "Valor:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr "Valor:"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr "Verbositat"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr "Vídeo"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr "Virtual"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr "Volum"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
msgstr "instal·lació del WAD ha fallat: Error en crear %s"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
msgstr "Instal·lació del WAD ha fallat: Error en crear tiquet"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5505,25 +5616,25 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr "Advertència"
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
msgstr "Advertència - Inicialitzant DOL en mode de consola incorrecte!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
msgstr "Advertència - Inicialitzant ELF en mode de consola incorrecte!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
msgstr "Advertència - Inicialitzant ISO en mode de consola incorrecte!"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5535,7 +5646,7 @@ msgstr ""
"%s \n"
"Vols continuar?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5549,7 +5660,7 @@ msgstr ""
"i que tenen el mateix nom que un arxiu a la targeta de memòria\n"
"Voleu continuar?"
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
@@ -5561,7 +5672,7 @@ msgstr ""
"altre guardat abans de continuar, o carregar aquest amb el mode de només "
"lectura desactivat."
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
@@ -5573,7 +5684,7 @@ msgstr ""
"aquest amb el mode de només lectura desactivat. Si no probablement tindràs "
"una desincronització."
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5606,49 +5717,49 @@ msgstr ""
"Start=%d, A=%d, B=%d, X=%d, Y=%d, Z=%d, DUp=%d, DDown=%d, DLeft=%d, DRight="
"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr "WaveFileWriter - Fitxer no obert."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr "Whammy"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
msgstr "Modificació de pantalla panoràmica"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr "Ample"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr "Wii"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
msgstr "Consola Wii"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr "Arrel de la NAND:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
msgstr "Importar partida guardada Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
msgstr "Arxius de partida guardada Wii (*.bin)|*.bin"
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr "WiiWAD: No s'ha pogut llegir des de l'arxiu"
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr "Wiimote"
@@ -5657,7 +5768,7 @@ msgstr "Wiimote"
msgid "Wiimote %i"
msgstr "Wiimote %i"
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr "Wiimote connectat"
@@ -5665,7 +5776,7 @@ msgstr "Wiimote connectat"
msgid "Wiimote Motor"
msgstr "Motor de Wiimote"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
msgstr "Configuració de Wiimote"
@@ -5673,101 +5784,117 @@ msgstr "Configuració de Wiimote"
msgid "Wiimotes"
msgstr "Wiimotes"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr "Finestra esquerra"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
msgstr "Finestra menú"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr "Finestra dreta"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr "Envoltant de paraula"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr "Treballant..."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr "Escriu a consola"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
msgstr "Escriu al depurador"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
msgstr "Escriu en un Fitxer"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
msgstr "Escriu a una Finestra"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr "XAudio2 CreateSourceVoice ha fallat:%#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
msgstr "XAudio2 init ha fallat:%#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr "La creació de la veu principal XAudio2 ha fallat:%#X"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr "Registre XF"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr "Groc"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
-"Estàs utilitzant roms dsp creades per l'equip Dolphin.\n"
-"Només els jocs Zelda ucode funcionaran correctament.\n"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr "No pots tancar panells que tenen pàgines."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr "Heu de triar un joc!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
msgstr "Heu d'introduir un nom!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
msgstr "Heu d'entrar un decimal, hexadecimal o octal vàlid."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr "Heu d'introduir un nom de perfil vàlid."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr "Ha de reiniciar Dolphin perquè el canvi tingui efecte."
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
@@ -5775,7 +5902,7 @@ msgstr ""
"El seu arxiu GCM/ISO sembla invàlid (país invàlid). \n"
"Continuar amb la regió PAL?"
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
@@ -5786,25 +5913,25 @@ msgstr ""
"Hauria de ser 0x%04x (però és 0x%04llx) \n"
"Vol generar un de nou?"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
msgstr "Modificador ZTP"
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr "Codi Zero 3 no està suportat"
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
msgstr "Codi Zero desconegut per Dolphin: %08x"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr "[ Esperant ]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5816,11 +5943,11 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr "[Personalitzat]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5839,7 +5966,7 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5854,99 +5981,47 @@ msgstr ""
"\n"
"Si no n'estàs segur, deixa-ho desmarcat."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr "^ Afegir"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr "apploader (.img)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr "Error al llegir la capçalera bk"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr "Error al llegir les dades del fitxer: %s"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr "Error al llegir la capçalera"
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr "iCacheJIT: Llegint Opcode des de%x Si us plau, informeu."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr ""
-"No és una partida guardada Wii o hi ha hagut un error de lectura de la mida "
-"de la capçalera del fitxer %x"
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr "s"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr "Comanda desconeguda 0x%08x"
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
msgstr "wxExecute Ha retornat -1 en l'execució de l'aplicació!"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr "Correcció zLluny:"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr "Correcció ZAprop"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr "| O"
-#~ msgid "%i connected"
-#~ msgstr "%i connectat"
-
-#~ msgid "Alternate Wiimote Timing"
-#~ msgstr "Sincronització alternativa del Wiimote"
-
-#~ msgid "Interpreter (VERY slow)"
-#~ msgstr "Intèrpret (molt lent)"
-
-#~ msgid "JIT Recompiler (recommended)"
-#~ msgstr "Recompilador JIT (recomanat)"
-
-#~ msgid "JITIL experimental recompiler"
-#~ msgstr "Recompilador JITIL experimental"
+#~ msgid "Accurate VBeam emulation"
+#~ msgstr "Emulació acurada de Vbeam"
#~ msgid ""
-#~ "Mutes the Wiimote speaker. Fixes random disconnections on real wiimotes. "
-#~ "No effect on emulated wiimotes."
+#~ "If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
#~ msgstr ""
-#~ "Silencia l'altaveu del «Wiimote». Arregla desconnexions aleatòries en "
-#~ "«wiimotes» reals. No afecta els «wiimotes» emulats."
+#~ "Si el FPS és irregular, aquesta opció pot ser útil. (Activat = "
+#~ "compatible, Desactivat = ràpid)"
-#~ msgid "Pair Up"
-#~ msgstr "Aparellar"
-
-#~ msgid "Reconnect Wiimote Confirm"
-#~ msgstr "Confirmar tornar a connectar el Wiimote"
-
-#~ msgid ""
-#~ "Wiimote %i has been disconnected by system.\n"
-#~ "Maybe this game doesn't support multi-wiimote,\n"
-#~ "or maybe it is due to idle time out or other reason.\n"
-#~ "Do you want to reconnect immediately?"
-#~ msgstr ""
-#~ "Wiimote %i ha estat desconnectat pel sistema. \n"
-#~ "Potser aquest joc no és compatible amb múltiples wiimote, \n"
-#~ "o potser és perquè l'estàs fent servir fora de temps o una altra raó. \n"
-#~ "Vols tornar a connectar-lo immediatament?"
+#~ msgid "Skip Dest. Alpha Pass"
+#~ msgstr "Salta pas Dest. Alpha"
diff --git a/Languages/po/cs.po b/Languages/po/cs.po
index dc9e4103b4..5a3668c624 100644
--- a/Languages/po/cs.po
+++ b/Languages/po/cs.po
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the dolphin-emu package.
#
# Translators:
-# Zbyněk Schwarz , 2011-2013.
+# Zbyněk Schwarz , 2011-2013
msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emulator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
-"PO-Revision-Date: 2013-02-03 17:07+0000\n"
+"POT-Creation-Date: 2013-04-18 23:00-0500\n"
+"PO-Revision-Date: 2013-04-11 08:08+0000\n"
"Last-Translator: Zbyněk Schwarz \n"
"Language-Team: Czech (http://www.transifex.com/projects/p/dolphin-emu/"
"language/cs/)\n"
@@ -19,21 +19,21 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
msgstr "(příliš mnoho pro zobrazení)"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr " Hra : "
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr "! NE"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
@@ -42,33 +42,43 @@ msgstr ""
"\"%s\" neexistuje.\n"
" Vytvořit novou 16MB Paměťovou kartu?"
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
msgstr "\"%s\" je neplatný soubor GCM/ISO, nebo není GC/Wii ISO."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
msgstr "%08X: "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
msgstr "%1$sKopírovat%1$s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr "%d vzorků"
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr "%d vzorků (úroveň kvality %d)"
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
msgstr "%s už existuje, přepsat?"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
msgstr "%s nelze vyčistit. Obraz je pravděpodobně poškozen."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -77,7 +87,7 @@ msgstr ""
"%s nelze načíst jako paměťovou kartu\n"
"Soubor karty je neplatný (0x%x bajtů)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -86,7 +96,7 @@ msgstr ""
"%s nelze načíst jako paměťovou kartu\n"
"Velikost karty je neplatná (0x%x bajtů)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -96,48 +106,37 @@ msgstr ""
"soubor není dostatečně velký, aby byl platným souborem paměťové karty (0x%x "
"bajtů)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr "%s nelze otevřít"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-"%s má nesprávný otisk.\n"
-"Chtěli byste hned teď zastavit a opravit problém?\n"
-"Pokud vyberete \"Ne\", zvuk bude zkomolený."
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
msgstr "%s má velikost 0 bajtů"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
msgstr "%s je už komprimován! Nelze dále komprimovat."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr "%s je jako jméno příliš dlouhé, max znaků je 45"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr "%sVymazat%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr "%sExportovat GCI%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr "%sImportovat GCI%s"
@@ -147,252 +146,275 @@ msgstr "%sImportovat GCI%s"
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr "%u Volných Bloků; %u Volných Záznamů Adr"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr "&& A"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr "O progr&amu..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr "&Zavést z DVD Mechaniky..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr "&Body přerušení"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr "&Procházet pro ISO..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
msgstr "Správce &Cheatů"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
msgstr "&DSP Nastavení"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr "&Smazat ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr "&Smazat vybraná ISO..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr "&Emulace"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr "&Soubor"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr "&Postup snímkem"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr "&Celá obrazovka"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
msgstr "&Grafická nastavení"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr "&Nápověda"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr "Nastavení &klávesových zkratek"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr "&JIT"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
msgstr "&Nahrát Stav"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
msgstr "Správce Pa&měťových karet (GC)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr "Pa&měť"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr "&Otevřít..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr "V&olby"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr "&Pauza"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr "&Přehrát"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr "&Vlastnosti"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
msgstr "&Režim pouze pro čtení"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
msgstr "&Obnovit Seznam"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr "&Registry"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr "&Resetovat"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
msgstr "&Zvuk"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr "Za&stavit"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
msgstr "Nás&troje"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr "&Video"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr "&Zobrazit"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
msgstr "&Wiimote Nastavení"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr "&Wiki"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr "'"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr "(-)+zFar"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr "(-)+zNear"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr "(NEZNÁMÝ)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr "(vypnuto)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr "0x44"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr "1.5x Původní (960x792)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr "16 bit"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr "1x Původní (640x528)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr "2.5x Původní (1600x1320)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr "2x Původní (1280x1056)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr "32 bit"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr "3D Vision"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr "3x Původní (1920x1584)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr "4x Původní (2560x2112)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr "8 bit"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
msgstr "<Žádné rozlišení nenalezeno>"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr "A"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
msgstr "Okno NetPlay je už otevřené!!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
msgstr "Hra v současnosti neběží!"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:68
-#, fuzzy
msgid ""
"A supported bluetooth device could not be found.\n"
"You must manually connect your wiimotes."
msgstr ""
"Podporované zařízení bluetooth nebylo nalezeno!\n"
-"Pokud nepoužíváte zásobník Microsoft bluetooth, musíte ručně spárovat vaše "
-"wiimoty a pouze používat tlačítko \"Obnovit\"."
+"Vaše wiimoty musíte připojit ručně."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
+#, fuzzy
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
"POZOR:\n"
"\n"
@@ -410,17 +432,17 @@ msgstr ""
"\n"
"Musíte přesměrovat Váš TCP port na hostitele!!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr "AM Základní Deska"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr "Kódy AR"
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr "O Dolphinu"
@@ -428,15 +450,11 @@ msgstr "O Dolphinu"
msgid "Acceleration"
msgstr "Zrychlení"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr "Přesnost:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr "Precizní emulace VBeam"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -449,12 +467,12 @@ msgstr ""
"\n"
"Pokud si nejste jisti, zaškrtněte radějí EFB do Textury."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr "Činnost"
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -469,7 +487,7 @@ msgstr ""
"Viníkem je Kód:\n"
"%s"
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
@@ -477,7 +495,7 @@ msgstr ""
"Chyba Action Replay: Neplatná velikost (%08x : adresa = %08x) v Kódu Přidat "
"(%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
@@ -486,7 +504,7 @@ msgstr ""
"Chyba Action Replay: Neplatná velikost (%08x : adresa = %08x) v Naplnit a "
"Sesunout (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
@@ -495,7 +513,7 @@ msgstr ""
"Chyba Action Replay: Neplatná velikost (%08x : adresa = %08x) v Ram Zápisu A "
"Naplnění (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
@@ -504,12 +522,12 @@ msgstr ""
"Chyba Action Replay: Neplatná velikost (%08x : adresa = %08x) v Zápisu Do "
"Ukazatele (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr "Chyba Action Replay: Neplatná hodnota (%08x) v Kopii Paměti (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
@@ -518,63 +536,63 @@ msgstr ""
"Chyba Action Replay: Hlavní Kód a Zápis do CCXXXXXX nejsou zavedeny (%s)\n"
"Hlavní kódy nejsou potřeba, nepoužívejte je."
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr "Chyba Action Replay: neplatný řádek kódu AR: %s"
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr "Action Replay: Podmínkový kód: Neplatná Velikost %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr "Action Replay: Neplatný Normální Kód Typu %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr "Action Replay: Normální Kód %i: Neplatný podtyp %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr "Action Replay: Normální Kód 0: Neplatný Podtyp %08x (%s)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr "Adaptér:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr "Přidat"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
msgstr "Přidat kód ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr "Přidat Záplatu"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr "Přidat nový panel"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr "Přidat..."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
msgstr "Adresa :"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -592,7 +610,7 @@ msgstr ""
"\n"
"Poznámka: Zkontrolujte Konzoli/Okno protokolu pro získané hodnoty"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -610,48 +628,48 @@ msgstr ""
"\n"
"Poznámka: Zkontrolujte Konzoli/Okno protokolu pro získané hodnoty\""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr "Upravte tlak analogového ovládání potřebný k aktivaci tlačítek."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr "Pokročilé"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr "Pokročilá Nastavení"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
msgstr "Všechny soubory GC/Wii (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
msgstr "Všechny obrazy GC/Wii (gcm, iso, wbfs, ciso, gcz)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
msgstr "Všechny soubory Gamecube GCM )gcm)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr "Všechny Uložené Stavy (sav, s##)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr "Všechny soubory Wii ISO (iso)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr "Všechny komprimované soubory GC/WII ISO (gcz)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr "Všechny soubory (*.*)|*.*"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
@@ -663,39 +681,39 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr "Analyzovat"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
msgstr "Úhel"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
msgstr "Anizotropní Filtrování:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
msgstr "Vyhlazení okrajů"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr "Zavaděč aplikace má špatnou velikost... je to vážně zavaděč?"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr "Zavaděč aplikace nemohl načíst soubor"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr "Zavaděč aplikace:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr "Použít"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
@@ -705,11 +723,11 @@ msgstr ""
"\n"
" Pokud si nejste jisti, zvolte (vypnuto)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr "Arabština"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
msgstr "Jste si jisti, že chcete smazat \"%s\"?"
@@ -726,46 +744,50 @@ msgstr ""
msgid "Are you sure you want to delete this file? It will be gone forever!"
msgstr "Opravdu chcete smazat tento soubor? Bude navždy ztracen!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr "Arm JIT (experimentální)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr "Poměr Stran:"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr "Alespoň jeden panel musí být otevřen."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr "Audio"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr "Podpůrná vrstva zvuku:"
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr "AudioCommon: Chyba při otevírání zařízení zvukového výstupu.\n"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr "Auto"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
msgstr "Auto (Násobek 640x528)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
msgstr "Auto (Velikost Okna)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr "Automaticky upravovat Velikost Okna"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
@@ -775,130 +797,130 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr "B"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
msgstr "Registr BP"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr "Zpět"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
msgstr "Nastavení podpůrné vrstvy"
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr "Podpůrná vrstva:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr "Zadní Vstup"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr "Dozadu"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr "Špatná hlavička souboru"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr "Plakát"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
msgstr "Detaily Plakátu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr "Plakát:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr "Vibráto"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr "Základní"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr "Základní nastavení"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr "Basy"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr "Kontrolní součet Alokační Tabulky Bloku selhal"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr "Bloky"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr "Modrá"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr "Modrá vlevo"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr "Modrá vpravo"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr "Dole"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr "Spojené ovladače: %lu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
msgstr "Rozbité"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr "Procházet"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr "Procházet pro přidání adresáře"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr "Procházet pro adresář ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr "Procházet pro výstupní adresář"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr "Vyrovnávací paměť:"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr "Tlačítka"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
@@ -906,31 +928,31 @@ msgstr ""
"Potlačit čištění mezipaměti dat vyvolaných instrukcí DCBZ. Tato volba je "
"standardně vypnutá. "
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr "C"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr "Kr Stick"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr "Kr-Stick"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr "CP reg"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr "Jádro Emulátoru Procesoru"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr "Ukládat předvyt. obj. do vyr. pam."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -945,23 +967,38 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr "Nelze najít Wiimote podle bd: %02x:%02x:%02x:%02x:%02x:%02x"
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr "Nelze najít Wiimote pomocí obslužné rutiny spojení %02x"
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr "Nelze číst ze zásuvného modulu DVD - DVD-Rozhraní: Závažná chyba"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr "Zrušit"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr "Nelze otevřít %s"
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr "Nelze odhlásit události, když jsou očekávány"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
@@ -972,7 +1009,7 @@ msgstr ""
"%s\n"
"není platný soubor paměťové karty gamecube"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
@@ -980,30 +1017,15 @@ msgstr ""
"Nelze použít tento soubor jako paměťovou kartu.\n"
"Snažíte se použít stejný soubor v obou slotech?"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr "Nelze najít Wiimote podle bz: %02x:%02x:%02x:%02x:%02x:%02x"
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr "Nelze najít Wiimote pomocí obslužné rutiny spojení %02x"
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr "Nelze číst ze zásuvného modulu DVD - DVD-Rozhraní: Závažná chyba"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
msgstr "Caps Lock"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr "Katalánština"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr "Střed"
@@ -1011,12 +1033,12 @@ msgstr "Střed"
msgid "Change"
msgstr "Změnit"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr "Vyměnit &Disk..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr "Vyměnit Disk"
@@ -1024,7 +1046,7 @@ msgstr "Vyměnit Disk"
msgid "Change Game"
msgstr "Změnit hru"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
@@ -1032,75 +1054,75 @@ msgstr ""
"Změní jazyk uživatelského rozhraní.\n"
"Vyžaduje restart."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr "Změní znaménko na Parametr zFar (po korekci)"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr "Změní znaménko na Parametr zNear (po korekci)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr "Změna tohoto se neprojeví, pokud emulátor běží!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr "Chat"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr "Cheat Kód"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
msgstr "Hledání Cheatů"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
msgstr "Správce Cheatů"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr "Zkontrolovat celistvost oddílu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr "Kontrolování celistvosti..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
msgstr "Čínština (Zjednodušená)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr "Čínština (Tradiční)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr "Zvolte kořenový adresář DVD:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr "Zvolte kořenový adresář NAND:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr "Zvolte výchozí ISO:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr "Zvolte adresář k přidání"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
msgstr "Zvolte soubor k otevření"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr "Zvolte paměťovou kartu:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
@@ -1108,165 +1130,165 @@ msgstr ""
"Zvolte soubor, který má být použit jako zavaděč aplikace: (platí pouze pro "
"disky sestavené z adresářů)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
msgstr "Zvolte adresář pro umístění extrakce"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr "Kruhový Stick"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr "Klasické"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr "Vyčistit"
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
msgstr ""
"Klient odpojen při běhu hry!! NetPlay je vypnut. Hru musíte ukončit ručně."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr "Zavřít"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
msgstr "&Nastavit..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
msgstr "Informace o kódu"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
msgstr "Kód:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr "Příkaz"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr "Komentář"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr "Komentář:"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr "Komprimovat ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
msgstr "Komprimovat vybraná ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr "Komprimuji ISO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr "Nastavení"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr "Nastavit"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr "Nastavit Ovládání"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr "Nastavit Pady"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr "Nastavit..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr "Potvrdit Přepsání Souboru"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
msgstr "Při zastavení Potvrdit"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr "Připojit"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
msgstr "Připojit USB Klávesnici"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr "Připojit Wiimote %i"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr "Připojit Wiimote 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr "Připojit Wiimote 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr "Připojit Wiimote 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr "Připojit Wiimote 4"
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr "Připojuji..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr "Konzole"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:71
msgid "Continuous Scanning"
-msgstr ""
+msgstr "Průběžné skenování"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr "Ctrl"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr "Převést na GCI"
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr "Kopírování selhalo"
@@ -1275,21 +1297,21 @@ msgstr "Kopírování selhalo"
msgid "Copy to Memcard %c"
msgstr "Kopírovat na Paměťovou kartu %c"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr "Jádro"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr "Nelze vytvořit %s"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr "Nelze spustit podpůrnou vrstvu %s."
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
@@ -1300,12 +1322,12 @@ msgstr ""
"Wii. Nezapomeňte, že původní disky GameCube a Wii nepřečte většina PC DVD "
"mechanik."
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr "Nelze rozpoznat ISO soubor %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
msgstr "Nelze uložit %s"
@@ -1318,24 +1340,31 @@ msgstr ""
"Nelze nastavit pady. Hráč odešel, nebo hra v současnosti běží!.\n"
"(nastavení padů za běhu hry není ještě podporováno)"
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
+"protected?\n"
+"\n"
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
msgstr ""
"Nelze zapsat soubor paměťové karty %s.\n"
"\n"
"Spouštíte Dolphina z CD/DVD, nebo je snad soubor s uložením chráněný proti "
-"zápisu?"
+"zápisu?\n"
+"\n"
+"Objevila se tato chyba po přesunu adresáře s emulátorem?\n"
+"Pokud ano, pak je třeba znovu zadat umístění vaší paměťové karty v nastavení."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
msgstr "Nelze najít příkaz pro otevření přípony 'ini'!"
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
@@ -1343,38 +1372,38 @@ msgstr ""
"Nelze spustit jádro.\n"
"Zkontrolujte Vaše nastavení."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr "Počet:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr "Země:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr "Vytvořit AR kód"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr "Vytvořit novou perspektivu"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
msgstr "Tvůrce:"
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr "Kritické"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
msgstr "Oříznout"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
@@ -1384,140 +1413,140 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
msgstr "Crossfade"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
msgstr "Současný adresář se změnil z %s na %s po wxFileSelector!"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
msgid "Custom Projection Hack"
msgstr "Vlastní Hack Projekce"
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
msgid "Custom Projection Hack Settings"
msgstr "Nastavení Vlastního Hacku Projekce"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
msgstr "Přizpůsobte některé Ortografické parametry Projekce"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr "Čeština"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr "D"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr "D-Pad"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr "DSP"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr "Jádro Emulátoru DSP"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr "DSP HLE emulace (rychlé)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr "DSP LLE převaděč (pomalé)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr "DSP LLE ve Vlákně"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr "DSP LLE rekompilátor"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr "DSP na samostatném vlákně"
+
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP settings"
msgstr "Nastavení DSP"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr "Kořen DVD:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr "DVDLowRead - Fatální chyba: nelze číst ze svazku"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr "DVDLowUnencryptedRead - Fatální chyba: nelze přečíst svazek"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr "Velikost data"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr "Datum:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr "Soubory Datel MaxDrive/Pro(*.sav)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr "Mrtvá Zóna"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr "Ladění"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr "Ladění"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
msgstr "Desetinné"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr "Dekomprimovat ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr "Dekomprimovat vybraná ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr "Dekomprimuji ISO"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr "Výchozí"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr "Výchozí ISO:"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr "Výchozí typ písma"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
msgstr "Smazat"
@@ -1525,21 +1554,21 @@ msgstr "Smazat"
msgid "Delete Save"
msgstr "Smazat Uloženou Hru"
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr "Vymazat existující soubor '%s'?"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr "Popis"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr "Zjistit"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
@@ -1547,29 +1576,29 @@ msgstr ""
"Zjištěn pokus o přečtení více dat z DVD, než se vejde do výstupní paměti. "
"Zásek."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr "Zařízení"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr "Nastavení Zařízení"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr "Kruhová stupnice"
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr "Direct3D11"
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr "Direct3D9"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
@@ -1577,16 +1606,20 @@ msgstr ""
"Kontrolní součet adresáře\n"
"i záložní kontrolní součet Adresáře selhal"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr "Zakázat"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
msgid "Disable Fog"
msgstr "Zakázat Mlhu"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1600,7 +1633,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto zaškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1616,20 +1649,33 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#, fuzzy
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Přeskočit průchod cílové průhlednosti používaný ve většině her pro různé "
+"grafické efekty.\n"
+"\n"
+"Pokud si nejste jisti, nechejte toto odškrtnuté."
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr "Disk"
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr "Chyba čtení disku"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr "Obraz"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
@@ -1639,32 +1685,32 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
msgstr "Rozdělit"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr "Chcete současnou emulaci zastavit?"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
msgstr "Dekodér Dolby Pro Logic II"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr "Dolphin"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr "Dolphin %s Grafická Nastavení"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
msgstr "&Webová stránka Dolphin"
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
msgstr "Dolphin Nastavení"
@@ -1672,16 +1718,16 @@ msgstr "Dolphin Nastavení"
msgid "Dolphin Emulated Wiimote Configuration"
msgstr "Nastavení Emulovaného Dolphin Wiimote"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
msgstr "Dolphin FIFO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr "Dolphin GCPad Nastavení"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr "Doplhin Filmy TAS (*.dtm)"
@@ -1689,11 +1735,11 @@ msgstr "Doplhin Filmy TAS (*.dtm)"
msgid "Dolphin Wiimote Configuration"
msgstr "Dolphin Wiimote Nastavení"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr "Dolphin na &Google Code"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
@@ -1701,7 +1747,7 @@ msgstr ""
"Dolphin nemohl nalézt žádná GX/Wii ISO. Klikněte zde dvakrát k prohledání "
"souborů..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
@@ -1709,50 +1755,59 @@ msgstr ""
"Dolphin je v současnosti nastaven na skrytí všech her. Klikněte zde dvakrát "
"pro zobrazení všech her..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
msgstr "Dolhpin nemohl dokončit požadovanou činnost."
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#, fuzzy
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+"Zapnout rychlý přístup k disku. Některé hry to potřebují. (ZAPNUTO = rychlé, "
+"VYPNUTO = Kompatibilní)"
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
msgstr "Dolů"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
msgstr "Stáhnout kódy (Databáze WiiRD)"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr "Stáhnuto %lu kódů. (přídáno %lu)"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr "Bubny"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
msgstr "Atrapa"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr "Vypsat Zvuk"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr "Vypsat Cíl EFB"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr "Vypsat Snímky"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr "Vypsat Textury"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
@@ -1762,7 +1817,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
@@ -1772,7 +1827,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
@@ -1782,21 +1837,21 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr "Nizozemština"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr "O&dejít"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr "EFB Kopie"
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1808,52 +1863,52 @@ msgstr ""
"Pokud jste nedávno vaši instalaci Dolphin aktualizovali, je v tomto bodě "
"pravděpodobně třeba restartovat, aby Windows uviděl nový ovladač."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr "EVROPA"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
msgstr "Předčasné Aktualizace Paměti"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr "Upravit"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr "Upravit kód ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr "Upravit nastavení"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr "Upravit záplatu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr "Upravit současnou perspektivu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr "Upravit"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr "Efekt"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr "Vnořená Vyr. Pamět Snímků"
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr "Vlákno Emulace již běží"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1867,7 +1922,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, zaškrtněte místo tohoto virtuální emulaci XFB."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1887,7 +1942,7 @@ msgstr ""
msgid "Emulated Wiimote"
msgstr "Emulovaný Wiimote"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
msgstr "Stav Emulace:"
@@ -1895,7 +1950,7 @@ msgstr "Stav Emulace:"
msgid "Enable"
msgstr "Povolit"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1911,72 +1966,71 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr "Povolit protokolování AR"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr "Zapnout Slučování Bloků"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr "Povolit výpočet ohraničujícího rámečku"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr "Povolit vyrovnávací paměť"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr "Povolit Cheaty"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr "Povolit dvojité jádro"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr "Zapnout dvojité jádro (zrychlení)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
msgstr "Povolit klávesové zkratky"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr "Povolit Přeskakování Nečinných Příkazů"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
msgstr "Povolit Přeskakování Nečinných Příkazů (zrychlení)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr "Zapnout MMU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
msgstr "Povolit Progresivní Skenování"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
msgstr "Povolit Spořič Obrazovky"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:75
-#, fuzzy
msgid "Enable Speaker Data"
-msgstr "Zapnout stránky"
+msgstr "Povolit data reproduktorů"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr "Povolit Širokoúhlou obrazovku"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
msgstr "Povolit Drátěný Model"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -1990,7 +2044,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, zvolte 1x."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
@@ -2002,7 +2056,7 @@ msgstr ""
msgid "Enable pages"
msgstr "Zapnout stránky"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -2015,7 +2069,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -2027,7 +2081,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
@@ -2035,11 +2089,11 @@ msgstr ""
"Povolte toto pro zrychlení The Legend of Zelda: Twilight Princess. Zakažte "
"pro VŠECHNY ostatní hry."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr "Povolit Vlastní Hack Projekce"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
@@ -2047,14 +2101,14 @@ msgstr ""
"Povolí emulaci Dolby Pro Logic II používající prostorový zvuk 5.1. Není "
"dostupné v OSX."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr ""
"Povolí emulaci Dolby Pro Logic II používající prostorový zvuk 5.1. Pouze pro "
"podpůrnou vrstvu OpenAL."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
@@ -2063,7 +2117,7 @@ msgstr ""
"podpůrnou vrstvu OpenAL. Možná bude třeba přejmenovat soft_oal.dll na "
"OpenAL32.dll aby toto fungovalo."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
@@ -2075,7 +2129,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
@@ -2083,7 +2137,7 @@ msgstr ""
"Povolí Jednotku Správy Paměti, potřebnou v nějakých hrách. (ZAPNUTO = "
"Kompatibilní, VYPNUTO = Rychlé)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
@@ -2093,51 +2147,51 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr "End"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr "Angličtina"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
msgstr "Vylepšení"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr "Zadejte jméno nové perspektivy:"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr "Záznam %d/%d"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr "Záznam 1/%d"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr "Rovná se"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr "Chyba"
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr ""
"Chyba při nahrávání zvoleného jazyka. Vracím se na výchozí jazyk systému."
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
@@ -2146,7 +2200,7 @@ msgstr ""
"Chyba: Po \"%s\", nalezeno %d (0x%X) místo značky uložení %d (0x%X). "
"Ukončuji načtení uloženého stavu..."
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
@@ -2155,38 +2209,38 @@ msgstr ""
"Chyba: Pokus o přístup k písmům %s, ale ty nejsou načtena. Hry nemusí "
"zobrazit písma správně, nebo se můžou zhroutit"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr "Escape"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr "Euforie"
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr "Obslužná rutina výjimky - přístup pod paměťovým místem. %08llx%08llx"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr "Spustit"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr "Export Selhal"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr "Exportovat Soubor"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr "Exportovat Nahrávku"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr "Exportovat Nahrávku..."
@@ -2194,7 +2248,7 @@ msgstr "Exportovat Nahrávku..."
msgid "Export Save"
msgstr "Exportovat Uloženou hru"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr "Exportovat uloženou hru Wii (Experimentální)"
@@ -2202,100 +2256,100 @@ msgstr "Exportovat uloženou hru Wii (Experimentální)"
msgid "Export all saves"
msgstr "Exportovat všechny Uložené hry"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr "Exportování selhalo, zkusit znovu?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr "Exportovat Uloženou hru jako..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr "Rozšíření"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr "Vnější vyrovnávací paměť Snímků"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr "Extra Parametr"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
msgstr "Extra Parametr užitečný pouze v ''Metroid: Other M''"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr "Extrahovat Všechny Soubory..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr "Extrahovat Zavaděč Aplikace..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr "Extrahovat DOL..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr "Extrahovat Adresář..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr "Extrahovat Soubor..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr "Extrahovat Oddíl..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr "Extrahuji %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
msgstr "Extrahuji Všechny Soubory"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
msgstr "Extrahuji Adresář"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr "Extrahuji..."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr "FIFO Bajt"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr "Přehrávač FIFO"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr "FRANCIE"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr "Velikost FST:"
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr "Připojení Selhalo!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr "Naslouchání Selhalo!!"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
msgstr "Stahování kódů selhalo."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
msgstr "Nelze extrahovat do %s!"
@@ -2322,26 +2376,30 @@ msgstr ""
"Můžete použít jádro DSP HLE, které nevyžaduje výpisy ROM.\n"
"(Zvolte ho z karty \"Zvuk\" z dialogového okna nastavení.)"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr "Nelze nahrát bthprops.cpl"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr "Nelze nahrát hid.dll"
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
msgstr "Nelze přečíst %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr "Nelze číst z banner.bin"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr "Nelze přečíst hlavičku bk"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
@@ -2352,7 +2410,7 @@ msgstr ""
"Data v paměťové kartě můžou být zkrácena\n"
"Pozice souboru: %llx"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
@@ -2360,7 +2418,7 @@ msgstr ""
"Nelze správně číst zálohu alokační tabulky bloku\n"
"(0x8000-0x9FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
@@ -2368,12 +2426,17 @@ msgstr ""
"Nelze správně číst alokační tabulku bloku\n"
"(0x6000-0x7FFF)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr "Nelze číst data ze souboru %d"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr "Čtení dat ze souboru selhalo: %s"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
@@ -2381,7 +2444,7 @@ msgstr ""
"Nelze správně číst zálohu adresáře\n"
"(0x4000-0x5FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
@@ -2389,7 +2452,11 @@ msgstr ""
"Nelze správně číst adresář\n"
"(0x2000-0x3FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr "Nelze přečíst hlavičku"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
@@ -2397,41 +2464,41 @@ msgstr ""
"Nelze správně číst hlavičku\n"
"(0x0000-0x1FFF)"
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr "Nelze přečíst jedinečné ID z obrazu disku"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr "Selhal zápis BT.DINF do SYSCONF"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr "Zápis bkhdr selhal"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr "Zápis hlavičky selhal pro %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr "Selhal zápis hlavičky souboru %d"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
msgstr "Perština"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr "Rychlá"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr "Rychlá verze MMU. Nefunguje v každé hře."
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
@@ -2439,23 +2506,23 @@ msgstr ""
"závažná desynchronizace. Přehrávání ukončeno. (Chyba v PlayWiimote: %u != "
"%u, bajt %u.)%s"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr "Přehrávač Fifo"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
msgstr "Informace o souboru"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr "Soubor neobsahoval žádné kódy"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr "Soubor převeden na .gci"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
@@ -2463,7 +2530,7 @@ msgstr ""
"Soubor nelze otevřít\n"
"nebo nemá platnou příponu"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
@@ -2472,36 +2539,36 @@ msgstr ""
"Soubor má příponu \"%s\"\n"
"platné přípony jsou (.raw/.gcp)"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr "Soubor nerozpoznán jako paměťová karta"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr "Soubor není komprimovaný"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr "FileIO: Neznámý režim otevření : 0x%02x"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr "Souborový systém"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
msgstr "Typ souboru 'ini' je neznámý! Nelze otevřít!"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr "Najít další"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr "Najít předchozí"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr "První blok"
@@ -2509,23 +2576,23 @@ msgstr "První blok"
msgid "Fix Checksums"
msgstr "Spravit Kontrolní Součty"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr "Vynutit 16:9"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr "Vynutit 4:3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
msgstr "Donutit konzoli být jako NTSC-J"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
msgstr "Vynutit Filtrování Textur"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2537,7 +2604,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2549,7 +2616,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
@@ -2559,7 +2626,7 @@ msgstr ""
"Pokud není zaškrtnuto, Dolphin standardně přejde na NTSC-U a automaticky "
"zapne toto nastavení při hraní Japonských her."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
@@ -2567,148 +2634,147 @@ msgstr ""
"Formátovat jako ascii (NTSC\\PAL)?\n"
"Zvolte ne pro sjis (NTSC-J)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr "Dopředu"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr "Nalezeno %d výsledků pro '"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr "Snímek"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
msgstr "Snímek"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr "Postup Snímkem"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr "Uložení snímků použije FFV1"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr "Informace o snímku"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr "Rozsah Snímku"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr "Přes&kakování snímků:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr "Limit Snímků:"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr "Snímky k Nahrání"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr "Rozhlížení pomocí myši"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr "Francouzština"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr "Pražce"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr "Z"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr "CelObr"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr "Rozlišení celé obrazovky:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr "Soubor GCI(*.gci)"
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr "Nastavení GCMic"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr "GCPad"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr "GX_CMD_INVL_VC"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
msgstr "ID Hry:"
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr "Hra už běží!"
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr "Hra neběží!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
-#, fuzzy
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
-msgstr "Hra nenalezena!!"
+msgstr "Hra nenalezena!"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr "Nastavení Konkrétní Hry"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr "Nastavení Hry"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr "Soubory uložených her GameCube (*.gci;*.gcs;*.sav)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr "Gamecube"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr "Nastavení Gamecube &Pad"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
msgstr "Paměťové karty Gamecube (*.raw,*.gcp)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr "Gamecube Pad nastavení"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
msgstr "Kódy Gecko"
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2719,10 +2785,10 @@ msgstr ""
"Nelze spustit GeckoKód (CT%i CST%i) (%s)\n"
"(buď špatný kód, nebo typ kódu není ještě podporován. Zkuste použít )"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr "Obecné"
@@ -2730,30 +2796,30 @@ msgstr "Obecné"
msgid "General Settings"
msgstr "Obecná Nastavení"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr "Němčina"
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr "GetARCode: Index je větší než velikost seznamu ar kódu %lu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr "Grafika"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
msgstr "Grafická nastavení"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr "Větší než"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2770,51 +2836,77 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto zaškrtnuté."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr "Řečtina"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr "Zelená"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr "Zelená vlevo"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr "Zelená vpravo"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr "Kytara"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr "Byl zavolán HCI_CMD_INQUIRY, prosím ohlaste!"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr "Změněné nahrávání vyrovnávací paměti"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr "Hacky"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr "Kontrolní součet hlavičky selhal"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr "Hebrejština"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr "Výška"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr "Nápověda"
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+"Ahoj,\n"
+"\n"
+"Dolphin vyžaduje, OS X 10.7 nebo lepší.\n"
+"Bohužel máte příliš starou verzi OS X.\n"
+"Poslední verze Dolphin podporující OS X 10.6 je Dolphin 3.5\n"
+"Prosím aktualizujte na 10.7 nebo lepší, abyste mohli použít nejnovější verzi "
+"Dolphin.\n"
+"\n"
+"\n"
+"Sajonara!\n"
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2830,15 +2922,15 @@ msgstr ""
"\n"
"Sajonara!\n"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr "Skrýt"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
msgstr "Skrýt kurzor myši"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
@@ -2848,26 +2940,26 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto zaškrtnuté."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
msgstr "Home"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr "Hostovat"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
msgstr "Nastavení klávesových zkratek"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
msgstr "Klávesové zkratky"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr "Maďarština"
@@ -2875,33 +2967,33 @@ msgstr "Maďarština"
msgid "Hybrid Wiimote"
msgstr "Hybridní Wiimote"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr "IOCTL_ES_GETVIEWS: Pokus o získání dat z neznámého lístku: %08x/%08x"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-"IOCTL_ES_LAUNCH: Hra se pokusila znovu načíst ios nebo název, který není "
-"dostupný ve Vašem nand výpisu\n"
+"IOCTL_ES_LAUNCH: Hra se pokusila znovu načíst IOS nebo název, který není "
+"dostupný ve vašem NAND výpisu\n"
"IDNázvu %016llx.\n"
-"Dolphin se teď pravděpodobně zasekne"
+"Dolphin se teď pravděpodobně zasekne."
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
msgstr "IOCTL_ES_READCONTENT - špatný cíl"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
msgstr "Nastavení IPL"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr "Infrč."
@@ -2913,23 +3005,23 @@ msgstr "Infračer. Ukazovátko"
msgid "IR Sensitivity:"
msgstr "Citlivost Infračer.:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
msgstr "Detaily ISO"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
msgstr "Adresáře ISO"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr "ITÁLIE"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr "Ikona"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
@@ -2937,28 +3029,11 @@ msgstr ""
"Pokud je zaškrtnuto, registry ohraničujícího rámečku budou aktualizovány. "
"Používáno v hrách Paper Mario."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-"Pokud jsou SzS nestálé, tato volba může pomoci. (ZAPNUTO = Kompatibilní, "
-"VYPNUTO = Rychlé)"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-"Pokud nastavíte limit snímků větší než plná rychlost hry (NTSC:60, PAL:50), "
-"měli byste také vypnout Přiškrcení Zvuku v DSP (v závislosti na hře může "
-"spravit klikání zvuku, ale také může způsobit neustálý hluk)."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr "Ignorovat Změny Formátu"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -2972,7 +3047,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto zaškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -2990,11 +3065,11 @@ msgstr ""
msgid "Import Save"
msgstr "Importovat Uloženou hru"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr "Import selhal, zkusit znovu?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
@@ -3002,11 +3077,11 @@ msgstr ""
"Importovaný soubor má příponu gsc\n"
"ale nemá správnou hlavičku"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr "Importovaný soubor má neplatnou délku"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
@@ -3014,19 +3089,7 @@ msgstr ""
"\"Importovaný soubor má příponu sav\n"
"ale nemá správnou hlavičku\""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"Zlepší výkon, ale způsobuje chyby ve většině her, které závisejí na správné "
-"emulaci mlhy.\n"
-"\n"
-"Pokud si nejste jisti, nechejte toto odškrtnuté."
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
msgstr "Ve Hře"
@@ -3034,67 +3097,67 @@ msgstr "Ve Hře"
msgid "In-Game"
msgstr "Ve Hře"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr "Info"
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
msgstr "Informace"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr "Vstup"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr "Vložit"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr "Zde vložte Zašifrovaný nebo Rozšifrovaný kód..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
msgstr "Vložit SD Kartu"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr "Zde vložte jméno..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
msgstr "Instalovat WAD"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr "Instalovat do Wii Menu"
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
"Byl zavolán InstallExceptionHandler, ale tato platforma toto ještě "
"nepodporuje."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
msgstr "Instaluji WAD..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr "Chyba v kontrole celistvosti"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr "Kontrola celistvosti dokončena"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr "Kontrola celistvosti dokončena. Nebyly nalezeny žádné chyby."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
@@ -3103,19 +3166,19 @@ msgstr ""
"Kontrola celistvosti oddílu %d selhala. Váš výpis ISO je pravěpodobně "
"poškozen nebo byl nesprávně opraven."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
msgstr "Rozhraní"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
msgstr "Nastavení Rozhraní"
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr "Vnitřní chyba LZO - komprimace selhala"
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
@@ -3124,41 +3187,45 @@ msgstr ""
"Vnitřní chyba LZO - dekomprimace selhala (%d) (%ld, %ld) \n"
"Zkuste znovu nahrát stav"
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr "Vnitřní chyba LZO - lzo_init() selhalo"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr "Vnitřní Rozlišení:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr "Převaděč (VELMI pomalé)"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr "Intro"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr "Neplatná Velikost(%x) nebo Kouzelné slovo (%x)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
msgstr "Neplatná Hodnota!"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr "Neplatný bat.map nebo záznam adr."
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr "Neplatná událost typu %i"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr "Neplatný soubor"
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -3169,46 +3236,54 @@ msgstr ""
"%s\n"
"Možná budete muset hru znovu vypsat."
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr "Neplatný soubor s nahrávkou"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr "Neplatné parametry hledání (není vybrán žádný objekt)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr "Neplatný řetězec hledání (nelze převést na číslo)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr "Neplatný řetězec hledání (jsou podporovány pouze sudé délky řetězce)"
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr "Neplatný stav"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr "Italština"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr "JAPONSKO"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr "JIT Rekompilátor (doporučeno)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr "JITIL experimentální rekompilátor"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr "Japonština"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr "KOREA"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
@@ -3218,62 +3293,62 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
msgstr "Okno vždy navrchu"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr "Klávesa"
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr "Korejština"
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr "L"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
msgstr "Tlačítko L"
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr "Levý Analog"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr "Jazyk:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr "Poslední Přepsaný Stav"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr "Poslední Uložený Stav"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
msgstr "Zpoždění:"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr "Vlevo"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr "Levý Stick"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
@@ -3281,7 +3356,7 @@ msgstr ""
"Levé kliknutí pro detekci zkratky.\n"
"Zadejte mezerník pro vyčištění."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
@@ -3291,7 +3366,7 @@ msgstr ""
"Prostřední kliknutí pro vyčištění.\n"
"Pravé kliknutí pro více možností."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
@@ -3299,76 +3374,76 @@ msgstr ""
"Levé/Pravé kliknutí pro více možností.\n"
"Prostřední pro vymazání."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr "Menší než"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr "Limitovat podle SzS"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr "Nahrát"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr "Nahrát Vlastní Textury"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr "Nahrát Slot Stavu 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr "Nahrát Slot Stavu 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr "Nahrát Slot Stavu 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr "Nahrát Slot Stavu 4"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr "Nahrát Slot Stavu 5"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr "Nahrát Slot Stavu 6"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr "Nahrát Slot Stavu 7"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr "Nahrát Slot Stavu 8"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr "Nahrát Stav..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
msgstr "Nahrát Systémové Menu Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
msgstr "Nahrát Systémové Menu Wii %d%c"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
@@ -3378,7 +3453,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr "Načíst přednastavené hodnoty z dostupných hackových vzorů."
@@ -3386,23 +3461,23 @@ msgstr "Načíst přednastavené hodnoty z dostupných hackových vzorů."
msgid "Local"
msgstr "Místní"
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr "Záznam"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr "Nastavení Záznamu"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr "Zaznamenat SzS do souboru"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr "Typy Záznamu"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3414,24 +3489,24 @@ msgstr ""
"\n"
".Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr "Výstup Zapisovače"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr "Protokolování"
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr "Připojení k serveru ztraceno!"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr "Tlačítko M"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
@@ -3440,51 +3515,65 @@ msgstr ""
"MD5 se neshoduje\n"
" %016llx%016llx != %016llx%016llx"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr "MMU Hack Rychlosti"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr "Soubory MadCatz Gameshark (*.gcs)"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr "Hlavní Stick"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
msgstr "ID Výrobce:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr "Výrobce:"
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Odstraněním mlhy budou vzdálenější objekty budou viditelnější.\n"
+"Zakázání může způsobit chyby v některých hrách, které závisejí na správné "
+"emulaci mlhy.\n"
+"\n"
+"Pokud si nejste jisti, nechejte toto odškrtnuté."
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr "Max"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
msgstr "Pam. karta už má uložení pro tento název"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr "Pam. karta již otevřena"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr "Bajt Paměti"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
msgstr "Paměťová karta"
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
@@ -3492,7 +3581,7 @@ msgstr ""
"Správce Paměťových karet Varování-Před použitím zálohujte, měl by být "
"spravený, ale mohl by věci poškodit!"
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3509,15 +3598,15 @@ msgstr ""
"%s\n"
"Chtěli byste starý soubor zkopírovat do nového umístění?\n"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr "Velikost paměťové karty se neshoduje s velikosti hlavičky"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr "Menu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr "Mikrofon"
@@ -3526,20 +3615,20 @@ msgstr "Mikrofon"
msgid "Min"
msgstr "Min"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr "Ostatní"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr "Ostatní Nastavení"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr "Modifikátor"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3551,20 +3640,20 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr "Písmo se stejnou roztečí"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr "Motion Plus"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr "Motor"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3582,226 +3671,237 @@ msgstr ""
"\n"
"\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
msgstr "Násobit"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
msgstr "NOP"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr ""
"POZNÁMKA: Velikost proudu se neshoduje se\n"
"skutečnou délkou dat\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
msgstr "NK Přidat"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr "NK Začít"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
msgstr "NK Des. čárka"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
msgstr "NK Delete"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
msgid "NP Divide"
msgstr "NK Dělení"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
msgstr "NK Dolů"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
msgstr "NK End"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
msgstr "NK Enter"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
msgstr "NK Rovná se"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr "NK Home"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
msgstr "NK Insert"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
msgid "NP Left"
msgstr "NK Vlevo"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
msgid "NP Multiply"
msgstr "NK Násobení"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
msgid "NP Page Down"
msgstr "NK Page Down"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
msgid "NP Page Up"
msgstr "Nk Page Up"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
msgid "NP Right"
msgstr "NK Vpravo"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
msgid "NP Separator"
msgstr "NP Oddělovač"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
msgstr "NK Mezerník"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
msgid "NP Subtract"
msgstr "NK Mínus"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
msgid "NP Tab"
msgstr "NK Tab"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
msgid "NP Up"
msgstr "NK Nahoru"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr "Jméno:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr "Jméno: "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr "Původní soubory CGI(*.gci)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
msgstr "Nové Skenování"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr "Další Stránka"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
msgstr "Další Skenování"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr "Přezdívka :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr "Žádná Země (SDK)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr "Nenalezena žádná ISO nebo WADS"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
+msgstr "Žádný zvukový výstup"
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
msgid "No banner file found for title %s"
msgstr "Nebyl nalezen žádný plakát s názvem %s"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
msgid "No description available"
msgstr "Žádný popis není dostupný"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
msgid "No docking"
msgstr "Žádné připínání"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
msgid "No file loaded"
msgstr "Není načten žádný soubor"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
msgid "No free dir index entries"
msgstr "Žádné volné záznamy indexu adresáře"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
msgid "No recorded file"
msgstr "Žádný soubor s nahrávkou"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
#, c-format
msgid "No save folder found for title %s"
msgstr "Nebyl nalezen žádný ukládací adresář pro název %s"
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr "Žádný"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr "Norský Bokmål"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr "Nerovná se"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr "Nenastaven"
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr "není uložená hra Wii nebo nelze číst z hlavičky souboru o velikosti %x"
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr "Nepřipojen"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr "Poznámky"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr "Poznámky:"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr "Upozornění"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr "Num Lock"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
msgstr "Počet Kódů:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr "Nunčak"
@@ -3810,111 +3910,112 @@ msgstr "Nunčak"
msgid "Nunchuk Acceleration"
msgstr "Zrychlení Nunčaku"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr "Objekt"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr "Rozsah Objektu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr "Vypnuto"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr "Logická Adresa:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr "Zobrazovat zprávy na obrazovce"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr "Pouze bloky %d jsou dostupné"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr "Otevřít"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr "Otevřít &adresář umístění"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr "Otevřít Wii adre&sář uložení"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr "Otevřít soubor..."
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr "OpenAL: nelze vytvořit kontext pro zařízení %s"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr "OpenAL: nelze nalézt zvuková zařízení"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr "OpenAL: nelze otevřít zařízení %s"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
msgstr "OpenCL Dekodér Textury"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr "OpenMP Dekodér Textury"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
msgstr "Volby"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr "Oranžová"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
+#, fuzzy
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
"Pořadí souborů v Adresáři Souborů se neshoduje s pořadím bloku\n"
"Klikněte pravým tlačítkem a exportujte všechna uložení,\n"
"a importujte je do nové paměťové karty\n"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr "Jiné"
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
msgstr ""
"Jiný klient odpojen při běhu hry!! NetPlay je vypnut. Hru ukončete ručně."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr "Výstup"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr "S&pustit nahrávku..."
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr "Pad"
@@ -3922,160 +4023,160 @@ msgstr "Pad"
msgid "Pad "
msgstr "Pad "
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr "Pady"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
msgstr "Page Down"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
msgstr "Page Up"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr "Odstavec"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr "Parametry"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr "Oddíl %i"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
msgstr "Záplaty"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr "Cesty"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr "Pozastavit"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr "Pozastavit na konci filmu"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr "Osvětlení Podle Pixelu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr "Dokonalá"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr "Perspektiva %d"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr "Spustit"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr "Přehrát nahrávku"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr "Přehrát/Pozastavit"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr "Hratelné"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr "Možnosti Přehrávání"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr "Hráči"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr "Prosím potvrďte..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr "Před uložením si prosím vytvořte perspektivu"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr "Plus-Mínus"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr "Polština"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
msgstr "Port 1"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
msgstr "Port 2"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
msgstr "Port 3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
msgstr "Port 4"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr "Port :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr "Portugalština"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr "Portugalština (Brazilská)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr "Efekt Následného Zpracování:"
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr "Předčasný konec filmu v PlayController. %u + 8 > %u"
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr "Předčasný konec filmu v PlayWiimote. %u + %d > %u"
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr "Předčasný konec filmu v PlayWiimote. %u > %u"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr "Předvolby:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr "Před. stránka"
@@ -4083,67 +4184,67 @@ msgstr "Před. stránka"
msgid "Previous Page"
msgstr "Předchozí Stránka"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr "Předchozí Hodnota"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr "Vytisknout"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr "Profil"
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr "Vlastnosti"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
msgstr "Zahodit Vyrovnávací Paměť"
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr "Otázka"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr "Ukončit"
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr "R"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
msgstr "Tlačítko R"
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr "Pravý Analog"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr "RAM"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr "RUSKO"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr "Rozsah"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr "Režim pouze pro čtení"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr "Opravdová"
@@ -4159,33 +4260,33 @@ msgstr "Opravdové Wiimoty"
msgid "Reconnect Wiimote on State Loading"
msgstr "Znovu připojit Wiimote při Nahrání Stavu"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr "Nahrávat"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr "Informace o Nahrávání"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr "Možnosti Nahrávání"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr "Červená"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr "Červená vlevo"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr "Červená vpravo"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -4200,28 +4301,28 @@ msgstr ""
"Pokud si nejste jisti, vyberte Žádný."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr "Obnovit"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr "Obnovit Seznam"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr "Obnovit seznam her"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr "Odstranit"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
@@ -4231,196 +4332,204 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr "Vykreslit do Hlavního okna"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr "Resetovat"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr "Výsledky"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
msgstr "Enter"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr "Vpravo"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr "Pravý Stick"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr "Vibrace"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
-msgstr "Spustit DSP LLE na samostatném vlákně (nedoporučeno)"
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
+msgstr ""
+"Spustit DSP HLE a LLE na samostatném vlákně (nedoporučeno: může způsobit "
+"problémy se zvukem u HLE a zasekávání u LLE)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr "Ruština"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr "Uložit Sta&v"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr "Bezpečná"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr "Uložit"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
msgstr "Uložit GCI jako..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
msgstr "Uložit do Slotu Stavu 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
msgstr "Uložit do Slotu Stavu 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
msgstr "Uložit do Slotu Stavu 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
msgstr "Uložit do Slotu Stavu 4"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
msgstr "Uložit do Slotu Stavu 5"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
msgstr "Uložit do Slotu Stavu 6"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
msgstr "Uložit do Slotu Stavu 7"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
msgstr "Uložit do Slotu Stavu 8"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
msgstr "Uložit Stav..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr "Uložit jako"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr "Uložit komprimované GCM/ISO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr "Uložit současnou perspektivu"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr "Uložit dekomprimované GCM/ISO"
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr "Uložený stav filmu %s je poškozen, nahrávání filmu je zastaveno..."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr "EFB Kopie Změněné Velikosti"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr "Skenuji %s"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
msgstr "Skenuji pro ISO"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr "Skenuji..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr "SnímkObrz"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
msgstr "Scroll Lock"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr "Hledat"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr "Hledat Filtr"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr "Hledat Podadresáře"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr "Hledat v současném objektu"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr "Hledat hexadecimální hodnotu:"
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr "Sekce %s nebyla v SYSCONF nalezena"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr "Vybrat"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr "Vyberte Soubor s Nahrávkou"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr "Vyberte soubor Wii WAD k instalování"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
@@ -4430,31 +4539,31 @@ msgstr ""
"\n"
"Pokud si nejste jisti, použijte ten první."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr "Vyberte soubor s uloženou pozicí pro import"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr "Vybrat plovoucí okna"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr "Vyberte soubor k nahrání"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr "Vyberte soubor s uloženou hrou"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr "Vyberte stav k nahrání"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr "Vyberte stav k uložení"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4470,15 +4579,15 @@ msgstr ""
"Vynutit 4:3: Roztáhne obraz na poměr4:3.\n"
"Roztáhnout do okna: Roztáhne obraz do velikosti okna."
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
msgstr "Vybraný profil ovladače neexistuje"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr "Vybraný typ písma"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4495,23 +4604,39 @@ msgstr ""
"Pokud si stále nejste jisti, použijte takové nejvyšší rozlišení, které Vám "
"funguje."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
-"Zvolí jaké bude vnitřně grafické API použito.\n"
-"Direct3D 9 je většinou nejrychlejší. OpenGL je ale nejpřesnější. Direct3D 11 "
-"je někde mezi nimi.\n"
+"Zvolí jaké grafické API bude vnitřně použito.\n"
+"Direct3D 9 je většinou nejrychlejší. OpenGL je ale přesnější. Direct3D 11 je "
+"někde mezi nimi.\n"
"Nezapomeňte, že podpůrné vrstvy Direct3D jsou dostupné pouze ve Windows.\n"
"\n"
-"Pokud si nejste jisti, použijte Direct3D 9"
+"Pokud si nejste jisti, použijte Direct3D 11."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+"Zvolí jaké grafické API bude vnitřně použito.\n"
+"Direct3D 9 je většinou nejrychlejší. OpenGL je ale přesnější. Direct3D 11 je "
+"někde mezi nimi.\n"
+"Nezapomeňte, že podpůrné vrstvy Direct3D jsou dostupné pouze ve Windows.\n"
+"\n"
+"Pokud si nejste jisti, použijte OpenGL."
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr "Poslat"
@@ -4519,26 +4644,26 @@ msgstr "Poslat"
msgid "Sensor Bar Position:"
msgstr "Umístění Senzorové Tyče:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr "Oddělovač"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr "Srbština"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr ""
"Sériový port 1 - Tito je port, který používají zařízení jako internetový "
"adaptér"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr "Nastavit"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr "Nastavit jako &výchozí ISO"
@@ -4547,12 +4672,12 @@ msgstr "Nastavit jako &výchozí ISO"
msgid "Set as default Memcard %c"
msgstr "Nastavit jako výchozí paměťovou kartu %c"
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr "SetARCode_IsActive: Index je větší než velikost seznamu ar kódu %lu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
@@ -4560,123 +4685,123 @@ msgstr ""
"Nastavá zpoždění (v ms). Vyšší hodnoty mohou snížit praskání zvuku. Pouze "
"pro podpůrnou vrstvu OpenAL."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr "Nastavení..."
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr "SetupWiiMem: Nelze najít soubor s nastavením"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr "Třes"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr "Krátké Jméno:"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr "Zadní Tlačítka"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr "Zobrazit &Konzoli"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr "Zobrazit Záznam"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr "Zobrazit &Stavový řádek"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr "Zobrazit Panel Nás&trojů"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr "Zobrazit Disky"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr "Zobrazit EFB Regiony Kopie"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr "Zobrazit Snímky za Sekundu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr "Zobrazit Francii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr "Zobrazit GameCube"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr "Zobrazit Obrazovku Vstupu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr "Zobrazit Itálii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr "Zobrazit JAP"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr "Zobrazit Koreu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
msgstr "Jazyk Zobrazení:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr "Zobrazit Nastavení &Záznamu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr "Zobrazit PAL"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr "Zobrazit Platformy"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr "Zobrazit Regiony"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
msgstr "Zobrazit Statistiky"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr "Zobrazit Tchaj-wan"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr "Zobrazit USA"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr "Zobrazit Wad"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr "Zobrazit Wii"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
msgstr "Zobrazí rámeček s potvrzením před zastavením hry."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4690,11 +4815,11 @@ msgstr ""
msgid "Show first block"
msgstr "Zobrazit první blok"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr "Zobrazit počítadlo zpoždění"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4720,7 +4845,7 @@ msgstr "Zobrazit ikonu uložení"
msgid "Show save title"
msgstr "Zobrazit název uložení"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4732,11 +4857,11 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr "Zobrazit neznámé"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
@@ -4746,47 +4871,31 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr "Šikmý Wiimote"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
msgstr "Zjednodušená čínština"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr "Velikost"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
msgstr "Přeskočit BIOS"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
msgstr "Přeskočit čištění DCBZ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr "Vypnout Průchod Cíl. Průhl."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr "Přeskočit EFB Přístup z Procesoru"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"Přeskočit průchod cílové průhlednosti používaný ve většině her pro různé "
-"grafické efekty.\n"
-"\n"
-"Pokud si nejste jisti, nechejte toto odškrtnuté."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4802,25 +4911,25 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr "Slot %i"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
msgstr "Slot A"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
msgstr "Slot B"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr "Snímek"
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
msgstr "Softwarový Vykreslovač"
@@ -4837,27 +4946,27 @@ msgstr ""
"Opravdu chcete zapnout softwarové vykreslování? Pokud si nejste jisti, "
"zvolte 'Ne'."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
msgstr "Nastavení Zvuku"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr "Podpůrná vrstva zvuku %s je neplatná."
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr "Vytvoření vyrovnávací paměti zvuku selhalo: %s"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr "Mezerník"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr "Španělština"
@@ -4865,7 +4974,7 @@ msgstr "Španělština"
msgid "Speaker Volume:"
msgstr "Hlasitost Reproduktoru:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4885,63 +4994,63 @@ msgstr ""
"\n"
"Pokud si nejste jisti, zvolte 640x528."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr "Zvýšit rychlost přenosu Disku"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr "Čtvercový Stick"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr "Standardní Ovladač"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr "Start"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
msgstr "Spustit &NetPlay"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr "Začít na&hrávat"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr "Začít Nahrávat"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr "Stav"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr "Ukládání stavu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
msgstr "Volant"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr "Stick"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr "Zastavit"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -4955,107 +5064,119 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr "Roztáhnout do Okna"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr "Brnkat"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr "Odečíst"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr "Soubor úspěšně exportován do %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr "Uložení byly úspěšně importovány"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
msgstr "Švihnutí"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr "Synchronizovat vlákno GPU"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+"Synchronizuje vlákna GPU a CPU, aby se zabránilo náhodným zasekáváním v "
+"režimu dvojitého jádra. (ZAPNUTO = Kompatibilní, VYPNUTO = Rychlé)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr "Jazyk Systému:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr "TCHAJ-WAN"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr "TAS Vstup"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr "Tab"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr "Rozdělit okno"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr "Deska vlevo"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr "Deska vpravo"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr "Vytvořit Snímek Obrazovky"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr "TaruKonga (Bonga)"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr "Test"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr "Textura"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr "Vyrovnávací Paměť Textur"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr "Překryv Formátu Textury"
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr "WAD byl úspěšně nainstalován"
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr "Adresa je neplatná"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr "Kontrolní součet byl úspěšně opraven"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr "Zvolený adresář je už v seznamu"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
@@ -5064,7 +5185,7 @@ msgstr ""
"Soubor %s už existuje.\n"
"Chcete ho nahradit?"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
@@ -5073,29 +5194,29 @@ msgstr ""
"Soubor %s nemohl být otevřen pro zápis. Zkontrolujte, prosím, je-li už "
"otevřen jiným programem."
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr "Soubor %s je už otevřen, hlavička souboru nebude zapsána."
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr "Zadaný soubor (%s) neexistuje"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr "Jméno nemůže být prázdné"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr "Jméno nemůže obsahovat znak ','"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr "Výsledný rozšifrovaný kód AR neobsahuje žádné řádky."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -5107,11 +5228,11 @@ msgstr ""
"\n"
"Pokud si nejste jisti, použijte hodnotu zcela vpravo."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr "Uložená hra, kterou se snažíte zkopírovat má neplatnou délku souboru"
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
@@ -5119,36 +5240,36 @@ msgstr ""
"Zvolený jazyk není Vašim systémem podporován. Vracím se na výchozí jazyk "
"systému."
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr "Verze serveru a Netplay klienta jsou nekompatibilní!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr "Server je plný!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
msgstr "Server odpověděl: hra v současnosti běží!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
msgstr "Server zaslal neznámou chybovou zprávu!"
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr "Zadaný soubor \"%s\" neexistuje"
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
msgstr "Hodnota je neplatná"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
msgstr "Vzhled:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
@@ -5156,7 +5277,7 @@ msgstr ""
"Musí existovat lístek pro 00000001/00000002. Vaše NAND vypsání je "
"pravděpodobně neúplné"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
@@ -5164,7 +5285,7 @@ msgstr ""
"Tato nastavení potlačí hlavní nastavení Dolphinu.\n"
"Neurčený znamená, že hra použije nastavení Dolphin."
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
@@ -5172,11 +5293,11 @@ msgstr ""
"Tento simulátor action replay nepodporuje kód, který mění samotný Action "
"Replay."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr "Toto může způsobit zpomalení ve Wii Menu a v některých hrách."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -5196,7 +5317,19 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+#, fuzzy
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+"Pokud nastavíte limit snímků větší než plná rychlost hry (NTSC:60, PAL:50), "
+"měli byste také vypnout Přiškrcení Zvuku v DSP (v závislosti na hře může "
+"spravit klikání zvuku, ale také může způsobit neustálý hluk)."
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -5207,61 +5340,61 @@ msgstr ""
"Způsobí výrazné zvýšení rychlosti na PC s více než jedním jádrem, ale také "
"může způsobovat občasné chyby/pády."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr "Tohle Vám umožní Ručně Upravovat konfigurační soubory INI"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr "Práh"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr "Naklánění"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr "Název"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr "Do"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr "Zapnout Všechny Typy Záznamů"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
msgstr "Přepnout na Celou Obrazovku"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr "Nahoře"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
msgstr "Tradiční Čínština"
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr "Pokus o načtení souboru neznámého typu."
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr "Spínače"
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr "Pokus o čtení z neplatného SYSCONF"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
@@ -5269,15 +5402,15 @@ msgstr ""
"Pokus o čtení z neplatného SYSCONF\n"
"ID bt wiimote nejsou dostupné"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr "Turečtina"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr "Točna"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr "Typ"
@@ -5285,25 +5418,25 @@ msgstr "Typ"
msgid "UDP Port:"
msgstr "UDP Port:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
msgstr "UDP Wiimote"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr "NEZNÁMÝ"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
msgstr "NEZNÁMÉ_%02X"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr "USA"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
@@ -5311,7 +5444,7 @@ msgstr ""
"Ze zadaných hodnot nelze vytvořit záplatu.\n"
"Záznam není změněn."
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -5322,74 +5455,93 @@ msgstr ""
"rozšifrovaný kód. Ujistěte se, že jste ho správně zadali.\n"
"Chtěli byste tento řádek ignorovat a pokračovat v analýze?"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr "Nedefinován %i"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr "Vrátit zpět Nahrání Stavu"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr "Neočekávané volání 0x80? Ukončování..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr "Neznámé"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr "Neznámý příkaz DVD %08x - závažná chyba"
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr "Neznámý příkaz 0x%08x"
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
msgstr "Neznámý záznam typu %i v SYSCONF (%s@%x)!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr "Přijata neznámá zpráva s id : %d"
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr "Neznámá zpráva s id:%d přijata od hráče:%d Vyhazuji hráče!"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr "Nahoru"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr "Aktualizovat"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr "Svislý Wiimote"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr "Použít režim EuRGB60 (PAL60)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr "Použít Celou Obrazovku"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr "Použít Šestnáctkovou soustavu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr "Použít Obslužné Rutiny Paniky"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Použít pozměněnou strategii nahrávání pro proudový přenos vertexů.\n"
+"Většinou umožňuje zrychlení, ale specifikace OpenGL ji zakazuje a může "
+"způsobit vážné chyby.\n"
+"\n"
+"Pokud si nejste jisti, nechejte odškrtnuté."
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -5402,7 +5554,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -5416,53 +5568,58 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr "Pomůcky"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr "V-Synch"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+#, fuzzy
+msgid "VBeam Speed Hack"
+msgstr "MMU Hack Rychlosti"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr "Hodnota"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr "Hodnota:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr "Hodnota:"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr "Úroveň"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr "Obraz"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr "Virtuální"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr "Hlasitost"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
msgstr "Instalace WAD selhala: chyba při vytváření %s"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
msgstr "Instalace WAD selhala: chyba při vytváření lístku"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5474,25 +5631,25 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr "Varování"
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
msgstr "Varování - DOL se spouští ve špatném režimu konzole!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
msgstr "Varování - ELF se spouští ve špatném režimu konzole!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
msgstr "Varování - ISO se spouští ve špatném režimu konzole!"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5503,7 +5660,7 @@ msgstr ""
"%s\n"
"Přejete si pokračovat?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5516,7 +5673,7 @@ msgstr ""
"a mají stejný název jako soubor na Vaši paměťové kartě\n"
"Pokračovat?"
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
@@ -5528,7 +5685,7 @@ msgstr ""
"měli načíst jinou pozici, nebo tento stav načíst bez zapnutého režimu pouze "
"pro čtení."
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
@@ -5540,7 +5697,7 @@ msgstr ""
"načíst bez zapnutého režimu pouze pro čtení. Jinak pravděpodobně dojde k "
"desynchronizaci."
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5573,49 +5730,49 @@ msgstr ""
"Start=%d, A=%d, B=%d, X=%d, Y=%d, Z=%d, DUp=%d, DDown=%d, DLeft=%d, DRight="
"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr "WaveFileWriter - soubor není otevřen."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr "Whammy"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
msgstr "Hack Širokoúhlého obrazu"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr "Šířka"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr "Wii"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
msgstr "Konzole Wii"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr "Wii Kořen NAND:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
msgstr "Import uložených pozic Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
msgstr "Wii soubory s uložením (*.bin)|*.bin"
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr "WiiWAD Nelze číst ze souboru"
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr "Wiimote"
@@ -5624,7 +5781,7 @@ msgstr "Wiimote"
msgid "Wiimote %i"
msgstr "Wiimote %i"
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr "Wiimote Připojen"
@@ -5632,7 +5789,7 @@ msgstr "Wiimote Připojen"
msgid "Wiimote Motor"
msgstr "Wiimote Motor"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
msgstr "Wiimote nastavení"
@@ -5640,103 +5797,127 @@ msgstr "Wiimote nastavení"
msgid "Wiimotes"
msgstr "Wiimoty"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr "Klávesa Windows Vlevo"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
msgstr "Klávesa Windows Menu"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr "Klávesa Windows Vpravo"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr "Zalamování textu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr "Pracuji..."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr "Zapsat do Konzole"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
msgstr "Zapsat do Ladiče"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
msgstr "Zapsat do Souboru"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
msgstr "Zapsat do Okna"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr "XAudio2 CreateSourceVoice selhalo: %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
msgstr "XAudio2 spuštění selhalo: %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr "XAudio2 vytvoření hlavního hlasu selhalo: %#X"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr "XF reg"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr "Žlutá"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
-"Používáte volné romy dsp vytvořené Týmem Doplhin.\n"
-"Správně s nimi bude fungovat pouze Zelda ucode.\n"
+"Používáte volný ROM DSP, který vytvořil Tým Dolphin.\n"
+"Všechny hri Wii budou správně pracovat a většina her na GC by také měla "
+"fungovat dobře, ale UKódy GBA/IPL/CARD nebudou fungovat.\n"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+"Používáte starý volný ROM DSP, který vytvořil Tým Doplhin.\n"
+"Správně pracovat budou pouze hry používající Zelda UCode.\n"
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr "Nemůžete zavřít panely, které mají uvnitř stránky."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr "Musíte si zvolit hru!!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
msgstr "Musíte zadat jméno!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
msgstr ""
"Musíte zadat platnou hodnotu v desítkové, šestnáctkové nebo osmičkové "
"soustavě."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr "Musíte zadat platné jméno profilu."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr "Pro uplatnění změn musíte Dolphin restartovat."
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+"Váš ROM DSP má nesprávné haše.\n"
+"Chtěli byste nyní přestat a problém opravit?\n"
+"Pokud zvolíte \"Ne\", mlže být zvuk poškozený."
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
@@ -5744,7 +5925,7 @@ msgstr ""
"Váš GCM/ISO soubor se zdá být neplatný (neplatná země).\n"
"Pokračovat s regionem PAL?"
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
@@ -5755,25 +5936,25 @@ msgstr ""
"Měl by být 0x%04x (ale je 0x%04llx)\n"
"Chcete vytvořit nový?"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
msgstr "ZTP hack"
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr "Kód Zero 3 není podporován"
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
msgstr "Nulový kód, který dolphin nezná: %08x"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr "[ čekám ]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5785,11 +5966,11 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr "[Vlastní]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5808,7 +5989,7 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5823,97 +6004,47 @@ msgstr ""
"\n"
"Pokud si nejste jisti, nechejte toto odškrtnuté."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr "^ PŘIDAT"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr "zavaděč aplikace (.img)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr "čtení hlavičky bk selhalo"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr "Čtení dat selhalo ze souboru: %s"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr "Nelze číst z hlavičky"
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr "iCacheJIT: Přečten Opcode z %x. Prosím nahlaste."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr "není uložená hra wii nebo nelze číst z hlavičky souboru o velikosti %x"
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr "s"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr "neznámý příkaz 0x%08x"
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
msgstr "wxExecute při běhu aplikace vrátil -1!"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr "Korekce z Far:"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr "Korekce zNear:"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr "| NEBO"
-#~ msgid "%i connected"
-#~ msgstr "Připojeno %i"
-
-#~ msgid "Alternate Wiimote Timing"
-#~ msgstr "Střídat časování Wiimote"
-
-#~ msgid "Interpreter (VERY slow)"
-#~ msgstr "Převaděč (VELMI pomalé)"
-
-#~ msgid "JIT Recompiler (recommended)"
-#~ msgstr "JIT Rekompilátor (doporučeno)"
-
-#~ msgid "JITIL experimental recompiler"
-#~ msgstr "JITIL experimentální rekompilátor"
+#~ msgid "Accurate VBeam emulation"
+#~ msgstr "Precizní emulace VBeam"
#~ msgid ""
-#~ "Mutes the Wiimote speaker. Fixes random disconnections on real wiimotes. "
-#~ "No effect on emulated wiimotes."
+#~ "If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
#~ msgstr ""
-#~ "Ztlumí reproduktor Wiimote. Spravuje náhodná odpojování u opravdových "
-#~ "Wiimote. Žádný efekt na emulovaná Wiimote."
+#~ "Pokud jsou SzS nestálé, tato volba může pomoci. (ZAPNUTO = Kompatibilní, "
+#~ "VYPNUTO = Rychlé)"
-#~ msgid "Pair Up"
-#~ msgstr "Spárovat"
-
-#~ msgid "Reconnect Wiimote Confirm"
-#~ msgstr "Potvrzení o znovupřipojení Wiimote"
-
-#~ msgid ""
-#~ "Wiimote %i has been disconnected by system.\n"
-#~ "Maybe this game doesn't support multi-wiimote,\n"
-#~ "or maybe it is due to idle time out or other reason.\n"
-#~ "Do you want to reconnect immediately?"
-#~ msgstr ""
-#~ "Wiimote %i byl odpojen systémem.\n"
-#~ "Možná tato hra nepodporuje více wiimotů,\n"
-#~ "nebo je to vypršení limitu neaktivity, nebo z jiného důvodu.\n"
-#~ "Chcete ho hned znovu připojit?"
+#~ msgid "Skip Dest. Alpha Pass"
+#~ msgstr "Vypnout Průchod Cíl. Průhl."
diff --git a/Languages/po/de.po b/Languages/po/de.po
index ad17bbf813..e1960b5d8b 100644
--- a/Languages/po/de.po
+++ b/Languages/po/de.po
@@ -3,17 +3,18 @@
# This file is distributed under the same license as the dolphin-emu package.
#
# Translators:
-# Danny Krug , 2013.
-# , 2013.
-# JackyCola , LucasX , 2011.
-# , 2013.
+# DasD aus der Spree , 2013
+# DefenderX , 2013
+# Ghabry , 2013
+# JackyCola , LucasX , 2011
+# no_cluez , 2013
msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emulator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
-"PO-Revision-Date: 2013-03-02 19:42+0000\n"
-"Last-Translator: DefenderX \n"
+"POT-Creation-Date: 2013-04-18 23:00-0500\n"
+"PO-Revision-Date: 2013-04-05 23:28+0000\n"
+"Last-Translator: Ghabry \n"
"Language-Team: German (http://www.transifex.com/projects/p/dolphin-emu/"
"language/de/)\n"
"Language: de\n"
@@ -22,21 +23,21 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
msgstr " (zu viele zum anzeigen)"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr " Spiel: "
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr "! NICHT"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
@@ -45,53 +46,64 @@ msgstr ""
"\"%s\" existiert nicht.\n"
"Eine neue 16MB Memcard erstellen?"
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
-msgstr "\"%s\" ist ein ungültiges GC/Wii-Image, oder kein GC/Wii-Image."
+msgstr "\"%s\" ist kein gültiges GC/Wii-Image oder kein GC/Wii-Image."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
msgstr "%08X:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
-msgstr "%1$sKopie%1$s"
+msgstr "%1$sKopieren%1$s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr ""
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
msgstr ""
-"%s existiert bereits.\n"
-"Soll diese Datei überschrieben werden?"
+"%s ist bereits vorhanden.\n"
+"Vorhandene Datei ersetzen?"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
-msgstr "%s konnte nicht komprimiert werden, weil das Image fehlerhaft ist."
+msgstr ""
+"%s konnte nicht komprimiert werden, möglicherweise ist das Image fehlerhaft."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
" Card file size is invalid (0x%x bytes)"
msgstr ""
-"%s konnte nicht als Memory Card geladen werden\n"
-"Die Kartendateigröße ist ungültig (0x%x bytes)"
+"%s konnte nicht als Speicherkarte geladen werden.\n"
+"Die Dateigröße der Speicherkarten-Datei ist ungültig (0x%x bytes)."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
" Card size is invalid (0x%x bytes)"
msgstr ""
-"%s konnte nicht als Memory Card geladen werden\n"
-"Die Kartengröße ist ungültig (0x%x bytes)"
+"%s konnte nicht als Speicherkarte geladen werden.\n"
+"Die Speicherkartengröße ist ungültig (0x%x bytes)."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -101,49 +113,37 @@ msgstr ""
"Die Datei ist nicht groß genug um eine gültige Memory Card Datei zu sein (0x"
"%x bytes)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr "%s konnte nicht geöffnet werden."
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-"%s besitzt einen fehlerhaften Hash.\n"
-"Möchten Sie jetzt abbrechen, um das Problem zu beheben?\n"
-"Wenn Sie \"Nein\" wählen, wird der Ton verzerrt."
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
-msgstr "Die Datei %s beinhaltet 0 Byte."
+msgstr "Die Datei %s ist 0 Byte groß."
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
-msgstr ""
-"%s ist bereits komprimiert! Und kann nicht nocheinmal komprimiert werden."
+msgstr "%s ist bereits komprimiert und kann nicht erneut komprimiert werden."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr "Der Dateiname %s ist zu lang (maximal 45 Zeichen)"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr "%sLöschen%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr "%sGCI exportieren%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr "%sGCI importieren%s"
@@ -153,252 +153,275 @@ msgstr "%sGCI importieren%s"
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr "%u freie Blöcke; %u freie Verzeichniseinträge"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr "&& UND"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr "Über &Dolphin"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr "Von &DVD-Laufwerk starten..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr "&Haltepunkte"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr "Nach ISOs &suchen..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
-msgstr "&Cheat Manager"
+msgstr "&Cheat-Manager"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
-msgstr "&DSP Einstellungen"
+msgstr "&DSP-Einstellungen"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr "ISO &löschen"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr "Ausgewählte ISOs &löschen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr "&Emulation"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr "&Datei"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr "&Einzelbildwiedergabe"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr "&Vollbild"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
-msgstr "&Grafik Einstellungen"
+msgstr "&Grafikeinstellungen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr "&Hilfe"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr "&Tastenkürzel Einstellungen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr "&JIT"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
-msgstr "Status &laden"
+msgstr "Spielstand &laden"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
-msgstr "&Memory-Card Manager (GC)"
+msgstr "&Speicherkarten-Verwaltung (GC)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr "&Arbeitsspeicher"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr "Ö&ffnen..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr "&Optionen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr "Pau&se"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr "&Start"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr "&Eigenschaften"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
-msgstr "&Nur-Lese-Modus"
+msgstr "S&chreibgeschützer Modus"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
-msgstr "&Liste aktualisieren"
+msgstr "Liste &aktualisieren"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr "&Register"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr "&Reset"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
-msgstr "&Sound"
+msgstr "S&ound"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr "Sto&pp"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
-msgstr "&Werkzeuge"
+msgstr "E&xtras"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr "&Video"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr "&Ansicht"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
-msgstr "&Wiimote Einstellungen"
+msgstr "&Wiimote-Einstellungen"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr "&Wiki"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr "''"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr "(-)+zFar"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr "(-)+zNear"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr "(UNBEKANNT)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr "(aus)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr "0x44"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr "16 Bit"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr "32 Bit"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr "3D Vision"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr "8 Bit"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
-msgstr ""
+msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr "A"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
-msgstr "Ein NetPlay Fenster ist bereits geöffnet!"
+msgstr "Ein NetPlay-Fenster ist bereits geöffnet!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
-msgstr "Es wird derzeit kein Spiel ausgeführt."
+msgstr "Derzeit wird kein Spiel ausgeführt."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:68
-#, fuzzy
msgid ""
"A supported bluetooth device could not be found.\n"
"You must manually connect your wiimotes."
msgstr ""
-"Es wurde kein unterstütztes Bluetoothgerät gefunden!\n"
-"Wenn du den Bluetooth Stack von Microsoft nutzt musst du deine Wiimotes "
-"manuell Paaren und dann nur den \"Refresh\" Knopf drücken"
+"Es konnte kein unterstütztes Bluetooth-Gerät gefunden werden.\n"
+"Du musst deine Wiimotes manuell verbinden."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
+#, fuzzy
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
"ACHTUNG:\n"
"\n"
@@ -417,17 +440,17 @@ msgstr ""
"\n"
"TCP Port zum Hoster muss geöffnet sein!!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr "AM-Baseboard"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr "AR Codes"
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr "Über Dolphin"
@@ -435,15 +458,11 @@ msgstr "Über Dolphin"
msgid "Acceleration"
msgstr "Beschleunigung"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr "Genauigkeit:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr "Genaue VBeam Emulation"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -451,18 +470,17 @@ msgid ""
"\n"
"If unsure, check EFB to Texture instead."
msgstr ""
-"Emuliert genau EFB Kopien.\n"
-"Einige Spiele benötigen dies für bestimmte Gerafikeffekte oder "
-"Gameplayfunktionen.\n"
+"Einige Spiele benötigen eine exakte Emulation von EFB-Kopien, für bestimmte "
+"Grafikeffekte oder Gameplayfunktionen.\n"
"\n"
-"Wenn du dir unsicher bist nutze stattdessen EFB zu Textur."
+"In der Regel ist \"EFB to Texture\" ausreichend."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr "Aktion"
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -477,7 +495,7 @@ msgstr ""
"Fehlerhafter Code:\n"
"%s"
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
@@ -485,7 +503,7 @@ msgstr ""
"Action Replay Fehler: Fehlerhafte Größe (%08x : address = %08x) im folgendem "
"Code (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
@@ -494,7 +512,7 @@ msgstr ""
"Action Replay Fehler: Ungültige Größe (%08x : address = %08x) in Fill and "
"Slide (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
@@ -503,7 +521,7 @@ msgstr ""
"Action Replay Fehler: Ungültige Größe (%08x : address = %08x) in Ram Write "
"And Fill (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
@@ -512,13 +530,13 @@ msgstr ""
"Action Replay Fehler: Fehlerhafte Größe (%08x : address = %08x) im "
"geschriebennen Pointer (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr ""
"Action Replay Fehler: Fehlerhafte Größe (%08x) im kopierten Speicher (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
@@ -528,63 +546,63 @@ msgstr ""
"(%s)\n"
"Master Codes werden nicht benötigt. Benutze keine Master Codes."
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr "Action Replay Fehler: Fehlerhafter AR-Code in Zeile: %s"
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr "Action Replay: Conditional Code: ungültige Größe %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr "Action Replay: Ungültiger Normal Code %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr "Action Replay: Normaler Code %i: ungültiger Subtype %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr "Action Replay: Normal Code 0: ungültiger Subtype %08x (%s)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr "Grafikkarte:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr "Hinzufügen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
-msgstr "ActionReplay Code hinzufügen"
+msgstr "ActionReplay-Code hinzufügen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr "Patch hinzufügen"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr "Neue Palette hinzufügen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr "Hinzufügen..."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
-msgstr "Adresse: "
+msgstr "Adresse:"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -602,7 +620,7 @@ msgstr ""
"\n"
"NOTIZ: Prüfe im Logfenster/Konsole die ermittelten Werte."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -620,48 +638,48 @@ msgstr ""
"\n"
"NOTIZ: Prüfe im Logfenster/Konsole die ermittelten Werte."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr "Einstellung des benötigten Drucks um Analoge Tasten zu aktivieren."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr "Erweitert"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr "Erweiterte Einstellungen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
-msgstr "Alle GC/Wii Dateien(elf, dol, gcm, wbfs, ciso, gcz, wad)"
+msgstr "Alle GC/Wii-Dateien (elf, dol, gcm, wbfs, ciso, gcz, wad)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
-msgstr "Alle GC/Wii Images (gcm, iso, wbfs, ciso, gcz)"
+msgstr "Alle GC/Wii-Imagedateien (gcm, iso, wbfs, ciso, gcz)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
-msgstr "Alle Gamecube GCM Dateien (gcm)"
+msgstr "Alle Gamecube GCM-Dateien (gcm)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr "Alle Speicherstände (sav, s##)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr "Alle Wii ISO Dateien (iso)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr "Alle komprimierten GC/Wii ISO Dateien (gcz)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr "Alle Dateien (*.*)|*.*"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
@@ -669,40 +687,40 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr "Analysiere"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
-msgstr "Anisotropische Filterung:"
+msgstr "Anisotrope Filterung:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
-msgstr "Anti-Aliasing:"
+msgstr "Antialiasing:"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr ""
"Der Apploader hat eine falsche Größe... ist dies wirklich ein AppLoader?"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr "Kann Apploader aus dieser Datei nicht laden."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr "Apploader:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr "Übernehmen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
@@ -711,14 +729,14 @@ msgstr ""
"Schaltet einen Post-Processing Effekt wenn ein Frame beendet wurde. Wenn "
"unsicher, wähle (aus)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr "Arabisch"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
-msgstr "Sind Sie sicher, dass Sie \"%s\" löschen möchten?"
+msgstr "Möchtest du wirklich \"%s\" löschen?"
#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1013
msgid ""
@@ -733,46 +751,50 @@ msgid "Are you sure you want to delete this file? It will be gone forever!"
msgstr ""
"Soll die Datei gelöscht werden? Löschen kann nicht Rückgängig gemacht werden."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr "ARM JIT (Experimentell)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr "Seitenverhältnis:"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr "Mindestens eine Palette muss geöffnet bleiben."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr "Audio"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr "Audio Backend:"
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr "AudioCommon: Fehler beim öffnen des AO-Gerätes.\n"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr "Automatisch"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
-msgstr "Automatisch (Mehrfaches von 640x528)"
+msgstr "Automatisch (Vielfaches von 640x528)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
-msgstr "Automatisch (Fenstermodus)"
+msgstr "Automatisch (Fenstergröße)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr "Lege die Größe des Fenstermodus automatisch fest."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
@@ -782,160 +804,160 @@ msgstr ""
"\n"
"Wenn du dir unsicher bist lass diesen Punkt ausgeschaltet."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr "B"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
-msgstr "BP Registrieren"
+msgstr "BP-Register"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr "Zurück"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
-msgstr "Backend Einstellungen"
+msgstr "Backend-Einstellungen"
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr "Backend:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr "Hintergrund-Eingabe"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr "Rückwärts"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr "Ungültige Header-Datei"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr "Banner"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
-msgstr "Banner Details"
+msgstr "Bannerdetails"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr "Banner:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr "Leiste"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr "Standard"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr "Grundeinstellungen"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr "Bass"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr "Blockzuteilungs-Tabellen-Prüfsumme fehlerhaft."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr "Blöcke"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr "Blau"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr "Blau links"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr "Blau rechts"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr "Unten"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr "Steuerung festlegen: %lu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
msgstr "Defekt"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr "Durchsuchen"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr "Ordner suchen und hinzufügen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr "ISO-Verzeichnis hinzufügen..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr "Ausgabeverzeichnis auswählen"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr "Buffer:"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr "Tasten"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr "C"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr "C-Stick"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr "C-Stick"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr "CP reg"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr "CPU Emulator Engine"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr "Anzeigeliste zwischenspeichern"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -951,65 +973,64 @@ msgstr ""
"\n"
"Wenn du dir unsicher bist, wähle es nicht aus."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr ""
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr "Abbrechen"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr "Kann %s nicht öffnen"
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr "Kann während ausstehenden Events keine bereits Events de-registrieren."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
"%s\n"
"is not a valid gamecube memory card file"
msgstr ""
-"Kann diese Datei nicht als Memory Card verwenden.\n"
-"%s\n"
-"ist keine gültige Gamecube Memory Card Datei."
+"Die Datei %s kann nicht als Speicherkarte verwendet werden, weil sie keine "
+"gültige Gamecube-Speicherkarte ist."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
msgstr ""
-"Kann diese Datei nicht als Memory Card verwanden.\n"
-"Versuchst du vielleicht die selbe Datei in beiden Slots zu verwanden?"
+"Diese Datei kann nicht als Speicherkarte verwendet werden.\n"
+"Versuchts du möglicherweise die selbe Datei in beiden Slots zu verwenden?"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr "Kann WiiMote bei BD: %02x:%02x:%02x:%02x:%02x:%02x nicht finden."
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr "Kann Wiimote bei Verbindungs-Handle %02x nicht finden."
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr "Kann von DVD_Plugin/DVD-Schnittstelle nicht lesen: Fataler Fehler"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
-msgstr "Feststellen"
+msgstr "Feststelltaste"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr "Katalanisch"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr "Mitte"
@@ -1017,12 +1038,12 @@ msgstr "Mitte"
msgid "Change"
msgstr "Wechseln"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr "Disc &wechseln..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr "Disc wechseln"
@@ -1030,7 +1051,7 @@ msgstr "Disc wechseln"
msgid "Change Game"
msgstr "Spiel wechseln"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
@@ -1038,103 +1059,103 @@ msgstr ""
"Sprache der Benutzeroberfläche ändern.\n"
"Dolphin muss neu gestartet werden, damit die Änderung wirksam wird."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr "Parameter sign zu zFar ändern (nach Korrektur)"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr "Parameter sign zu zNear ändern (nach Korrektur)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr ""
"Änderung dieser Option zeigt keine Auswirkung, solange die Emulation läuft."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr "Chat"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr "Cheat Code"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
-msgstr "Cheat Suche"
+msgstr "Cheatsuche"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
-msgstr "Cheat Manager"
+msgstr "Cheat-Verwaltung"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr "Prüfe die Unversehrtheit der Partition"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr "Prüfe die Unversehrtheit der Partition..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
msgstr "Chinesisch (Vereinfacht)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr "Chinesisch (Traditionell)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr "Wähle ein Standard DVD-Verzeichnis:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr "Wähle ein NAND Stammverzeichnis"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr "Standard ISO auswählen:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr "Ordner zum Hinzufügen auswählen."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
msgstr "Datei zum Öffnen auswählen"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr "Wähle eine Memory Card:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
msgstr ""
"Wähle eine Datei als Apploader aus: (Gilt nur für Discs aus Verzeichnissen)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
-msgstr "Ordner zum Extrahieren auswählen"
+msgstr "Zielordner für Extraktion auswählen"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr "Circle Stick"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr "Klassik"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr "Löschen"
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
@@ -1142,122 +1163,122 @@ msgstr ""
"Client kann während ein Spiel emmuliert wird, nicht verbunden werden! "
"NetPlay ist deaktiviert. Sie müssen zuerst manuell das Spiel beenden."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr "Schließen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
-msgstr "&Konfiguration"
+msgstr "&Einstellungen..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
-msgstr "Code Info"
+msgstr "Code-Info"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
-msgstr "Code: "
+msgstr "Code:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr "Befehl"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr "Kommentar"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr "Kommentar:"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr "ISO komprimieren..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
msgstr "Ausgewählte ISOs komprimieren..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr "Komprimiere ISO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr "Einstellungen"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr "Einstellungen"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr "Steuerung bearbeiten"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr "Pads konfigurieren"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr "Einstellungen ...."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr "Überschreiben Bestätigen"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
-msgstr "Beim Beenden Bestätigen"
+msgstr "Beim Beenden bestätigen"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr "Verbinden"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
-msgstr "USB-Keyboard anschließen"
+msgstr "USB-Tastatur angeschlossen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr "Wiimote %i verbinden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr "Wiimote 1 verbinden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr "Wiimote 2 verbinden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr "Wiimote 3 verbinden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr "Wiimote 4 verbinden"
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr "Verbinden..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr "Konsole"
@@ -1265,15 +1286,15 @@ msgstr "Konsole"
msgid "Continuous Scanning"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr "Strg"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr "Zu GCI konvertieren"
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr "Kopieren fehlgeschlagen"
@@ -1282,21 +1303,21 @@ msgstr "Kopieren fehlgeschlagen"
msgid "Copy to Memcard %c"
msgstr "Auf Memcard %c kopieren"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr "Kern"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr "%s konnte nicht erstellt werden"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr "Konnte Backend %s nicht initialisieren."
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
@@ -1307,15 +1328,15 @@ msgstr ""
"dies ist kein GC/Wii Backup. Bitte beachten Sie, dass die ursprünglichen GC/"
"Wii-Discs von den meisten PC-DVD-Laufwerken nicht gelesen werden können."
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr "Konnte ISO-Datei %s nicht erkennen."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
-msgstr "Konnte %s nicht speichern."
+msgstr "Konnte %s nicht speichern"
#: Source/Core/DolphinWX/Src/NetWindow.cpp:551
msgid ""
@@ -1323,24 +1344,34 @@ msgid ""
"(setting pads while the game is running is not yet supported)"
msgstr ""
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
-msgstr ""
-"Konnte die Memorycard-Datei %s nicht schreiben.\n"
+"protected?\n"
"\n"
-"Führen Sie Dolphin von einer CD/DVD aus, oder ist die Speicherdatei "
-"vielleicht schreibgeschützt?"
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
+msgstr ""
+"Die Speicherkartendatei %s konnte nicht geschrieben werden.\n"
+"\n"
+"Dies tritt auf, wenn du Dolphin von einem nicht schreibbaren Medium, "
+"beispielsweise einer CD/DVD ausführst oder die Datei als schreibgeschützt "
+"markiert ist.\n"
+"\n"
+"Eine weitere Möglichkeit ist, dass du den Dolphin-Ordner verschoben hast.\n"
+"\n"
+"Wenn einer dieser Fälle zutriffst, solltest du den Speicherort der "
+"Speicherkarte in den Optionen ändern."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
msgstr "Konnte denn Befehl zum öffnen der Dateierweiterung 'ini' nicht finden!"
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
@@ -1348,231 +1379,233 @@ msgstr ""
"Konnte Kern nicht initialisieren.\n"
"Überprüfe deine Konfiguration."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr "Anzahl:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr "Land:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr "AR-Code erstellen"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr "Neue Perspektive erstellen"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
-msgstr "Ersteller: "
+msgstr "Autor: "
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr "Kritisch"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
msgstr "Abschneiden"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
+"Schneidet das Bild von 4:3 auf 5:4 bzw. von 16:9 auf 16:10 zurecht.\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
msgstr "Fadenkreuz"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
msgstr ""
-"Aktuelles Verzeichnis wird gemäß wxFileSelector von %s nach %s geändert!"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
msgid "Custom Projection Hack"
msgstr "Benutzerdefinierter Projection-Hack"
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
msgid "Custom Projection Hack Settings"
msgstr "Benutzerdefinierter Projection-Hack Einstellungen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
msgstr "Einige orthographische Projection Parameter anpassen."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr "Tschechisch"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr "D"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr "D-Pad"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr "DSP"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr "DSP Emulator Engine"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr "DSP HLE Emulation (schnell)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr "DSP LLE Interpreter (langsam)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr "DSP LLE in eigenem Thread ausführen"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr "DSP LLE Recompiler"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
-msgid "DSP settings"
-msgstr "DSP Einstellungen"
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
+msgid "DSP settings"
+msgstr "DSP-Einstellungen"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr "DVD Laufwerk:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr "DVDLowRead - Kritischer Fehler: Datenträger kann nicht gelesen werden"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr ""
"DVDLowUnencryptedRead - Kritischer Fehler: Datenträger kann nicht gelesen "
"werden."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr "Datengröße"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr "Datum:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr "Datel MaxDrive/Pro Dateien(*.sav)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr "Tote Zone"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr "Debug"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr "Debug"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
-msgstr "Dezimal"
+msgstr "Komma"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr "ISO dekomprimieren..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr "Ausgewählte ISOs dekomprimieren..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr "Dekomprimiere ISO"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr "Standard"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr "Standard ISO:"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr "Standard Schriftart"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
-msgstr "Löschen"
+msgstr "Entfernen"
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:790
msgid "Delete Save"
msgstr "Spielstand löschen"
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr "Wollen Sie die vorhandende Datei '%s' löschen?"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr "Beschreibung"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr "Erkenne"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr "Gerät"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr "Geräteeinstellungen"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr "Skala"
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr "Direct3D11"
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr "Direct3D9"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
@@ -1580,16 +1613,20 @@ msgstr ""
"Die Verzeichnis-Prüfsumme ist fehlerhaft,\n"
"und ebenfalls die Backup-Verzeichnis-Prüfsumme."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr "Deaktivieren"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
-msgid "Disable Fog"
-msgstr "kein Nebel"
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
+msgid "Disable Fog"
+msgstr "Nebel deaktivieren"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1597,8 +1634,13 @@ msgid ""
"\n"
"If unsure, leave this checked."
msgstr ""
+"Deaktiviert jegliche XFB-Emulation.\n"
+"Dadurch wird die Emulation beschleunigt, auf Kosten von vielen Problemen in "
+"davon abhängigen Spielen (insbesondere Homebrew)´.\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1607,70 +1649,87 @@ msgid ""
"\n"
"If unsure, leave this unchecked."
msgstr ""
+"Deaktiviert die Emulation von EFB-Kopien.\n"
+"Diese werden oft für Post-Processing- oder Render to Texture-Effekte "
+"verwendet. Die Option ist zwar mit einer schnelleren Emulation verbunden, "
+"aber verursacht fast immer Probleme.\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr "Disc"
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr "Disc Lesefehler"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr "Anzeige"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
+"Zeigt die vom Emulator gelesenen Eingaben an.\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
-msgstr "Dividieren"
+msgstr "Division"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr "Laufende Emulation stoppen?"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
msgstr "Dolby Pro Logic II Dekodierer"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr "Dolphin"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr "Dolphin %s Grafik Einstellungen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
-msgstr "Dolphin &Webseite"
+msgstr "Dolphin-&Webseite"
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
-msgstr "Dolphin Einstellungen"
+msgstr "Dolphin-Einstellungen"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:183
msgid "Dolphin Emulated Wiimote Configuration"
msgstr "Dolphin Emulierte-Wiimote Einstellungen"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
-msgstr "Dolphin FIFO"
+msgstr "Dolphin-FIFO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr "Dolphin GCPad Konfiguration"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr "Dolphin TAS Filme (*.dtm)"
@@ -1678,11 +1737,11 @@ msgstr "Dolphin TAS Filme (*.dtm)"
msgid "Dolphin Wiimote Configuration"
msgstr "Dolphin Wiimote Einstellungen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr "Dolphin auf &Google Code"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
@@ -1690,7 +1749,7 @@ msgstr ""
"Dolphin konnte keine GC oder Wii ISOs finden. Hier doppelklicken um nach "
"ISOs zu suchen..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
@@ -1698,85 +1757,106 @@ msgstr ""
"Dolphin ist so eingestellt, dass alle Spiele versteckt werden. Hier "
"doppelklicken um alle Spiele anzuzeigen..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
msgstr "Dolphin war nicht in der Lage die gewünschte Aktion auszuführen."
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#, fuzzy
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+"Aktiviert schnellen Zugriff auf die Disc. Wird für einige Spiele benötigt. "
+"(ON = Schnell, OFF = Kompatibel)"
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
-msgstr "Runter"
+msgstr "Unten"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
-msgstr "Codes Herunterladen (WiiRD Database)"
+msgstr "Codes Herunterladen (WiiRD)"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr "%lu Codes heruntergeladen. (%lu hinzugefügt)"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr "Trommeln"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
msgstr "Dummy"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr "Audio dumpen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr "EFB-Target dumpen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr "Frames dumpen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr "Texturen dumpen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
+"Schreibt alle während der Emulation gerenderten Bilder in eine AVI-Datei in "
+"User/Dump/Frames.\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
+"Speichert alle während der Emulation decodierten Spiele-Texturen in den "
+"Ordner User/Dump/Textures//.\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
+"Speichert alle während der Emulation erzeugten EFB-Kopien in den Ordner User/"
+"Dump/Textures/.\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr "Holländisch"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr "&Beenden"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr "EFB Kopien"
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1788,52 +1868,52 @@ msgstr ""
"mindestens Version %d.%d -- Wenn du Dolphin kürzlich aktualisiert hast, ist "
"eventuell ein Neustart nötig, damit Windows den neuen Treiber erkennt."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr "EUROPA"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
msgstr "Frühe Speicher Updates"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr "Bearbeiten"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr "ActionReplay Code bearbeiten"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr "Einstellungen bearbeiten"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr "Patch bearbeiten"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr "Aktuelle Ansicht ändern"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr "Bearbeiten..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr "Effekt"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr ""
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr "Emu-Thread läuft bereits."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1841,8 +1921,14 @@ msgid ""
"\n"
"If unsure, check virtual XFB emulation instead."
msgstr ""
+"Aktiviert die exakte Emulation von XFB.\n"
+"Dies beinträchtigt die emulationsgeschwindigkeit erheblich und verhindert "
+"das Rendern in hohen Auflösungen, wird aber für die korrekte Emulation "
+"einiger Spiele benötigt.\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1851,20 +1937,27 @@ msgid ""
"\n"
"If unsure, leave this checked."
msgstr ""
+"Emuliert XFB unter Verwendung von GPU-Texturobjekten.\n"
+"Dies behebt Probleme in vielen Spielen, die ohne XFB-Emulation nicht "
+"funktionieren und nebenbei erheblich schneller als die exakte XFB-Emulation "
+"ist. Dennoch ist diese Option für viele Spiele (insbesondere Homebrew) nicht "
+"ausreichend.\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:24
msgid "Emulated Wiimote"
msgstr "Emulierte Wiimote"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
-msgstr "Emulierbarkeit:"
+msgstr "Status:"
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:22
msgid "Enable"
msgstr "Aktivieren"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1873,73 +1966,77 @@ msgid ""
"\n"
"If unsure, leave this unchecked."
msgstr ""
+"Aktiviert, sofern von deiner GPU unterstützt, 3D-Effekte mittels "
+"Stereoskopie unter Verwendung der Nvidia 3D Vision-Technologie.\n"
+"Verursacht gerne Probleme und funktioniert nur im Vollbildmodus.\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr "AR Logging aktivieren"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr "Blockvereinigung aktivieren"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr "Aktiviere Bounding Box Calculation"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr "Aktiviere Cache"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr "Cheats aktivieren"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr "Dual Core aktivieren"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr "Dual Core aktivieren (Beschleunigung)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
-msgstr "Tastenkürzel aktivieren"
+msgstr "Kurztasten aktivieren"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr "Idle-Skipping aktivieren"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
-msgstr "Idle-Skipping aktivieren (Beschleunigung)"
+msgstr "Idle-Skipping aktivieren (schneller)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr "MMU aktivieren"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
-msgstr "Vollbildverfahren aktivieren"
+msgstr "Progressiven Scan aktivieren"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
-msgstr "Aktiviere Bildschirmschoner"
+msgstr "Bildschirmschoner aktivieren"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:75
-#, fuzzy
msgid "Enable Speaker Data"
-msgstr "Blättern verwenden"
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr "Breitbildmodus"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
-msgstr "Drahtgitter aktivieren"
+msgstr "Wireframe aktivieren"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -1948,7 +2045,7 @@ msgid ""
"If unsure, select 1x."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
@@ -1960,7 +2057,7 @@ msgstr ""
msgid "Enable pages"
msgstr "Blättern verwenden"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -1968,7 +2065,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -1976,7 +2073,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
@@ -1984,11 +2081,11 @@ msgstr ""
"Dies aktivieren, um \"The Legend of Zelda: Twilight Princess\" zu "
"beschleunigen. Dies für JEDES andere Spiel deaktivieren."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr "Benutzerdefinierten Projection-Hack aktivieren"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
@@ -1996,20 +2093,20 @@ msgstr ""
"Dolby Pro Logic II Emulation wird aktiviert, indem 5.1 Surround verwendet "
"wird. Nicht für OS X verfügbar."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr ""
"Dolby Pro Logic II Emulation wird aktiviert, indem 5.1 Surround verwendet "
"wird. Funktioniert nur mit OpenAL backend."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
@@ -2017,7 +2114,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
@@ -2025,66 +2122,68 @@ msgstr ""
"Aktiviert die Speicher-Verwaltungs-Einheit, die für einige Spiele gebraucht "
"wird. (ON = Kompatibel, OFF = Schnell)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr "Ende"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr "Englisch"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
-msgstr "Erweiterungen"
+msgstr "Verbesserungen"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr "Namen für die neue Ansicht eingeben:"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr "Eintrag %d/%d"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr "Eintrag 1/%d"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr "Gleich"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr "Fehler"
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr ""
"Fehler beim Laden der ausgewählten Sprache. Kehre nun zu dem Systemstandart "
"zurück."
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
"Aborting savestate load..."
msgstr ""
+"Fehler: Nach \"%s\" wurde %d (0x%X), anstatt %d (0x%X) gefunden. Spielstand "
+"laden wird abgebrochen..."
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
@@ -2093,38 +2192,38 @@ msgstr ""
"Fehler: Versuche auf Schriftart %s zuzugreifen, aber sie wurde nicht "
"geladen. Das Spiel wird die Schriftart nicht anzeigen, oder Abstürzen."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr "Escape"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr "Euphorie"
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr "Ausführen"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr "Exportieren fehlgeschlagen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr "Datei exportieren"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr "Aufnahme exportieren"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr "Aufnahme exportieren..."
@@ -2132,7 +2231,7 @@ msgstr "Aufnahme exportieren..."
msgid "Export Save"
msgstr "Spielstand exportieren"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr "Wii Spielstand exportieren (Experimentell)..."
@@ -2140,103 +2239,103 @@ msgstr "Wii Spielstand exportieren (Experimentell)..."
msgid "Export all saves"
msgstr "Alle Spielstände exportieren"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr "Exportieren fehlgeschlagen, ein weiteres mal versuchen?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr "Spielstand exportieren als..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr "Erweiterung"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr "Extra Parameter"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
msgstr "Extra Parameter nur in ''Metroid: Other M'' sinnvoll."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr "Alle Dateien extrahieren..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr "Apploader extrahieren..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr "DOL extrahieren..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr "Ordner extrahieren..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr "Datei extrahieren..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr "Partition extrahieren..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr "Extrahiere %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
-msgstr "Alle Dateien extrahieren"
+msgstr "Extrahiere alle Dateien"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
-msgstr "Ordner extrahieren"
+msgstr "Extrahiere Ordner"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr "Extrahieren..."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr "FIFO Byte"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr "FIFO Player"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr "FRANKREICH"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr "FST Größe:"
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr "Verbindungsaufbau fehlgeschlagen!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
-msgstr "Download von Codes ist Fehlgeschlagen."
+msgstr "Download der Codes fehlgeschlagen."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
-msgstr "Entpacken nach %s ist Fehlgeschlagen!"
+msgstr "Extrahieren nach %s ist fehlgeschlagen!"
#: Source/Core/Core/Src/DSP/DSPCore.cpp:66
#, c-format
@@ -2251,34 +2350,41 @@ msgid ""
"(Choose it from the \"Audio\" tab of the configuration dialog.)"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr "bthprops.cpl konnte nicht geladen werden."
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr "Fehler beim Laden von hid.dll"
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
msgstr "Konnte %s nicht lesen"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr "Fehler beim Lesen von banner.bin"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
"Memcard may be truncated\n"
"FilePosition:%llx"
msgstr ""
+"Konnte Block %d der Speicherdaten nicht lesen.\n"
+"Die Speicherkarte ist vermutlich unvollständig.\n"
+"FilePosition: %llx"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
@@ -2286,7 +2392,7 @@ msgstr ""
"Konnte das Blockzuteilungtabellen-Backup nicht richtig lesen\n"
"(0x8000-0x9FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
@@ -2294,12 +2400,17 @@ msgstr ""
"Konnte die Blockzuteilungtabellen nicht richtig lesen\n"
"(0x6000-0x7FFF)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr "Fehler beim Lesen von Daten aus Datei %d"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
@@ -2307,7 +2418,7 @@ msgstr ""
"Konnte das Backup-Verzeichnis nicht richtig lesen\n"
"(0x4000-0x5FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
@@ -2315,7 +2426,11 @@ msgstr ""
"Konnte das Verzeichnis nicht richtig lesen\n"
"(0x2000-0x3FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
@@ -2323,63 +2438,63 @@ msgstr ""
"Konnte den Header nicht richtig lesen\n"
"(0x0000-0x1FFF)"
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr "Fehler beim Lesen einer eindeutigen ID des Disc-Images."
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr "Fehler beim Schreiben von BT.DINF nach SYSCONF"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr "Fehler beim Schreiben von bkhdr"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr "Fehler beim Schreiben eines Header für %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr "Fehler beim Schreiben eines Header für Datei %d"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
msgstr "Farsi"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr "Schnell"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr "Schnellere Version der MMU. Funktioniert nicht mit allen Spielen."
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr "Fifo Player"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
-msgstr "Dateiinformationen"
+msgstr "Datei-Informationen"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr "Datei enthielt keine Codes."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr "Datei zu .gci konvertiert."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
@@ -2387,7 +2502,7 @@ msgstr ""
"Datei konnte nicht geöffnet werden\n"
"oder hat keine gültige Erweiterung"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
@@ -2396,36 +2511,36 @@ msgstr ""
"Die Datei besitzt die Erweiterung \"%s\",\n"
"gültige Erweiterungen sind (.raw/.gcp)."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr "Diese Datei wird nicht als Memorycard anerkannt."
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr "Datei nicht komprimiert"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr "FileIO: Unbekanter Open-Modus : 0x%02x"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr "Dateisystem"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
msgstr "Der Datentyp 'ini' ist unbekannt! Wird nicht geöffnet!"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr "Finde nächste"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr "Finde vorherige"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr "Erster Block"
@@ -2433,23 +2548,23 @@ msgstr "Erster Block"
msgid "Fix Checksums"
msgstr "Prüfsummen korrigieren"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr "16:9 erzwingen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr "4:3 erzwingen"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
-msgstr "Erzwinge NTSC-J "
+msgstr "NTSC-J erzwingen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
-msgstr "Erzwinge Filtern von Texturen"
+msgstr "Texturfilterung erzwingen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2457,7 +2572,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2465,16 +2580,18 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
"Zwingt das Spiel, Grafiken für Breitbild-Auflösungen auszugeben.\n"
-"Dies kann Grafikfehler verursachen!"
+"Dies kann Grafikfehler verursachen!\n"
+"\n"
+"Aktiviere diese Option nur, wenn du weißt, was du tust."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
"setting when playing Japanese games."
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
@@ -2482,148 +2599,147 @@ msgstr ""
"Das Format ähnelt dem ASCII-Zeichensatz (NTSC\\PAL)?\n"
"Wähle 'Nein' für SJIS (NTSC-J)."
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr "Vorwärts"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr "%d Ergebnisse gefunden für '"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr "Bild"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
msgstr "Bild"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr "Einzelbildwiedergabe"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr "Bildinfo"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr "Frames ü&berspringen"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr "Framelimit:"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr "Bilder zum Aufzeichnen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr "Frei Umsehen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr "Französisch"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr "von"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr "Vollbild"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr "Vollbildauflösung:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr "GCI Datei(*.gci)"
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr "GCMic Konfiguration"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr "GC-Pad"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr "GX_CMD_INVL_VC"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
-msgstr "Spiel ID:"
+msgstr "Spiel-ID:"
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr "Spiel wird bereits emuliert!"
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr "Spiel wird nicht emuliert!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
-#, fuzzy
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
msgstr "Spiel nicht gefunden!"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr "Spiel-Spezifische Einstellungen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr "Spieleinstellungen"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr "GameCube Speicherdateien (*.gci;*.gcs;*.sav)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr "Gamecube"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr "GameCube &Pad Einstellungen"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
-msgstr "Gamecube Memory Cards (*.raw,*.gcp)"
+msgstr "Gamecube-Speicherkarten (*.raw,*.gcp)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr "Gamecube Pad Einstellungen"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
-msgstr "Gecko Codes"
+msgstr "Gecko-Codes"
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2632,10 +2748,10 @@ msgid ""
"directory and restarting Dolphin.)"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr "Allgemein"
@@ -2643,30 +2759,30 @@ msgstr "Allgemein"
msgid "General Settings"
msgstr "Allgemeine Einstellungen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr "Deutsch"
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr "GetARCode: Der Index ist größer als AR-Codelisten-Größe %lu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr "Grafik"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
-msgstr "Grafik Einstellungen"
+msgstr "Grafikeinstellungen"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr "Größer als"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2677,51 +2793,67 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr "Griechisch"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr "Grün"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr "Grün links"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr "Grün rechts"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr "Gitarre"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr "HCI_CMD_INQUIRY wurde aufgerufen, bitte berichten!"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr "Hacks"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr "Header-Prüfsumme fehlerhaft"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr "Hebräisch"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr "Höhe"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr "Hilfe"
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2738,77 +2870,73 @@ msgstr ""
"\n"
"Sayonara!\n"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr "Verbergen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
-msgstr "Mauszeiger verstecken"
+msgstr "Mauszeiger ausblenden"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
-msgstr "Home"
+msgstr "Pos1"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr "Host"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
-msgstr "Tastenkürzel Einstellungen"
+msgstr "Kurztastenbelegung"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
-msgstr "Tastenkürzel"
+msgstr "Kurztasten"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr "Ungarisch"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:24
msgid "Hybrid Wiimote"
-msgstr "Hybrid Wiimote"
+msgstr "Hybride Wiimote"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr ""
"IOCTL_ES_GETVIEWS: Versucht Daten von einem unbekannten Ticket zu bekommen: "
"%08x/%08x"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-"IOCTL_ES_LAUNCH: Das Spiel versucht ein IOS oder ein Titel, der nicht in "
-"Ihrer NAND-Dump verfügbar ist, neu zu laden.\n"
-"TitleID %016llx.\n"
-" Dolphin wird wahrscheinlich jetzt hängen bleiben."
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
-msgstr "IOCTL_ES_READCONTENT - Fehlerhafte Beschreibung"
+msgstr "IOCTL_ES_READCONTENT - Fehlerhaftes Ziel"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
-msgstr "IPL Einstellungen"
+msgstr "IPL-Einstellungen"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr "IR"
@@ -2818,49 +2946,35 @@ msgstr "IR-Zeiger"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:95
msgid "IR Sensitivity:"
-msgstr "IR-Empfindlichkeit"
+msgstr "IR-Empfindlichkeit:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
-msgstr "ISO Details"
+msgstr "ISO-Details"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
-msgstr "ISO Verzeichnisse"
+msgstr "ISO-Verzeichnisse"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr "ITALIEN"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr "Symbol"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-"Wenn die FPS sprunghaft ist, kann diese Option helfen. (ON = Kompatibel, OFF "
-"= Schnell)"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr "Formatänderungen ignorieren"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -2869,7 +2983,7 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -2882,11 +2996,11 @@ msgstr ""
msgid "Import Save"
msgstr "Spielstand importieren"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr "Importieren fehlgeschlagen, noch einmal versuchen?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
@@ -2894,11 +3008,11 @@ msgstr ""
"Die importierte Datei hat die Erweiterung gsc, aber besitzt keinen korrekten "
"Header."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr "Importierte Datei hat eine ungültige Länge"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
@@ -2906,102 +3020,94 @@ msgstr ""
"Importierte Datei hat die Erweiterung sav,\n"
"aber besitzt keinen korrekten Header."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
-msgstr "Ingame"
+msgstr "Im Spiel"
#: Source/Core/DolphinWX/Src/NetWindow.cpp:594
msgid "In-Game"
msgstr "In-Game"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr "Info"
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
-msgstr "Informationen"
+msgstr "Information"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr "Eingabe"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr "Einfügen"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr "Verschlüsselten oder unverschlüsselten Code hier eingeben..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
-msgstr "SD-Karte einlegen"
+msgstr "SD-Karte eingesetzt"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr "Namen hier eingeben.."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
-msgstr "Installiere WAD"
+msgstr "WAD installieren"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr "Zum Wii-Menü hinzufügen"
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
"InstallExceptionHandler aufgerufen, aber diese Platform unterstüzt diesn "
"noch nicht."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
-msgstr "Installiere WAD..."
+msgstr "WAD installieren..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
"or has been patched incorrectly."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
-msgstr "Interface"
+msgstr "Oberfläche"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
-msgstr "Interface Einstellungen"
+msgstr "Benutzeroberflächeneinstellungen"
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr "Internationaler LZO-Fehler - Komprimierung fehlgeschlagen"
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
@@ -3011,41 +3117,45 @@ msgstr ""
"%li) \n"
"Versuche diesen Status nochmal zu laden."
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr "Internationaler LZO-Fehler - lzo_init() fehlerhaft"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr "Interpreter (SEHR langsam)"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr "Intro"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
-msgstr "Ungültigen Wert!"
+msgstr "Ungültiger Wert!"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr "Ungültige bat.map oder Verzeichnis-Eintrag"
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr "Ungültiger Ereignis-Typ %i"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr "Ungültige Datei"
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -3056,108 +3166,116 @@ msgstr ""
"%s\n"
" Möglicherweise müssen Sie dieses Spiel neu dumpen."
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr "Ungültige Aufnahmedatei"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr ""
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr "Ungültiger Status"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr "Italienisch"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr "JAPAN"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr "JIT-Recompiler (Empfohlen)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr "JITIL-Recompiler (Experimentell)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr "Japanisch"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr "KOREA"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr "Taste"
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr "Koreanisch"
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr "L"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
-msgstr "L Taste"
+msgstr "L-Taste"
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr "L-Analog"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr "Sprache:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr "Letzter überschriebener Status"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr "Letzter gespeicherter Status"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
msgstr "Latenz:"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr "Links"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr "Stick links"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
@@ -3165,7 +3283,7 @@ msgstr ""
"Zum Erkennen, auf Tastenkürzel linksklicken.\n"
"Drücken Sie die Leertaste, zum löschen."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
@@ -3175,7 +3293,7 @@ msgstr ""
"Mittlere Maustaste zum Löschen.\n"
"Rechtsklick für weitere Optionen."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
@@ -3183,83 +3301,83 @@ msgstr ""
"Links/Rechts-Klick für mehr Optionen.\n"
"Mittlere Maustaste zum Löschen."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr "Kleiner als"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr "Laden"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr "Lade benutzerdefinierte Texturen"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr "Status aus Slot 1 laden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr "Status aus Slot 2 laden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr "Status aus Slot 3 laden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr "Status aus Slot 4 laden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr "Status aus Slot 5 laden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr "Status aus Slot 6 laden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr "Status aus Slot 7 laden"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr "Status aus Slot 8 laden"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr "Status laden..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
-msgstr "Lade Wii System Menü"
+msgstr "Wii-Systemmenü laden"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
-msgstr "Lade Wii System Menü %d%c"
+msgstr "Wii-Systemmenü %d%c laden"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr ""
@@ -3267,23 +3385,23 @@ msgstr ""
msgid "Local"
msgstr "Lokal"
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr "Log"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3291,24 +3409,24 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr "Logging"
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr "Die Verbindung zum Server wurde getrennt!"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr "Mittlere Taste"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
@@ -3317,51 +3435,60 @@ msgstr ""
"MD5 Konflikt\n"
" %016llx%016llx != %016llx%016llx"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr "MMU Speed Hack"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr "MadCatz Gameshark Dateien(*.gcs)"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr "Main Stick"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
-msgstr "Hersteller ID"
+msgstr "Hersteller-ID:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr "Hersteller:"
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr "Max"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
-msgstr "Memorycard hat bereits eine Spielstand für diesen Tittel"
+msgstr "Die Speicherkarte enthält bereits ein Spiel mit dem gleichen Titel."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr "Memorycard ist bereits geöffnet"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr "Seicherbyte"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
-msgstr "Memory Card"
+msgstr "Speicherkarte"
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
@@ -3369,7 +3496,7 @@ msgstr ""
"Memory-Card Manager WARNUNG - Erstelle Backups bevor der Benutzung. Dies "
"sollte zwar gefixt sein, aber könnte dennoch Probleme machen (mangle stuff)!"
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3386,15 +3513,17 @@ msgstr ""
"%s\n"
"Möchten Sie die alte Datei, zu diesem neuen Speicherort kopieren?\n"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr ""
+"Die Dateigröße der Speicherkarte stimmt nicht mit der Dateigrößenangabe im "
+"Header überein."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr "Menü"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr "Mikrofon"
@@ -3403,20 +3532,20 @@ msgstr "Mikrofon"
msgid "Min"
msgstr "Min"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr "Sonstiges"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr "Sonstige Einstellungen"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr "Modifikator"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3424,20 +3553,20 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr "Monospaced Schriftart"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr "Motion Plus"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr "Motor"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3447,225 +3576,246 @@ msgid ""
"\n"
"\n"
msgstr ""
+"Bewege den Mauszeiger über eine Option um detaillierte Beschreibungen "
+"einzublenden.\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
-msgstr "Stern"
+msgstr "Multiplikation"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
-msgstr ""
+msgstr "NOP"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
-msgstr "NP Plus"
+msgstr "Num Addition"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr "NP Start"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
-msgstr "NP Komma"
+msgstr "Num Komma"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
-msgstr "NP Entf"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
-msgid "NP Divide"
-msgstr "NP Geteilt"
+msgstr "Num Entf"
#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+msgid "NP Divide"
+msgstr "Num Division"
+
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
-msgstr "NP Runter"
+msgstr "Num Unten"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
-msgstr "NP Ende"
+msgstr "Num Ende"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
-msgstr "NP Eingabe"
+msgstr "Num Eingabe"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
-msgstr "NP Gleich"
+msgstr "Num Gleich"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
-msgstr "NP Einfg"
+msgstr "Num Einfg"
+
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
+msgid "NP Left"
+msgstr "Num Links"
+
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
+msgid "NP Multiply"
+msgstr "Num Multiplizieren"
+
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+msgid "NP Page Down"
+msgstr "Num Bild-Ab"
+
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+msgid "NP Page Up"
+msgstr "Num Bild-Hoch"
+
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+msgid "NP Right"
+msgstr "Num Rechts"
#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
-msgid "NP Left"
-msgstr "NP Links"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
-msgid "NP Multiply"
-msgstr "NP Stern"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
-msgid "NP Page Down"
-msgstr "NP Bild Runter"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
-msgid "NP Page Up"
-msgstr "NP Bild Hoch"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
-msgid "NP Right"
-msgstr "NP Rechts"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
msgid "NP Separator"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
-msgstr "NP Leertaste"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
-msgid "NP Subtract"
-msgstr "NP Minus"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
-msgid "NP Tab"
-msgstr "NP Tab"
+msgstr "Num Leertaste"
#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
-msgid "NP Up"
-msgstr "NP Hoch"
+msgid "NP Subtract"
+msgstr "Num Minus"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
+msgid "NP Tab"
+msgstr "Num Tab"
+
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+msgid "NP Up"
+msgstr "Num Hoch"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr "Name:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr "Name: "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr "Native GCI Dateien(*.gci)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
-msgstr "Neuer Scan"
+msgstr "Neue Suche"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr "Nächste Seite"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
-msgstr "Nächster Scan"
+msgstr "Nächste Suche"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr "Nickname:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr "Kein Land (SDK)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr "Keine ISOs oder WADs gefunden"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
-#, c-format
-msgid "No banner file found for title %s"
-msgstr "Keine Banner-Datei für Tittel %s gefunden."
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
-msgid "No description available"
-msgstr "Keine Beschreibung vorhanden"
-
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
-msgid "No docking"
-msgstr "Nicht Andocken"
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
-msgid "No file loaded"
-msgstr "Keine Date geladen"
-
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
-msgid "No free dir index entries"
-msgstr "Keine freien Verzeichnis-Indexeinträge."
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
-msgid "No recorded file"
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
msgstr ""
#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
+msgid "No banner file found for title %s"
+msgstr "Keine Banner-Datei für Tittel %s gefunden."
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
+msgid "No description available"
+msgstr "Keine Beschreibung vorhanden"
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
+msgid "No docking"
+msgstr "Nicht Andocken"
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
+msgid "No file loaded"
+msgstr "Keine Datei geladen"
+
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
+msgid "No free dir index entries"
+msgstr "Keine freien Verzeichnis-Indexeinträge."
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
+msgid "No recorded file"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
+#, c-format
msgid "No save folder found for title %s"
msgstr "Keinen Spielstand-Ordner für Tittel %s gefunden."
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr "Keine"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr "Norwegisch"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr "Ungleich"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr "Nicht Festgelegt"
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr ""
+"Dies ist kein Wii-Spielstand oder das Lesen der Größenangabe im Dateiheader "
+"%x ist gescheitert."
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr "Nicht Verbunden"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr "Notizen"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr "Notizen: "
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr "Notizen"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr "Num Lock"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
-msgstr "Anzahl von Codes: "
+msgstr "Codeanzahl:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr "Nunchuk"
@@ -3674,97 +3824,98 @@ msgstr "Nunchuk"
msgid "Nunchuk Acceleration"
msgstr "Nunchuck Beschleunigung"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr "Objekt"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr "Aus"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr "Offset:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr "Nur %d Blöcke verfügbar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr "Öffnen"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr "Beinhaltenden &Ordner öffnen..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr "&Wii Spielstand-Ordner öffnen..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr "Datei öffnen..."
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr "OpenAL: Kann Kontext für Gerät %s nicht erstellen"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr "OpenAL: Kann kein Sound-Gerät finden"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr "OpenAL: Kann Gerät %s nicht öffnen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
-msgstr "OpenCL Texturen Dekodierer"
+msgstr "OpenCL Textur-Dekoder"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr "OpenMP Texturen Dekodierer"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
-msgstr "Optionen"
+msgstr "Einstellungen"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr "Orange"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
+#, fuzzy
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
"Die Reihenfolge der Dateien im Datei-Verzeichnis übereinstimmen nicht mit "
"der Block-Reihenfolge,\n"
"klicke Rechts und exportiere alle Spielstände,\n"
"und importiere die Spielstände auf eine neue Memorycard.\n"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr "Andere"
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
@@ -3772,15 +3923,15 @@ msgstr ""
"Der andere Client wurde, während das Spiel läuft, getrennt! Nun ist NetPlay "
"inaktiv. Beenden Sie nun manuell das Spiel."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr "Ausgabe"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr "Au&fnahme abspielen..."
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr "Pad"
@@ -3788,160 +3939,160 @@ msgstr "Pad"
msgid "Pad "
msgstr "Pad "
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr "Pads"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
-msgstr "Bild Ab"
+msgstr "Bild-Ab"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
-msgstr "Bild Hoch"
+msgstr "Bild-Auf"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr "Paragraph"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr "Parameter"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr "Partition %i"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
-msgstr "Patches"
+msgstr "Patche"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr "Pfade"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr "Pause"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr "Perfekt"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr "Perspektive %d"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr "Start"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr "Aufnahme abspielen"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr "Start/Pause"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr "Spielbar"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr "Spieler"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr "Bitte Bestätigen..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr "Bitte legen Sie vor dem Speichern eine Perspektive fest"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr "Plus-Minus"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr "Polnisch"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
-msgstr "Port 1"
+msgstr "Port 1:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
-msgstr "Port 2"
+msgstr "Port 2:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
-msgstr "Port 3"
+msgstr "Port 3:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
-msgstr "Port 4"
+msgstr "Port 4:"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr "Port:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr "Portugiesisch"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr "Portugiesisch (Brasilianisch)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr "Vorh. Seite"
@@ -3949,67 +4100,67 @@ msgstr "Vorh. Seite"
msgid "Previous Page"
msgstr "Vorherige Seite"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr "Vorheriger Wert"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr "Druck"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr "Profil"
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr "Eigenschaften"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
-msgstr "Cache löschen"
+msgstr "Cache leeren"
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr "Frage"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr "Beenden"
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr "R"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
-msgstr "R Taste"
+msgstr "R-Taste"
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr "R-Analog"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr "RAM"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr "RUSSLAND"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr "Weite"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr "Nur-Lese-Modus"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr "Echt"
@@ -4025,33 +4176,33 @@ msgstr "Echte Wiimotes"
msgid "Reconnect Wiimote on State Loading"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr "Rot"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr "Rot links"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr "Rot rechts"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -4061,255 +4212,261 @@ msgid ""
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr "Aktualisieren"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr "Liste aktualisieren"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr "Spieleliste aktualisieren"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr "Entfernen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr "Im Hauptfenster Rendern"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr "Zurücksetzen"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr "Ergebnisse"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
-msgstr "Enter"
+msgstr "Eingabe"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr "Rechts"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr "Stick rechts"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr "Rumble"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
-msgstr "Führt DSP LLE in einem eigenen Thread aus (nicht empfohlen)."
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
+msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr "Russisch"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr "S&tatus speichern"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr "Sicher"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr "Speichern"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
-msgstr "CGI speichern unter..."
+msgstr "GCI speichern unter..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
-msgstr "Status in Slot 1 speichern"
+msgstr "In Slot 1 speichern"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
-msgstr "Status in Slot 2 speichern"
+msgstr "In Slot 2 speichern"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
-msgstr "Status in Slot 3 speichern"
+msgstr "In Slot 3 speichern"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
-msgstr "Status in Slot 4 speichern"
+msgstr "In Slot 4 speichern"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
-msgstr "Status in Slot 5 speichern"
+msgstr "In Slot 5 speichern"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
-msgstr "Status in Slot 6 speichern"
+msgstr "In Slot 6 speichern"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
-msgstr "Status in Slot 7 speichern"
+msgstr "In Slot 7 speichern"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
-msgstr "Status in Slot 8 speichern"
+msgstr "In Slot 8 speichern"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
-msgstr "Status speichern..."
+msgstr "Spiel speichern..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr "Speichern unter..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr "Komprimierte GCM/ISO speichern"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr "Aktuelle Perspektive speichern"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr "Dekomprimierte GCM/ISO speichern"
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr "Film-Status %s ist fehlerhaft, breche die Filmaufnahme ab..."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr "Scannen %s"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
msgstr "Suche nach ISOs"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr "Suche..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr "ScrShot"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
-msgstr "Rollen Feststell"
+msgstr "Scroll-Lock"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr "Suche"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr "Suchfilter"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr "Unterordner durchsuchen"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr "Suche derzeitiges Objekt"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr ""
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr "Ausgewähltes %s nicht gefunden in SYSCONF"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr "Auswählen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr "Aufnahmedatei auswählen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr "Wähle eine Wii WAD zum Installieren aus."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
"If unsure, use the first one."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr "Speicherdatei zum Importieren auswählen"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr "Wähle unverankerte Fenster"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr "Datei zum Laden auswählen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr "Wii-Spielstand auswählen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr "Status zum Laden auswählen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr "Status zum Speichern auswählen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4320,15 +4477,15 @@ msgid ""
"If unsure, select Auto."
msgstr ""
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr "Ausgewählte Schriftart"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4338,17 +4495,27 @@ msgid ""
"If still unsure, use the highest resolution which works for you."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr "Senden"
@@ -4356,26 +4523,26 @@ msgstr "Senden"
msgid "Sensor Bar Position:"
msgstr "Position der Sensorleiste:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr "Trennzeichen"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr "Serbisch"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr ""
"Serieller Port 1 - Dies ist der Port, den Geräte, wie der Net-Adapter, "
"benutzen."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr "Zuweisen"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr "Als &Standard-ISO festlegen"
@@ -4384,135 +4551,135 @@ msgstr "Als &Standard-ISO festlegen"
msgid "Set as default Memcard %c"
msgstr "Als Standard-Speicherkarte %c auswählen"
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr ""
"SetARCode_IsActive: Der Index ist größer als die AR-Code-Listengröße %lu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr "Einstellungen..."
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr "SetupWiiMem: Kann die Einstellungsdatei nicht finden"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr "Schütteln"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr "Kurzer Name:"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr "&Konsole anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr "&Log anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr "&Statusleiste anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr "&Werkzeugleiste anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr "Laufwerke anzeigen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr "FPS anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr "Frankreich anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr "GameCube anzeigen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr "Italien anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr "JAP anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr "Korea anzeigen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
-msgstr "Sprache anzeigen:"
+msgstr "Anzeigen auf:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr "PAL anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr "Plattformen anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr "Regionen anzeigen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
-msgstr "Zeige Statistik"
+msgstr "Statistiken anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr "Taiwan anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr "USA anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr "Wad anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr "Wii anzeigen"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
-msgstr "Hinweisfenster anzeigen, bevor die Emulation beendet wird."
+msgstr "Vor dem Beenden der Emulation bestätigen."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4528,11 +4695,11 @@ msgstr ""
msgid "Show first block"
msgstr "Ersten Block anzeigen"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4555,7 +4722,7 @@ msgstr "Symbol anzeigen"
msgid "Show save title"
msgstr "Namen anzeigen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4563,54 +4730,42 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr "Unbekannte Anzeigen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
-msgstr "Vereinfachtes Chinesisch"
+msgstr "Chinesisch (Vereinfacht)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr "Größe"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
-msgstr "Überspringe BIOS"
+msgstr "BIOS überspringen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4620,27 +4775,27 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr "Slot %i"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
-msgstr "Slot A"
+msgstr "Slot A:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
-msgstr "Slot B"
+msgstr "Slot B:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr "Snapshot"
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
-msgstr ""
+msgstr "Software-Renderer"
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:84
msgid ""
@@ -4650,27 +4805,27 @@ msgid ""
"Do you really want to enable software rendering? If unsure, select 'No'."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
-msgstr "Sound Einstelungen"
+msgstr "Audio-Einstellungen"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr "Sound-Backend %s ist ungültig."
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr "Erstellen des Sound-Buffer fehlgeschlagen: %s"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr "Leertaste"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr "Spanisch"
@@ -4678,7 +4833,7 @@ msgstr "Spanisch"
msgid "Speaker Volume:"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4690,63 +4845,63 @@ msgid ""
"If unsure, select 640x528."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr "Disc-Übertragungsrate beschleunigen"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr "Standard-Controller"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr "Start"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
-msgstr "Starte &NetPlay"
+msgstr "&NetPlay starten"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr "&Aufnahme starten"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr "Aufnahme starten"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr "Status"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr "Status"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
msgstr "Lenkrad"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr "Stick"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr "Stopp"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -4755,107 +4910,117 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr "An Fenstergröße anpassen"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr "Klimpern"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr "Subtrahieren"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr "Die Datei wurde erfolgreich nach %s exportiert"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr "Die gespeicherte Datei wurde erfolgreich importiert"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
-msgstr "Schwenken"
+msgstr "Schwingen"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr "GPU-Thread synchronisieren"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr "Systemsprache:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr "TAIWAN"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr "Tab"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr "Nebeneinander öffnen"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr "Screenshot erstellen"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr "Testen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr "Textur"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr "Die WAD-Datei wurde erfolgreich installiert"
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr "Die Adresse ist ungültig"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr "Die Prüfsumme wurde erfolgreich korrigiert"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr "Der ausgewählte Ordner befindet sich bereits in der Liste"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
@@ -4864,7 +5029,7 @@ msgstr ""
"Die Datei %s existiert bereits.\n"
"Soll diese Datei ersetzt werden?"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
@@ -4873,31 +5038,31 @@ msgstr ""
"Konnte die Datei %s nicht zum Schreiben öffnen. Bitte überprüfe ob sie "
"bereits in einem anderen Programm geöffnet ist."
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr ""
"Die Datei %s wurde bereits geöffnet, der Header für die Datei wird nicht "
"geschrieben."
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr "Die angegebene Datei (%s) existiert nicht"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr "Der Name kann nicht leer bleiben."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr "Der Name darf nicht das Zeichen \",\" enthalten"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -4905,13 +5070,12 @@ msgid ""
"If unsure, use the rightmost value."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr ""
-"Der Spielstand, denn Sie versuchen zu kopieren, hat eine ungültige "
-"Dateigröße."
+"Der Spielstand, den du kopieren möchtest, hat eine ungültige Dateigröße."
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
@@ -4919,37 +5083,37 @@ msgstr ""
"Die ausgewählte Sprache wird von Ihrem System nicht unterstützt. Kehre nun "
"zum Systemstandart zurück."
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr ""
"Die Version von dem Server und Client´s NetPlay sind zueinander inkompatibel!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr "Der Server ist voll!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
msgstr "Der Server meldet: Das Spiel läuft derzeit!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
msgstr "Der Server sendete einen unbekannten Fehler!"
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr "Die ausgewählte Datei \"%s\" existiert nicht"
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
-msgstr "Dieser Wert ist ungültig"
+msgstr "Der eingegebene Wert ist ungültig"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
-msgstr ""
+msgstr "Design:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
@@ -4957,7 +5121,7 @@ msgstr ""
"Es müsste ein Ticket für 00000001/00000002 vorhanden sein. Ihr NAND-Dump ist "
"wahrscheinlich unvollständig."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
@@ -4966,7 +5130,7 @@ msgstr ""
"Grau hinterlegte Kästchen bedeuten, dass die globalen Einstellungen benutzt "
"werden."
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
@@ -4974,11 +5138,11 @@ msgstr ""
"Dieser Action-Replay-Simulator unterstützt keine Codes, die sich selber "
"verändern können."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr "Dies könnte zu Verlangsamung im Wii-Menü und einigen Spielen führen."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -4990,7 +5154,15 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -5003,61 +5175,61 @@ msgstr ""
"als einem Kern,\n"
"kann aber gelegentlich Abstürze/Fehler verursachen."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr "Schwelle"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr "Neigung"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr "Titel"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
-msgstr "Vollbildmodus wechseln"
+msgstr "Vollbildmodus umschalten"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr "Oben"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
-msgstr "Traditionelles Chinesisch"
+msgstr "Chinesisch (Traditionell)"
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr "Versuche gerade einen unbekannten Dateityp zu Laden."
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr "Schultertasten"
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr "Versuche gerade eine ungültige SYSCONF zu Lesen"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
@@ -5065,15 +5237,15 @@ msgstr ""
"Versuche gerade eine ungültige SYSCONF zu Lesen\n"
"Wiimote BT-IDs sind nicht verfügbar"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr "Türkisch"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr "Typ"
@@ -5081,31 +5253,31 @@ msgstr "Typ"
msgid "UDP Port:"
msgstr "UDP Port:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
-msgstr "UDP Wiimote"
+msgstr "UDP-Wiimote"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr "UNBEKANNT"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
-msgstr ""
+msgstr "UNBEKANNT_%02X"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr "USA"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -5113,75 +5285,89 @@ msgid ""
"Would you like to ignore this line and continue parsing?"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr "Undefiniert %i"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr "Status laden rückgängig machen"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr "Unbekannt"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr "Unbekannter DVD-Befehl %08x - fataler Fehler"
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr "Unbekannter Befehl 0x%08x"
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
msgstr "Unbekannter Eintrag-Typ %i in SYSCONF (%s@%x)!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr "Unbekannte Meldung mit ID: %d"
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr ""
"Unbekannte Meldung mit ID %d erhalten von Spieler %d, Spieler herausgeworfen!"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr "Hoch"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr "Update"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr "EuRGB60 Modus (PAL60) verwenden"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr "Verwende gesamten Bildschirm"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr "Hex verwenden"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr "Warnmeldungen anzeigen"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -5189,7 +5375,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -5198,53 +5384,58 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr "Hilfsmittel"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr "V-Sync"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+#, fuzzy
+msgid "VBeam Speed Hack"
+msgstr "MMU Speed Hack"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr "Wert"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr "Wert:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr "Wert: "
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr "Ausführung"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr "Video"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr "Virtuell"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr "Lautstärke"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
-msgstr ""
+msgstr "WAD-Installation fehlgeschlagen: Konnte %s nicht erstellen"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
-msgstr ""
+msgstr "WAD-Installation fehlgeschlagen: Fehler bei der Ticket-Erstellung"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5252,25 +5443,25 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr "Warnungen"
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
msgstr "Warnung - Starte DOL im falschen Consolen-Modus!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
msgstr "Warnung - Starte ELF im falschen Consolen-Modus!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
msgstr "Warnung - Starte ISO im falschen Consolen-Modus!"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5281,7 +5472,7 @@ msgstr ""
"%s\n"
"Wollen Sie fortfahren?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5289,28 +5480,36 @@ msgid ""
"and have the same name as a file on your memcard\n"
"Continue?"
msgstr ""
-"Warnung: Dies überschreibt alle vorhandenen Spielstände im Ordner:\n"
-"%s\n"
-"und hat den gleichen Namen wie die Datei auf Ihrer Memory-Card\n"
-"Fortfahren?"
+"Warnung: Dies überschreibt alle vorhandenen Spielstände im Ordner\n"
+"%s, sofern diese die gleichen Dateinamen wie Dateien auf der Speicherkarte "
+"besitzen.\n"
+"Möchtest du fortfahren?"
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
"%u > %u) (frame %u > %u). You should load another save before continuing, or "
"load this state with read-only mode off."
msgstr ""
+"Warnung: Du hast einen Spielstand geladen, dessen Speicherpunkt hinter dem "
+"Ende der aktuellen Aufnahme liegt. (Byte %u > %u) (Frame %u > %u). Lade "
+"einen anderen Spielstand, bevor du fortfährst oder lade diesen Spielstand im "
+"schreibgeschützen Modus."
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
"should load another save before continuing, or load this state with read-"
"only mode off. Otherwise you'll probably get a desync."
msgstr ""
+"Warnung: Du hast einen Spielstand geladen, dessen Aufnahme bei Byte %d (0x"
+"%X) nicht übereinstimmt. Lade einen anderen Spielstand, bevor du fortfährst "
+"oder lade diesen Spielstand im schreibgeschützen Modus, andernfalls könnten "
+"Desyncs auftreten."
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5328,59 +5527,76 @@ msgid ""
"Start=%d, A=%d, B=%d, X=%d, Y=%d, Z=%d, DUp=%d, DDown=%d, DLeft=%d, DRight="
"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
msgstr ""
+"Warnung: Du hast einen Spielstand geladen, dessen Aufnahme bei Frame %d "
+"nicht übereinstimmt. Lade einen anderen Spielstand, bevor du fortfährst oder "
+"lade diesen Spielstand mit deaktiviertem Schreibschutz, andernfalls könnten "
+"Desyncs auftreten.\n"
+"\n"
+"Weitere Informationen: Die aktuelle Aufnahme hat eine Länge von %d Frames "
+"und die Aufnahme vom Spielstand ist %d Frames lang.\n"
+"\n"
+"Bei Frame %d werden in der aktuellen Aufnahme die folgenden Tasten "
+"gedrückt:\n"
+"Start=%d, A=%d, B=%d, X=%d, Y=%d, Z=%d, DUp=%d, DDown=%d, DLeft=%d, DRight="
+"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d\n"
+"\n"
+"Bei Frame %d werden in der Aufnahme vom Spielstand die folgenden Tasten "
+"gedrückt:\n"
+"Start=%d, A=%d, B=%d, X=%d, Y=%d, Z=%d, DUp=%d, DDown=%d, DLeft=%d, DRight="
+"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr "WaveFileWriter - Konnte Datei nicht öffnen."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
-msgstr "Breitbild Hack"
+msgstr "Breitbild-Hack"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr "Weite"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr "Wii"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
-msgstr "Wii Konsole"
+msgstr "Wii-Konsole"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
-msgstr "Wii Spielstand importieren"
+msgstr "Wii-Spielstand importieren"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
-msgstr "Wii Speicherdateien (*.bin)|*.bin"
+msgstr "Wii-Speicherdaten (*.bin)|*.bin"
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr "WiiWAD: Konnte die Datei nicht lesen"
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr "Wiimote"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:21
#, c-format
msgid "Wiimote %i"
-msgstr ""
+msgstr "Wiimote %i"
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr "Wiimote Verbunden"
@@ -5388,107 +5604,133 @@ msgstr "Wiimote Verbunden"
msgid "Wiimote Motor"
msgstr "Wiimote Motor"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
-msgstr "Wiimote Einstellungen"
+msgstr "Wiimote-Einstellungen"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:48
msgid "Wiimotes"
msgstr "Wiimotes"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr "Windows Links"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
-msgstr "Windows Menü"
+msgstr "Kontextmenü"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr "Windows Rechts"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr "Zeilenumbruch"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr "Arbeite..."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr "In Konsole ausgeben"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
msgstr "In Datei ausgeben"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr "XAudio2 CreateSourceVoice fehlgeschlagen: %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
-msgstr ""
+msgstr "Initialisierung von XAudio2 gescheitert: %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr "XF reg"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr "Gelb"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
+"Du verwendest das freie DSP-ROM vom Dolphin Team.\n"
+"Alle Wii- und die meisten GameCube-Spiele werden problemlos funktionen, aber "
+"die GBA/IPL/CARD-UCodes nicht.\n"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+"Du verwendest ein veraltetes, freies DSP-ROM vom Dolphin Team.\n"
+"Nur Spiele, die den Zelda-UCode verwenden werden korrekt funktionieren.\n"
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr "Es können keine Paletten geschlossen werden, die Seiten behinhalten."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr "Sie müssen ein Spiel auswählen!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
-msgstr "Sie müssen einen Namen eingeben!"
+msgstr "Du musst einen Namen eingeben!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
-msgstr ""
+msgstr "Du musst eine gültige Dezimal-, Hexadezimal- oder Oktalzahl eingeben."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr "Sie müssen einen gültigen Profilamen eingeben!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr "Sie müssen Dolphin neu starten, damit die Änderungen wirksam werden."
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+"Dein DSP-ROMs haben ungültige Hashwerte.\n"
+"Möchtest du die Emulation anhalten und das Problem beheben?\n"
+"Wenn du \"Nein\" wählst, könnte die Audiowiedergabe merkwürdig klingen."
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
@@ -5496,33 +5738,36 @@ msgstr ""
"Ihre GCM/ISO-Datei scheint ungültig zu sein (Land ungültig).\n"
"Mit PAL-Region fortfahren?"
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
"It should be 0x%04x (but is 0x%04llx)\n"
"Do you want to generate a new one?"
msgstr ""
+"Deine SYSCONF-Datei hat die falsche Dateigröße.\n"
+"Erwartet wurde eine Größe von 0x%04x (aber deine ist 0x%04llx).\n"
+"Soll eine neue Datei generiert werden?"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
-msgstr "ZTP Hack"
+msgstr "ZTP-Hack"
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr "Zero 3 Code wird nicht unterstüzt"
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
msgstr "Der Zero Code ist in Dolphin unbekannt: %08x"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr "[ warte ]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5530,11 +5775,11 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr "[Benutzerdefiniert]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5545,7 +5790,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5554,90 +5799,44 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr "^ HINZUF."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr "Apploader (.img)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr "Lesen des BK-Header fehlgeschlagen"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr "Fehler beim Lesen von Daten aus der Datei: %s"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr "Fehler beim Lesen des Header"
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr "iCacheJIT: Lesen des Opcode aus %x. Bitte berichten."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr "Dies ist kein Wii-Spielstand oder Lesefehler in Datei-Header-Größe %x"
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr "s"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr "Unbekanter CMD 0x%08x"
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
-msgstr "wxExecute meldet -1 beim Start der Anwendung!"
+msgstr "wxExecute gab beim Anwendungsstart -1 zurück!"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr "zFar Korrektion: "
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr "zNear Korrektion: "
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr "| ODER"
-#~ msgid "%i connected"
-#~ msgstr "%i verbunden"
-
-#~ msgid "Alternate Wiimote Timing"
-#~ msgstr "Alternatives Wiimote Timing"
-
-#~ msgid "Interpreter (VERY slow)"
-#~ msgstr "Interpreter (SEHR langsam)"
-
-#~ msgid "JIT Recompiler (recommended)"
-#~ msgstr "JIT Recompiler (empfohlen)"
-
-#~ msgid "JITIL experimental recompiler"
-#~ msgstr "JITIL experimenteller Recompiler"
-
-#~ msgid "Pair Up"
-#~ msgstr "Verbinden"
-
-#~ msgid "Reconnect Wiimote Confirm"
-#~ msgstr "Wiimote Wiederverbindung Bestätigen"
+#~ msgid "Accurate VBeam emulation"
+#~ msgstr "Genaue VBeam Emulation"
#~ msgid ""
-#~ "Wiimote %i has been disconnected by system.\n"
-#~ "Maybe this game doesn't support multi-wiimote,\n"
-#~ "or maybe it is due to idle time out or other reason.\n"
-#~ "Do you want to reconnect immediately?"
+#~ "If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
#~ msgstr ""
-#~ "Verbindung zu Wiimote %i wurde vom System unterbrochen.\n"
-#~ "Vielleicht unterstützt das Spiel nicht mehrere Wiimotes,\n"
-#~ "oder die Wiimote war zulange inaktiv oder andere Ursachen.\n"
-#~ "Soll die Wiimote jetzt wieder verbunden werden?"
+#~ "Wenn die FPS sprunghaft ist, kann diese Option helfen. (ON = Kompatibel, "
+#~ "OFF = Schnell)"
diff --git a/Languages/po/dolphin-emu.pot b/Languages/po/dolphin-emu.pot
index 29c6fffefa..a5f0080711 100644
--- a/Languages/po/dolphin-emu.pot
+++ b/Languages/po/dolphin-emu.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emulator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
+"POT-Creation-Date: 2013-04-18 23:02-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -17,113 +17,115 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
" Create a new 16MB Memcard?"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr ""
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
msgstr ""
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
" Card file size is invalid (0x%x bytes)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
" Card size is invalid (0x%x bytes)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
"file is not large enough to be a valid memory card file (0x%x bytes)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr ""
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
msgstr ""
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr ""
@@ -133,222 +135,246 @@ msgstr ""
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
msgstr ""
@@ -358,36 +384,36 @@ msgid ""
"You must manually connect your wiimotes."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr ""
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr ""
@@ -395,15 +421,11 @@ msgstr ""
msgid "Acceleration"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -412,12 +434,12 @@ msgid ""
"If unsure, check EFB to Texture instead."
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr ""
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -427,102 +449,102 @@ msgid ""
"%s"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
"(%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
"Fill (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
"Pointer (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
"Master codes are not needed. Do not use master codes."
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -533,7 +555,7 @@ msgid ""
"NOTE: Check LogWindow/Console for the acquired values."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -544,48 +566,48 @@ msgid ""
"NOTE: Check LogWindow/Console for the acquired values."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
@@ -593,50 +615,50 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
msgstr ""
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr ""
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
"If unsure, select (off)."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
msgstr ""
@@ -651,206 +673,210 @@ msgstr ""
msgid "Are you sure you want to delete this file? It will be gone forever!"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr ""
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
msgstr ""
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr ""
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -859,23 +885,38 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr ""
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr ""
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
@@ -883,36 +924,21 @@ msgid ""
"is not a valid gamecube memory card file"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr ""
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr ""
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr ""
@@ -920,12 +946,12 @@ msgstr ""
msgid "Change"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr ""
@@ -933,228 +959,228 @@ msgstr ""
msgid "Change Game"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr ""
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr ""
@@ -1162,15 +1188,15 @@ msgstr ""
msgid "Continuous Scanning"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr ""
@@ -1179,21 +1205,21 @@ msgstr ""
msgid "Copy to Memcard %c"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr ""
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
@@ -1201,12 +1227,12 @@ msgid ""
"most PC DVD drives."
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
msgstr ""
@@ -1217,197 +1243,201 @@ msgid ""
"(setting pads while the game is running is not yet supported)"
msgstr ""
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
+"protected?\n"
+"\n"
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
msgstr ""
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
-msgid "Custom Projection Hack"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
-msgid "Custom Projection Hack Settings"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
msgstr ""
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+msgid "Custom Projection Hack"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
+msgid "Custom Projection Hack Settings"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
msgstr ""
@@ -1415,64 +1445,68 @@ msgstr ""
msgid "Delete Save"
msgstr ""
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr ""
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr ""
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
msgid "Disable Fog"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1481,7 +1515,7 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1491,52 +1525,60 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr ""
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
msgstr ""
@@ -1544,16 +1586,16 @@ msgstr ""
msgid "Dolphin Emulated Wiimote Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr ""
@@ -1561,101 +1603,107 @@ msgstr ""
msgid "Dolphin Wiimote Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr ""
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1664,52 +1712,52 @@ msgid ""
"driver."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr ""
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1718,7 +1766,7 @@ msgid ""
"If unsure, check virtual XFB emulation instead."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1732,7 +1780,7 @@ msgstr ""
msgid "Emulated Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
msgstr ""
@@ -1740,7 +1788,7 @@ msgstr ""
msgid "Enable"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1750,55 +1798,55 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
msgstr ""
@@ -1806,15 +1854,15 @@ msgstr ""
msgid "Enable Speaker Data"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -1823,7 +1871,7 @@ msgid ""
"If unsure, select 1x."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
@@ -1833,7 +1881,7 @@ msgstr ""
msgid "Enable pages"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -1841,7 +1889,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -1849,34 +1897,34 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
@@ -1884,108 +1932,108 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr ""
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
"Aborting savestate load..."
msgstr ""
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
"fonts correctly, or crash."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr ""
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr ""
@@ -1993,7 +2041,7 @@ msgstr ""
msgid "Export Save"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr ""
@@ -2001,100 +2049,100 @@ msgstr ""
msgid "Export all saves"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
msgstr ""
@@ -2112,26 +2160,30 @@ msgid ""
"(Choose it from the \"Audio\" tab of the configuration dialog.)"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
@@ -2139,140 +2191,149 @@ msgid ""
"FilePosition:%llx"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
msgstr ""
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
"valid extensions are (.raw/.gcp)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr ""
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr ""
@@ -2280,23 +2341,23 @@ msgstr ""
msgid "Fix Checksums"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2304,7 +2365,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2312,160 +2373,160 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
"setting when playing Japanese games."
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
msgstr ""
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr ""
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
msgstr ""
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2474,10 +2535,10 @@ msgid ""
"directory and restarting Dolphin.)"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr ""
@@ -2485,30 +2546,30 @@ msgstr ""
msgid "General Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2519,51 +2580,67 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2573,41 +2650,41 @@ msgid ""
"Sayonara!\n"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr ""
@@ -2615,29 +2692,29 @@ msgstr ""
msgid "Hybrid Wiimote"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr ""
@@ -2649,45 +2726,33 @@ msgstr ""
msgid "IR Sensitivity:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -2696,7 +2761,7 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -2709,35 +2774,27 @@ msgstr ""
msgid "Import Save"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
msgstr ""
@@ -2745,125 +2802,129 @@ msgstr ""
msgid "In-Game"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr ""
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
"or has been patched incorrectly."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
msgstr ""
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr ""
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
"Try loading the state again"
msgstr ""
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr ""
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr ""
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr ""
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -2871,203 +2932,211 @@ msgid ""
" You may need to redump this game."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr ""
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr ""
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr ""
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
msgstr ""
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
"Right-click for more options."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr ""
@@ -3075,23 +3144,23 @@ msgstr ""
msgid "Local"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3099,81 +3168,90 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
" %016llx%016llx != %016llx%016llx"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr ""
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3184,15 +3262,15 @@ msgid ""
"Would you like to copy the old file to this new location?\n"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr ""
@@ -3201,20 +3279,20 @@ msgstr ""
msgid "Min"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3222,20 +3300,20 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3246,224 +3324,235 @@ msgid ""
"\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
msgid "NP Divide"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
msgid "NP Left"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
msgid "NP Multiply"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
msgid "NP Page Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
msgid "NP Page Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
msgid "NP Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
msgid "NP Separator"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
msgid "NP Subtract"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
msgid "NP Tab"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
msgid "NP Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
-#, c-format
-msgid "No banner file found for title %s"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
-msgid "No description available"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
-msgid "No docking"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
-msgid "No file loaded"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
-msgid "No free dir index entries"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
-msgid "No recorded file"
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
msgstr ""
#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
+msgid "No banner file found for title %s"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
+msgid "No description available"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
+msgid "No docking"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
+msgid "No file loaded"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
+msgid "No free dir index entries"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
+msgid "No recorded file"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
+#, c-format
msgid "No save folder found for title %s"
msgstr ""
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr ""
@@ -3472,107 +3561,107 @@ msgstr ""
msgid "Nunchuk Acceleration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr ""
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr ""
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr ""
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr ""
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr ""
@@ -3580,160 +3669,160 @@ msgstr ""
msgid "Pad "
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr ""
@@ -3741,67 +3830,67 @@ msgstr ""
msgid "Previous Page"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr ""
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
msgstr ""
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr ""
@@ -3817,33 +3906,33 @@ msgstr ""
msgid "Reconnect Wiimote on State Loading"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -3853,255 +3942,261 @@ msgid ""
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr ""
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
"If unsure, use the first one."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4112,15 +4207,15 @@ msgid ""
"If unsure, select Auto."
msgstr ""
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4130,17 +4225,27 @@ msgid ""
"If still unsure, use the highest resolution which works for you."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr ""
@@ -4148,24 +4253,24 @@ msgstr ""
msgid "Sensor Bar Position:"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr ""
@@ -4174,134 +4279,134 @@ msgstr ""
msgid "Set as default Memcard %c"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr ""
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4312,11 +4417,11 @@ msgstr ""
msgid "Show first block"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4339,7 +4444,7 @@ msgstr ""
msgid "Show save title"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4347,54 +4452,42 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4404,25 +4497,25 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr ""
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
msgstr ""
@@ -4434,27 +4527,27 @@ msgid ""
"Do you really want to enable software rendering? If unsure, select 'No'."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
msgstr ""
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr ""
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr ""
@@ -4462,7 +4555,7 @@ msgstr ""
msgid "Speaker Volume:"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4474,63 +4567,63 @@ msgid ""
"If unsure, select 640x528."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -4539,143 +4632,153 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
"Do you wish to replace it?"
msgstr ""
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
"opened by another program."
msgstr ""
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -4683,68 +4786,68 @@ msgid ""
"If unsure, use the rightmost value."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -4756,7 +4859,15 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -4764,75 +4875,75 @@ msgid ""
"cause occasional crashes/glitches."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr ""
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr ""
@@ -4840,31 +4951,31 @@ msgstr ""
msgid "UDP Port:"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -4872,74 +4983,88 @@ msgid ""
"Would you like to ignore this line and continue parsing?"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr ""
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr ""
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr ""
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr ""
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -4947,7 +5072,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -4956,53 +5081,57 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+msgid "VBeam Speed Hack"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr ""
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
msgstr ""
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5010,25 +5139,25 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5036,7 +5165,7 @@ msgid ""
"Do you wish to continue?"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5045,7 +5174,7 @@ msgid ""
"Continue?"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
@@ -5053,7 +5182,7 @@ msgid ""
"load this state with read-only mode off."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
@@ -5061,7 +5190,7 @@ msgid ""
"only mode off. Otherwise you'll probably get a desync."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5080,49 +5209,49 @@ msgid ""
"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
msgstr ""
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
msgstr ""
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr ""
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr ""
@@ -5131,7 +5260,7 @@ msgstr ""
msgid "Wiimote %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr ""
@@ -5139,7 +5268,7 @@ msgstr ""
msgid "Wiimote Motor"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
msgstr ""
@@ -5147,105 +5276,123 @@ msgstr ""
msgid "Wiimotes"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr ""
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
msgstr ""
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
@@ -5253,25 +5400,25 @@ msgid ""
"Do you want to generate a new one?"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5279,11 +5426,11 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5294,7 +5441,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5303,58 +5450,35 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr ""
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr ""
diff --git a/Languages/po/el.po b/Languages/po/el.po
index 7e4f2e5934..d8253167e4 100644
--- a/Languages/po/el.po
+++ b/Languages/po/el.po
@@ -3,36 +3,38 @@
# This file is distributed under the same license as the dolphin-emu package.
#
# Translators:
-# Gpower2 , 2011.
+# Gpower2 , 2011
+# link_to_the_past , 2013
msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emulator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
-"PO-Revision-Date: 2013-02-02 08:31+0000\n"
-"Last-Translator: delroth \n"
-"Language-Team: LANGUAGE \n"
+"POT-Creation-Date: 2013-04-18 23:00-0500\n"
+"PO-Revision-Date: 2013-04-04 19:05+0000\n"
+"Last-Translator: link_to_the_past \n"
+"Language-Team: Greek (http://www.transifex.com/projects/p/dolphin-emu/"
+"language/el/)\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
msgstr "(πολλά αποτελέσματα για να εμφανιστούν)"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr "Παιχνίδι : "
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr "! NOT"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
@@ -41,35 +43,45 @@ msgstr ""
"Το \"%s\" δεν υπάρχει.\n"
"Δημιουργία καινούριας Memcard 16MB;"
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
msgstr ""
"Το \"%s\" είναι ένα μη έγκυρο αρχείο GCM/ISO, ή δεν είναι ένα ISO GC/Wii."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
msgstr "%08X: "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
msgstr "%1$sΑντιγραφή%1$s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr "%d δείγματα"
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr "%d δείγματα (επίπεδο ποιότητας %d)"
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
msgstr "%s υπάρχει ήδη, θέλετε αντικατάσταση;"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
msgstr ""
"%s απέτυχε να γίνει scrubbed. Πιθανότατα το αρχείο εικόνας είναι φθαρμένο."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -78,7 +90,7 @@ msgstr ""
"%s απέτυχε να φορτώσει ως κάρτα μνήμης\n"
" Το μέγεθος του αρχείου της κάρτας δεν είναι έγκυρο (0x%x bytes)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -87,7 +99,7 @@ msgstr ""
"%s απέτυχε να φορτώσει ως κάρτα μνήμης\n"
" Το μέγεθος της κάρτας δεν είναι έγκυρο (0x%x bytes)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -97,50 +109,39 @@ msgstr ""
"το αρχείο δεν είναι αρκετά μεγάλο ώστε να αποτελεί έγκυρο αρχείο κάρτας "
"μνήμης (0x%x bytes)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr "αποτυχία ανοίγματος %s"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-"Το %s έχει εσφαλμένο hash.\n"
-"Θέλετε να γίνει διακοπή τώρα και να διορθωθεί το πρόβλημα;\n"
-"Εάν επιλέξετε όχι, ο ήχος θα είναι χαλασμένος."
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
msgstr "Το %s είναι ένα αρχείο με 0 byte"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
msgstr "Το %s είναι ήδη συμπιεσμένο! Δε γίνεται να συμπιεστεί περαιτέρω."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr ""
"Το %s είναι πολύ μεγάλο για όνομα αρχείου, ο μέγιστος αριθμός χαρακτήρων "
"είναι 45"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr "%sΔιαγραφή%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr "%sΕξαγωγή GCI%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr "%sΕισαγωγή GCI%s"
@@ -150,222 +151,246 @@ msgstr "%sΕισαγωγή GCI%s"
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr "%u Ελεύθερα μπλοκ; %u Ελεύθερες Θέσεις Φακέλων"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr "&& AND"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr "&Περί..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr "&Εκκίνηση από τον οδηγό DVD..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr "&Σημεία Διακοπής"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr "&Εύρεση ISO..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
msgstr "&Διαχειριστής Cheat"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
msgstr "&Ρυθμίσεις DSP"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr "&Διαγραφή ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr "&Διαγραφή επιλεγμένων ISO..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr "&Εξομοίωση"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr "&Αρχείο"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr "&Προώθηση ανά Καρέ"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr "&Πλήρης Οθόνη"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
msgstr "&Ρυθμίσεις Γραφικών"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr "&Βοήθεια"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr "&Ρυθμίσεις Πλήκτρων Συντόμευσης"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr "&JIT"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
msgstr "&Φόρτωση Σημείου Αποθήκευσης"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
msgstr "&Διαχειριστής Καρτών Μνήμης (GC)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr "&Μνήμη"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr "&Άνοιγμα..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr "&Ρυθμίσεις"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr "&Παύση"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr "&Αναπαραγωγή"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr "&Ιδιότητες"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
msgstr "&Μόνο Για Ανάγνωση (Εγγραφής)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
msgstr "&Ανανέωση Λίστας"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr "&Καταχωρητές"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr "&Επανεκκίνηση"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
msgstr "&Ήχος"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr "&Διακοπή"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
msgstr "&Εργαλεία"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr "&Βίντεο"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr "&Προβολή"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
msgstr "&Ρυθμίσεις Wiimote"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr "&Wiki"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr "'"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr "(-)+zFar"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr "(-)+zNear"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr "(ΑΓΝΩΣΤΟ)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr "(ανενεργό)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr "0x44"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr "1.5x Αρχική (960x792)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr "16 bit"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr "1x Αρχική (640x528)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr "2.5x Αρχική (1600x1320)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr "2x Αρχική (1280x1056)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr "32 bit"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr "3D Vision"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr "3x Αρχική (1920x1584)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr "4x Αρχική (2560x2112)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr "8 bit"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr "<Εισάγετε όνομα εδώ>"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
msgstr "<Δε βρέθηκαν αναλύσεις>"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr "<Τίποτα>"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr "<Πατήστε Πλήκτρο>"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr "<Συστήματος>"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr "A"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
msgstr "Ένα παράθυρο NetPlay είναι ήδη ανοιχτό!!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
msgstr "Αυτή τη στιγμή δεν εκτελείται κάπιο παιχνίδι."
@@ -374,24 +399,27 @@ msgid ""
"A supported bluetooth device could not be found.\n"
"You must manually connect your wiimotes."
msgstr ""
+"Δεν εντοπίστηκε υποστηριζόμενη συσκευή bluetooth.\n"
+"Θα πρέπει να συνδέσετε χειροκίνητα τα wiimotes."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
+#, fuzzy
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
"ΠΡΟΣΟΧΗ:\n"
"\n"
@@ -409,17 +437,17 @@ msgstr ""
"\n"
"Θα πρέπει να έχετε κάνει προώθηση της πόρτας TCP στον host!!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr "AM-Baseboard"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr "Κωδικοί AR"
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr "Σχετικά με το Dolphin"
@@ -427,15 +455,11 @@ msgstr "Σχετικά με το Dolphin"
msgid "Acceleration"
msgstr "Επιτάχυνση"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr "Ακρίβεια:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr "Ακριβής VBeam εξομοίωση"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -449,12 +473,12 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, επιλέξτε EFB Αντίγραφα σε Υφή."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr "Ενέργεια"
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -469,7 +493,7 @@ msgstr ""
"Προβληματικός Κωδικός:\n"
"%s"
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
@@ -477,7 +501,7 @@ msgstr ""
"Σφάλμα Action Replay: Μη έγκυρο μέγεθος (%08x : διεύθυνση = %08x) στην "
"Προσθήκη Κωδικού (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
@@ -486,7 +510,7 @@ msgstr ""
"Σφάλμα Action Replay: Μη έγκυρο μέγεθος (%08x : διεύθυνση = %08x) σε Fill "
"και Slide (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
@@ -495,7 +519,7 @@ msgstr ""
"Σφάλμα Action Replay: Μη έγκυρο μέγεθος (%08x : διεύθυνση = %08x) σε Ram "
"Write και Fill (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
@@ -504,75 +528,78 @@ msgstr ""
"Σφάλμα Action Replay: Μη έγκυρο μέγεθος (%08x : διεύθυνση = %08x) σε Write "
"To Pointer (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr "Σφάλμα Action Replay: Μη έγκυρη τιμή (%08x) σε Memory Copy (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
"Master codes are not needed. Do not use master codes."
msgstr ""
+"Σφάλμα Action Replay: Οι λειτουργίες Master Code και Write To CCXXXXXX δεν "
+"έχουν υλοποιηθεί (%s)\n"
+"Δεν χρειάζονται master codes. Μην χρησιμοποιείτε master codes."
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr "Σφάλμα Action Replay: μη έγκυρη γραμμή κώδικα AR: %s"
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr "Action Replay: Conditional Code: Μη έγκυρο μέγεθος %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr "Action Replay: Μη έγκυρος Normal Code Type %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr "Action Replay: Normal Code %i: Μη έγκυρο subtype %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr "Action Replay: Normal Code 0: Μη έγκυρο Subtype %08x (%s)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr "Προσαρμογέας:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr "Προσθήκη"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
msgstr "Προσθήκη Κωδικού ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr "Προσθήκη Patch"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr "Προσθήκη νέου pane"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr "Προσθήκη..."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
msgstr "Διεύθυνση :"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -583,7 +610,7 @@ msgid ""
"NOTE: Check LogWindow/Console for the acquired values."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -594,90 +621,95 @@ msgid ""
"NOTE: Check LogWindow/Console for the acquired values."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr ""
"Ρύθμιση της απαιτούμενης πίεσης του αναλογικού χειριστηρίου για την "
"ενεργοποίηση των κουμπιών."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr "Για προχωρημένους"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr "Ρυθμίσεις για Προχωρημένους"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
msgstr "Όλα τα αρχεία GC/Wii (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
msgstr "Όλες οι εικόνες GC/Wii (gcm, iso, wbfs, ciso, gcz)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
msgstr "Όλα τα αρχεία Gamecube GCM (gcm)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr "Όλα τα Σημεία Αποθήκευσης(sav, s##)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr "Όλα τα αρχεία Wii ISO (iso)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr "Όλα τα συμπιεσμένα αρχεία GC/Wii ISO (gcz)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr "Όλα τα αρχεία (*.*)|*.*"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
+"Επιτρέπει την εναλλαγή ορισμένων επιλογών με τα πλήκτρα συντόμευσης 3 "
+"(Εσωτερική Ανάλυση), 4 (Αναλογία Οθόνης), 5 (EFB Αντίγραφα) και 6 (Ομίχλη) "
+"μέσα από το παράθυρο εξομοίωσης.\n"
+"\n"
+" Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr "Ανάλυση"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
-msgstr ""
+msgstr "Γωνεία"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
msgstr "Ανισοτροπικό Φιλτράρισμα:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
msgstr "Εξομάλυνση Ορίων:"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr "Ο Apploader έχει λάθος μέγεθος... είναι πράγματι apploader;"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr "Ο Apploader απέτυχε να φορτωθεί από αρχείο"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr "Apploader:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr "Εφαρμογή"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
@@ -687,11 +719,11 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, επιλέξτε (ανενεργό)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr "Αραβικά"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε το \"%s\";"
@@ -710,46 +742,50 @@ msgstr ""
"Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αρχείο; Θα εξαφανιστεί για "
"πάντα!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr "Arm JIT (πειραματικός)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr "Αναλογία Οθόνης:"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr "Τουλάχιστον ένα pane πρέπει να μένει ανοιχτό."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr "Ήχος"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr "Backend Ήχου:"
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr "AudioCommon: Σφάλμα ανοίγματος AO συσκευής.\n"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr "Αυτόματα"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
msgstr "Αυτόματα (Πολλαπλάσιο του 640x528)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
msgstr "Αυτόματα (Μέγεθος Παραθύρου)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr "Αυτόματη Προσαρμογή Μεγέθους Παραθύρου"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
@@ -760,160 +796,162 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr "B"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
msgstr "BP Καταχωρητές"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr "Πίσω"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
msgstr "Backend Ρυθμίσεις"
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr "Backend:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr "Χειρισμός με Ανεστίαστο Παραθ."
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr "Πίσω"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr "Μη Έγκυρη Κεφαλίδα Αρχείου"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr "Εικονίδιο"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
msgstr "Λεπτομέρειες Εικονιδίου:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr "Εικονίδιο:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr "Bar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr "Βασικές"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr "Βασικές Ρυθμίσεις"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr "Μπάσο"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr "Αποτυχία ελέγχου checksum για τον BAT"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr "Μπλοκ"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr "Μπλε"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr "Αριστερό Μπλε"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr "Δεξί Μπλε"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr "Βάση"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr "Δεσμευμένοι Χειρισμοί: %lu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
msgstr "Χαλασμένο"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr "Εύρεση"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr "Εύρεση φακέλου για προσθήκη"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr "Εύρεση φακέλου ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr "Εύρεση φακέλου προορισμού"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr "Buffer:"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr "Κουμπιά"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
msgstr ""
+"Προσπελάστε τον καθαρισμό της cache δεδομένων από την εντολή DCBZ. "
+"Προτείνεται συνήθως να αφήνεται αυτή η επιλογή απενεργοποιημένη."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr "C"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr "Stick Κάμερας "
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr "Stick Κάμερας"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr "CP reg"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr "Μηχανή Εξομοίωσης CPU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr "Cache Display Lists"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -928,24 +966,39 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr "Αποτυχία εύρεσης WiiMote με bd: %02x:%02x:%02x:%02x:%02x:%02x"
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr "Αδυναμία εύρεσης του WiiMote με handle σύνδεσης %02x"
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr "Αδυναμία ανάγνωσης από το DVD_Plugin - DVD-Interface: Κρίσιμο Σφάλμα"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr "Άκυρο"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr "Αποτυχία ανοίγματος %s"
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr ""
"Δεν μπορεί να γίνει κατάργηση καταχώρησης συμβάντων όταν ορισμένα εκκρεμούν."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
@@ -956,7 +1009,7 @@ msgstr ""
"%s\n"
"δεν είναι έγκυρο αρχείο κάρτας μνήμης gamecube"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
@@ -964,30 +1017,15 @@ msgstr ""
"Αδυναμία χρήσης αυτού του αρχείου σαν κάρτα μνήμης.\n"
"Προσπαθείτε να χρησιμοποιήσετε το ίδιο αρχείο σε δύο slot;"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr "Αποτυχία εύρεσης WiiMote με bd: %02x:%02x:%02x:%02x:%02x:%02x"
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr "Αδυναμία εύρεσης του WiiMote με handle σύνδεσης %02x"
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr "Αδυναμία ανάγνωσης από το DVD_Plugin - DVD-Interface: Κρίσιμο Σφάλμα"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
msgstr "Caps Lock"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr "Καταλανικά"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr "Κέντρο"
@@ -995,12 +1033,12 @@ msgstr "Κέντρο"
msgid "Change"
msgstr "Αλλαγή"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr "Αλλαγή &Δίσκου..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr "Αλλαγή Δίσκου"
@@ -1008,7 +1046,7 @@ msgstr "Αλλαγή Δίσκου"
msgid "Change Game"
msgstr "Αλλαγή Παιχνιδιού"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
@@ -1016,75 +1054,75 @@ msgstr ""
"Αλλαγή της γλώσσας περιβάλλοντος.\n"
"Απαιτεί επανεκκίνηση."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr "Αυτή η αλλαγή δε θα έχει επίπτωση όσο ο εξομοιωτής εκτελείται!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr "Συνομιλία"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr "Κωδικός Cheat"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
msgstr "Αναζήτηση Cheat"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
msgstr "Διαχείριση Cheat"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr "Έλεγχος Ακεραιότητας Κατάτμησης"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr "Έλεγχος ακεραιότητας..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
msgstr "Κινέζικα (Απλοποιημένα)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr "Κινέζικα (Παραδοσιακά)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr "Επιλέξτε έναν φάκελο ρίζας DVD:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr "Επιλέξτε έναν φάκελο ρίζας NAND:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr "Επιλέξτε ένα προεπιλεγμένο ISO:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr "Επιλέξτε έναν φάκελο για προσθήκη"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
msgstr "Επιλέξτε ένα αρχείο για άνοιγμα"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr "Επιλέξτε μια κάρτα μνήμης:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
@@ -1092,27 +1130,27 @@ msgstr ""
"Επιλέξτε ένα αρχείο για χρήση ως apploader: (έχει εφαρμογή σε δίσκους που "
"απαρτίζονται μόνο από φακέλους)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
msgstr "Επιλέξτε τον φάκελο προς αποσυμπίεση"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr "Κυκλικό Stick"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr "Κλασικό Χειριστήριο"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr "Καθάρισ."
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
@@ -1120,138 +1158,138 @@ msgstr ""
"Ο Client έχει αποσυνδεθεί ενώ το παιχνίδι εκτελείται!! Το NetPlay έχει "
"απενεργοποιηθεί. Θα πρέπει να σταματήσετε χειροκίνητα το παιχνίδι."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr "Κλείσιμο"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
msgstr "Ρυ&θμίσεις..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
msgstr "Πληροφορίες Κωδικού"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
msgstr "Κωδικός: "
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr "Εντολή"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr "Σχόλιο"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr "Σχόλιο:"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr "Συμπίεση ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
msgstr "Συμπίεση επιλεγμένων ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr "Συμπίεση ISO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr "Ρυθμίσεις"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr "Ρυθμίσεις"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr "Ρυθμίσεις Χειριστηρίου"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr "Ρυθμίσεις Χειριστηρίων"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr "Γενικές Ρυθμίσεις..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr "Επιβεβαίωση Αντικατάστασης Αρχείου"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
msgstr "Επιβεβαίωση Διακοπής"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr "Σύνδεση"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
msgstr "Σύνδεση Πληκτρολογίου USB"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr "Σύνδεση Wiimote %i"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr "Σύνδεση Wiimote 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr "Σύνδεση Wiimote 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr "Σύνδεση Wiimote 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr "Σύνδεση Wiimote 4"
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr "Γίνεται Σύνδεση..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr "Κονσόλα"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:71
msgid "Continuous Scanning"
-msgstr ""
+msgstr "Συνεχής Ανίχνευση"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr "Χειριστήριο"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr "Μετατροπή σε GCI"
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr "Η αντιγραφή απέτυχε"
@@ -1260,21 +1298,21 @@ msgstr "Η αντιγραφή απέτυχε"
msgid "Copy to Memcard %c"
msgstr "Αντιγραφή στην κάρτα μνήμης %c"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr "Πυρήνας"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr "Αποτυχία δημιουργίας %s"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr "Αποτυχία εκκίνησης backend %s"
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
@@ -1286,12 +1324,12 @@ msgstr ""
" Σημειώστε πως αυθεντικοί Gamecube και Wii δίσκοι δεν μπορούν να αναγνωστούν "
"από τους περισσότερους PC DVD οδηγούς."
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr "Αποτυχία αναγνώρισης του αρχείου ISO %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
msgstr "Αποτυχία αποθήκευσης του %s"
@@ -1306,24 +1344,32 @@ msgstr ""
"(ο καθορισμός των χειριστηρίων ενώ το παιχνίδι τρέχει δεν υποστηρίζεται προς "
"το παρόν)"
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
+"protected?\n"
+"\n"
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
msgstr ""
"Δεν μπόρεσε να γίνει εγγραφή των αρχείων της κάρτας μνήμης %s.\n"
"\n"
"Μήπως εκτελείτε το Dolphin από CD/DVD, ή το αποθηκευόμενο αρχείο έχει "
-"προστασία εγγραφής;"
+"προστασία εγγραφής;\n"
+"\n"
+"Λαμβάνετε αυτό το μήνυμα μετά από μετακίνηση του φακέλου του εξομοιωτή;\n"
+"Άμα ναι, τότε μπορεί να χρειαστεί να ορίσετε ξανά την θέση της κάρτας μνήμης "
+"στις ρυθμίσεις."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
msgstr "Αδυναμία εύρεσης εντολής ανοίγματος για την επέκταση 'ini'!"
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
@@ -1331,38 +1377,38 @@ msgstr ""
"Αδυναμία εκκίνησης του πυρήνα.\n"
"Ελέξγτε τις ρυθμίσεις σας."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr "Πλήθος:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr "Χώρα:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr "Δημιουργία Κωδικού AR"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr "Δημιουργία νέας οπτικής"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
msgstr "Δημιουργός: "
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr "Κρίσιμο"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
msgstr "Κόψιμο"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
@@ -1372,141 +1418,141 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
msgstr "Crossfade"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
msgstr "Ο τρέχων φάκελος άλλαξε από %s σε %s μετά από τον wxFileSelector!"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
msgid "Custom Projection Hack"
msgstr "Προσαρμοζόμενο Projection Hack"
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
msgid "Custom Projection Hack Settings"
msgstr "Ρυθμίσεις Προσαρμοζόμενου Projection Hack"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
-msgstr ""
+msgstr "Προσαρμόστε ορισμένες παραμέτρους Ορθογραφικής Προβολής."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr "Τσέχικα"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr "D"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr "Ψηφιακό Pad"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr "Ήχος (DSP)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr "Μηχανή Εξομοίωσης DSP"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr "DSP HLE εξομοίωση (γρήγορη)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr "DSP LLE interpreter (αργή)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr "DSP LLE σε Ξεχωριστό Νήμα"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr "DSP LLE recompiler"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr "DSP σε Ξεχωριστό Νήμα"
+
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP settings"
msgstr "Ρυθμίσεις ήχου (DSP)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr "Ρίζα DVD:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr "DVDLowRead - Σφάλμα Τερματισμού: αποτυχία ανάγνωσης από τον τομέα"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr ""
"DVDLowUnencryptedRead - Σφάλμα Τερματισμού: αποτυχία ανάγνωσης από τον τομέα"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr "Μέγεθος Δεδομένων"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr "Ημερομηνία:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr "Αρχεία Datel MaxDrive/Pro(*.sav)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr "Νεκρή Ζώνη"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr "Debug"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr "Debugging"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
msgstr "Δεκαδικός"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr "Αποσυμπίεση ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr "Αποσυμπίεση επιλεγμένων ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr "Γίνεται αποσυμπίεση ISO"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr "Προεπιλ."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr "Προεπιλεγμένο ISO:"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr "Προεπιλεγμένη γραμματοσειρά"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
msgstr "Διαγραφή"
@@ -1514,21 +1560,21 @@ msgstr "Διαγραφή"
msgid "Delete Save"
msgstr "Διαγραφή Αποθήκευσης"
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr "Διαγραφή του υπάρχοντος αρχείου '%s';"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr "Περιγραφή"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr "Ανίχνευση"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
@@ -1536,29 +1582,29 @@ msgstr ""
"Εντοπίστηκε προσπάθεια ανάγνωσης περισσότερων δεδομένων από το DVD από όσα "
"χωράνε μέσα στο buffer. Clamp."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr "Συσκευή"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr "Ρυθμίσεις Συσκευής"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr "Dial"
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr "Direct3D11"
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr "Direct3D9"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
@@ -1566,16 +1612,20 @@ msgstr ""
"Το checksum του Καταλόγου απέτυχε\n"
" καθώς και το checksum του εφεδρικού Καταλόγου απέτυχε"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr "Απενεργοποίηση"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
msgid "Disable Fog"
msgstr "Απενεργοποίηση Ομίχλης"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1589,7 +1639,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το επιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1605,20 +1655,33 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#, fuzzy
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Παράλειψη του destination alpha pass που χρησιμοποιείται από πολλά παιχνίδια "
+"σε διάφορα γραφικά εφέ.\n"
+"\n"
+"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr "Δίσκος"
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr "Σφάλμα Ανάγνωσης Δίσκου"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr "Οθόνη"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
@@ -1628,49 +1691,49 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
msgstr "Divide"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr "Θέλετε να σταματήσετε την τρέχουσα εξομοίωση;"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
-msgstr ""
+msgstr "Dolby Pro Logic II αποκωδικοποιητής"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr "Dolphin"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr "Ρυθμίσεις Γραφικών Dolphin %s"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
msgstr "Ιστοσελίδα του &Dolphin"
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
msgstr "Ρυθμίσεις Dolphin"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:183
msgid "Dolphin Emulated Wiimote Configuration"
-msgstr "Ρυθμίσεις Εξοιμοιωμένου Dolphin Wiimote"
+msgstr "Ρυθμίσεις Εξομοιωμένου Dolphin Wiimote"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
msgstr "Dolphin FIFO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr "Ρυθμίσεις Dolphin GCPad"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr "Dolphin TAS Ταινίες (*.dtm)"
@@ -1678,11 +1741,11 @@ msgstr "Dolphin TAS Ταινίες (*.dtm)"
msgid "Dolphin Wiimote Configuration"
msgstr "Ρυθμίσεις Dolphin Wiimote"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr "Dolphin στο &Google Code"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
@@ -1690,7 +1753,7 @@ msgstr ""
"Το Dolphin δεν μπόρεσε να βρει GC/Wii ISO. Κάντε διπλό κλίκ εδώ για εύρεση "
"αρχείων..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
@@ -1698,50 +1761,59 @@ msgstr ""
"Το Dolphin είναι ρυθμισμένο να αποκρύπτει όλα τα παιχνίδια. Κάντε διπλό κλίκ "
"εδώ για να εμφανιστούν όλα τα παιχνίδια..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
-msgstr ""
+msgstr "Το Dolphin δεν μπόρεσε να ολοκληρώσει την ζητούμενη ενέργεια."
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#, fuzzy
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+"Ενεργοποιεί τη γρήγορη πρόσβαση δίσκου. Απαραίτητο για μερικά παιχνίδια. "
+"(ΕΝΕΡΓΟ = Γρήγορο, ΑΝΕΝΕΡΓΟ = Συμβατό)"
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
msgstr "Κάτω"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
msgstr "Μεταφόρτωση Κωδικών (WiiRD Database)"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr "Μεταφορτώθηκαν %lu κωδικοί. (προστέθηκαν %lu)"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr "Τύμπανα"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
msgstr "Dummy"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr "Εξαγωγή Ήχου"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr "Εξαγωγή EFB Target"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr "Εξαγωγή Καρέ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr "Εξαγωγή Υφών"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
@@ -1752,7 +1824,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
@@ -1763,7 +1835,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
@@ -1773,21 +1845,21 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr "Ολλανδικά"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr "Έ&ξοδος"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr "EFB Αντίγραφα"
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1800,52 +1872,52 @@ msgstr ""
"Dolphin σας, πιθανότατα απαιτείται μία επανεκκίνηση ώστε τα Windows να δούνε "
"τους νέους οδηγούς."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr "ΕΥΡΩΠΗ"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
msgstr "Ενημερώσεις Μνήμης Νωρίς"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr "Επεξεργασία"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr "Επεξεργασία Κωδικού ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr "Επεξεργασία Ρυθμίσεων"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr "Επεξεργασία Patch"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr "Επεξεργασία τρέχουσας οπτικής"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr "Επεξεργασία..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr "Εφέ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr "Embedded Frame Buffer"
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr "Το νήμα εξομοίωσης εκτελείται ήδη"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1860,7 +1932,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, επιλέξτε εικονική XFB εξομοίωση."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1880,7 +1952,7 @@ msgstr ""
msgid "Emulated Wiimote"
msgstr "Εξομοιωμένο Wiimote"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
msgstr "Κατάσταση Λειτουργίας:"
@@ -1888,7 +1960,7 @@ msgstr "Κατάσταση Λειτουργίας:"
msgid "Enable"
msgstr "Ενεργοποίηση"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1904,72 +1976,71 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr "Ενεργοποίηση Καταγραφής AR"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr "Ενεργοποίηση Block Merging"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr "Ενεργοποίηση Bounding Box Υπολογισμών"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr "Ενεργοποίηση Cache"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr "Ενεργοποίηση Cheat"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr "Ενεργοποίηση Διπλού Πυρήνα"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr "Ενεργοποίηση Διπλού Πυρήνα (επιτάχυνση)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
msgstr "Ενεργοποίηση Συντομεύσεων"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr "Ενεργοποίηση Idle Skipping"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
msgstr "Ενεργοποίηση Idle Skipping (επιτάχυνση)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr "Ενεργοποίηση MMU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
msgstr "Ενεργοποίηση Προοδευτικής Σάρωσης"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
msgstr "Ενεργοποίηση Προφύλαξης Οθόνης"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:75
-#, fuzzy
msgid "Enable Speaker Data"
-msgstr "Ενεργοποίηση σελίδων"
+msgstr "Ενεργοποίηση Δεδομένων Ηχείου"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr "Ενεργοποίηση Ευρείας Οθόνης"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
msgstr "Ενεργοποίηση Wireframe"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -1984,7 +2055,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, επιλέξτε 1x."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
@@ -1996,7 +2067,7 @@ msgstr ""
msgid "Enable pages"
msgstr "Ενεργοποίηση σελίδων"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -2009,7 +2080,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -2021,7 +2092,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
@@ -2029,28 +2100,35 @@ msgstr ""
"Ενεργοποιήστε το για να επιταχύνετε το The Legend of Zelda: Twilight "
"Princess. Απενεργοποιήστε το για τα υπόλοιπα παιχνίδια."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr "Ενεργοποιεί το Προσαρμοζόμενο Projection Hack"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
msgstr ""
+"Ενεργοποιεί την Dolby Pro Logic II εξομοίωση χρησιμοποιώντας 5.1 surround. "
+"Δεν διατίθεται για OSX."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr ""
+"Ενεργοποιεί την Dolby Pro Logic II εξομοίωση χρησιμοποιώντας 5.1 surround. "
+"Μόνο για OpenAL backend."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
msgstr ""
+"Ενεργοποιεί την Dolby Pro Logic II εξομοίωση χρησιμοποιώντας 5.1 surround. "
+"Μόνο για OpenAL backend. Μπορεί να χρειαστεί να μετονομάσετε το soft_oal.dll "
+"σε OpenAL32.dll για να λειτουργήσει."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
@@ -2062,7 +2140,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
@@ -2070,7 +2148,7 @@ msgstr ""
"Ενεργοποιεί τη Μονάδα Διαχείρισης Μνήμης, απαραίτητο για μερικά παιχνίδια. "
"(Ενεργό = Συμβατό, Ανενεργό = Γρήγορο)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
@@ -2080,52 +2158,52 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr "Τέλος"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr "Αγγλικά"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
msgstr "Βελτιώσεις"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr "Εισάγετε όνομα για τη νέα οπτική:"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr "Εγγραφή %d/%d"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr "Εγγραφή 1/%d"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr "Ίσο"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr "Σφάλμα"
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr ""
"Αποτυχία φόρτωσης της επιλεγμένης γλώσσας. Επαναφορά στην προεπιλογή "
"συστήματος."
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
@@ -2134,7 +2212,7 @@ msgstr ""
"Σφάλμα: Μετά από \"%s\", βρέθηκε %d (0x%X) αντί του σημείου αποθήκευσης %d "
"(0x%X). Ματαίωση φόρτωσης σημείου αποθήκευσης..."
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
@@ -2144,39 +2222,39 @@ msgstr ""
"φορτωμένες. Τα παιχνίδια μπορεί να μη δείχνουν τις γραμματοσειρές σωστά, ή "
"να κρασάρουν."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr "Escape"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr "Euphoria"
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr ""
"Χειριστής εξαιρέσεων - πρόσβαση κάτω από την περιοχή μνήμης. %08llx%08llx"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr "Εκτέλεση"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr "Αποτυχία Εξαγωγής"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr "Εξαγωγή Αρχείου"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr "Εξαγωγή Εγγραφής"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr "Εξαγωγή Εγγραφής..."
@@ -2184,7 +2262,7 @@ msgstr "Εξαγωγή Εγγραφής..."
msgid "Export Save"
msgstr "Εξαγωγή Αποθήκευσης"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr "Εξαγωγή Αποθήκευσης Wii (Πειραματικό)"
@@ -2192,100 +2270,100 @@ msgstr "Εξαγωγή Αποθήκευσης Wii (Πειραματικό)"
msgid "Export all saves"
msgstr "Εξαγωγή όλων των αποθηκεύσεων"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr "Αποτυχία εξαγωγής, προσπάθεια ξανά;"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr "Εξαγωγή αποθήκευσης ως..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr "Επέκταση"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr "Εξωτερικό Frame Buffer"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr "Επιπλέον Παράμετρος"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
msgstr "Η Επιπλέον Παράμετρος είναι χρήσιμη μόνο στο ''Metroid: Other M''."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr "Εξαγωγή όλων των αρχείων..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr "Εξαγωγή Apploader..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr "Εξαγωγή DOL..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr "Εξαγωγή Φακέλου..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr "Εξαγωγή Αρχείου..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr "Εξαγωγή Κατάτμησης..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr "Γίνεται εξαγωγή %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
msgstr "Γίνεται εξαγωγή όλων των αρχείων"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
msgstr "Γίνεται εξαγωγή φακέλου"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr "Γίνεται εξαγωγή..."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr "FIFO Byte"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr "Αναπαραγωγή FIFO"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr "ΓΑΛΛΙΑ"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr "Μέγεθος FST:"
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr "Αποτυχία σύνδεσης!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr "Αποτυχία ακρόασης!!"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
msgstr "Αποτυχία μεταφόρτωσης κωδικών."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
msgstr "Αποτυχία εξαγωγής στο %s!"
@@ -2313,26 +2391,30 @@ msgstr ""
"dumps.\n"
"(Επιλέξτε την από την καρτέλα \"Ήχος\" του παραθύρου των γενικών ρυθμίσεων.)"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr "Αποτυχία φόρτωσης bthprops.cpl"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr "Αποτυχία φόρτωσης hid.dll"
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
-msgstr ""
+msgstr "Αποτυχία ανάγνωσης %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr "Αποτυχία ανάγνωσης banner.bin"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr "Αποτυχία ανάγνωσης της κεφαλίδας bk"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
@@ -2343,7 +2425,7 @@ msgstr ""
"Μπορεί να έχουν περικοπεί τα δεδομένα στην κάρτα μνήμης\n"
"Θέση αρχείου:%llx"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
@@ -2351,7 +2433,7 @@ msgstr ""
"Αποτυχία σωστής ανάγνωσης του αντιγράφου ασφαλείας του BAT\n"
"(0x8000-0x9FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
@@ -2359,12 +2441,17 @@ msgstr ""
"Αποτυχία σωστής ανάγνωσης του BAT\n"
"(0x6000-0x7FFF)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr "Αποτυχία ανάγνωσης δεδομένων από το αρχείο %d"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr "Αποτυχία ανάγνωσης δεδομένων από το αρχείο: %s"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
@@ -2372,7 +2459,7 @@ msgstr ""
"Αποτυχία σωστής ανάγνωσης του αντιγράφου ασφαλείας των φακέλων\n"
"(0x4000-0x5FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
@@ -2380,7 +2467,11 @@ msgstr ""
"Αποτυχία σωστής ανάγνωσης των φακέλων\n"
"(0x2000-0x3FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr "Αποτυχία ανάγνωσης κεφαλίδας"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
@@ -2388,41 +2479,41 @@ msgstr ""
"Αποτυχία σωστής ανάγνωσης της κεφαλίδας\n"
"(0x0000-0x1FFF)"
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr "Αποτυχία ανάγνωσης μοναδικού ID από την εικόνα δίσκου"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr "Αποτυχία εγγραφής του BT.DINF στο SYSCONF"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr "Αποτυχία εγγραφής του bkhdr"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr "Αποτυχία εγγραφής της κεφαλίδας για το %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr "Αποτυχία εγγραφής της κεφαλίδας για το αρχείο %d"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
msgstr "Περσικά"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr "Γρήγορη"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr "Γρήγορη έκδοση του MMU. Δε δουλεύει για όλα τα παιχνίδια."
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
@@ -2430,23 +2521,23 @@ msgstr ""
"Ανεπανόρθωτος αποσυγχρονισμός. Ακύρωση αναπαραγωγής. (Σφάλμα σε "
"PlayWiimote: %u != %u, byte %u.)%s"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr "Αναπαραγωγή Fifo"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
msgstr "Πληροφορίες Αρχείου"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr "Το αρχείο δεν περιείχε κωδικούς."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr "Το αρχείο μετατράπηκε σε .gci"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
@@ -2454,7 +2545,7 @@ msgstr ""
"Το αρχείο απέτυχε στο άνοιγμα\n"
"ή δεν έχει έγκυρη επέκταση"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
@@ -2463,36 +2554,36 @@ msgstr ""
"Το αρχείο έχει επέκταση \"%s\"\n"
"έγκυρες επεκτάσεις είναι (.raw/.gcp)"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr "Το αρχείο δεν αναγνωρίζεται σαν κάρτα μνήμης"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr "Το αρχείο δεν είναι συμπιεσμένο"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr "FileIO: Άγνωστη λειτουργία ανοίγματος : 0x%02x"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr "Αρχεία δίσκου"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
msgstr "Ο τύπος αρχείου 'ini' είναι άγνωστος! Δε θα γίνει άνοιγμα!"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr "Εύρεση επομένου"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr "Εύρεση προηγούμενου"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr "Πρώτο Μπλοκ"
@@ -2500,23 +2591,23 @@ msgstr "Πρώτο Μπλοκ"
msgid "Fix Checksums"
msgstr "Επιδιόρθωση Checksum"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr "Επιβολή 16:9"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr "Επιβολή 4:3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
msgstr "Επιβολή της Κονσόλας ως NTSC-J"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
msgstr "Επιβολή Φιλτραρίσματος Υφών"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2529,7 +2620,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2541,7 +2632,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
@@ -2552,7 +2643,7 @@ msgstr ""
"Άμα αφεθεί αποεπιλεγμένο, το dolphin προεπιλέγει τη NTSC-U και ενεργοποιεί "
"αυτόματα αυτήν την ρύθμιση όταν παίζονται Ιαπωνικά παιχνίδια."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
@@ -2560,148 +2651,147 @@ msgstr ""
"Διαμόρφωση ως ascii (NTSC\\PAL)?\n"
"Επιλέξτε όχι για sjis (NTSC-J)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr "Μπροστά"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr "Βρέθηκαν %d αποτελέσματα για '"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr "Καρέ"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
msgstr "Καρέ"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr "Προώθηση ανά Καρέ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr "FFV1 Για Τα Εξαγώμενα Καρέ"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr "Πληροφορίες Καρέ"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr "Εύρος Καρέ"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr "Παράλειψη Κ&αρέ"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr "Περιορισμός Καρέ:"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr "Καρέ Προς Εγγραφή"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr "Ελεύθερη Ματιά"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr "Γαλλικά"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr "Frets"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr "Από"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr "Πλήρης Οθόνη"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr "Ανάλυση Πλήρους Οθόνης:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr "Αρχεία GCI(*.gci)"
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr "Ρυθμίσεις Μικροφώνου GC"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr "GCPad"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr "GX_CMD_INVL_VC"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
msgstr "ID Παιχνιδιού:"
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr "Το παιχνίδι εκτελείται ήδη!"
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr "Το παιχνίδι δεν εκτελείται!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
-#, fuzzy
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
-msgstr "Το παιχνίδι δε βρέθηκε!!"
+msgstr "Το παιχνίδι δεν βρέθηκε!"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr "Ρυθμίσεις Συγκεκριμένου Παιχνιδιού"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr "Ρυθμίσεις Παιχνιδιού"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr "GameCube αρχεία αποθήκευσης(*.gci;*.gcs;*.sav)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr "Gamecube"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr "Ρυθμίσεις Gamecube &Pad"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
msgstr "Κάρτες Μνήμης Gamecube (*.raw,*.gcp)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr "Ρυθμίσεις Χειριστηρίου Gamecube"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
msgstr "Κωδικοί Gecko"
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2714,10 +2804,10 @@ msgstr ""
"Δοκιμάστε να χρησιμοποιήσετε τον εγγενή διαχειριστή κώδικα τοποθετώντας το "
"codehandler.bin αρχείο στον φάκελο Sys και επανεκκινώντας το Dolphin.)"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr "Γενικά"
@@ -2725,32 +2815,32 @@ msgstr "Γενικά"
msgid "General Settings"
msgstr "Γενικές Ρυθμίσεις"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr "Γερμανικά"
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr ""
"GetARCode: Ο δείκτης είναι μεγαλύτερος από το μέγεθος %lu της λίστας των "
"κωδικών ar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr "Γραφικά"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
msgstr "Ρυθμίσεις Γραφικών"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr "Μεγαλύτερο από"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2768,51 +2858,77 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το επιλεγμένο."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr "Ελληνικά"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr "Πράσινο"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr "Αριστερό Πράσινο"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr "Δεξί Πράσινο"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr "Κιθάρα"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr "Γίνεται κλήση του HCI_CMD_INQUIRY, παρακαλώ αναφέρετε!"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr "Χακαρισμένο Ανέβασμα Buffer"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr "Hacks"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr "Αποτυχία ελέγχου κεφαλίδας"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr "Εβραϊκά"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr "Ύψος"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr "Βοήθεια"
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+"Χαίρετε,\n"
+"\n"
+"το Dolphin απαιτεί OS X 10.7 ή νεώτερο.\n"
+"Δυστυχώς χρησιμοποιείτε μια παλιά έκδοση του OS X.\n"
+"Η τελευταία έκδοση του Dolphin που υποστηρίζει το OS X 10.6 είναι το Dolphin "
+"3.5.\n"
+"Παρακαλώ κάντε αναβάθμιση σε 10.7 ή νεώτερο για να μπορείτε να "
+"χρησιμοποιήσετε την νεώτερη έκδοση του Dolphin.\n"
+"\n"
+"Αντίο!\n"
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2828,15 +2944,15 @@ msgstr ""
"\n"
"Αντίο!\n"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr "Απόκρυψη"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
msgstr "Απόκρυψη Δείκτη Ποντικιού"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
@@ -2847,26 +2963,26 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το επιλεγμένο."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
msgstr "Home"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr "Host"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
msgstr "Ρυθμίσεις Πλήκτρων Συντόμευσης"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
msgstr "Πλήκτρα Συντόμευσης"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr "Ουγγρικά"
@@ -2874,35 +2990,35 @@ msgstr "Ουγγρικά"
msgid "Hybrid Wiimote"
msgstr "Υβριδικό Wiimote"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr ""
"IOCTL_ES_GETVIEWS: Απόπειρα ανάγνωσης δεδομένων από ένα άγνωστο εισιτήριο: "
"%08x/%08x"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-"IOCTL_ES_LAUNCH: Το παιχνίδι προσπάθησε να επαναφορτώσει ios ή έναν τίτλο "
-"που δεν είναι διαθέσιμος στο nand dump\n"
+"IOCTL_ES_LAUNCH: Το παιχνίδι προσπάθησε να επαναφορτώσει ένα IOS ή έναν "
+"τίτλο που δεν είναι διαθέσιμος στο NAND dump σας.\n"
"TitleID %016llx.\n"
"Το Dolphin πιθανότατα θα κολλήσει τώρα."
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
msgstr "IOCTL_ES_READCONTENT - μη έγκυρος προορισμός"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
msgstr "Ρυθμίσεις IPL"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr "IR"
@@ -2914,23 +3030,23 @@ msgstr "Δείκτης IR"
msgid "IR Sensitivity:"
msgstr "Ευαισθησία IR:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
msgstr "Λεπτομέρειες ISO"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
msgstr "Φάκελοι ISO"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr "ΙΤΑΛΙΑ"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr "Εικονίδιο"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
@@ -2938,29 +3054,11 @@ msgstr ""
"Εάν επιλεχθεί, οι καταχωρητές bounding box θα ανανεώνονται. Χρησιμοποιούνται "
"από τα Paper Mario παιχνίδια."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-"Αν τα FPS διακυμαίνονται, αυτή η επιλογή μπορείο να βοηθήσει. (Ενεργό = "
-"Συμβατό, Ανενεργό = Γρήγορο)"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-"Αν θέσετε τιμή υψηλότερη από την πλήρη ταχύτητα του παιχνιδιού (NTSC:60, "
-"PAL:50), χρησιμοποιήστε τον ήχο για να κάνετε Throttle μέσω DSP (μπορεί να "
-"διορθώσει ορισμένα κλικαρίσματα στον ήχο άλλα και να προκαλέσει συνεχές "
-"θόρυβο αναλόγα με το παιχνίδι)."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr "Αγνόηση Αλλαγών Format"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -2974,7 +3072,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το επιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -2993,11 +3091,11 @@ msgstr ""
msgid "Import Save"
msgstr "Εισαγωγή Αποθήκευσης"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr "Αποτυχία εισαγωγής, δοκιμή ξανά;"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
@@ -3005,11 +3103,11 @@ msgstr ""
"Το αρχείο εισαγωγής έχει επέκταση gsc\n"
"αλλά δεν έχει σωστή κεφαλίδα"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr "Το αρχείο εισαγωγής έχει μη έγκυρο μήκος"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
@@ -3017,19 +3115,7 @@ msgstr ""
"Το εισαγώμενο αρχείο έχει sav επέκταση\n"
"άλλα δεν έχει σωστή κεφαλίδα."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"Βελτιώνει τις επιδόσεις αλλά προκαλεί προβλήματα σε παιχνίδια που βασίζονται "
-"στη σωστή εξομοίωση της ομίχλης.\n"
-"\n"
-"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
msgstr "Εντός Παιχνιδιού"
@@ -3037,67 +3123,67 @@ msgstr "Εντός Παιχνιδιού"
msgid "In-Game"
msgstr "Εντός Παιχνιδιού"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr "Πληροφορίες"
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
msgstr "Πληροφορίες"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr "Είσοδος"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr "Εισάγετε"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr "Εισάγετε Κωδικοποιημένο ή μη Κωδικό εδώ..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
msgstr "Εισαγωγή Κάρτας SD"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr "Εισάγετε όνομα εδώ..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
msgstr "Εγκατάσταση WAD"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr "Εγκατάσταση στο Μενού Wii"
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
"InstallExceptionHandler καλέστηκε, αλλά αυτή η πλατφόρμα δεν το υποστηρίζει "
"ακόμα."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
msgstr "Γίνεται εγκατάσταση WAD..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr "Σφάλμα Ελέγχου Ακεραιότητας"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr "Ο έλεγχος ακεραιότητας ολοκληρώθηκε."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr "Ο έλεγχος ακεραιότητας ολοκληρώθηκε. Δε βρέθηκαν σφάλματα."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
@@ -3106,19 +3192,19 @@ msgstr ""
"Ο έλεγχος ακεραιότητας για την κατάτμηση %d απέτυχε. Το αρχείο έχει "
"πιθανότατα αλλοιωθεί ή έχει γίνει patched με λάθος τρόπο."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
msgstr "Διεπαφή"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
msgstr "Ρυθμίσεις Διεπαφής"
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr "Εσωτερικό Σφάλμα LZO - αποτυχία συμπίεσης"
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
@@ -3127,41 +3213,45 @@ msgstr ""
"Εσωτερικό Σφάλμα LZO - αποτυχία αποσυμπίεσης (%d) (%ld, %ld) \n"
"Δοκιμάστε να φορτώσετε ξανά το σημείο αποθήκευσης"
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr "Εσωτερικό Σφάλμα LZO - αποτυχία lzo_init()"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr "Εσωτερική Ανάλυση:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr "Interpreter (ΠΟΛΥ αργός)"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr "Εισαγωγή"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr "Μη έγκυρο μέγεθος (%x) ή μαγική λέξη (%x)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
msgstr "Μη έγκυρη τιμή!"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr "Μη έγκυρο bat.map ή εγγραφή φακέλου"
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr "Μη έγκυρος τύπος συμβάντος %i"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr "Μη έγκυρο αρχείο"
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -3172,46 +3262,54 @@ msgstr ""
"%s\n"
" Ίσως χρειαστεί να ξαναεξάγετε την εικόνα αυτού του παιχνιδιού από τον δίσκο."
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr "Μη έγκυρο αρχείο εγγραφής"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr "Μη έγκυρες παράμετροι αναζήτησης (δεν επιλέχθηκε αντικείμενο)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr "Μη έγκυρο string αναζήτησης (δεν μπορεί να γίνει μετατροπή σε νούμερο)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr "Μη έγκυρο string αναζήτησης (μόνο ζυγά μήκη string υποστηρίζονται)"
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr "Μη έγκυρο κατάσταση"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr "Ιταλικά"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr "ΙΑΠΩΝΙΑ"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr "JIT Recompiler (προτείνεται)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr "JITIL πειραματικός recompiler"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr "Ιαπωνικά"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr "ΚΟΡΕΑ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
@@ -3221,62 +3319,62 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
-msgstr "Διατήρηση παραθύρου στην κορυφή."
+msgstr "Διατήρηση Παραθύρου στην Κορυφή"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr "Πλήκτρο"
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr "Κορεάτικα"
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr "L"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
msgstr "L Button"
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr "L-Αναλογική"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr "Γλώσσα:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr "Τελευταίο Επαναγραμμένο Σημείο Αποθ."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr "Τελευταίο Αποθηκευμένο Σημείο Αποθ."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
-msgstr ""
+msgstr "Χρονοκαθυστέρηση: "
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr "Αριστερά"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr "Αριστερό Stick"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
@@ -3284,7 +3382,7 @@ msgstr ""
"Αριστερό κλίκ για εντοπισμό των πλήκτρων συντόμευσης.\n"
"Πατήστε το πλήκτρο διαστήματος για καθαρισμό."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
@@ -3294,7 +3392,7 @@ msgstr ""
"Μεσαίο κλικ για καθάρισμα.\n"
"Δεξί κλικ για περισσότερες επιλογές."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
@@ -3302,76 +3400,76 @@ msgstr ""
"Αριστερό/Δεξί κλικ για περισσότερες επιλογές.\n"
"Μεσαίο κλικ για καθάρισμα."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr "Μικρότερο από"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr "Περιορισμός με βάση τα Καρέ"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr "Φόρτωσ."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr "Φόρτωση Τροποποιημένων Υφών"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr "Φόρτωση Σημείου Αποθήκευσης 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr "Φόρτωση Σημείου Αποθήκευσης 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr "Φόρτωση Σημείου Αποθήκευσης 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr "Φόρτωση Σημείου Αποθήκευσης 4"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr "Φόρτωση Σημείου Αποθήκευσης 5"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr "Φόρτωση Σημείου Αποθήκευσης 6"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr "Φόρτωση Σημείου Αποθήκευσης 7"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr "Φόρτωση Σημείου Αποθήκευσης 8"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr "Φόρτωση Σημείου Αποθήκευσης..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
msgstr "Φόρτωση Μενού Συστήματος Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
msgstr "Φόρτωση Μενού Συστήματος Wii %d%c"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
@@ -3381,7 +3479,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr "Φόρτωση προεπιλεγμένων τιμών από διαθέσιμα πρότυπα hack."
@@ -3389,23 +3487,23 @@ msgstr "Φόρτωση προεπιλεγμένων τιμών από διαθέ
msgid "Local"
msgstr "Τοπικό"
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr "Καταγραφή"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr "Ρυθμίσεις Καταγραφής"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr "Καταγραφή FPS σε αρχείο"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr "Τύποι Καταγραφής"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3418,24 +3516,24 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr "Έξοδοι Καταγραφής"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr "Καταγραφή"
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr "Χάθηκε η σύνδεση με τον διακομιστή!"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr "M Button"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
@@ -3444,51 +3542,66 @@ msgstr ""
"Ασυμφωνία MD5\n"
" %016llx%016llx != %016llx%016llx"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr "MMU Speed Hack"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr "Αρχεία MadCatz Gameshark (*.gcs)"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr "Κύριο Stick"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
msgstr "ID Δημιουργού:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr "Δημιουργός:"
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Κάνει τα μακρινά αντικείμενα να είναι περισσότερο ορατά αφαιρώντας την "
+"ομίχλη, ανεβάζοντας την συνολική λεπτομέρεια.\n"
+"Η απενεργοποίηση της ομίχλης μπορεί να χαλάσει ορισμένα παιχνίδια που "
+"βασίζονται σε σωστή εξομοίωση της ομίχλης.\n"
+"\n"
+"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr "Μέγιστη"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
msgstr "Η κάρτα μνήμης έχει ήδη αποθηκευμένα δεδομένα για τον τίτλο"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr "Η κάρτα μνήμης είναι ήδη ανοιχτή"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr "Memory Byte"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
msgstr "Κάρτα Μνήμης"
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
@@ -3496,7 +3609,7 @@ msgstr ""
"Διαχειριστής Καρτών Μνήμης ΠΡΟΕΙΔΟΠΟΙΗΣΗ-Κάντε αντίγραφα ασφαλείας πριν την "
"χρήση, αν και διορθωμένος μπορεί να χαλάσει πράγματα!"
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3513,17 +3626,17 @@ msgstr ""
"%s\n"
"Θέλετε να αντιγράψετε το παλιό αρχείο σε αυτή την νέα τοποθεσία;\n"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr ""
"Το μέγεθος του αρχείου της κάρτας μνήμης δεν ταιριάζει με το μέγεθος της "
"κεφαλίδας."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr "Μενού"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr "Μικρόφωνο"
@@ -3532,20 +3645,20 @@ msgstr "Μικρόφωνο"
msgid "Min"
msgstr "Ελάχιστη"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr "Διάφορα"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr "Διάφορες Ρυθμίσεις"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr "Modifier"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3558,20 +3671,20 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr "Ισοπλατής γραμματοσειρά"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr "Motion Plus"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr "Μοτέρ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3588,226 +3701,239 @@ msgstr ""
"\n"
"\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
msgstr "Multiply"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
msgstr "NOP"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr ""
"ΣΗΜΕΙΩΣΗ: Το μέγεθος της ροής δεν ταιριάζει με το πραγματικό μήκος των "
"δεδομένων.\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
msgstr "NP Add"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr "NP Begin"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
msgstr "NP Decimal"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
msgstr "NP Delete"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
msgid "NP Divide"
msgstr "NP Divide"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
msgstr "NP Down"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
msgstr "NP End"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
msgstr "NP Enter"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
msgstr "NP Equal"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr "NP Home"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
msgstr "NP Insert"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
msgid "NP Left"
msgstr "NP Left"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
msgid "NP Multiply"
msgstr "NP Multiply"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
msgid "NP Page Down"
msgstr "NP Page Down"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
msgid "NP Page Up"
msgstr "NP Page Up"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
msgid "NP Right"
msgstr "NP Right"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
msgid "NP Separator"
msgstr "NP Separator"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
msgstr "NP Space"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
msgid "NP Subtract"
msgstr "NP Subtract"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
msgid "NP Tab"
msgstr "NP Tab"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
msgid "NP Up"
msgstr "NP Up"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr "Όνομα:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr "Όνομα: "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr "Αρχεία Native GCI (*.gci)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
msgstr "Νέα Ανίχνευση"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr "Επόμενη Σελίδα"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
msgstr "Επόμενη Ανίχνευση"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr "Ψευδώνυμο :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr "Καμία Χώρα (SDK)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr "Δε βρέθηκαν ISO ή WAD"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
+msgstr "Καμία έξοδος ήχου"
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
msgid "No banner file found for title %s"
msgstr "Δε βρέθηκε αρχείο εικονιδίου για τον τίτλο %s"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
msgid "No description available"
msgstr "Μη διαθέσιμη περιγραφή"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
msgid "No docking"
msgstr "Απενεργοποίηση του docking"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
msgid "No file loaded"
msgstr "Δεν φορτώθηκε αρχείο"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
msgid "No free dir index entries"
msgstr "Δεν υπάρχουν ελεύθερες εγγραφές φακέλων"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
msgid "No recorded file"
msgstr "Κανένα εγγεγραμένο αρχείο"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
#, c-format
msgid "No save folder found for title %s"
msgstr "Δε βρέθηκε φάκελος αποθήκευσης για τον τίτλο %s"
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr "Καμία"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr "Νορβηγικά Bokmaal"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr "Όχι ίσο"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr "Μη Ορισμένο"
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr ""
+"Δεν είναι σημείο αποθήκευσης wii ή αποτυχία ανάγνωσης κεφαλίδας αρχείου "
+"μεγέθους %x"
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr "Μη Συνδεδεμένο"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr "Σημειώσεις"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr "Σημειώσεις: "
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr "Σημείωση"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr "Num Lock"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
msgstr "Αριθμός Κωδικών: "
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr "Nunchuk"
@@ -3816,97 +3942,98 @@ msgstr "Nunchuk"
msgid "Nunchuk Acceleration"
msgstr "Επιτάχυνση Nunchuk"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr "Αντικείμενο"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr "Εύρος Αντικειμένου"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr "Ανενεργός"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr "Offset:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr "Απεικόνιση Μηνυμάτων Στην Οθόνη"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr "Διαθέσιμα μόνο %d μπλοκ"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr "Άνοιγμα"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr "Άνοιγμα &τοποθεσίας αρχείου"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr "Άνοιγμα φακέλου αποθήκευσης Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr "Άνοιγμα αρχείου..."
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr "OpenAL: δεν μπορεί να δημιουργηθεί περιεχόμενο για την συσκευή %s"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr "OpenAL: αδυναμία εύρεσης συσκευών ήχου"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr "OpenAL: αδυναμία ανοίγματος της συσκευής %s"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
msgstr "OpenCL Αποκωδικοποιητής Υφών"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr "OpenMP Αποκωδικοποιητής Υφών"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
msgstr "Ρυθμίσεις"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr "Πορτοκαλί"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
+#, fuzzy
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
"Η σειρά των αρχείων στον Κατάλογο Αρχείων δεν ταιριάζει με την σειρά των "
"block.\n"
"Κάντε δεξί κλίκ, εξάγετε όλα τα αρχεία αποθήκευσης\n"
"και εισάγετέ τα σε μία νέα κάρτα μνήμης.\n"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr "Άλλα"
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
@@ -3914,15 +4041,15 @@ msgstr ""
"Ο άλλος client έχει αποσυνδεθεί ενώ το παιχνίδι εκτελείται!! Το NetPlay έχει "
"απενεργοποιηθεί. Σταματήστε χειροκίνητα το παιχνίδι."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr "Έξοδος"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr "Αναπα&ραγωγή Εγγραφής"
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr "Χειριστήριο"
@@ -3930,160 +4057,160 @@ msgstr "Χειριστήριο"
msgid "Pad "
msgstr "Χειριστήριο"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr "Χειριστήρια"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
msgstr "Page Down"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
msgstr "Page Up"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr "Παράγραφος"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr "Παράμετροι"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr "Κατάτμηση %i"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
msgstr "Patches"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr "Φάκελοι"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr "Παύση"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr "Παύση στο τέλος της ταινίας"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr "Φωτισμός ανά Pixel"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr "Τέλειο"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr "Οπτική %d"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr "Αναπαραγωγή"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr "Αναπαραγωγή Εγγραφής"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr "Αναπαραγωγή/Παύση"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr "Παίζεται"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr "Ρυθμίσεις Αναπαραγωγής"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr "Παίχτες"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr "Παρακαλώ επιβεβαιώστε..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr "Παρακαλώ δημιουργήστε μια οπτική πριν την αποθήκευση"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr "Plus-Minus"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr "Πολωνέζικα"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
msgstr "Θύρα 1"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
msgstr "Θύρα 2"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
msgstr "Θύρα 3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
msgstr "Θύρα 4"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr "Θύρα :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr "Πορτογαλικά"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr "Πορτογαλικά (Βραζιλιάνικα)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr "Post-Processing Εφέ:"
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr "Πρόωρος τερματισμός της ταινίας σε PlayController. %u + 8 > %u"
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr "Πρόωρος τερματισμός της ταινίας σε PlayWiimote. %u + %d > %u"
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr "Πρόωρος τερματισμός της ταινίας σε PlayWiimote. %u > %u"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr "Προεπιλογές: "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr "Προηγούμενη Σελίδα"
@@ -4091,67 +4218,67 @@ msgstr "Προηγούμενη Σελίδα"
msgid "Previous Page"
msgstr "Προηγούμενη Σελίδα"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr "Προηγούμενη Τιμή"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr "Εκτύπωση"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr "Προφίλ"
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr "Ιδιότητες"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
msgstr "Καθαρισμός Cache"
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr "Ερώτηση"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr "Έξοδος"
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr "R"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
msgstr "R Button"
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr "R-Αναλογική"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr "RAM"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr "ΡΩΣΙΑ"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr "Εύρος"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr "Μόνο Για Ανάγνωση (Εγγραφής)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr "Πραγματικό"
@@ -4167,33 +4294,33 @@ msgstr "Πραγματικά Wiimotes"
msgid "Reconnect Wiimote on State Loading"
msgstr "Επανασύνδεση Wiimote Κατά Την Φόρτωση Σημείου Αποθήκευσης"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr "Εγγραφή"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr "Πληροφορίες Εγγραφής"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr "Ρυθμίσεις Εγγραφής"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr "Κόκκινο"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr "Αριστερό Κόκκινο"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr "Δεξί Κόκκινο"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -4208,28 +4335,28 @@ msgstr ""
"Αν δεν είστε σίγουροι, επιλέξτε Καμία."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr "Ανανέωση"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr "Ανανέωση Λίστας"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr "Ανανέωση λίστας παιχνιδιών"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr "Αφαίρεση"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
@@ -4239,198 +4366,206 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr "Αναπαραγωγή στο Κεντρικό Παράθυρο"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr "Επανεκκίνηση"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr "Αποτελέσματα"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
msgstr "Return"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr "Δεξιά"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr "Δεξί Stick"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr "Δόνηση"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
-msgstr "Εκτέλεση DSP LLE σε ξεχωριστό νήμα (δεν προτείνεται)."
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
+msgstr ""
+"Εκτέλεση DSP HLE και LLE σε ξεχωριστό νήμα (δεν προτείνεται: μπορεί να "
+"προκαλέσει προβλήματα στον ήχο με HLE και κολλήματα με LLE)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr "Ρώσικα"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr "Απ&οθήκευση Σημείου Αποθήκευσης"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr "Ασφαλής"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr "Αποθήκ."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
msgstr "Αποθήκευση GCI ως..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
msgstr "Αποθήκευση Σημείου Αποθήκευσης 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
msgstr "Αποθήκευση Σημείου Αποθήκευσης 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
msgstr "Αποθήκευση Σημείου Αποθήκευσης 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
msgstr "Αποθήκευση Σημείου Αποθήκευσης 4"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
msgstr "Αποθήκευση Σημείου Αποθήκευσης 5"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
msgstr "Αποθήκευση Σημείου Αποθήκευσης 6"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
msgstr "Αποθήκευση Σημείου Αποθήκευσης 7"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
msgstr "Αποθήκευση Σημείου Αποθήκευσης 8"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
msgstr "Αποθήκευση Σημείου..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr "Αποθήκευση ως..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr "Αποθήκευση συμπιεσμένου GCM/ISO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr "Αποθήκευση τρέχουσας οπτικής"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr "Αποθήκευση αποσυμπιεσμένου GCM/ISO"
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr ""
"Η ταινία του σημείου αποθήκευσης %s είναι αλλοιωμένη, γίνεται διακοπή της "
"εγγραφής της ταινίας..."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr "Κλιμακούμενα EFB Αντίγραφα"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr "Ανίχνευση %s"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
msgstr "Αναζήτηση για ISOs"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr "Ανίχνευση..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr "Στιγμιότυπο"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
msgstr "Scroll Lock"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr "Αναζήτηση"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr "Φίλτρο Αναζήτησης"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr "Αναζήτηση σε Υποφακέλους"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr "Αναζήτηση τρέχων Αντικειμένου"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr "Αναζήτηση δεκαεξαδικής Τιμής:"
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr "Η ενότητα %s δε βρέθηκε στο SYSCONF"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr "Επιλογή"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr "Επιλέξτε το Αρχείο Εγγραφής"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr "Επιλέξτε ένα Wii WAD αρχείο για εγκατάσταση"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
@@ -4440,31 +4575,31 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, χρησιμοποιήστε τον πρώτο."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr "Επιλέξτε ένα αρχείο αποθήκευσης για εισαγωγή"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr "Επιλέξτε αιωρούμενα παράθυρα"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr "Επιλέξτε το αρχείο για φόρτωση"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr "Επιλέξτε αρχείο αποθήκευσης"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr "Επιλέξτε το σημείο φόρτωσης"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr "Επιλέξτε το σημείο αποθήκευσης"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4483,15 +4618,15 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι επιλέξτε Αυτόματα."
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
-msgstr ""
+msgstr "Το επιλεγμένο προφίλ χειρισμού δεν υπάρχει"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr "Επιλεγμένη γραμματοσειρά"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4508,23 +4643,39 @@ msgstr ""
"σας.\n"
"Αν πάλι δεν είστε σίγουροι, χρησιμοποιήστε την υψηλότερη λειτουργική ανάλυση."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
"Επιλέγει το API γραφικών που θα χρησιμοποιηθεί εσωτερικά.\n"
"Το Direct3D 9 συνήθως είναι το γρηγορότερο. Το OpenGL είναι περισσότερο "
"ακριβές όμως. Το Direct3D 11 βρίσκεται κάπου ενδιάμεσα μεταξύ των δύο.\n"
"Σημειώστε ότι τα Direct3D backends είναι διαθέσιμα μόνο στα Windows.\n"
"\n"
-"Αν δεν είστε σίγουροι, χρησιμοποιήστε το Direct3D 9."
+"Αν δεν είστε σίγουροι, χρησιμοποιήστε το Direct3D 11."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+"Επιλέγει το API γραφικών που θα χρησιμοποιηθεί εσωτερικά.\n"
+"Το Direct3D 9 συνήθως είναι το γρηγορότερο. Το OpenGL είναι περισσότερο "
+"ακριβές όμως. Το Direct3D 11 βρίσκεται κάπου ενδιάμεσα μεταξύ των δύο.\n"
+"Σημειώστε ότι τα Direct3D backends είναι διαθέσιμα μόνο στα Windows.\n"
+"\n"
+"Αν δεν είστε σίγουροι, χρησιμοποιήστε το OpenGL."
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr "Αποστολή"
@@ -4532,26 +4683,26 @@ msgstr "Αποστολή"
msgid "Sensor Bar Position:"
msgstr "Θέση Sensor Bar:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr "Διαχωριστής"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr "Σερβικά"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr ""
"Σειριακή Θύρα 1 - Αυτή είναι η θύρα που χρησιμοποιούν οι συσκευές όπως ο "
"προσαρμογέας δικτύου"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr "Ορισμός"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr "Ορισμός ως προεπιλεγμένο &ISO"
@@ -4560,136 +4711,138 @@ msgstr "Ορισμός ως προεπιλεγμένο &ISO"
msgid "Set as default Memcard %c"
msgstr "Ορισμός ως προεπιλεγμένη Κάρτα Μνήμης %c"
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr ""
"SetARCode_IsActive: Ο δείκτης είναι μεγαλύτερος από το μέγεθος λίστας των "
"κωδικών ar %lu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
msgstr ""
+"Ορίζει την χρονοκαθυστέρηση (σε ms). Υψηλότερες τιμές μπορεί να μειώσουν τις "
+"διακοπές στον ήχο. Μόνο για OpenAL backend."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr "Ρυθμίσεις..."
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr "SetupWiiMem:Αδυναμία εύρεσης αρχείου ρυθμίσεων"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr "Κούνημα"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr "Σύντομο Όνομα:"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr "Κουμπιά Shoulder"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr "Εμφάνιση &Κονσόλας"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr "Εμφάνιση Παραθύρου Κατα&γραφής "
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr "Εμφάνιση Μπάρας Κατάστασης"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr "Εμφάνιση Γραμμής &Εργαλείων"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr "Εμφάνιση Οδηγών"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr "Εμφάνιση Περιοχών EFB Αντιγραφών"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr "Εμφάνιση FPS"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr "Εμφάνιση Γαλλίας"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr "Εμφάνιση GameCube"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr "Εμφάνιση Προβολής Χειρισμών"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr "Εμφάνιση Ιταλίας"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr "Εμφάνιση JAP"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr "Εμφάνιση Κορέας"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
msgstr "Εμφάνιση Γλώσσας:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr "Εμφάνιση Ρυθμίσεων &Καταγραφέα"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr "Εμφάνιση PAL"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr "Εμφάνιση Πλατφόρμας"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr "Εμφάνιση Περιοχών"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
msgstr "Εμφάνιση Στατιστικών"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr "Εμφάνιση Ταϊβάν"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr "Εμφάνιση USA"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr "Εμφάνιση Wad"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr "Εμφάνιση Wii"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
msgstr "Εμφάνιση επιβεβαίωσης πριν τη διακοπή ενός παιχνιδιού."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4704,11 +4857,11 @@ msgstr ""
msgid "Show first block"
msgstr "Εμφάνιση πρώτου μπλοκ"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr "Εμφάνιση μετρητή καθυστέρησης "
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4735,7 +4888,7 @@ msgstr "Εμφάνιση αποθηκευμένου εικονιδίου"
msgid "Show save title"
msgstr "Εμφάνιση αποθηκευμένου τίτλου"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4747,11 +4900,11 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr "Εμφάνιση Αγνώστων"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
@@ -4761,47 +4914,31 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr "Οριζόντια Θέση Wiimote"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
msgstr "Κινέζικα Απλοποιημένα"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr "Μέγεθος"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
msgstr "Παράλειψη BIOS"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
-msgstr ""
+msgstr "Παράληψη εκκαθάρισης DCBZ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr "Παράλειψη Dest. Alpha Pass"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr "Παράλειψη EFB Πρόσβασης από τη CPU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"Παράλειψη του destination alpha pass που χρησιμοποιείται από πολλά παιχνίδια "
-"σε διάφορα γραφικά εφέ.\n"
-"\n"
-"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4818,25 +4955,25 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr "Θέση %i"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
msgstr "Θέση Α"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
msgstr "Θέση Β"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr "Στιγμιότυπο"
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
msgstr "Απεικόνιση Λογισμικού"
@@ -4853,35 +4990,35 @@ msgstr ""
"Θέλετε όντως να χρησιμοποιήσετε την απεικόνιση λογισμικού; Αν δεν είστε "
"σίγουροι, επιλέξτε 'Όχι'."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
msgstr "Ρυθμίσεις Ήχου"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr "Το backend ήχου %s δεν είναι έγκυρο."
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr "Αποτυχία δημιουργίας buffer ήχου: %s"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr "Space"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr "Ισπανικά"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:98
msgid "Speaker Volume:"
-msgstr "Ένταση ηχείου:"
+msgstr "Ένταση Ηχείου:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4902,63 +5039,63 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, επιλέξτε 640x528."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr "Επιτάχυνση του Ρυθμού Μεταφοράς από τον Δίσκο"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr "Τετράγωνο Stick"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr "Τυπικός Controller"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr "Εκκίνηση"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
msgstr "Εκκίνηση Λειτουργίας &NetPlay"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr "Εκκίνηση Ε&γγραφής"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr "Εκκίνηση Εγγραφής"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr "Λειτ."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr "Σημεία Αποθήκευσης"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
-msgstr ""
+msgstr "Τιμόνι"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr "Stick"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr "Διακοπή"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -4972,107 +5109,120 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το επιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr "Προσαρμογή στο Παράθυρο"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr "Strum"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr "Subtract"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr "Επιτυχής εξαγωγή αρχείου στο %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr "Επιτυχής εισαγωγή σημείων αποθήκευσης"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
msgstr "Swing"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr "Συγχρονισμός του νήματος της GPU"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+"Συγχρονίζει τα νήματα της GPU και της CPU ώστε να προληφθούν τυχαία "
+"κολλήματα σε λειτουργία Διπλού Πυρήνα . (Ενεργό = Συμβατότητα, Ανενεργό = "
+"Ταχύτητα)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr "Γλώσσα Συστήματος:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr "ΤΑΪΒΑΝ"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr "TAS Είσοδος"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr "Tab"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr "Tab split"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr "Αριστερό Table"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr "Δεξί Table"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr "Δημιουργία Στιγμιότυπου"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr "TaruKonga (Bongos)"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr "Τέστ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr "Υφή"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr "Cache Υφών"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr "Επικάλυψη Του Format Υφών"
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr "Το WAD εγκαταστάθηκε με επιτυχία"
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr "Η διεύθυνση είναι άκυρη"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr "Το checksum διορθώθηκε με επιτυχία"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr "Ο επιλεγμένος φάκελος βρίσκεται ήδη στη λίστα"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
@@ -5081,7 +5231,7 @@ msgstr ""
"Το αρχείο %s υπάρχει ήδη.\n"
"Θέλετε να το αντικαταστήσετε;"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
@@ -5090,30 +5240,30 @@ msgstr ""
"Αδυναμία ανοίγματος του αρχείου %s για εγγραφή. Παρακαλώ ελέγξτε αν είναι "
"ήδη ανοιχτό από άλλο πρόγραμμα."
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr "Το αρχείο %s ήταν ήδη ανοιχτό, η κεφαλίδα του αρχείου δε θα γραφεί."
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr "Το αρχείο που επιλέξατε (%s) δεν υπάρχει"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr "Το όνομα δεν μπορεί να είναι κενό"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr "Το όνομα δεν μπορεί να περιέχει τον χαρακτήρα ','"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr ""
"Το αποτέλεσμα αποκρυπτογράφησης του κωδικού AR δεν περιέχει καθόλου γραμμές."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -5125,12 +5275,12 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, χρησιμοποιήστε την δεξιότερη τιμή."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr ""
"Το σημείο αποθήκευσης που προσπαθείτε να αντιγράψετε έχει μη έγκυρο μέγεθος"
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
@@ -5138,36 +5288,36 @@ msgstr ""
"Η επιλεγμένη γλώσσα δεν υποστηρίζεται από το σύστημά σας. Επαναφορά στην "
"προεπιλογή συστήματος."
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr "Οι εκδόσεις NetPlay του διακομιστή και του πελάτη δεν είναι συμβατές!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr "Ο διακομιστής είναι γεμάτος!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
msgstr "Ο διακομιστής απάντησε: το παιχνίδι τρέχει!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
msgstr "Ο διακομιστής επέστρεψε ένα άγνωστο μήνυμα σφάλματος!"
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr "Το επιλεγμένο αρχείο \"%s\" δεν υπάρχει"
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
msgstr "Η τιμή είναι άκυρη"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
-msgstr ""
+msgstr "Θέμα:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
@@ -5175,7 +5325,7 @@ msgstr ""
"Πρέπει να υπάρχει εισητήριο για 00000001/00000002. Το NAND dump σας είναι "
"πιθανότατα ημιτελές."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
@@ -5184,7 +5334,7 @@ msgstr ""
"Αν είναι ακαθόριστη η επιλογή το παιχνίδι χρησιμοποιεί τις γενικές ρυθμίσεις "
"του Dolphin. "
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
@@ -5192,13 +5342,13 @@ msgstr ""
"Αυτός ο προσομοιωτής action replay δεν υποστηρίζει κωδικούς που αλλάζουν το "
"ίδιο το Action Replay."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr ""
"Αυτό μπορεί να προκαλέσει καθυστερήσεις στο Μενού Wii και σε μερικά "
"παιχνίδια."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -5209,8 +5359,32 @@ msgid ""
"\n"
"If unsure, leave this unchecked."
msgstr ""
+"Αυτό το χαρακτηριστικό σας επιτρέπει να πειράξετε την κάμερα του "
+"παιχνιδιού.\n"
+"Μετακινήστε το ποντίκι κρατώντας πατημένο το δεξί πλήκτρο του ποντικιού για "
+"να μετακινήσετε οριζόντια την κάμερα γύρω από κάθετο άξονα, και κρατώντας το "
+"μεσαίο πλήκτρο για μετακίνησή της. \n"
+"Κρατώντας πατημένο το SHIFT πιέστε ένα από τα WASD πλήκτρα για να "
+"μετακινήσετε την κάμερα κατά μία καθορισμένη απόσταση (SHIFT+0 για να "
+"κινηθεί γρηγορότερα και SHIFT+9 για να κινηθεί πιο αργά). Πατήστε SHIFT+R "
+"για να επαναφέρετε την κάμερα στην αρχική της θέση. \n"
+"\n"
+"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+#, fuzzy
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+"Αν θέσετε τιμή υψηλότερη από την πλήρη ταχύτητα του παιχνιδιού (NTSC:60, "
+"PAL:50), χρησιμοποιήστε τον ήχο για να κάνετε Throttle μέσω DSP (μπορεί να "
+"διορθώσει ορισμένα κλικαρίσματα στον ήχο άλλα και να προκαλέσει συνεχές "
+"θόρυβο αναλόγα με το παιχνίδι)."
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -5222,62 +5396,62 @@ msgstr ""
"Προκαλεί μεγάλη επιτάχυνση σε PC με περισσότερους από έναν πυρήνες,\n"
"αλλά μπορεί να προκαλέσει κρασαρίσματα ή άλλα προβλήματα. "
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr ""
"Αυτό σας επιτρέπει την χειροκίνητη επεξεργασία του αρχείου ρυθμίσεων INI"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr "Κατώφλι"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr "Πλάγιασμα"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr "Τίτλος"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr "Εώς"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr "Εναλλαγή Όλων Τύπων Καταγραφής "
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
msgstr "Εναλλαγή Πλήρους Οθόνης"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr "Κορυφή"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
msgstr "Κινέζικα Παραδοσιακά "
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr "Προσπάθεια φόρτωσης ενός άγνωστου τύπου αρχείο."
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr "Σκανδάλες"
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr "Προσπάθεια ανάγνωσης από ένα μη έγκυρο SYSCONF"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
@@ -5285,15 +5459,15 @@ msgstr ""
"Προσπάθεια ανάγνωσης από ένα μη έγκυρο SYSCONF\n"
"Τα Wiimote bt ids δεν είναι διαθέσιμα"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr "Τουρκικά"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr "Πικάπ"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr "Τύπος"
@@ -5301,25 +5475,25 @@ msgstr "Τύπος"
msgid "UDP Port:"
msgstr "Πόρτα UDP:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
msgstr "UDP Wiimote"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr "ΑΓΝΩΣΤΟ"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
msgstr "ΑΓΝΩΣΤΟ_%02X"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr "ΗΠΑ"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
@@ -5327,7 +5501,7 @@ msgstr ""
"Αδυναμία δημιουργίας patch από τις δοθείσες τιμές.\n"
"Η entry δεν μεταβλήθηκε."
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -5339,74 +5513,94 @@ msgstr ""
"τον πληκτρολογήσατε σωστά.\n"
"Θα θέλατε να αγνοήσετε αυτήν την γραμμή και να συνεχίσετε με το parsing;"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr "Μη ορισμένο %i"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr "Αναίρεση Φόρτωσης Σημείου Αποθ. "
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr "Αναπάντεχη 0x80 κλήση; Ματαίωση..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr "Άγνωστο"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr "Άγνωστη εντολή DVD %08x - κρίσιμο σφάλμα"
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr "Άγνωστη εντολή 0x%08x"
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
msgstr "Άγνωστος τύπος καταχώρησης %i στο SYSCONF (%s@%x)!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr "Ελήφθη άγνωστο μήνυμα με id : %d"
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr "Ελήφθη άγνωστο μήνυμα με:%d από τον παίκτη:%d Αποσύνδεση παίκτη!"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr "Πάνω"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr "Ενημέρωση"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr "Κάθετη Θέση Wiimote"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr "Χρήση Λειτουργίας EuRGB60 (PAL60)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr "Χρήση Πλήρους Οθόνης"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr "Χρήση Hex"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr "Χρήση Οθονών Πανικού"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Χρησιμοποιείται μια χακαρισμένη στρατηγική ανεβάσματος για την ροή των "
+"γωνιών.\n"
+"Αυτό συνήθως αυξάνει την ταχύτητα, αλλά απαγορεύεται απο τις προδιαγραφές "
+"του OpenGL και μπορεί να προκαλέσει μεγάλα προβλήματα.\n"
+"\n"
+"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -5419,7 +5613,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -5434,53 +5628,58 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr "Εργαλεία"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr "Κάθετος Συγχρονισμός"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+#, fuzzy
+msgid "VBeam Speed Hack"
+msgstr "MMU Speed Hack"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr "Τιμή"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr "Τιμή:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr "Τιμή: "
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr "Αναλυτικότητα"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr "Βίντεο"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr "Εικονικό"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr "Ένταση"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
msgstr "Αποτυχία εγκατάστασης WAD: σφάλμα κατά τη δημιουργία του %s"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
msgstr "Αποτυχία εγκατάστασης WAD: σφάλμα κατά τη δημιουργία του εισιτηρίου"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5493,25 +5692,25 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr "Προειδοποίηση"
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
msgstr "Προειδοποίηση - εκκίνηση DOL σε λάθος λειτουργία κονσόλας!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
msgstr "Προειδοποίηση - εκκίνηση ELF σε λάθος λειτουργία κονσόλας!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
msgstr "Προειδοποίηση - εκκίνηση ISO σε λάθος λειτουργία κονσόλας!"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5523,7 +5722,7 @@ msgstr ""
"%s\n"
"Θέλετε να συνεχίσετε;"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5537,7 +5736,7 @@ msgstr ""
"και έχουν το ίδιο όνομα με αρχεία στη memcard\n"
"Συνέχεια;"
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
@@ -5549,7 +5748,7 @@ msgstr ""
"φορτώσετε άλλο σημείο αποθήκευσης πρωτού συνεχίσετε ή να φορτώσετε το τρέχων "
"με απενεργοποιημένη την λειτουργία Μόνο Για Ανάγνωση (Εγγραφής)."
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
@@ -5562,7 +5761,7 @@ msgstr ""
"την λειτουργία Μόνο Για Ανάγνωση (Εγγραφής). Ειδάλλως πιθανώς θα εμφανιστεί "
"ασυγχρονισμός."
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5597,49 +5796,49 @@ msgstr ""
"Start=%d, A=%d, B=%d, X=%d, Y=%d, Z=%d, DUp=%d, DDown=%d, DLeft=%d, DRight="
"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr "WaveFileWriter - το αρχείο δεν είναι ανοιχτό."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr "Whammy"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
msgstr "Hack Ευρείας Οθόνης"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr "Πλάτος"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr "Wii"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
msgstr "Wii Κονσόλα"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr "Wii NAND Ρίζα:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
msgstr "Εισαγωγή Αποθήκευσης Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
msgstr "Αρχεία αποθήκευσης Wii (*.bin)|*.bin"
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr "WiiWAD: Αδυναμία ανάγνωσης από αρχείο"
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr "Wiimote"
@@ -5648,7 +5847,7 @@ msgstr "Wiimote"
msgid "Wiimote %i"
msgstr "Wiimote %i"
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr "Συνδεδεμένο Wiimote"
@@ -5656,7 +5855,7 @@ msgstr "Συνδεδεμένο Wiimote"
msgid "Wiimote Motor"
msgstr "Μοτέρ Wiimote"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
msgstr "Ρυθμίσεις Wiimote"
@@ -5664,102 +5863,129 @@ msgstr "Ρυθμίσεις Wiimote"
msgid "Wiimotes"
msgstr "Wiimotes"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr "Windows Left"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
msgstr "Windows Menu"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr "Windows Right"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr "Αναδίπλωση Λέξεων"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr "Σε εργασία..."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr "Εγγραφή στην Κονσόλα"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
msgstr "Εγγραφή στον Debugger"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
msgstr "Εγγραφή σε Αρχείο"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
msgstr "Εγγραφή στο Παράθυρο"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr "Αποτυχία CreateSourceVoice XAudio2: %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
msgstr "Αποτυχία αρχικοποίησης XAudio2: %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr "Αποτυχία δημιουργίας κεντρικής φωνής XAudio2: %#X"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr "XF reg"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr "Κίτρινο"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
-"Χρησιμοποιείτε ελεύθερα dsp roms που φτιάχτηκαν από την ομάδα του Dolphin.\n"
-"Μόνο Zelda ucode παιχνίδια θα δουλέψουν σωστά με αυτά.\n"
+"Χρησιμοποιείτε ένα ελεύθερο DSP ROM που φτιάχτηκε από την ομάδα του "
+"Dolphin.\n"
+" Όλα τα παιχνίδια του Wii και τα περισσότερα του GC θα δουλέψουν σωστά, αλλά "
+"τα GBA/IPL/CARD UCodes δεν θα δουλέψουν.\n"
+"\n"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+"Χρησιμοποιείτε ένα παλιό ελεύθερο DSP ROM που φτιάχτηκε από την ομάδα του "
+"Dolphin.\n"
+"Μόνο τα Zelda ucode παιχνίδια θα δουλέψουν σωστά με αυτό.\n"
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr "Δεν μπορείτε να κλείσετε pane που έχουν σελίδες."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr "Πρέπει να επιλέξετε ένα παιχνίδι!!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
msgstr "Πρέπει να εισάγετε ένα όνομα!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
msgstr "Πρέπει να εισάγετε μία έγκυρη οκταδική ή δεκαεξαδική τιμή."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr "Πρέπει να εισάγετε ένα έγκυρο όνομα προφίλ."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr ""
"Πρέπει να κάνετε επανεκκίνηση του Dolphin για να έχει επίπτωση αυτή η αλλαγή."
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+"Τα DSP ROMs έχουν εσφαλμένα hashes.\n"
+"Θέλετε να γίνει διακοπή τώρα για να διορθώσετε το πρόβλημα;\n"
+"Εάν επιλέξετε \"Όχι\", ο ήχος μπορεί να είναι χαλασμένος."
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
@@ -5767,7 +5993,7 @@ msgstr ""
"Το αρχείο GCM/ISO φαίνεται να είναι μη έγκυρο (μη έγκυρη χώρα).\n"
"Συνέχεια με περιοχή PAL;"
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
@@ -5778,25 +6004,25 @@ msgstr ""
"Θα έπρεπε να είναι 0x%04x (αλλά είναι 0x%04llx)\n"
"Θέλετε να δημιουργηθεί ένα καινούριο;"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
msgstr "ZTP hack"
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr "Δεν υποστηρίζεται ο Zero 3 code"
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
msgstr "Άγνωστος Zero code: %08x"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr "[ σε αναμονή ]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5808,11 +6034,11 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr "[Προσαρμοζόμενο]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5831,7 +6057,7 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5845,99 +6071,47 @@ msgstr ""
"\n"
"Αν δεν είστε σίγουροι, αφήστε το αποεπιλεγμένο."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr "^ ADD"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr "apploader (.img)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr "αποτυχία ανάγνωσης της κεφαλίδας bk"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr "αποτυχία ανάγνωσης δεδομένων από το αρχείο: %s"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr "αποτυχία ανάγνωσης κεφαλίδας"
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr "iCacheJIT: Ανάγνωση Opcode από %x. Παρακαλώ να το αναφέρετε."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr ""
-"δεν είναι σημείο αποθήκευσης wii ή αποτυχία ανάγνωσης κεφαλίδας αρχείου "
-"μεγέθους %x"
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr "."
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr "άγνωστη εντολή 0x%08x"
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
msgstr "Το wxExecute επέστρεψε -1 κατά την εκκίνηση της εφαρμογής!"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr "zFar Διόρθωση: "
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr "zNear Διόρθωση: "
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr "| OR"
-#~ msgid "%i connected"
-#~ msgstr "%i Συνδεδεμένο"
-
-#~ msgid "Alternate Wiimote Timing"
-#~ msgstr "Εναλλακτικός Χρονισμός Wiimote"
-
-#~ msgid "Interpreter (VERY slow)"
-#~ msgstr "Interpreter (ΠΟΛΥ αργός)"
-
-#~ msgid "JIT Recompiler (recommended)"
-#~ msgstr "JIT Recompiler (προτείνεται)"
-
-#~ msgid "JITIL experimental recompiler"
-#~ msgstr "JITIL δοκιμαστικός recompiler"
+#~ msgid "Accurate VBeam emulation"
+#~ msgstr "Ακριβής VBeam εξομοίωση"
#~ msgid ""
-#~ "Mutes the Wiimote speaker. Fixes random disconnections on real wiimotes. "
-#~ "No effect on emulated wiimotes."
+#~ "If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
#~ msgstr ""
-#~ "Απενεργοποιεί το ηχείο του Wiimote. Διορθώνει τυχαίες αποσυνδέσεις σε "
-#~ "πραγματικά wiimotes. Δεν έχει καμία επίδραση σε εξομοιωμένα wiimotes."
+#~ "Αν τα FPS διακυμαίνονται, αυτή η επιλογή μπορείο να βοηθήσει. (Ενεργό = "
+#~ "Συμβατό, Ανενεργό = Γρήγορο)"
-#~ msgid "Pair Up"
-#~ msgstr "Ταίριασμα"
-
-#~ msgid "Reconnect Wiimote Confirm"
-#~ msgstr "Επιβεβαίωση Επανασύνδεσης Wiimote"
-
-#~ msgid ""
-#~ "Wiimote %i has been disconnected by system.\n"
-#~ "Maybe this game doesn't support multi-wiimote,\n"
-#~ "or maybe it is due to idle time out or other reason.\n"
-#~ "Do you want to reconnect immediately?"
-#~ msgstr ""
-#~ "Το Wiimote %i 'εχει αποσυνδεθεί από το σύστημα.\n"
-#~ "Ίσως αυτό το παιχνίδι να μην υποστηρίζει πολλά wiimote,\n"
-#~ "ή πιθανόν να οφείλεται σε χρόνο αδράνειας ή κάποιον άλλο λόγο.\n"
-#~ "Θέλετε να γίνει άμεση επανασύνδεση;"
+#~ msgid "Skip Dest. Alpha Pass"
+#~ msgstr "Παράλειψη Dest. Alpha Pass"
diff --git a/Languages/po/en.po b/Languages/po/en.po
index 989dd5a33d..5ada15fc21 100644
--- a/Languages/po/en.po
+++ b/Languages/po/en.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emu\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
+"POT-Creation-Date: 2013-04-18 23:00-0500\n"
"PO-Revision-Date: 2011-01-06 14:53+0100\n"
"Last-Translator: BhaaL \n"
"Language-Team: \n"
@@ -16,113 +16,115 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
" Create a new 16MB Memcard?"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr ""
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
msgstr ""
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
" Card file size is invalid (0x%x bytes)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
" Card size is invalid (0x%x bytes)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
"file is not large enough to be a valid memory card file (0x%x bytes)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr ""
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
msgstr ""
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr ""
@@ -132,222 +134,246 @@ msgstr ""
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
msgstr ""
@@ -357,36 +383,36 @@ msgid ""
"You must manually connect your wiimotes."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr ""
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr ""
@@ -394,15 +420,11 @@ msgstr ""
msgid "Acceleration"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -411,12 +433,12 @@ msgid ""
"If unsure, check EFB to Texture instead."
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr ""
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -426,102 +448,102 @@ msgid ""
"%s"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
"(%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
"Fill (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
"Pointer (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
"Master codes are not needed. Do not use master codes."
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -532,7 +554,7 @@ msgid ""
"NOTE: Check LogWindow/Console for the acquired values."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -543,48 +565,48 @@ msgid ""
"NOTE: Check LogWindow/Console for the acquired values."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
@@ -592,50 +614,50 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
msgstr ""
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr ""
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
"If unsure, select (off)."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
msgstr ""
@@ -650,206 +672,210 @@ msgstr ""
msgid "Are you sure you want to delete this file? It will be gone forever!"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr ""
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
msgstr ""
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr ""
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -858,23 +884,38 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr ""
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr ""
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
@@ -882,36 +923,21 @@ msgid ""
"is not a valid gamecube memory card file"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr ""
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr ""
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr ""
@@ -919,12 +945,12 @@ msgstr ""
msgid "Change"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr ""
@@ -932,228 +958,228 @@ msgstr ""
msgid "Change Game"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr ""
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr ""
@@ -1161,15 +1187,15 @@ msgstr ""
msgid "Continuous Scanning"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr ""
@@ -1178,21 +1204,21 @@ msgstr ""
msgid "Copy to Memcard %c"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr ""
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
@@ -1200,12 +1226,12 @@ msgid ""
"most PC DVD drives."
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
msgstr ""
@@ -1216,197 +1242,201 @@ msgid ""
"(setting pads while the game is running is not yet supported)"
msgstr ""
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
+"protected?\n"
+"\n"
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
msgstr ""
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
-msgid "Custom Projection Hack"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
-msgid "Custom Projection Hack Settings"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
msgstr ""
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+msgid "Custom Projection Hack"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
+msgid "Custom Projection Hack Settings"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
msgstr ""
@@ -1414,64 +1444,68 @@ msgstr ""
msgid "Delete Save"
msgstr ""
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr ""
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr ""
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
msgid "Disable Fog"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1480,7 +1514,7 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1490,52 +1524,60 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr ""
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
msgstr ""
@@ -1543,16 +1585,16 @@ msgstr ""
msgid "Dolphin Emulated Wiimote Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr ""
@@ -1560,101 +1602,107 @@ msgstr ""
msgid "Dolphin Wiimote Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr ""
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1663,52 +1711,52 @@ msgid ""
"driver."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr ""
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1717,7 +1765,7 @@ msgid ""
"If unsure, check virtual XFB emulation instead."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1731,7 +1779,7 @@ msgstr ""
msgid "Emulated Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
msgstr ""
@@ -1739,7 +1787,7 @@ msgstr ""
msgid "Enable"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1749,55 +1797,55 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
msgstr ""
@@ -1805,15 +1853,15 @@ msgstr ""
msgid "Enable Speaker Data"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -1822,7 +1870,7 @@ msgid ""
"If unsure, select 1x."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
@@ -1832,7 +1880,7 @@ msgstr ""
msgid "Enable pages"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -1840,7 +1888,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -1848,34 +1896,34 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
@@ -1883,108 +1931,108 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr ""
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
"Aborting savestate load..."
msgstr ""
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
"fonts correctly, or crash."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr ""
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr ""
@@ -1992,7 +2040,7 @@ msgstr ""
msgid "Export Save"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr ""
@@ -2000,100 +2048,100 @@ msgstr ""
msgid "Export all saves"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
msgstr ""
@@ -2111,26 +2159,30 @@ msgid ""
"(Choose it from the \"Audio\" tab of the configuration dialog.)"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
@@ -2138,140 +2190,149 @@ msgid ""
"FilePosition:%llx"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
msgstr ""
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
"valid extensions are (.raw/.gcp)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr ""
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr ""
@@ -2279,23 +2340,23 @@ msgstr ""
msgid "Fix Checksums"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2303,7 +2364,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2311,160 +2372,160 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
"setting when playing Japanese games."
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
msgstr ""
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr ""
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
msgstr ""
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2473,10 +2534,10 @@ msgid ""
"directory and restarting Dolphin.)"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr ""
@@ -2484,30 +2545,30 @@ msgstr ""
msgid "General Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2518,51 +2579,67 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2572,41 +2649,41 @@ msgid ""
"Sayonara!\n"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr ""
@@ -2614,29 +2691,29 @@ msgstr ""
msgid "Hybrid Wiimote"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr ""
@@ -2648,45 +2725,33 @@ msgstr ""
msgid "IR Sensitivity:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -2695,7 +2760,7 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -2708,35 +2773,27 @@ msgstr ""
msgid "Import Save"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
msgstr ""
@@ -2744,125 +2801,129 @@ msgstr ""
msgid "In-Game"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr ""
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
"or has been patched incorrectly."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
msgstr ""
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr ""
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
"Try loading the state again"
msgstr ""
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr ""
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr ""
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr ""
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -2870,203 +2931,211 @@ msgid ""
" You may need to redump this game."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr ""
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr ""
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr ""
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
msgstr ""
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
"Right-click for more options."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr ""
@@ -3074,23 +3143,23 @@ msgstr ""
msgid "Local"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3098,81 +3167,90 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
" %016llx%016llx != %016llx%016llx"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr ""
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3183,15 +3261,15 @@ msgid ""
"Would you like to copy the old file to this new location?\n"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr ""
@@ -3200,20 +3278,20 @@ msgstr ""
msgid "Min"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3221,20 +3299,20 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3245,224 +3323,235 @@ msgid ""
"\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
msgid "NP Divide"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
msgid "NP Left"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
msgid "NP Multiply"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
msgid "NP Page Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
msgid "NP Page Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
msgid "NP Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
msgid "NP Separator"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
msgid "NP Subtract"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
msgid "NP Tab"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
msgid "NP Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
-#, c-format
-msgid "No banner file found for title %s"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
-msgid "No description available"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
-msgid "No docking"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
-msgid "No file loaded"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
-msgid "No free dir index entries"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
-msgid "No recorded file"
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
msgstr ""
#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
+msgid "No banner file found for title %s"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
+msgid "No description available"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
+msgid "No docking"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
+msgid "No file loaded"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
+msgid "No free dir index entries"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
+msgid "No recorded file"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
+#, c-format
msgid "No save folder found for title %s"
msgstr ""
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr ""
@@ -3471,107 +3560,107 @@ msgstr ""
msgid "Nunchuk Acceleration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr ""
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr ""
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr ""
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr ""
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr ""
@@ -3579,160 +3668,160 @@ msgstr ""
msgid "Pad "
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr ""
@@ -3740,67 +3829,67 @@ msgstr ""
msgid "Previous Page"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr ""
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
msgstr ""
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr ""
@@ -3816,33 +3905,33 @@ msgstr ""
msgid "Reconnect Wiimote on State Loading"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -3852,255 +3941,261 @@ msgid ""
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr ""
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
"If unsure, use the first one."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4111,15 +4206,15 @@ msgid ""
"If unsure, select Auto."
msgstr ""
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4129,17 +4224,27 @@ msgid ""
"If still unsure, use the highest resolution which works for you."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr ""
@@ -4147,24 +4252,24 @@ msgstr ""
msgid "Sensor Bar Position:"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr ""
@@ -4173,134 +4278,134 @@ msgstr ""
msgid "Set as default Memcard %c"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr ""
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4311,11 +4416,11 @@ msgstr ""
msgid "Show first block"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4338,7 +4443,7 @@ msgstr ""
msgid "Show save title"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4346,54 +4451,42 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4403,25 +4496,25 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr ""
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
msgstr ""
@@ -4433,27 +4526,27 @@ msgid ""
"Do you really want to enable software rendering? If unsure, select 'No'."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
msgstr ""
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr ""
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr ""
@@ -4461,7 +4554,7 @@ msgstr ""
msgid "Speaker Volume:"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4473,63 +4566,63 @@ msgid ""
"If unsure, select 640x528."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -4538,143 +4631,153 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
"Do you wish to replace it?"
msgstr ""
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
"opened by another program."
msgstr ""
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -4682,68 +4785,68 @@ msgid ""
"If unsure, use the rightmost value."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -4755,7 +4858,15 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -4763,75 +4874,75 @@ msgid ""
"cause occasional crashes/glitches."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr ""
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr ""
@@ -4839,31 +4950,31 @@ msgstr ""
msgid "UDP Port:"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -4871,74 +4982,88 @@ msgid ""
"Would you like to ignore this line and continue parsing?"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr ""
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr ""
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr ""
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr ""
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -4946,7 +5071,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -4955,53 +5080,57 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+msgid "VBeam Speed Hack"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr ""
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
msgstr ""
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5009,25 +5138,25 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5035,7 +5164,7 @@ msgid ""
"Do you wish to continue?"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5044,7 +5173,7 @@ msgid ""
"Continue?"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
@@ -5052,7 +5181,7 @@ msgid ""
"load this state with read-only mode off."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
@@ -5060,7 +5189,7 @@ msgid ""
"only mode off. Otherwise you'll probably get a desync."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5079,49 +5208,49 @@ msgid ""
"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
msgstr ""
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
msgstr ""
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr ""
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr ""
@@ -5130,7 +5259,7 @@ msgstr ""
msgid "Wiimote %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr ""
@@ -5138,7 +5267,7 @@ msgstr ""
msgid "Wiimote Motor"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
msgstr ""
@@ -5146,105 +5275,123 @@ msgstr ""
msgid "Wiimotes"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr ""
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
msgstr ""
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
@@ -5252,25 +5399,25 @@ msgid ""
"Do you want to generate a new one?"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5278,11 +5425,11 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5293,7 +5440,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5302,58 +5449,35 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr ""
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr ""
diff --git a/Languages/po/es.po b/Languages/po/es.po
index 85d0f240a8..bb555624c5 100644
--- a/Languages/po/es.po
+++ b/Languages/po/es.po
@@ -3,15 +3,17 @@
# This file is distributed under the same license as the dolphin-emu package.
#
# Translators:
-# Dario_ff , 2011.
-# , 2013.
-# , 2013.
+# Dario_ff , 2011
+# Petiso_Carambanal , 2013
+# dfersd01 , 2013
+# Puniasterus , 2013
+# Puniasterus , 2013
msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emulator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
-"PO-Revision-Date: 2013-02-19 09:31+0000\n"
+"POT-Creation-Date: 2013-04-18 23:00-0500\n"
+"PO-Revision-Date: 2013-04-17 21:42+0000\n"
"Last-Translator: Puniasterus \n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/dolphin-emu/"
"language/es/)\n"
@@ -21,21 +23,21 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
msgstr "(demasiados para mostrar)"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr " Juego:"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr "! NO"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
@@ -44,33 +46,43 @@ msgstr ""
"\"%s\" no existe.\n"
"¿Crear una nueva tarjeta de memoria de 16 MB?"
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
msgstr "\"%s\" no es un archivo GCM/ISO válido, o no es una ISO GC/Wii."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
-msgstr "%08X: "
+msgstr "%08X:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
msgstr "%1$sCopiar%1$s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr "muestras %d"
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr "muestras %d (nivel de calidad %d)"
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
-msgstr "%s ya existe. ¿Remplazar?"
+msgstr "%s ya existe. ¿Sobrescribir?"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
msgstr "%s falló al ser \"scrubbed\". Probablemente la imagen esté corrupta."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -79,7 +91,7 @@ msgstr ""
"%s falló al cargar como una tarjeta de memoria.\n"
"El tamaño de la tarjeta no es válido (0x%x bytes)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -88,7 +100,7 @@ msgstr ""
"%s falló al cargar como una tarjeta de memoria.\n"
"El tamaño de la tarjeta no es válido (0x%x bytes)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -98,50 +110,39 @@ msgstr ""
"El fichero no es suficientemente grande para ser un fichero de tarjeta de "
"memoria válido(0x%x bytes)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr "Fallo al abrir %s"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-"%s tiene un hash incorrecto.\n"
-"¿Deseas detener ahora para reparar el problema?\n"
-"Si seleccionas \"No\", el audio se oirá con ruidos."
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
msgstr "%s es un archivo de 0 bytes"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
msgstr "¡%s ya está comprimido! No puede comprimirse más."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr ""
"%s es muy largo para el nombre del archivo, la cantidad máxima de caracteres "
"es 45"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr "%sEliminar%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr "%sExportar GCI%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr "%sImportar GCI%s"
@@ -151,252 +152,275 @@ msgstr "%sImportar GCI%s"
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr "%u Bloques libres; %u entradas de dir. libres"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr "&& Y"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr "&Acerca de..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr "&Iniciar desde unidad de DVD..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr "&Puntos de partida"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr "&Buscar ISO en..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
msgstr "Administrador de &trucos"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
msgstr "&Configuración DSP"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr "&Borrar ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr "&Borrar ISO seleccionadas..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr "&Emulación"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr "&Archivo"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr "Avanzar &frame"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr "&Pantalla completa"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
msgstr "&Configuración gráfica"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr "&Ayuda"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr "&Configuración de atajos"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr "&JIT"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
msgstr "&Cargar estado"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
msgstr "&Administrador de tarjetas de memoria (GC)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr "&Memoria"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr "&Abrir..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr "&Opciones"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr "&Pausa"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr "&Jugar"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr "&Propiedades"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
msgstr "&Modo de solo lectura"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
msgstr "&Actualizar lista"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr "&Registros"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr "&Reiniciar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
msgstr "&Sonido"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr "&Detener"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
msgstr "&Herramientas"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr "&Vídeo"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr "&Vista"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
msgstr "&Configuración de wiimote"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr "&Wiki"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr "'"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr "(-)+zFar"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr "(-)+zNear"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr "(DESCONOCIDO)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr "(off)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr "0x44"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr "1.5x Nativo (960x792)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr "16 bit"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr "1x Nativo (640x528)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr "2.5x Nativo (1600x1320)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr "2x Nativo (1280x1056)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr "32 bit"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr "Visión 3D"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr "3x Nativo (1920x1584)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr "4x Nativo (2560x2112)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr "8 bit"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr "A"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
msgstr "¡¡Una ventana de NetPlay ya está abierta!!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
msgstr "Ningún juego está emulándose actualmente."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:68
-#, fuzzy
msgid ""
"A supported bluetooth device could not be found.\n"
"You must manually connect your wiimotes."
msgstr ""
-"¡No se ha podido encontrar un dispositivo de Bluetooth soportado!\n"
-"Si no estás usando el stack de Microsoft tendrás que emparejarlos "
-"manualmente y usar solo el botón \"Refrescar\"."
+"No se ha podido encontrar un dispositivo de Bluetooth soportado.\n"
+"Tendrás que emparejar manualmente tus Wiimotes."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
+#, fuzzy
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
"ALERTA:\n"
"\n"
@@ -415,17 +439,17 @@ msgstr ""
"\n"
"¡¡Debes redireccionar el puerto TCP para alojar!!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr "Placa base AM"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr "Códigos AR"
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr "Acerca de Dolphin"
@@ -433,15 +457,11 @@ msgstr "Acerca de Dolphin"
msgid "Acceleration"
msgstr "Aceleración"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr "Exactitud:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr "Emulación de VBeam Precisa"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -455,12 +475,12 @@ msgstr ""
"\n"
"Si no estás seguro, elige EFB a textura."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr "Acción"
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -475,7 +495,7 @@ msgstr ""
"Código culpable:\n"
"%s"
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
@@ -483,7 +503,7 @@ msgstr ""
"Error de Action Replay: Tamaño no válido (%08x : dirección = %08x) en "
"Añadido de código (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
@@ -492,7 +512,7 @@ msgstr ""
"Error de Action Replay: Tamaño no válido (%08x : dirección = %08x) en Fill "
"and Slide (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
@@ -501,7 +521,7 @@ msgstr ""
"Error de Action Replay: Tamaño no válido (%08x : dirección = %08x) en "
"escritura y llenado de RAM (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
@@ -510,13 +530,13 @@ msgstr ""
"Error de Action Replay: Tamaño no válido (%08x : dirección = %08x) en "
"Escribir con el puntero (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr ""
"Error de Action Replay: Valor no válido (%08x) en copia de la memoria (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
@@ -526,63 +546,63 @@ msgstr ""
"implementados (%s)\n"
"Los códigos maestros no son necesarios. No los uses."
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr "Error de Action Replay: Línea de código AR no válida: %s"
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr "Error de Action Replay: Código condicional: Tamaño no válido %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr "Error de Action Replay: Tipo de Código Normal no válido %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr "Action Replay: Código Normal %i: Subtipo no válido %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr "Action Replay: Código Normal 0: Subtipo no válido %08x (%s)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr "Adaptador:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr "Añadir"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
msgstr "Añadir código ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr "Añadir parche"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr "Añadir nueva ventana"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr "Añadir..."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
msgstr "Dirección:"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -600,7 +620,7 @@ msgstr ""
"\n"
"NOTA: Consulta LogWindow/Consola para ver los valores adquiridos."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -618,49 +638,49 @@ msgstr ""
"\n"
"NOTA: Consulta LogWindow/Consola para ver los valores adquiridos."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr ""
"Ajusta la presión requerida del control analógico para activar los botones."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr "Avanzado"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr "Configuración avanzada"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
msgstr "Todos los archivos de GC/Wii (elf, dol, gcm, iso, wbfs, ciso, wad)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
msgstr "Todas las imágenes de GC/Wii (gcm, iso, wbfs, ciso, gcz)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
msgstr "Todos los archivos Gamecube GCM (gcm)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr "Todos los estados guardados (sav, s##)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr "Todos los archivos ISO de Wii (iso)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr "Todos los archivos ISO comprimidos de GC/Wii (gcz)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr "Todos los archivos (*.*)|*.*"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
@@ -673,39 +693,39 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr "Analizar"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
msgstr "Ángulo"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
msgstr "Filtro anisotrópico:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
msgstr "Antialias:"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr "Apploader tiene tamaño incorrecto... ¿Es realmente un apploader?"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr "Apploader no puede cargar desde el archivo"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr "Apploader:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr "Aplicar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
@@ -715,11 +735,11 @@ msgstr ""
"\n"
"Si no estás seguro, selecciona (off)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr "Árabe"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
msgstr "¿Estás seguro de que quieres borrar \"%s\"?"
@@ -736,46 +756,50 @@ msgstr ""
msgid "Are you sure you want to delete this file? It will be gone forever!"
msgstr "¿Seguro que quieres borrar este archivo? ¡Desaparecerá para siempre!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr "Arm JIT (experimental)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr "Relación de aspecto:"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr "Al menos una ventana debe permancer abierta."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr "Audio"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr "Motor de audio:"
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr "AudioCommon: Error al abrir dispositivo AO.\n"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr "Automático"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
msgstr "Auto (múltiplo de 640x528)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
msgstr "Auto (tamaño de ventana)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr "Autoajuste del tamaño de la ventana"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
@@ -785,130 +809,130 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr "B"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
msgstr "Registro BP"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr "Atrás"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
msgstr "Configuración del motor"
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr "Motor:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr "Detectar entrada sin foco"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr "Atrás"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr "Cabecera de archivo incorrecta"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr "Imagen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
msgstr "Detalles de la imagen"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr "Imagen:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr "Barra"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr "Básico"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr "Configuración básica"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr "Bajo"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr "La suma de verificación de la tabla de localización de bloques falló"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr "Bloques"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr "Azul"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr "Azul izquierda"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr "Azul derecha"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr "Inferior"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr "Controles asignados: %lu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
-msgstr "Quebrado"
+msgstr "Roto"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr "Buscar"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr "Busca un directorio para añadir"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr "Buscar un directorio de ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr "Busca un directorio de salida"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr "Búfer:"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr "Botones"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
@@ -916,31 +940,31 @@ msgstr ""
"Saltar la limpieza de la caché de la instrucción DCBZ. Normalmente deja esta "
"opción deshabilitada."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr "C"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr "Stick C"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr "C-Stick"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr "Registro CP"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr "Emulador de CPU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr "Caché de listas de visualización"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -955,25 +979,40 @@ msgstr ""
"Esto generalmente es una mejora segura, pero a veces puede causar "
"problemas.\n"
"\n"
-"Si no estás seguro, deja esta casilla sin marcar."
+"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr "No se puede encontrar el WiiMote por bd: %02x:%02x:%02x:%02x:%02x:%02x"
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr "No se puede encontrar un WiiMote por el manejador de conexión %02x"
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr "No se puede leer del DVD_Plugin - DVD-Interface: Error Fatal"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr "Cancelar"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr "No se puede abrir %s"
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr "No se puede cancelar el registro de eventos con eventos pendientes"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
@@ -982,9 +1021,9 @@ msgid ""
msgstr ""
"No se puede usar ese archivo como una tarjeta de memoria.\n"
"%s\n"
-"no es un fichero válido de tarjeta de memoria de Gamecube."
+"no es un fichero válido de tarjeta de memoria de Gamecube"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
@@ -992,30 +1031,15 @@ msgstr ""
"No se puede usar ese archivo como una tarjeta de memoria.\n"
"¿Estás intentando usar el mismo archivo en ambas ranuras?"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr "No se puede encontrar el WiiMote por bd: %02x:%02x:%02x:%02x:%02x:%02x"
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr "No se puede encontrar un WiiMote por el título de conexión %02x"
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr "No se puede leer del DVD_Plugin - DVD-Interface: Error Fatal"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
msgstr "Bloq Mayús"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr "Catalán"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr "Centro"
@@ -1023,12 +1047,12 @@ msgstr "Centro"
msgid "Change"
msgstr "Cambiar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr "Cambiar &disco..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr "Cambiar disco"
@@ -1036,7 +1060,7 @@ msgstr "Cambiar disco"
msgid "Change Game"
msgstr "Cambiar juego"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
@@ -1044,243 +1068,243 @@ msgstr ""
"Cambiar el idioma de la interfaz de usuario.\n"
"Requiere reiniciar el programa."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr "Cambia el signo del parámetro zFar (después de la corrección)"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr "Cambia el signo del parámetro zNear (después de la corrección)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr ""
"¡Cambiar esto no tendrá ningún efecto mientras el emulador esté ejecutandose!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr "Chat"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr "Código de truco"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
msgstr "Buscar trucos"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
msgstr "Administrador de trucos"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr "Comprobar integridad de la partición"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr "Comprobando integridad..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
-msgstr "Chino Simplificado"
+msgstr "Chino (Simplificado)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr "Chino (Tradicional)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr "Escoge un directorio raíz de DVD:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr "Escoge un directorio raíz para la NAND:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr "Escoge una ISO por defecto:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr "Escoge un directorio para añadir"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
-msgstr "Escoge un archivo a abrir"
+msgstr "Escoge un archivo para abrir"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr "Escoge una tarjeta de memoria:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
msgstr ""
-"Escoge el archivo que usar como apploader (se aplica a los discos armados a "
-"partir de directorios solamente):"
+"Escoge el archivo a usar como apploader: (se aplica a los discos construidos "
+"a partir de directorios solamente)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
msgstr "Escoge la carpeta de destino"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr "Circle Stick"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr "Clásico"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr "Limpiar"
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
msgstr ""
"¡¡El cliente se desconectó mientras el juego estaba ejecutándose!! NetPlay "
-"ha sido deshabilitado. Debe detener el juego manualmente."
+"ha sido deshabilitado. Debes detener el juego manualmente."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr "Cerrar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
msgstr "Co&nfigurar..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
msgstr "Información del código"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
msgstr "Código:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr "Comando"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr "Comentario"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr "Comentario:"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr "Comprimir ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
-msgstr "Comprimir ISO seleccionadas..."
+msgstr "Comprimir ISOs seleccionadas..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr "Comprimiendo ISO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr "Configuración"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr "Configurar"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr "Configurar control"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr "Configurar mandos"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr "Configurar..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr "Confirmar sobrescritura de archivo"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
msgstr "Confirmar al detenerse"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr "Conectar"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
msgstr "Conectar teclado USB"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr "Conectar Wiimote %i"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr "Conectar Wiimote 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr "Conectar Wiimote 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr "Conectar Wiimote 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr "Conectar Wiimote 4"
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr "Conectando..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr "Consola"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:71
msgid "Continuous Scanning"
-msgstr ""
+msgstr "Escaneo continuo"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr "Control"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr "Convertir a GCI"
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr "Fallo al copiar"
@@ -1289,37 +1313,37 @@ msgstr "Fallo al copiar"
msgid "Copy to Memcard %c"
msgstr "Copiar a tarjeta de memoria %c"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr "Núcleo"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr "No se pudo crear %s"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr "No se pudo inicializar el motor %s."
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
"backup. Please note that original Gamecube and Wii discs cannot be read by "
"most PC DVD drives."
msgstr ""
-"No se pudo leer \"%s\". No hay disco en la unidad, o no es una copia de "
+"No se pudo leer \"%s\". No hay disco en la unidad, o no es una copia de "
"seguridad de GC/Wii. Ten en cuenta que discos de Gamecube o Wii originales "
"no pueden ser leídos en la mayoría de los lectores DVD."
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr "No se pudo reconocer el archivo ISO %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
msgstr "No se pudo guardar %s"
@@ -1329,29 +1353,37 @@ msgid ""
"Could not set pads. The player left or the game is currently running!\n"
"(setting pads while the game is running is not yet supported)"
msgstr ""
-"No se pudieron definir los pads. ¡El jugador se fue, o el juego está "
-"ejecutándose todavía!\n"
+"No se pudieron definir los pads. ¡El jugador se fue, o el juego aún se está "
+"ejecutándo!\n"
"(definir los pads mientras el juego está ejecutándose no está permitido "
"todavía)"
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
+"protected?\n"
+"\n"
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
msgstr ""
"No se pudo escribir el archivo de tarjeta de memoria %s.\n"
"\n"
"¿Estás ejecutando Dolphin desde un CD/DVD, o el archivo de guardado está "
-"protegido contra escritura?"
+"protegido contra escritura?\n"
+"\n"
+"¿Estás recibiendo esto después de mover el directorio de emulador?\n"
+"Si es así, entonces es posible que tengas que volver a especificar la "
+"ubicación de la tarjeta de memoria en las opciones."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
-msgstr "No se pudo encontrar el comando para abrir la extension 'ini'!"
+msgstr "No se pudo encontrar el comando para abrir la extensión 'ini'!"
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
@@ -1359,38 +1391,38 @@ msgstr ""
"No se pudo iniciar el núcleo.\n"
"Revisa tu configuración."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr "Cuenta:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr "País:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr "Crear Código AR"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr "Crear nueva perspectiva"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
msgstr "Creador:"
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr "Crítico"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
-msgstr "Cortar"
+msgstr "Recortar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
@@ -1400,140 +1432,141 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
-msgstr "Fundido"
+msgstr "Desvanecimiento cruzado"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
-msgstr "El directorio actual cambio de %s a %s luego de wxFileSelector!"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
+msgstr ""
+"¡El directorio actual ha cambiado de %s a %s después de wxFileSelector!"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
msgid "Custom Projection Hack"
msgstr "Hack de proyección personalizado"
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
msgid "Custom Projection Hack Settings"
msgstr "Configuración del hack de proyección personalizado"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
msgstr "Personalizar algunos párametros de la proyección ortográfica."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr "Checo"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr "D"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr "Pad direccional"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr "DSP"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr "Motor de emulación DSP"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr "Emulación DSP HLE (rápido)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr "Intérprete DSP LLE (lento)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr "DSP LLE en un proceso"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr "Recompilador DSP LLE"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr "DSP en proceso dedicado"
+
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP settings"
msgstr "Configuración DSP"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr "Raíz DVD:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr "DVDLowRead - Error fatal: fallo al leer del volumen"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr "DVDLowUnencryptedRead - Error fatal: fallo al leer el volumen"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr "Tamaño de datos"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr "Fecha:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr "Archivos Datel MaxDrive/Pro(*.sav)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr "Zona muerta"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr "Depurar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr "Depuración"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
msgstr "Decimal"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr "Descomprimir ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr "Descomprimir ISO seleccionadas..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr "Descomprimir ISO"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr "Predeterminado"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr "ISO por defecto:"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr "Fuente por defecto"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
msgstr "Borrar"
@@ -1541,21 +1574,21 @@ msgstr "Borrar"
msgid "Delete Save"
msgstr "Borrar guardado"
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr "¿Borrar el archivo existente '%s'?"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr "Descripción"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr "Detectar"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
@@ -1563,29 +1596,29 @@ msgstr ""
"Se detectó un intento de leer más datos del DVD de los que entran en el "
"búfer. Truncando."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr "Dispositivo"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr "Configuración del dispositivo"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr "Marcar"
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr "Direct3D11"
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr "Direct3D9"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
@@ -1593,16 +1626,20 @@ msgstr ""
"Falló la suma de verificación del directorio\n"
" y falló la suma de verificación del directorio backup"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr "Deshabilitar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
msgid "Disable Fog"
msgstr "Deshabilitar niebla"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1611,13 +1648,13 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
"Desactivar cualquier emulación de XFB.\n"
-"Aumenta la velocidad de la emulación en gran medida, pero causa fallos "
-"graves en muchos juegos que confian en él (especialmente aplicaciones "
+"Acelera la velocidad de la emulación en gran medida, pero causa fallos "
+"graves en muchos juegos que dependen de ellos (especialmente aplicaciones "
"caseras).\n"
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1633,20 +1670,33 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#, fuzzy
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Salta el destino del pase alfa usado en muchos juegos para varios efectos "
+"gráficos.\n"
+"\n"
+"Si no estás seguro, déjala sin marcar."
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr "Disco"
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr "Error de lectura de disco"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr "Pantalla"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
@@ -1656,61 +1706,61 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
msgstr "Dividir"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr "¿Quieres detener la emulación actual?"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
msgstr "Decodificador Dolby Pro Logic II"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr "Dolphin"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr "Configuración gráfica %s de Dolphin"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
msgstr "&Website de Dolphin"
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
msgstr "Configuración de Dolphin"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:183
msgid "Dolphin Emulated Wiimote Configuration"
-msgstr "Configuración de wiimote emulado de Dolphin"
+msgstr "Configuración de Wiimote emulado de Dolphin"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
msgstr "Dolphin FIFO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr "Configuración de GCPad Dolphin"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr "Películas TAS de Dolphin (*.dtm)"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:8
msgid "Dolphin Wiimote Configuration"
-msgstr "Configuración de wiimote de Dolphin"
+msgstr "Configuración de Wiimote de Dolphin"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr "Dolphin en &Google Code"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
@@ -1718,7 +1768,7 @@ msgstr ""
"Dolphin no pudo encontrar ninguna ISO de GC/Wii. Haz doble clic aquí para "
"buscar..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
@@ -1726,50 +1776,59 @@ msgstr ""
"Dolphin está configurado actualmente para esconder todos los juegos. Haz "
"doble clic aquí para mostrarlos..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
msgstr "Dolphin no ha podido completar la acción solicitada."
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#, fuzzy
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+"Habilitar acceso rápido al disco. Es necesario para algunos juegos. (ON = "
+"Rápido, OFF = Compatible)"
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
msgstr "Abajo"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
msgstr "Descargar códigos (base de datos de WiiRD)"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr "Se descargaron %lu códigos. (%lu añadidos)"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr "Tambores"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
-msgstr "Dummy"
+msgstr "Falso"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr "Depósito de audio"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr "Volcar objetivo EFB"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr "Volcar frames"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr "Volcar texturas"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
@@ -1779,7 +1838,7 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
@@ -1789,7 +1848,7 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
@@ -1799,21 +1858,21 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr "Holandés"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr "&Salir"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr "Copias de EFB"
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1826,52 +1885,52 @@ msgstr ""
"de Dolphin, puede que se necesite reiniciar para que Windows reconozca el "
"nuevo controlador."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr "EUROPA"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
-msgstr "Actualización frecuente de memoria "
+msgstr "Actualización frecuente de memoria"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr "Editar"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr "Editar código ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr "Editar configuración"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr "Editar parche"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr "Editar perspectiva actual"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr "Editar..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr "Efecto"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr "Búfer de fotogramas embebido"
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr "El proceso de emulación ya está ejecutándose"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1886,7 +1945,7 @@ msgstr ""
"\n"
"Si no estás seguro, activa Emulación virtual de XFB."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1906,7 +1965,7 @@ msgstr ""
msgid "Emulated Wiimote"
msgstr "Wiimote emulado"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
msgstr "Estado de emulación:"
@@ -1914,7 +1973,7 @@ msgstr "Estado de emulación:"
msgid "Enable"
msgstr "Habilitar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1930,72 +1989,71 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr "Habilitar Registro de AR"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr "Habilitar asociación de bloques"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr "Permitir el cálculo del cuadro delimitador"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr "Habilitar caché"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr "Habilitar trucos"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr "Habilitar doble núcleo"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr "Habilitar doble núcleo (mejora)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
msgstr "Habilitar atajos"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr "Habilitar salto de fotogramas inactivos"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
msgstr "Habilitar salto de fotogramas inactivos (mejora)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr "Habilitar MMU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
msgstr "Habilitar escaneado progresivo"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
msgstr "Habilitar salvapantallas"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:75
-#, fuzzy
msgid "Enable Speaker Data"
-msgstr "Habilitar páginas"
+msgstr "Activar datos de altavoz"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr "Habilitar pantalla panorámica"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
msgstr "Habilitar \"alambrado\" (wireframe)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -2009,19 +2067,19 @@ msgstr ""
"\n"
"Si no estás seguro, elige 1x."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
msgstr ""
"Habilitar acceso rápido al disco. Es necesario para algunos juegos. (ON = "
-"Rápido, OFF=Compatible)"
+"Rápido, OFF = Compatible)"
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:803
msgid "Enable pages"
msgstr "Habilitar páginas"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -2034,7 +2092,7 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -2046,7 +2104,7 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
@@ -2054,11 +2112,11 @@ msgstr ""
"Habilitar esto para acelerar The Legend of Zelda: Twilight Princess. "
"Deshabilitar para CUALQUIER OTRO juego."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr "Habilta un hack de proyección personalizado"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
@@ -2066,12 +2124,12 @@ msgstr ""
"Activa la emulación de Dolby Pro Logic II usando 5.1 surround. No disponible "
"en OSX."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr "Activa la emulación de Dolby Pro Logic II. Solo para el motor OpenAL."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
@@ -2079,7 +2137,7 @@ msgstr ""
"Activa la emulación de Dolby Pro Logic II. Solo para el motor OpenAL. "
"Requiere que renombres soft_oal.dll a OpenAL32.dll para que funcione."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
@@ -2091,15 +2149,15 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
msgstr ""
-"Habilita la Unidad de Manejo de Memoria(MMU), necesario para algunos juegos. "
-"(ON = Compatible, OFF = Rápido)"
+"Habilita la Unidad de Manejo de Memoria, necesario para algunos juegos. (ON "
+"= Compatible, OFF = Rápido)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
@@ -2109,52 +2167,52 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr "Fin"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr "Inglés"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
msgstr "Mejoras"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr "Escribe un nombre para la nueva perspectiva:"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr "Entrada %d/%d"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr "Entrada 1/%d"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr "Igual"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr "Error"
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr ""
"Error al cargar el idioma seleccionado. Volviendo al predeterminado del "
"sistema."
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
@@ -2163,7 +2221,7 @@ msgstr ""
"Error: Después de \"%s\", se ha encontrado %d (0x%X) en vez de la marca de "
"guardado %d (0x%X). Cancelando carga del guardado..."
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
@@ -2172,38 +2230,38 @@ msgstr ""
"Error: Se intentó acceder a %s fuentes, pero no han sido cargadas. Los "
"juegos pueden no mostrar las fuentes correctamente, o tener errores."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr "Escape"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr "Euforia"
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr "Exception handler - acceso debajo del espacio de memoria. %08llx%08llx"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr "Ejecutar"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr "Fallo al exportar"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr "Exportar archivo"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr "Exportar grabación"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr "Exportar grabación..."
@@ -2211,7 +2269,7 @@ msgstr "Exportar grabación..."
msgid "Export Save"
msgstr "Exportar guardado"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr "Exportar guardado a uno de Wii (experimental)"
@@ -2219,100 +2277,100 @@ msgstr "Exportar guardado a uno de Wii (experimental)"
msgid "Export all saves"
msgstr "Exportar todos los guardados"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr "Fallo al exportar. ¿Intentar de nuevo?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr "Exportar guardado como..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr "Extensión"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr "Buffer de frames externo"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr "Parámetro extra"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
-msgstr "Parámetro extra útil en «Metroid: Other M» exclusivamente."
+msgstr "Parámetro extra que es útil en «Metroid: Other M» exclusivamente."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr "Extraer todos los archivos..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr "Extraer Apploader..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr "Extraer DOL..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr "Extraer directorio..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr "Extraer archivo..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr "Extraer partición..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr "Extrayendo %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
msgstr "Extrayendo todos los archivos"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
msgstr "Extrayendo directorio"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr "Extrayendo..."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr "Byte de FIFO"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr "Jugador FIFO"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr "FRANCIA"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr "Tamaño del FST:"
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr "¡Fallo al conectar!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr "¡Fallo al escuchar!"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
msgstr "Fallo al descargar los códigos."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
msgstr "Fallo al extraer a %s!"
@@ -2329,35 +2387,39 @@ msgid ""
"You may use the DSP HLE engine which does not require ROM dumps.\n"
"(Choose it from the \"Audio\" tab of the configuration dialog.)"
msgstr ""
-"Fallo al cargar DSP ROM:\t%s\n"
+"Fallo al cargar DSP ROM:»%s\n"
"\n"
"Este fichero se requiere para usar DSP LLE.\n"
"No está incluido con Dolphin porque contiene datos con copyright.\n"
"Usa DSPSpy para extraer el fichero de tu Wii física.\n"
"\n"
"Puedes usar el motor DSP HLE, que no requiere extraer la ROM.\n"
-"(Elígelo en la pestaña \"Audio\" de la ventana de configuración.)"
+"(Elígelo en la pestaña \"Audio\" de la ventana de configuración.)"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr "Fallo al cargar bthprops.cpl"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr "Fallo al cargar hid.dll"
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
msgstr "Error al leer %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr "Fallo al leer banner.bin"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr "Fallo al leer la cabecera bk"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
@@ -2366,9 +2428,9 @@ msgid ""
msgstr ""
"Falló al leer el bloque %d de los datos guardados.\n"
"La tarjeta de memoria puede estar truncada.\n"
-"Posición del fichero %llx."
+"Posición del fichero:%llx"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
@@ -2376,7 +2438,7 @@ msgstr ""
"Falló leer la tabla de asignación de bloques de respaldo correctamente\n"
"(0x8000-0x9FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
@@ -2384,12 +2446,17 @@ msgstr ""
"Falló leer la tabla de asignación de bloques correctamente\n"
"(0x6000-0x7FFF)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr "Fallo al leer los datos del archivo %d"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr "Fallo al leer los datos del archivo: %s"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
@@ -2397,7 +2464,7 @@ msgstr ""
"Falló la lectura del directorio de respaldo\n"
"(0x4000-0x5FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
@@ -2405,7 +2472,11 @@ msgstr ""
"Falló la lectura del directorio\n"
"(0x2000-0x3FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr "Fallo al leer la cabecera"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
@@ -2413,41 +2484,41 @@ msgstr ""
"Falló leer la cabecera correctamente\n"
"(0x0000-0x1FFF)"
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr "Fallo al leer la ID única de la imagen de disco"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr "Fallo al escribir BT.DINF a SYSCONF"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr "Fallo al escribir bkhdr"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr "Fallo al escribir la cabecera para %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr "Fallo al escribir la cabecera para el archivo %d"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
-msgstr "Iraní"
+msgstr "Persa"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr "Rápido"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr "Versión rápida del MMU. No funciona para todos los juegos."
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
@@ -2455,23 +2526,23 @@ msgstr ""
"Desincronización fatal. Cancelando reproducción. (Error en PlayWiimote: %u !"
"= %u, byte %u.)%s"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr "Jugador Fifo"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
msgstr "Información del fichero"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr "El archivo no contenía códigos."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr "Archivo convertido a .gci"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
@@ -2479,7 +2550,7 @@ msgstr ""
"El archivo no pudo ser abierto\n"
"o no tiene una extensión válida"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
@@ -2488,36 +2559,36 @@ msgstr ""
"El archivo tiene la extensión \"%s\"\n"
"Extensiones válidas son (.raw/.gcp)"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr "El archivo no es reconocido como una tarjeta de memoria"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr "Archivo sin comprimir"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr "FileIO: Modo desconocido de apertura : 0x%02x"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr "Sistema de archivos"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
-msgstr "¡Tipo de archivo INI desconocido: no se abrirá!"
+msgstr "¡Tipo de archivo 'ini' desconocido¡ !No se abrirá!"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr "Encontrar siguiente"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr "Encontrar anterior"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr "Primer bloque"
@@ -2525,23 +2596,23 @@ msgstr "Primer bloque"
msgid "Fix Checksums"
msgstr "Reparar sumas de verificación"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr "Forzar 16:9"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr "Forzar 4:3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
msgstr "Forzar consola como NTSC-J"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
msgstr "Forzar filtrado de texturas"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2555,7 +2626,7 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2568,166 +2639,165 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
"setting when playing Japanese games."
msgstr ""
"Fuerza el modo NTSC-J para usar la ROM de la fuente japonesa.\n"
-"Sin marcar, Dolphin por defecto usa NTSC-U y activa automáticamente esta "
-"característica cuando se juega a juegos japoneses."
+"Deja sin marcar, Dolphin por defecto usa NTSC-U y activa automáticamente "
+"esta característica cuando se juega a juegos japoneses."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
msgstr ""
-"Formato como ASCII (NTSC\\PAL)?\n"
+"¿Dar formato como ASCII (NTSC\\PAL)?\n"
"Elige no para sjis (NTSC-J)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr "Adelante"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr "%d coincidencias para '"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr "Frame"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
-msgstr "Frame "
+msgstr "Frame"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr "Avanzar &fotogramas"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr "Volcado de fotogramas usa FFV1"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr "Info del frame"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr "Información de la grabación"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr "Salto de &fotogramas"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr "Límite de fotogramas:"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr "Frames a grabar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr "Cámara libre"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr "Francés"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr "Cuerdas"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr "Desde"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr "Pant. compl."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr "Resolución en pantalla completa:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr "Archivo GCI (*.gci)"
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr "Configuración del micro de GC"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr "Pad GC"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr "GX_CMD_INVL_VC"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
msgstr "ID del juego:"
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr "¡El juego ya está ejecutándose!"
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr "¡El juego no está ejecutándose!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
-#, fuzzy
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
-msgstr "¡¡Juego no encontrado!!"
+msgstr "¡Juego no encontrado!"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr "Configuración específica del juego"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr "Configurar Juego"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr "Ficheros de guardado de GameCube (*.gci;*.gcs;*.sav)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr "Gamecube"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr "&Configuración del mando Gamecube"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
msgstr "Tarjetas de memoria de Gamecube (*.raw,*.gcp)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr "Configuración del Pad de Gamecube"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
msgstr "Códigos Gecko"
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2735,15 +2805,15 @@ msgid ""
"native code handler by placing the codehandler.bin file into the Sys "
"directory and restarting Dolphin.)"
msgstr ""
-"GeckoCode falló al ejecutar (CT%i CST%i) (%s)\n"
+"Código Gecko falló al ejecutar (CT%i CST%i) (%s)\n"
"(puede ser un código incorrecto o su tipo no es soportado todavía. Prueba "
"usando el controlador de código nativo colocando el fichero codehandler.bin "
"en el directorio Sys y reiniciando Dolphin.)"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr "General"
@@ -2751,31 +2821,31 @@ msgstr "General"
msgid "General Settings"
msgstr "Ajustes generales"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr "Alemán"
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr ""
"GetARCode: El índice es mayor que el tamaño de la lista de códigos AR %lu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr "Gráficos"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
msgstr "Configuración gráfica"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr "Mayor que"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2793,51 +2863,76 @@ msgstr ""
"\n"
"Si no estás seguro, déjala marcada."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr "Griego"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr "Verde"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr "Verde izquierda"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr "Verde derecha"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr "Guitarra"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr "HCI_CMD_INQUIRY ha sido llamada; ¡por favor, comunícalo!"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr "Búfer hackeado cargado"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr "Hacks"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr "Falló la suma de verificación de cabecera"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr "Hebreo"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr "Altura"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr "Ayuda"
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+"Hola,\n"
+"\n"
+"Dolphin requiere Mac OS X 10.7 o superior.\n"
+"Desafortunadamente estás utilizando una versión antigua de OS X.\n"
+"La última version de Doplhin compatible con OS X10.6 es Dolphin 3.5\n"
+"Por favor actualiza a 10.7 o superior para usar la versión más nueva de "
+"Dolphin.\n"
+"\n"
+"¡Adiós!\n"
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2851,17 +2946,17 @@ msgstr ""
"Dolphin requiere que tu CPU soporte extensiones SSE2.\n"
"Desafortunadamente, tu CPU no las soporta, así que Dolphin no funcionará.\n"
"\n"
-"Sayonara!\n"
+"¡Adiós!\n"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr "Esconder"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
msgstr "Esconder cursor"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
@@ -2872,26 +2967,26 @@ msgstr ""
"\n"
"Si no estás seguro, déjala marcada."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
msgstr "Home"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr "Hostear"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
msgstr "Configuración de atajos"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
msgstr "Atajos"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr "Húngaro"
@@ -2899,35 +2994,35 @@ msgstr "Húngaro"
msgid "Hybrid Wiimote"
msgstr "Wiimote híbrido"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr ""
"IOCTL_ES_GETVIEWS: Se trató de obtener los datos de un ticket desconocido: "
"%08x/%08x"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-"IOCTL_ES_LAUNCH: El juego intentó recargar el ios o un título que no está "
-"disponible en su volcado nand\n"
+"IOCTL_ES_LAUNCH: El juego intentó recargar el IOS o un título que no está "
+"disponible en su volcado de NAND\n"
"TitleID %016llx.\n"
-" Dolphin probablemente se bloqueará ahora"
+"Dolphin probablemente se colgará ahora."
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
msgstr "IOCTL_ES_READCONTENT - destino incorrecto"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
msgstr "Configuración IPL"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr "IR"
@@ -2939,23 +3034,23 @@ msgstr "Puntero IR"
msgid "IR Sensitivity:"
msgstr "Sensibilidad IR:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
-msgstr "Detalles del ISO"
+msgstr "Detalles de la ISO"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
msgstr "Directorios de ISO"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr "ITALIA"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr "Icono"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
@@ -2963,29 +3058,11 @@ msgstr ""
"Si se elige, los registros del cuadro delimitador serán actualizados. Es "
"usado por los juegos de Paper Mario."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-"Si los FPS son erróneos, esta opción puede ayudar. (ON = Compatible, OFF = "
-"Rápido)"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-"Si defines un límite de fotogramas mayor que la velocidad de juego completa "
-"(NTSC: 60, PAL: 50), también debes deshabilitar la regulación de audio en "
-"DSP para que tenga efecto (debería arreglar los \"clics\" de audio, pero "
-"puede causar ruido constante dependiendo del juego)."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr "Ignorar cambios de formato"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -2999,7 +3076,7 @@ msgstr ""
"\n"
"Si no estás seguro, déjala marcada."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -3017,43 +3094,31 @@ msgstr ""
msgid "Import Save"
msgstr "Importar Guardado"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr "Fallo al importar. ¿Probar otra vez?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
msgstr ""
-"El archivo importado tiene una extensión .gsc,\n"
-"pero no tiene la cabecera correcta."
+"El archivo importado tiene una extensión .gsc\n"
+"pero no tiene la cabecera correcta"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr "El archivo importado tiene una longitud no válida"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
msgstr ""
-"El archivo importado tiene extensión .sav,\n"
+"El archivo importado tiene extensión .sav\n"
"pero no tiene la cabecera correcta"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"Mejora el rendimiento, pero puede provocar fallos en juegos que requieran de "
-"emulación adecuada de la niebla.\n"
-"\n"
-"Si no estás seguro, déjala sin marcar."
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
msgstr "En juego"
@@ -3061,67 +3126,67 @@ msgstr "En juego"
msgid "In-Game"
msgstr "En juego"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr "Información"
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
msgstr "Información"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr "Entrada"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr "Insertar"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr "Insertar código encriptado o desencriptado aquí..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
msgstr "Insertar tarjeta SD"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr "Insertar un nombre aquí.."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
msgstr "Instalar WAD"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr "Instalar al menú de la Wii"
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
"Se ha llamado InstallExceptionHandler, pero esta plataforma no lo soporta "
"todavía."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
msgstr "Instalando WAD..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr "Error de comprobación de la integridad"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr "Comprobación de la integridad finalizada"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr "Comprobación de la integridad finalizada. No se encontraron errores."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
@@ -3130,19 +3195,19 @@ msgstr ""
"Falló la comprobación de la integridad para la partición %d. Tu volcado está "
"probablemente corrupto o ha sido parcheado incorrectamente."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
msgstr "Interfaz"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
msgstr "Configuración de la interfaz"
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr "Error Interno de LZO - Fallo al comprimir"
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
@@ -3151,41 +3216,45 @@ msgstr ""
"Error Interno de LZO - fallo al descomprimir (%d) (%li, %li) \n"
"Tratando de cargar el estado de nuevo"
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr "Error Interno de LZO - lzo_init() falló"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr "Resolución interna:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr "Intérprete (MUY lento)"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr "Intro"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr "Tamaño no válido(%x) o Magic word (%x)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
msgstr "¡Valor no válido!"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr "bat.map o entrada de directorio no válido"
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr "Evento de tipo %i no válido"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr "Archivo no válido"
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -3194,48 +3263,56 @@ msgid ""
msgstr ""
"opening.bnr no váldio encontrado en gcm:\n"
"%s\n"
-" Puede que necesitas volcar este juego de nuevo."
+"Puede ser que necesites volcar este juego de nuevo."
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr "Archivo de grabación no válido"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr "Parámetros de búsqueda inválidos (ningún objeto seleccionado)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr "Cadena de búsqueda incorrecta (no se pudo convertir en un número)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr "Búsqueda de cadena incorrecta (solo se soportan algunas longitudes)"
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr "Estado no válido"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr "Italiano"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr "JAPÓN"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr "Recompilador JIT (recomendado)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr "Recompilador experimental JITIL"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr "Japonés"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr "COREA"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
@@ -3245,62 +3322,62 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
msgstr "Mantener la ventana siempre visible"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr "Clave"
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr "Coreano"
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr "L"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
msgstr "Botón L"
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr "L-Analógico"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr "Idioma:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr "Último estado sobrescrito"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr "Último estado guardado"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
msgstr "Latencia:"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr "Izquierda"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr "Stick izquierdo"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
@@ -3308,7 +3385,7 @@ msgstr ""
"Clic izquierdo para detectar atajos.\n"
"Introduce espacio para limpiar."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
@@ -3318,7 +3395,7 @@ msgstr ""
"Clic medio para borrar.\n"
"Clic der. para más opciones."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
@@ -3326,76 +3403,76 @@ msgstr ""
"Clic izq./der. para más opciones.\n"
"Clic medio para borrar."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr "Menor que"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr "Usar FPS para limitar"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr "Cargar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr "Cargar texturas personalizadas"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr "&Cargar estado 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr "&Cargar estado 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr "&Cargar estado 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr "&Cargar estado 4"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr "&Cargar estado 5"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr "&Cargar estado 6"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr "&Cargar estado 7"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr "&Cargar estado 8"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr "Cargar estado..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
msgstr "Cargar Menú de sistema Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
msgstr "Cargar Menú de sistema Wii %d %c"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
@@ -3405,7 +3482,7 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr "Cargar valores ya definidos de los patrones de hack disponibles."
@@ -3413,23 +3490,23 @@ msgstr "Cargar valores ya definidos de los patrones de hack disponibles."
msgid "Local"
msgstr "Local"
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr "Registrar"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr "Configuración de registro"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr "Escribir FPS en un fichero"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr "Tipos de registro"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3442,77 +3519,92 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr "Salida de registro"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr "Registrando"
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr "¡Se perdió la conexión con el servidor!"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr "Botón M"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
" %016llx%016llx != %016llx%016llx"
msgstr ""
"MD5 no coinciden\n"
-" %016llx%016llx != %016llx%016llx"
+"%016llx%016llx != %016llx%016llx"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr "Hack de velocidad MMU"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr "Archivos MadCatz Gameshark (*.gcs)"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr "Stick principal"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
msgstr "ID del fabricante:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr "Fabricante:"
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Hace que los objetos distantes más visibles mediante la eliminación de "
+"niebla, lo que aumenta el detalle general.\n"
+"Desactivar la niebla provocará que algunos juegos basados en la emulación de "
+"niebla dejen de funcionar correctamente.\n"
+"\n"
+"Si no estás seguro, déjala sin marcar."
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr "Máx."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
msgstr "La tarjeta de memoria ya tiene un guardado para este juego"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr "La tarjeta de memoria ya está abierta"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr "Byte de memoria"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
msgstr "Tarjeta de memoria"
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
@@ -3520,7 +3612,7 @@ msgstr ""
"Administrador de tarjetas de memoria. ADVERTENCIA: Haz copias antes de "
"usarlo; debería estar arreglado, ¡pero puede estropear cosas!"
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3537,17 +3629,17 @@ msgstr ""
"%s\n"
"¿Deseas copiar el viejo archivo a esta nueva dirección?\n"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr ""
"El tamaño del fichero de la tarjeta de memoria no corresponde con el tamaño "
"de la cabecera."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr "Menú"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr "Mic"
@@ -3556,20 +3648,20 @@ msgstr "Mic"
msgid "Min"
msgstr "Mín."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr "Varios"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr "Configuraciones varias"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr "Modificador"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3581,20 +3673,20 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr "Fuente monoespaciada"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr "Motion Plus"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr "Motor"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3611,227 +3703,239 @@ msgstr ""
"\n"
"\n"
"\n"
-"\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
msgstr "Multiplicar"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
msgstr "NOP"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr ""
"NOTA: El tamaño del flujo no coincide con la longitud actual de los datos\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
msgstr "NP Añadir"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr "NP Iniciar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
msgstr "NP Decimal"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
msgstr "NP Borrar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
msgid "NP Divide"
msgstr "NP Dividir"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
msgstr "NP Abajo"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
msgstr "NP Fin"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
msgstr "NP Entrar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
msgstr "NP Igual"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr "NP Hogar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
msgstr "NP Insertar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
msgid "NP Left"
msgstr "NP Izquierda"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
msgid "NP Multiply"
msgstr "NP Multiplicar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
msgid "NP Page Down"
msgstr "NP Pág. Abajo"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
msgid "NP Page Up"
msgstr "NP Pág. Arriba"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
msgid "NP Right"
msgstr "NP Derecha"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
msgid "NP Separator"
msgstr "NP Separador"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
msgstr "NP Espacio"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
msgid "NP Subtract"
msgstr "NP Sustraer"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
msgid "NP Tab"
msgstr "NP Tab"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
msgid "NP Up"
msgstr "NP Arriba"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr "Nombre:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr "Nombre:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr "Archivos nativos GCI (*.gci)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
msgstr "Nuevo escaneado"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr "Próxima página"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
msgstr "Próximo escaneado"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr "Apodo:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr "Ningún país (SDK)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr "Ninguna ISO o WAD ha sido encontrada."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
+msgstr "Sin salida de audio"
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
msgid "No banner file found for title %s"
msgstr "No se encontró un archivo de banner para el juego %s"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
msgid "No description available"
msgstr "Sin descripción"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
msgid "No docking"
-msgstr "Sin uniones"
+msgstr "Sin acoplamiento"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
msgid "No file loaded"
msgstr "No se ha cargado ningún fichero"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
msgid "No free dir index entries"
msgstr "No hay entradas de índice de directorio libres"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
msgid "No recorded file"
msgstr "No hay grabaciones guardadas"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
#, c-format
msgid "No save folder found for title %s"
msgstr "No se encontró carpeta de guardado para el juego %s"
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr "Ninguno"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr "Noruego Bokmal"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr "No igual"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr "No definido"
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr ""
+"No es un guardado de Wii o fallo de lectura para la cabecera de archivo de "
+"tamaño %x"
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr "Sin conectar"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr "Notas"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr "Notas:"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr "Aviso"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr "Bloq Num"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
msgstr "Número de códigos:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr "Nunchuk"
@@ -3840,97 +3944,98 @@ msgstr "Nunchuk"
msgid "Nunchuk Acceleration"
msgstr "Aceleración del nunchuk"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr "Objeto"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr "Rango de objeto"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr "Off"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr "Offset:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr "Mensajes en pantalla"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr "Solo %d bloques disponibles"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr "Abrir"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr "Abrir directorio &contenedor"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr "Abrir carpeta de guardado&s de Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr "Abrir archivo..."
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr "OpenAL: no se puede crear el contexto para el dispositivo %s"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr "OpenAL: no se encuentran dispositivos de sonido"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr "OpenAL: no se puede abrir el dispositivo %s"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
msgstr "Descodificador de texturas OpenCL"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr "Descodificador de texturas OpenMP"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
msgstr "Opciones"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr "Naranja"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
+#, fuzzy
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
"El orden de los archivos en el directorio no corresponden con el orden de "
"bloques\n"
"Haz clic derecho y exporta todos los guardados,\n"
"e impórtalos a una nueva tarjeta de memoria\n"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr "Otros"
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
@@ -3938,15 +4043,15 @@ msgstr ""
"¡¡El otro cliente se ha desconectado mientras el juego estaba ejecutándose!! "
"NetPlay ha sido deshabilitado. Debes detener el juego manualmente."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr "Salida"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr "&Reproducir grabación"
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr "Pad"
@@ -3954,160 +4059,160 @@ msgstr "Pad"
msgid "Pad "
msgstr "Pad"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr "Pads"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
msgstr "Pág. abajo"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
msgstr "Pág. arriba"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr "Párrafo"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr "Parámetros"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr "Partición %i"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
msgstr "Parches"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr "Directorios"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr "Pausa"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr "Pausar al acabar la película"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr "Iluminación por píxel"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr "Perfecto"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr "Perspectiva %d"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr "Reproducir"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr "Reproducir grabación"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr "Reproducir/pausa"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr "Jugable"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr "Opciones de reproducción"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr "Jugadores"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr "Confirma, por favor..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr "Por favor, crea una perspectiva antes de guardar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr "Más-menos"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr "Polaco"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
msgstr "Puerto 1"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
msgstr "Puerto 2"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
msgstr "Puerto 3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
msgstr "Puerto 4"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr "Puerto:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr "Portugués"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr "Portugués (Brasil)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr "Efecto de posprocesado:"
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr "Final prematuro de la película en PlayController. %u + 8 > %u"
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr "Final prematuro de la película en PlayWiimote. %u + %d > %u"
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr "Final prematuro de la película en PlayWiimote. %u > %u"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr "Predefinidos:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr "Página previa"
@@ -4115,67 +4220,67 @@ msgstr "Página previa"
msgid "Previous Page"
msgstr "Página previa"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr "Valor anterior"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr "Imprimir"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr "Perfil"
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr "Propiedades"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
msgstr "Limpiar caché"
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr "Pregunta"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr "Salir"
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr "R"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
msgstr "Botón R"
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr "R-Analógico"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr "RAM"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr "RUSIA"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr "Rango"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr "Solo lectura"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr "Real"
@@ -4191,33 +4296,33 @@ msgstr "Wiimotes reales"
msgid "Reconnect Wiimote on State Loading"
msgstr "Reconectar Wiimote al cargar estado"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr "Grabar"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr "Información de la grabación"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr "Opciones de grabación"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr "Rojo"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr "Rojo izquierda"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr "Rojo derecha"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -4229,31 +4334,31 @@ msgstr ""
"Esto hace que la imagen se vea menos pixelada.\n"
"Reduce el rendimiento fuertemente y puede causar problemas.\n"
"\n"
-"Si no estás seguro, déjala sin marcar."
+"Si no estás seguro, selecciona Ninguno."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr "Actualizar"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr "Actualizar lista"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr "Actualizar lista de juegos"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr "Eliminar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
@@ -4263,198 +4368,206 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr "Renderizar a ventana principal"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr "Reiniciar"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr "Resultados"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
msgstr "Volver"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr "Derecha"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr "Stick Derecho"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr "Vibración"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
-msgstr "Arranca DSPLLE en un proceso dedicado (no recomendado)."
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
+msgstr ""
+"Ejecutar DSP HLE y LLE en un proceso dedicado (no recomendado: podría causar "
+"interferencias de audio con HLE y se cuelgue con LLE)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr "Ruso"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr "Guardar estado"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr "Seguro"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr "Guardar"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
msgstr "Guardar GCI como..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
msgstr "Guardar estado 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
msgstr "Guardar estado 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
msgstr "Guardar estado 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
msgstr "Guardar estado 4"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
msgstr "Guardar estado 5"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
msgstr "Guardar estado 6"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
msgstr "Guardar estado 7"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
msgstr "Guardar estado 8"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
msgstr "Guardar estado..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr "Guardar como..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr "Guardar GCM/ISO comprimido"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr "Guardar perspectiva actual"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr "Guardar GCM/ISO descomprimido"
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr ""
"El estado guardado de la película %s está corrupto, deteniendo la "
"grabación..."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr "EFB Copia a escala"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr "Escaneando %s"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
-msgstr "Buscando ISO"
+msgstr "Buscando ISOs"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr "Escaneando..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr "Pantallazo"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
msgstr "Bloq. desplazamiento"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr "Buscar"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr "Filtro de búsqueda"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr "Buscar en subcarpetas"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr "Buscar objeto actual"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr "Buscar valor hexadecimal:"
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr "No se ha encontrado la sección %s en SYSCONF"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr "Seleccionar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr "Seleccionar archivo de grabación"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr "Elige un WAD de Wii para instalar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
@@ -4464,31 +4577,31 @@ msgstr ""
"\n"
"Si no estás seguro, usa el primero."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr "Selecciona un archivo de guardado para importar"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr "Selecciona las ventanas flotantes"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr "Selecciona el archivo para cargar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr "Selecciona el archivo de guardado"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr "Selecciona el estado para cargar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr "Selecciona el estado para guardar"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4506,15 +4619,15 @@ msgstr ""
"\n"
"Si no estás seguro, elige Automático."
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
msgstr "El perfil del controlador escogido no existe"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr "Fuente seleccionada"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4531,23 +4644,40 @@ msgstr ""
"Si no estás seguro, elige la resolución que uses en el escritorio.\n"
"Si sigues inseguro, elige la mayor resolución que te funcione."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
"Elige la aplicación gráfica para ser usada internamente.\n"
-"Direct3D9 habitualmente es la más rápida. OpenGL es más exacta. Direct3D11 "
+"Direct3D 9 habitualmente es la más rápida. OpenGL es más exacta. Direct3D 11 "
"está entre las dos.\n"
"Los sistemas Direct3D solo están disponibles en Windows.\n"
"\n"
-"Si no estás seguro, usa Direct3D9."
+"Si no estás seguro, utiliza Direct3D 11."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+"Elige la aplicación gráfica para ser usada internamente.\n"
+"Direct3D 9 habitualmente es la más rápida. OpenGL es más exacta. Direct3D 11 "
+"está entre las dos.\n"
+"Los sistemas Direct3D solo están disponibles en Windows.\n"
+"\n"
+"\n"
+"Si no estás seguro, utiliza OpenGL."
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr "Enviar"
@@ -4555,26 +4685,26 @@ msgstr "Enviar"
msgid "Sensor Bar Position:"
msgstr "Posición de la barra sensora:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr "Separador"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr "Serbio"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr ""
"Puerto serie 1 - Este es el puerto que dispositivos como el adaptador de red "
"usan."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr "Definir"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr "Definir como ISO por &defecto"
@@ -4583,14 +4713,14 @@ msgstr "Definir como ISO por &defecto"
msgid "Set as default Memcard %c"
msgstr "Definir como Memory Card por defecto %c"
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr ""
"SetARCode_IsActive: El índice es mayor que el tamaño de la lista de códigos "
"AR %lu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
@@ -4598,123 +4728,123 @@ msgstr ""
"Ajusta la latencia (en ms). Valores más altos pueden reducir el petardeo del "
"audio. Solo para el motor OpenAL."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr "Configuración..."
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr "SetupWiiMem: No se puede encontrar el archivo de configuración"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr "Sacudir"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr "Nombre corto:"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr "Botones laterales"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr "Mostrar &consola"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr "Mostrar ®istro"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr "Mostrar barra de e&stado"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr "Mostrar barra de herramien&tas"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr "Mostrar unidades"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr "Mostrar regiones de copiado de EFB"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr "Mostrar FPS"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr "Mostrar Francia"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr "Mostrar Gamecube"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr "Mostrar entrada"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr "Mostrar Italia"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr "Mostrar JAP"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr "Mostrar Corea"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
msgstr "Mostrar idioma:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr "Mostrar configuración de ®istro"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr "Mostrar PAL"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr "Mostrar plataformas"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr "Mostrar regiones"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
msgstr "Mostar estadísticas"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr "Mostrar Taiwán"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr "Mostrar USA"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr "Mostrar WAD"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr "Mostrar Wii"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
msgstr "Mostrar una ventana de confirmación antes de detener un juego."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4729,11 +4859,11 @@ msgstr ""
msgid "Show first block"
msgstr "Mostrar primer bloque"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr "Mostrar contador de lag"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4759,7 +4889,7 @@ msgstr "Mostrar icono del guardado"
msgid "Show save title"
msgstr "Mostrar título del guardado"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4771,11 +4901,11 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr "Mostrar desconocido"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
@@ -4785,47 +4915,31 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr "Wiimote de costado"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
msgstr "Chino simplificado"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr "Tamaño"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
msgstr "Saltar BIOS"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
msgstr "Saltar limpieza DCBZ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr "Saltar pase de alpha en dest."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr "Saltar el acceso al EFB desde la CPU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"Salta el destino del pase alfa usado en muchos juegos para varios efectos "
-"gráficos.\n"
-"\n"
-"Si no estás seguro, déjala sin marcar."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4842,25 +4956,25 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr "Ranura %i"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
msgstr "Ranura A"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
msgstr "Ranura B"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr "Instántanea"
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
msgstr "Renderizado por software"
@@ -4876,35 +4990,35 @@ msgstr ""
"¿Realmente quieres activar renderizado por software? Si no estás seguro, "
"elige No."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
msgstr "Configuración de sonido"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr "El motor de sonido %s no es válido."
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr "Falló la creación del búfer de sonido: %s"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr "Espacio"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr "Español"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:98
msgid "Speaker Volume:"
-msgstr "Volumen del altavoz"
+msgstr "Volumen del altavoz:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4924,63 +5038,63 @@ msgstr ""
"\n"
"Si no estás seguro, elige 640x528."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr "Acelerar la transferencia de disco"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr "Stick cuadrado"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr "Control estándar"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr "Comenzar"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
msgstr "Comenzar &NetPlay"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr "Comenzar graba&ción"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr "Comenzar grabación"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr "Estado"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr "Estados guardados"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
msgstr "Volante"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr "Stick"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr "Detener"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -4988,125 +5102,134 @@ msgid ""
"\n"
"If unsure, leave this checked."
msgstr ""
-"Calcular la iluminación de los gráficos 3D por píxel en lugar de por "
-"vértice.\n"
-"Disminuye la velocidad de emulación en un pequeño porcentaje (dependiendo de "
-"la GPU).\n"
-"Esto generalmente es una mejora segura, pero a veces podría causar "
-"problemas.\n"
+"Almacena copias de EFB en los objetos textura de GPU.\n"
+"Esto no es tan preciso, pero funciona bastante bien para la mayoría de los "
+"juegos y le da un gran aumento de velocidad de sobre EFB a RAM.\n"
"\n"
-"Si no estás seguro, deja esta casilla sin marcar."
+"Si no estás seguro, déjala marcada."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr "Estirar a la ventana"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr "Rasgar"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr "Sustraer"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr "Se exportó correctamente al archivo %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr "Los archivos de guardado se han importado con éxito."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
msgstr "Oscilar"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr "Sincronizar subproceso de GPU"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+"Sincroniza los subprocesos la GPU y la CPU para ayudar a prevenir bloqueos "
+"aleatorios en el modo a Doble Núcleo. (ON = Compatible, OFF = rápido)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr "Idioma del sistema:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr "TAIWÁN"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr "Entrada TAS"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr "Pestaña"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr "División de pestaña"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr "Tabla izquierda"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr "Tabla derecha"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr "Captura de pantalla"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr "TaruKonga (Bongos)"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr "Prueba"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr "Textura"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr "Caché de texturas"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr "Superposición del formato de la textura"
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr "El WAD ha sido instalado con éxito"
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr "La dirección no es válida"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr "La suma de verificación fue reparada con éxito."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr "El directorio escogido ya se encuentra en la lista"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
"Do you wish to replace it?"
msgstr ""
-"El archivo %s ya existe. \n"
-"¿Desea remplazarlo?"
+"El archivo %s ya existe.\n"
+"¿Deseas remplazarlo?"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
@@ -5115,30 +5238,30 @@ msgstr ""
"El archivo %s no pudo ser abierto para su escritura. Por favor, comprueba si "
"no está ya abierto por otro programa."
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr ""
"El archivo %s ya estaba abierto, la cabecera de archivo no será escrita."
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr "El archivo especificado (%s) no existe"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr "El nombre no puede estar vacío"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr "El nombre no puede contener coma (,)"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr "El código AR descifrado que se ha obtenido no contiene ninguna línea."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -5150,12 +5273,12 @@ msgstr ""
"\n"
"Si no estás seguro, utiliza el valor más a la derecha."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr ""
"El guardado que está tratando de copiar tiene un tamaño de archivo no válido"
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
@@ -5163,36 +5286,36 @@ msgstr ""
"El idioma seleccionado no es soportado por tu sistema. Volviendo al "
"predeterminado del sistema."
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr "¡Las versiones de NetPlay del client y el servidor son incompatibles!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr "¡El servidor está lleno!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
-msgstr "El servidor respondió: el juego está andando actualmente!"
+msgstr "El servidor respondió: ¡el juego actualmente está funcionando!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
-msgstr "El servidor envió un mensaje de error desconocido!"
+msgstr "¡El servidor envió un mensaje de error desconocido!"
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr "El archivo especificado \"%s\" no existe"
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
msgstr "El valor no es válido"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
msgstr "Tema:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
@@ -5200,7 +5323,7 @@ msgstr ""
"Debe haber un ticket para 00000001/00000002. Probablemente su volcado de "
"NAND esté incompleto."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
@@ -5208,7 +5331,7 @@ msgstr ""
"Estas opciones remplazan a las opciones de núcleo de Dolphin.\n"
"Sin determinar significa que el juego usa la configuración de Dolphin."
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
@@ -5216,12 +5339,12 @@ msgstr ""
"El simulador de Action Replay no soporta códigos que modifiquen al Action "
"Replay."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr ""
"Esto podría provocar peor rendimiento en el Menú de Wii y algunos juegos."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -5240,9 +5363,22 @@ msgstr ""
"(x2) y SHIFT+ 9 divide la misma (x0.5)). Presiona SHIFT + R para reiniciar "
"la cámara. \n"
"\n"
-"Si no estás seguro, deja esta casilla sin marcar."
+"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+#, fuzzy
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+"Si defines un límite de fotogramas mayor que la velocidad de juego completa "
+"(NTSC: 60, PAL: 50), también debes deshabilitar la regulación de audio en "
+"DSP para que tenga efecto (debería arreglar los \"clics\" de audio, pero "
+"puede causar ruido constante dependiendo del juego)."
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -5254,61 +5390,61 @@ msgstr ""
"Provoca mejoras de velocidad muy grandes en PC con mas de un núcleo, pero "
"puede ocasionar errores gráficos o del programa."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr "Esto te permitirá editar manualmente el archivo de configuración INI"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr "Límite"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr "Inclinar"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr "Título"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr "A"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr "Alternar todos los tipos de registro"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
msgstr "Cambiar a pantalla completa"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr "Superior"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
msgstr "Chino tradicional"
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr "Se trató de cargar un archivo de tipo desconocido."
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr "Gatillos"
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr "Intentando leer de un SYSCONF no válido"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
@@ -5316,15 +5452,15 @@ msgstr ""
"Intentando leer de un SYSCONF no válido\n"
"bt ids del Wiimote no están disponibles"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr "Turco"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr "Mesa de DJ"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr "Tipo"
@@ -5332,25 +5468,25 @@ msgstr "Tipo"
msgid "UDP Port:"
msgstr "Puerto UDP:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
msgstr "UDP Wiimote"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr "DESCONOCIDO"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
msgstr "DESCONOCIDO_%02X"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr "EUA"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
@@ -5358,7 +5494,7 @@ msgstr ""
"No se pudo crear el parche de los valores dados.\n"
"Entrada no modificada."
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -5369,75 +5505,94 @@ msgstr ""
"válido cifrado o descifrado. Asegúrate de que la has escrito correctamente.\n"
"¿Te gustaría hacer caso omiso de esta línea y continuar el análisis?"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr "Indefinido %i"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr "Deshacer cargar estado"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr "¿Llamada inesperada a 0x80? Cancelando..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr "Desconocido"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr "Comando desconocido de DVD %08x - error fatal"
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr "Comando desconocido 0x%08x"
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
-msgstr "Entrada desconocida de tipo %i en SYSCONF (%s@%x)!"
+msgstr "¡Entrada desconocida de tipo %i en SYSCONF (%s@%x)!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr "Se recibió un mensaje desconocido de id: %d"
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr ""
"Mensaje desconocido con id:%d recibido del jugador:%d ¡Echando al jugador!"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr "Arriba"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr "Actualizar"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr "Wiimote parado"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr "Usar Modo EuRGB60 (PAL60)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr "Usar pantalla completa"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr "Usar hexadecimal"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr "Usar advertencias"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Utilizar un búfer de carga hackeada a los vértices de flujo.\n"
+"Normalmente mejora la velocidad, pero esta prohibido en OpenGL y puede "
+"causar errores graves.\n"
+"\n"
+"Si no estás seguro, déjala desmarcada."
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -5450,7 +5605,7 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -5465,53 +5620,58 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr "Utilidad"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr "V-Sync"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+#, fuzzy
+msgid "VBeam Speed Hack"
+msgstr "Hack de velocidad MMU"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr "Valor"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr "Valor:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr "Valor:"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr "Verbosidad"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr "Vídeo"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr "Virtual"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr "Volumen"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
msgstr "La instalación del WAD falló: error al crear %s"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
msgstr "La instalación del WAD falló: error al crear el ticket"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5524,25 +5684,25 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr "Advertencia"
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
-msgstr "Advertencia - arrancando un DOL en un modo de consola incorrecto!"
+msgstr "¡Advertencia - arrancando un DOL en un modo de consola incorrecto!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
-msgstr "Advertencia - arrancando un ELF en un modo de consola incorrecto!"
+msgstr "¡Advertencia - arrancando un ELF en un modo de consola incorrecto!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
-msgstr "Advertencia - arrancando un ISO en un modo de consola incorrecto!"
+msgstr "¡Advertencia - arrancando un ISO en un modo de consola incorrecto!"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5554,7 +5714,7 @@ msgstr ""
"%s\n"
"¿Quieres continuar?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5566,9 +5726,9 @@ msgstr ""
"la carpeta:\n"
"%s\n"
"y tienen el mismo nombre que el archivo en tu memcard\n"
-"Continuar?"
+"¿Continuar?"
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
@@ -5579,7 +5739,7 @@ msgstr ""
"actual.(Byte %u > %u) (frame %u > %u). Deberías cargar otro guardado antes "
"de continuar, o cargar éste sin el modo de solo lectura."
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
@@ -5591,7 +5751,7 @@ msgstr ""
"con el modo de solo lectura desactivado. De lo contrario probablemente "
"obtengas una desincronización."
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5625,49 +5785,49 @@ msgstr ""
"Start=%d, A=%d, B=%d, X=%d, Y=%d, Z=%d, DUp=%d, DDown=%d, DLeft=%d, DRight="
"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr "WaveFileWriter - el archivo no está abierto."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr "Whammy"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
msgstr "Hack de pantalla ancha (widescreen)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr "Ancho"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr "Wii"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
msgstr "Consola Wii"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr "Raíz de la NAND de Wii:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
msgstr "Importar guardado de Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
msgstr "Archivos de guardado Wii (*.bin)|*.bin"
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr "WiiWAD: No se pudo leer el archivo"
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr "Wiimote"
@@ -5676,7 +5836,7 @@ msgstr "Wiimote"
msgid "Wiimote %i"
msgstr "Wiimote %i"
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr "Wiimote conectado"
@@ -5684,7 +5844,7 @@ msgstr "Wiimote conectado"
msgid "Wiimote Motor"
msgstr "Motor Wiimote"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
msgstr "Configuración Wiimote"
@@ -5692,101 +5852,125 @@ msgstr "Configuración Wiimote"
msgid "Wiimotes"
msgstr "Wiimotes"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr "Windows Izquierda"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
msgstr "Windows Menú"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr "Windows Derecha"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr "Word Wrap"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr "Trabajando..."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr "Escribir a la consola"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
-msgstr "Escribir en el depurador"
+msgstr "Escribir en el depurador"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
-msgstr "Escribir a archivo"
+msgstr "Escribir al archivo"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
-msgstr "Escribir a ventana"
+msgstr "Escribir a la ventana"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr "XAudio2 CreateSourceVoice falló: %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
msgstr "XAudio2 init falló: %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr "XAudio2 creación de voz maestra falló: %#X"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr "Registro XF"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr "Amarillo"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
-"Estás usando imágenes dsp libres creadas por Dolphin Team.\n"
-"Solo los juegos ucode de Zelda funcionan correctamente con ellas.\n"
+"Estás utilizando una DSP ROM libre del Equipo Dolphin.\n"
+"Todos los juegos de Wii funcionarán correctamente, y la mayoría de juegos de "
+"GC deberían funcionar bien, pero los UCodes de GBA/IPL/CARD no funcionarán.\n"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+"Estás utilizando una DSP ROM libre y antigua del Equipo Dolphin.\n"
+"Solo los juegos Ucode de Zelda funcionarán correctamente.\n"
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr "No puede cerrar ventanas que tengan páginas en ellas."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr "¡¡Debes elegir un juego!!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
msgstr "¡Debes escribir un nombre!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
msgstr "Debes introducir un valor decimal o hexadecimal válido."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr "Debes introducir un nombre de perfil válido."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr "Debes reiniciar Dolphin para que el cambio tenga efecto."
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+"Tus DSP ROMs tienen un hash incorrecto.\n"
+"¿Deseas detener ahora para arreglar el problema?\n"
+"Si seleccionas \"No\", el audio se oirá con ruidos."
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
@@ -5794,7 +5978,7 @@ msgstr ""
"Su archivo GCM/ISO no parece ser válido (país no válido).\n"
"¿Continuar con la región PAL?"
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
@@ -5805,25 +5989,25 @@ msgstr ""
"Debería ser 0x%04x (pero es 0x%04llx)\n"
"¿Quiere crear uno nuevo?"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
msgstr "Zelda TP hack"
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr "Código Zero 3 no soportado"
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
-msgstr "Código cero desconocido para Dolphin: %08x"
+msgstr "Código cero desconocido para Dolphin: %08x"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr "[ esperando ]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5835,11 +6019,11 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr "[Personalizado]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5859,7 +6043,7 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5874,99 +6058,47 @@ msgstr ""
"\n"
"Si no estás seguro, déjala sin marcar."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr "^ ADD"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr "apploader (.img)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr "Fallo al leer la cabecera bk"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr "Fallo al leer los datos del archivo: %s"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr "Fallo al leer la cabecera."
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr "iCacheJIT: Leyendo Opcode desde %x. Por favor, comunícalo."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr ""
-"no es un guardado de Wii o fallo de lectura para la cabecera de archivo de "
-"tamaño %x"
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr "s"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr "cmd 0x%08x desconocido"
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
msgstr "¡wxExecute dio un -1 al iniciar la aplicación!"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr "Correción zFar:"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr "Correción zNear:"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr "| OR"
-#~ msgid "%i connected"
-#~ msgstr "%i conectado"
-
-#~ msgid "Alternate Wiimote Timing"
-#~ msgstr "Sincronización alternativa del Wiimote"
-
-#~ msgid "Interpreter (VERY slow)"
-#~ msgstr "Intérprete (MUY lento)"
-
-#~ msgid "JIT Recompiler (recommended)"
-#~ msgstr "Recompilador JIT (recomendado)"
-
-#~ msgid "JITIL experimental recompiler"
-#~ msgstr "Recompilador experimental JITIL"
+#~ msgid "Accurate VBeam emulation"
+#~ msgstr "Emulación de VBeam precisa"
#~ msgid ""
-#~ "Mutes the Wiimote speaker. Fixes random disconnections on real wiimotes. "
-#~ "No effect on emulated wiimotes."
+#~ "If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
#~ msgstr ""
-#~ "Silencia el altavoz del Wiimote. Arregla las desconexiones aleatorias en "
-#~ "wiimotes reales. No tiene ningún efecto en wiimotes emulados."
+#~ "Si los FPS son erróneos, esta opción puede ayudar. (ON = Compatible, OFF "
+#~ "= Rápido)"
-#~ msgid "Pair Up"
-#~ msgstr "Emparejar"
-
-#~ msgid "Reconnect Wiimote Confirm"
-#~ msgstr "Confirmar reconectar Wiimote"
-
-#~ msgid ""
-#~ "Wiimote %i has been disconnected by system.\n"
-#~ "Maybe this game doesn't support multi-wiimote,\n"
-#~ "or maybe it is due to idle time out or other reason.\n"
-#~ "Do you want to reconnect immediately?"
-#~ msgstr ""
-#~ "El Wiimote %i ha sido desconectado por el sistema.\n"
-#~ "Puede ser que este juego no suporte multiwiimote\n"
-#~ "o mucho tiempo de espera, o alguna otra razón.\n"
-#~ "¿Desea reconectarlo inmediatamente?"
+#~ msgid "Skip Dest. Alpha Pass"
+#~ msgstr "Saltar pase de alpha en dest."
diff --git a/Languages/po/fa.po b/Languages/po/fa.po
index dc011ec53a..6a93672689 100644
--- a/Languages/po/fa.po
+++ b/Languages/po/fa.po
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the dolphin-emu package.
#
# Translators:
-# Hamed Khakbiz , 2011.
+# Hamed Khakbiz , 2011
msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emulator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
-"PO-Revision-Date: 2013-02-17 11:21+0000\n"
+"POT-Creation-Date: 2013-04-18 23:00-0500\n"
+"PO-Revision-Date: 2013-04-04 08:13+0000\n"
"Last-Translator: Delayline \n"
"Language-Team: Persian (http://www.transifex.com/projects/p/dolphin-emu/"
"language/fa/)\n"
@@ -19,21 +19,21 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
msgstr "(برای نمایش دادن بسیار زیاد است)"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr "بازی :"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr "! نه"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
@@ -42,35 +42,45 @@ msgstr ""
"\"%s\" وجود ندارد.\n"
"یک کارت حافظه ۱۶ مگا بایتی جدید ساخته شود؟"
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
msgstr ""
"\"%s\" این یک فایل گیم کیوب/وی فاقد اعتبار است، یا این فایل آیزو گیم کیوب/وی "
"نیست."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
msgstr "%08X: "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
msgstr "%1$sکپی%1$s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr ""
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
msgstr "%s وجود دارد، بازنویسی شود؟"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
msgstr "%s تمیز کارى آیزو با شکست مواجه شد. شاید فایل آیزو خراب است."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -79,7 +89,7 @@ msgstr ""
"%s بارگذاری بعنوان کارت حافظه با شکست مواجه شد \n"
"حجم فایل کارت نامعتبر است (0x%x بایت)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -88,7 +98,7 @@ msgstr ""
"%s بارگذاری بعنوان کارت حافظه با شکست مواجه شد \n"
"حجم کارت حافظه نامعتبر است (0x%x بایت)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -97,48 +107,37 @@ msgstr ""
"%s بارگذاری بعنوان کارت حافظه با شکست مواجه شد \n"
"فایل به اندازه کافی بزرگ نیست که یک فایل کارت حافظه معتبر باشد (0x%x بایت)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr "%s بازکردن با شکست مواجه شد"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-"%s دارای یک درهمساز نا درست است.\n"
-"آیا مایل هستید برابرسازی حالا متوقف شود تا مشکل را اصلاح کنید؟اگر شما \"نه\" "
-"را انتخاب کنید، صدا مغشوش خواهد شد."
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
msgstr "%s یک فایل با حجم ۰ بایت است"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
msgstr "%s فشرده شده است! توان فشرده سازی بیشتر را ندارد."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr "%s برای اسم فایل بسیار دراز است، حداکثر تعداد کاراکترها ۴۵ است"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr "%sحذف%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr "%sصادر کردن جی سی آی%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr "%sوارد کردن جی سی آی%s"
@@ -148,252 +147,273 @@ msgstr "%sوارد کردن جی سی آی%s"
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr "%u بلوک های آزاد; %u ورودی های پوشه آزاد"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr "&& و"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr "&درباره..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr "&بوت شدن از درایو دی وی دی..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr "&نقاط انفصال"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr "&مرور برای فایل های آیزو..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
msgstr "مدیریت کدهای &تقلب"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
msgstr "تنظیمات پردازشگر &صدای دلفین"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr "&حذف آیزو..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr "&حذف آیزو های انتخاب شده..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr "&برابرسازی"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr "&فایل"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr "&پيشروى فریم"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr "&تمام صفحه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
msgstr "تنظیمات &گرافیک"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr "&کمک"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr "تنظیم &شرت کاتها"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr "&جیت"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
msgstr "&بارگذاری وضعیت"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
msgstr "مدیر &کارت حافظه (گیم کیوب)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr "&حافظه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr "&باز کردن..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr "&گزینه ها"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr "مکث"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr "&شروع بازی"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr "خواص"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
msgstr "&حالت فقط خواندنی"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
msgstr "&به روز کردن لیست"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr "ثبت کردن"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr "شروع &دوباره"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
msgstr "&صدا"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr "&توقف"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
msgstr "&ابزارها"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr "&ویدیو"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr "&دیدگاه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
msgstr "تنظیمات &ویموت"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr "&ویکی"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr "'"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr "z دور+(-)"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr "z نزدیک+(-)"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr "(ناشناخته)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr "(خاموش)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr "۰x۴۴"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr "۱۶ بیت"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr "۳۲ بیت"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr "نمایش سه بعدی"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr "۸ بیت"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr "<اسم را اینجا وارد کنید>"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
msgstr "<سایز تصویر پیدا نشد>"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr "<هیچ>"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr "<تکمه فشارى>"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr "<سیستم>"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr "A"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
msgstr "پنجره نت پلی از قبل باز است!!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
msgstr "بازی در حال حاضر اجرا نشده است."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:68
-#, fuzzy
msgid ""
"A supported bluetooth device could not be found.\n"
"You must manually connect your wiimotes."
msgstr ""
-"دستگاه بلوتوث مورد پشتیبانی پیدا نشد!\n"
-"اگر شما از نرم افزار پیاده سازی بلوتوث ماکروسافت استفاده نمی کنید شما باید "
-"ویموت خود را دستی جفت کنید و فقط از دکمه \"به روز کردن\" استفاده کنید."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
+#, fuzzy
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
"اخطار:\n"
"\n"
@@ -412,17 +432,17 @@ msgstr ""
"\n"
"شما باید درگاه TCP را به میزبان ارسال کنید!!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr "بُردِ مادر ای ام"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr "کدهای اکشن ریپلی"
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr "درباره دلفین"
@@ -430,15 +450,11 @@ msgstr "درباره دلفین"
msgid "Acceleration"
msgstr "شتاب"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr "دقت:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr "برابرسازی دقیق وی بیم"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -452,12 +468,12 @@ msgstr ""
"اگر در این مورد اطمینان ندارید، به جای آن گزینه ای اف بی به بافت اشیاء را "
"انتخاب کنید."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr "اکشن"
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -472,14 +488,14 @@ msgstr ""
"کد خراب:\n"
"%s"
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
msgstr ""
"خطای اکشن ریپلی: سایز نامعتبر (%08x : آدرس = %08x) در اضافه کردن کد (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
@@ -487,7 +503,7 @@ msgid ""
msgstr ""
"خطای اکشن ریپلی: سایز نامعتبر (%08x : آدرس = %08x) در پر و اسلاید کردن (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
@@ -496,7 +512,7 @@ msgstr ""
"خطای اکشن ریپلی: سایز نامعتبر (%08x : آدرس = %08x) در پر کردن و نوشتن حافظه "
"(%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
@@ -504,12 +520,12 @@ msgid ""
msgstr ""
"خطای اکشن ریپلی: سایز نامعتبر (%08x : آدرس = %08x) در نوشتن به اشاره گر (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr "خطای اکشن ریپلی: مقدار نامعتبر (%08x) در کپی حافظه (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
@@ -518,63 +534,63 @@ msgstr ""
"خطای اکشن ریپلی: کد مستر و نوشتن به CCXXXXXX تکمیل نشده است (%s)\n"
"به کدهای مستر نیاز نیست. از کدهای مستر استفاده نکنید."
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr "خطای اکشن ریپلی: خط کد نامعتبر اکشن ریپلی: %s"
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr "خطای اکشن ریپلی: کد نامعلوم: سایز نامعتبر %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr "خطای اکشن ریپلی: الگوی کد عادی نامعتبر %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr "خطای اکشن ریپلی: کد عادی %i: کد فرعی نامعتبر %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr "خطای اکشن ریپلی: کد عادی ۰: کد فرعی نامعتبر %08x (%s)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr "آداپتور:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr "اضافه کردن"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
msgstr "اضافه کردن کد اکشن ریپلی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr "اضافه کردن وصله"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr "اضافه کردن تکه جدید"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr "اضافه کردن..."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
msgstr "آدرس :"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -592,7 +608,7 @@ msgstr ""
"\n"
"توجه: پنجره/کنسول ثبت وقایع را برای بدست آوردن مقادیر برسی کنید."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -610,48 +626,48 @@ msgstr ""
"\n"
"توجه: پنجره/کنسول ثبت وقایع را برای بدست آوردن مقادیر برسی کنید."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr "تنظیم فشار کنترل آنالوگ برای فعال کردن دکمه ها لازم است."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr "پیشرفته"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr "تنظیمات پیشرفته"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
msgstr "همه فایل های گیم کیوب/وی (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
msgstr "همه ایمیجهای گیم کیوب/وی (gcm, iso, wbfs, ciso, gcz)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
msgstr "همه فایل های گیم کیوب جی سی ام (gcm)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr "همه وضعیت های ذخیره (sav, s##)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr "همه فایل های آیزو وی (iso)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr "همه فایل های آیزو فشرده شده گیم کیوب/وی (gcz)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr "همه فایل ها (*.*)|*.*"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
@@ -663,39 +679,39 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr "تحلیل کردن"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
msgstr "زاویه"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
msgstr "فیلتر ناهمسانگر:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
msgstr "آنتی آلیاسینگ:"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr "سایز بارگذار برنامه اشتباه است...آیا این واقعا بارگذار برنامه است؟"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr "بارگذار برنامه ناتوان در بارگذاری از فایل"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr "بار گذار برنامه:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr "اعمال کردن"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
@@ -705,11 +721,11 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، (خاموش) را انتخاب کنید."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr "عربی"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
msgstr "آیا شما مطمئن هستید که میخواهید \"%s\" را حذف کنید؟"
@@ -728,46 +744,50 @@ msgstr ""
"آیا شما مطمئن هستید که میخواهید این فایل را حذف کنید؟ این فایل برای همیشه "
"از بین خواهند رفت!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr "نسبت طول به عرض تصویر:"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr "حداقل یک قطه می بایست باز بماند."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr "صدا"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr "پشتوانه صدا:"
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr "AudioCommon: خطا در باز کردن دستگاه خروجی صدا.\n"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr "اتوماتیک"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
msgstr "اتوماتیک (ضریب ۶۴۰x۵۲۸)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
msgstr "اتوماتیک (سایز پنجره)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr "تنظیم اتوماتیک سایز پنجره"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
@@ -777,130 +797,130 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr "B"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
msgstr "ثبت اشاره گر پایه"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr "برگشت"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
msgstr "تنظیمات پشتوانه"
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr "پشتوانه:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr "ورودی پس زمینه"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr "به عقب"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr "سرخط ناصحیح فایل"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr "نشان"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
msgstr "جزئیات نشان"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr "نشان:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr "نوار"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr "بنیانی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr "تنظیمات بنیانی"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr "بم"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr "چک سام جدول تخصیص بلوک با شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr "بلوک ها"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr "آبی"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr "آبی چپ"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr "آبی راست"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr "پائین"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr "کنترل های محدودیت: %lu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
msgstr "خراب"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr "مرور"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr "مرور برای پوشه جهت اضافه کردن"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr "مرور برای پوشه آیزو..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr "مرور برای پوشه خروجی"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr "حافظه موقت:"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr "دکمه ها"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
@@ -908,31 +928,31 @@ msgstr ""
"گذشتن از پاکسازی حافظه ميانى دادها توسط دستور DCBZ. معمولا این گزینه را غیر "
"فعال رها کنید."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr "C"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr "استیک سی"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr "استیک سی"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr "ثبت سی پی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr "موتور پردازشگر برابرساز"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr "لیست های حافظه ميانى تصویر"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -946,23 +966,38 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr ""
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr "لغو کردن"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr "قادر به باز گشایی نیست %s"
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr "رویدادهایی را که معوق اند نمی تواند از ثبت درآورد."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
@@ -973,7 +1008,7 @@ msgstr ""
"%s\n"
"این یک فایل کارت حافظه معتبر گیم کیوب نیست"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
@@ -981,31 +1016,15 @@ msgstr ""
"قادر به استفاده از این فایل به عنوان کارت حافظه نیست.\n"
"آیا شما سعی دارید از یک فایل برای هر دو شکاف استفاده کنید؟"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr ""
-"قادر به یافتن ویموت بواسطه دستگاه بلوتوث نیست: %02x:%02x:%02x:%02x:%02x:%02x"
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr "قادر به یافتن ویموت بواسطه دستگذار اتصال %02x نیست"
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr "قادر به خواندن از پلاگ-این دی وی دی نیست - واسط دی وی دی: خطای مهلک"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
msgstr "کپس لاک"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr "کاتالان"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr "مرکز"
@@ -1013,12 +1032,12 @@ msgstr "مرکز"
msgid "Change"
msgstr "تعویض"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr "تعویض &دیسک..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr "تعویض دیسک"
@@ -1026,7 +1045,7 @@ msgstr "تعویض دیسک"
msgid "Change Game"
msgstr "تعویض بازی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
@@ -1034,76 +1053,76 @@ msgstr ""
"تغییر زبان برنامه.\n"
"شروع دوباره برنامه لازم است."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr "تغییرات علامت به پارامتر z دور (بعد از تصحیح)"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr "تغییرات علامت به پارامتر z نزدیک (بعد از تصحیح)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr ""
"تغییر دادن این مورد در حالی که برابرساز در حال اجراست اثری نخواهد داشت!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr "گپ زدن"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr "کد تقلب"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
msgstr "جستجوی کد تقلب"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
msgstr "مدیر کدهای تقلب"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr "برسی عدم نقص پارتیشن"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr "برسی عدم نقص..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
msgstr "چینی (ساده شده)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr "چینی (سنتی)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr "انتخاب یک پوشه ریشه برای دی وی دی:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr "انتخاب یک پوشه ریشه برای نند:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr "انتخاب آیزو پیش فرض:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr "انتخاب پوشه برای اضافه کردن"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
msgstr "انتخاب فایل برای باز کردن"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr "انتخاب کارت حافظه:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
@@ -1111,27 +1130,27 @@ msgstr ""
"انتخاب فایل برای استفاده بعنوان بارگذار برنامه: (به دیسک هایی که فقط از پوشه "
"ها ساخته شده اند اعمال می کند)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
msgstr "انتخاب پوشه برای استخراج به آن"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr "استیک دایره"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr "کلاسیک"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr "پاک کردن"
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
@@ -1139,122 +1158,122 @@ msgstr ""
"ارتباط مشتری در حالی که بازی در حال اجراست قطع شد!! نت پلی از کار افتاد. شما "
"باید بازی را دستی متوقف کنید."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr "بستن"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
msgstr "پی&کربندی..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
msgstr "مشخصات کد"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
msgstr "کد:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr "دستور"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr "توضیح"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr "توضیح:"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr "فشرده کردن آیزو..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
msgstr "فشرده کردن آیزو های انتخاب شده..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr "در حال فشرده کردن آیزو"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr "پیکربندی"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr "پیکربندی"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr "کنترل پیکربندی"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr "پیکربندی گیم پدها"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr "پیکربندی..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr "تائید بازنویسی فایل"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
msgstr "تائید برای توقف"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr "اتصال"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
msgstr "اتصال کیبورد USB"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr "اتصال ویموت %i"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr "اتصال ویموت ۱"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr "اتصال ویموت ۲"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr "اتصال ویموت ۳"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr "اتصال ویموت ۴"
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr "در حال اتصال..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr "میز فرمان"
@@ -1262,15 +1281,15 @@ msgstr "میز فرمان"
msgid "Continuous Scanning"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr "کنترل"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr "تبدیل به جی سی آی"
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr "کپی با شکست مواجه شد"
@@ -1279,21 +1298,21 @@ msgstr "کپی با شکست مواجه شد"
msgid "Copy to Memcard %c"
msgstr "کپی به کارت حافظه %c"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr "هسته"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr "قادر به ساخت نیست %s"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr "قادر به نصب پشتوانه نیست %s"
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
@@ -1304,12 +1323,12 @@ msgstr ""
"نیست. لطفا توجه داشته باشید که دیسک های اصلی گیم کیوب/وی توسط اکثر دی وی دی "
"درایوهای کامپیوتر قابل خواندن نیستند."
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr "قادر به تشخیص فایل آیزو %s نبود"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
msgstr "قادر به ذخیره کردن نیست %s"
@@ -1323,24 +1342,24 @@ msgstr ""
"اجرا است!\n"
"(ست کردن گیم پدها در حالی که بازی در حال اجرا است فعلا پشتیبانی نمی شود)"
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
-msgstr ""
-"قادر به نوشتن فایل کارت حافظه نیست %s.\n"
+"protected?\n"
"\n"
-"آیا شما بازی را از روی یک سی دی و یا دی وی دی اجرا کرده اید، و یا شاید فایل "
-"ذخیره محافظت شده (Write Protect) است."
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
msgstr "قادر به یافتن دستور باز برای پسوند 'ini' نیست!"
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
@@ -1348,38 +1367,38 @@ msgstr ""
"قادر به اينيت کردن هسته نیست.\n"
"تنظیمات خود را چک کنید."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr "شماردن:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr "کشور:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr "ساخت کد اکشن ریپلی"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr "ساخت پرسپکتیو جدید"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
msgstr "سازنده:"
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr "بحرانی"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
msgstr "حذف قسمتی از تصوير"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
@@ -1389,143 +1408,143 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
msgstr "ضرب دری"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
-msgstr "بعد از انتخابگر فایل wx پوشه فعلی از %s به %s تغییر کرد!"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
msgid "Custom Projection Hack"
msgstr "هک کردن دستی تصویر"
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
msgid "Custom Projection Hack Settings"
msgstr "تنظیمات مربوط به هک کردن دستی تصویر"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
msgstr "دستکاری برخی از پارامتر های خطوط عمودی تصویر."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr "چکوسلواکی"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr "D"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr "پد هدایتی"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr "پردازشگر صدای دلفین"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr "موتور برابرساز پردازشگر صدای دلفین"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr "برابرسازی سطح بالای پردازشگر صدای دلفین (سریع)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr "مفسر سطح پائین پردازشگر صدای دلفین (کند)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr "قرار دادن برابرساز سطح پائین پردازشگر صدای دلفین بر روی ریسمان جداگانه"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr "ری کامپایلر سطح پائین پردازشگر صدای دلفین"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP settings"
msgstr "تنظیمات پردازشگر صدای دلفین"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr "ریشه دی وی دی:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr ""
"خواندن سطح پائین دی وی دی - خطای مهلک: خواندن از روی دیسک با شکست مواجه شد"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr ""
"خواندن سطح پائین کد گشایی شده دی وی دی - خطای مهلک: خواندن از روی دیسک با "
"شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr "اندازه داده"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr "تاریخ:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr "فایل های داتل مکس درایو/حرفه ای (*,sav)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr "منطقه مرده"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr "اشکال زدائی"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr "اشکال زدائی کردن"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
msgstr "دسیمال"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr "ناهمفشرده کردن آیزو..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr "ناهمفشرده کردن آیزو های انتخاب شده..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr "در حال ناهمفشرده کردن آیزو"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr "پیش فرز"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr "آیزو پیش فرز:"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr "دست خط پیش فرز"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
msgstr "حذف"
@@ -1533,21 +1552,21 @@ msgstr "حذف"
msgid "Delete Save"
msgstr "حذف ذخیره"
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr "فایل موجود '%s' حذف شود؟"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr "شرح"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr "شناسایی"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
@@ -1555,29 +1574,29 @@ msgstr ""
"کوشش برای خواند داده بیشتر از دی وی دی نسبت به داده ای که در حافظه میانجی "
"گنجانده شده یافت شد. مهار کردن."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr "دستگاه"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr "تنظیمات دستگاه"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr "شماره گیری"
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr "Direct3D ۱۱"
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr "Direct3D ۹"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
@@ -1585,16 +1604,20 @@ msgstr ""
"چک سام پوشه با شکست مواجه شد\n"
" و چک سام بکاپ پوشه با شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr "از کارانداختن"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
msgid "Disable Fog"
msgstr "از کارانداختن مه"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1609,7 +1632,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را رها کنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1625,20 +1648,33 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را رها کنید."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#, fuzzy
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"از قلم انداختن مقصد آلفا پاس در بسیاری از بازی ها برای افکت های متفرقه "
+"گرافیک استفاده می شود.\n"
+"\n"
+"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr "دیسک"
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr "خواندن دیسک با مشکل مواجه گردید"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr "نمایش"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
@@ -1648,32 +1684,32 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
msgstr "تقسیم"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr "آیا می خواهید برابرسازی فعلی را متوقف کنید؟"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
msgstr "کدبردار دالبی پرو لاجیک دو"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr "دلفین"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr "دلفین %s پیکربندی گرافیک"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
msgstr "&وب سایت دلفین"
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
msgstr "پیکر بندی دلفین"
@@ -1681,16 +1717,16 @@ msgstr "پیکر بندی دلفین"
msgid "Dolphin Emulated Wiimote Configuration"
msgstr "پیکربندی ویمیوت برابرسازی شده دلفین"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
msgstr "دلفین فیفو"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr "پیکربندی گیم پد گیم کیوب دلفین"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr "فیلم های تاس دلفین (*.dtm)"
@@ -1698,11 +1734,11 @@ msgstr "فیلم های تاس دلفین (*.dtm)"
msgid "Dolphin Wiimote Configuration"
msgstr "پیکربندی ویموت دلفین"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr "دلفین در &گوگل کد"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
@@ -1710,7 +1746,7 @@ msgstr ""
"دلفین قادر به پیدا کردن آیزو های گیم کیوب/وی نیست. برای مرور فایل ها دو بار "
"اینجا کلیک کنید..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
@@ -1718,50 +1754,59 @@ msgstr ""
"دلفین در حال حاضر ست شده است که همه بازی ها را مخفی کند. برای نمایش بازی ها "
"دو بار اینجا کلیک کنید..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
msgstr "دلفین نتوانست عمل خواسته شده را تکمیل کند."
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#, fuzzy
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+"فعال کردن دسترسی سریع به دیسک. این امر برای اجرای تعداد محدودی از بازی ها "
+"لازم است. (ON=سریع، OFF=سازگار)"
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
msgstr "پائین"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
msgstr "دانلود کدها (WiiRD بانک اطلاعاتی)"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr "%lu کد دانلود شد. (%lu عدد اضافه شد)"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr "طبل ها"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
msgstr "مصنوعی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr "نسخه برداری صدا"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr "نسخه برداری مقصد ای اف بی"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr "نسخه برداری فریم ها"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr "نسخه برداری بافت اشیاء"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
@@ -1772,7 +1817,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
@@ -1783,7 +1828,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
@@ -1793,21 +1838,21 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr "هلندی"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr "خ&روج"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr "کپی های ای اف بی"
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1820,52 +1865,52 @@ msgstr ""
"اندازی مجدد در این مرحله برای اینکه ویندوز درایور جدید را شناسایی کند لازم "
"باشد."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr "اروپا"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
msgstr "به روز شدن های اولیه حافظه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr "ویرایش"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr "ویرایش کدهای اکشن ریپلی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr "ویرایش پیکربندی"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr "ویرایش وصله"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr "ویرایش چشم انداز جاری"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr "ویرایش..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr "افکت"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr "حافظه میانجی فریم جاساز شده"
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr "ریسمان شبیه ساز قبلا اجرا شده است"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1879,7 +1924,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، گزینه اکس اف بی مجازی را فعال کنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1900,7 +1945,7 @@ msgstr ""
msgid "Emulated Wiimote"
msgstr "ویموت برابرسازی شده"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
msgstr "وضعیت برابرساز:"
@@ -1908,7 +1953,7 @@ msgstr "وضعیت برابرساز:"
msgid "Enable"
msgstr "فراهم کردن"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1924,72 +1969,71 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr "فعال کردن واقعه نگاری اکشن ریپلی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr "فعال کردن ادغام بلوک"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr "فعال کردن محاسبه حد جعبه"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr "فعال کردن حافظه ميانى"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr "فعال کردن کدهای تقلب"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr "فعال کردن پردازنده با دو هسته یا بیشتر"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr "فعال کردن پردازنده با دو هسته یا بیشتر (بالا بردن سرعت)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
msgstr "فعال کردن شرت کاتها"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr "فعال کردن جهش بیکاری"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
msgstr "فعال کردن جهش بیکاری (بالا بردن سرعت)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr "فعال کردن واحد مدیریت حافظه"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
msgstr "فعال کردن پويش تصاعدی (Progressive Scan)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
msgstr "فعال کردن اسکیرین سیور"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:75
-#, fuzzy
msgid "Enable Speaker Data"
-msgstr "فعال کردن صفحات"
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr "فعال کردن صفحه عریض"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
msgstr "فعال کردن خطوط فریم"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -2003,7 +2047,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، حالت 1x را انتخاب کنید."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
@@ -2015,7 +2059,7 @@ msgstr ""
msgid "Enable pages"
msgstr "فعال کردن صفحات"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -2027,7 +2071,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -2039,7 +2083,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
@@ -2047,11 +2091,11 @@ msgstr ""
"برای بالا بردن سرعت بازی افسانه زلدا: شاهدخت سپیده دم این گزینه را فعال "
"کنید. غیرفعال برای هر بازی دیگر."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr "فعال کردن پروژه هک دستی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
@@ -2059,14 +2103,14 @@ msgstr ""
"فعال کردن برابر سازی دالبی پرو لاجیک دو توسط خروجی فراگیر 5.1 (Surround). در "
"OSX موجود نیست."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr ""
"فعال کردن برابر سازی دالبی پرو لاجیک دو توسط خروجی فراگیر 5.1 (Surround). "
"فقط پشتوانه اپن ای ال (OpenAL)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
@@ -2075,7 +2119,7 @@ msgstr ""
"فقط پشتوانه اپن ای ال (OpenAL). شاید تغییر نام soft_oal.dll به OpenAL32.dll "
"برای به کار انداختن این امکان احتیاج باشد."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
@@ -2087,7 +2131,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
@@ -2095,7 +2139,7 @@ msgstr ""
"فعال کردن واحد مدیریت حافظه، برای بعضی از بازی ها لازم است. (روشن = سازگار، "
"خاموش = سریع)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
@@ -2105,51 +2149,51 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr "پایان"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr "انگلیسی"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
msgstr "بهسازی"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr "یک اسم برای چشم انداز جدید وارد کنید:"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr "ورودی %d/%d"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr "ورودی 1/%d"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr "همگن"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr "خطا"
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr ""
"بارگذاری زبان انتخاب شده با شکست مواجه شد. برگشت به زبان پیش فرض سیستم."
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
@@ -2158,7 +2202,7 @@ msgstr ""
"خطا: بعد از \"%s\"، %d (0x%X) به جای نشان ذخیره %d (0x%X) پیدا شد. خاتمه "
"بارگذاری وضعیت ذخیره..."
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
@@ -2167,38 +2211,38 @@ msgstr ""
"خطا: تلاش برای دسترسی به فونت های %s اما آنها بارگذاری نشده اند. ممکن است "
"بازی ها فونت ها را به درستی نمایش ندهند، یا خرابی به بار آورند."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr "گریختن"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr "خوشی"
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr "دستگذار استثناء - دسترسی فضای پایینی حافظه. %08llx%08llx"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr "اجرا کردن"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr "صادر کردن با شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr "صادر کردن فایل"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr "صادر کردن ضبط"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr "صادر کردن ضبط..."
@@ -2206,7 +2250,7 @@ msgstr "صادر کردن ضبط..."
msgid "Export Save"
msgstr "صادر کردن ذخیره"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr "صادر کردن فایل ذخیره وی (آزمایشی)"
@@ -2214,100 +2258,100 @@ msgstr "صادر کردن فایل ذخیره وی (آزمایشی)"
msgid "Export all saves"
msgstr "صادر کردن همه ذخیره ها"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr "صادر کردن با شکست مواجه شد، کوشش دوباره؟"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr "صادر کردن ذخیره بعنوان..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr "پسوند"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr "حافظه میانجی خارجی فریم"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr "پارامتر اضافی"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
msgstr "پارامترهای یدکی مفید تنها برای \"Metroid Other M\"."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr "استخراج همه فایل ها..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr "استخراج بارگذار برنامه..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr "استخراج دال..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr "استخراج پوشه..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr "استخراج فایل..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr "استخراج پارتیشن..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr "استخراج کردن %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
msgstr "استخراج کردن همه فایل ها"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
msgstr "استخراج کردن پوشه"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr "استخراج کردن..."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr "بایت فیفو"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr "پخش کننده فیفو"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr "فرانسه"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr "اندازه اف اس تی:"
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr "اتصال با شکست مواجه شد!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr "پذیرفتن با شکست مواجه شد!!"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
msgstr "دانلود کدها با شکست مواجه شد."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
msgstr "استخراج به %s با شکست مواجه شد!"
@@ -2334,26 +2378,30 @@ msgstr ""
"که نیازی به فایل حافظه فقط خواندنی ندارد.\n"
"(نوع پردازشگر را از تب \"صدا\" در پنجره پیکر بندی انتخاب کنید.)"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr "بارگذاری bthprops.cpl با شکست مواجه شد"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr "بارگذاری hid.dll با شکست مواجه شد"
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
msgstr "خواندن %s با شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr "خواندن banner.bin با شکست مواجه شد"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
@@ -2364,7 +2412,7 @@ msgstr ""
"امکان ناقص بودن کارت حافظه وجود دارد\n"
"موقعیت فایل:%llx"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
@@ -2372,7 +2420,7 @@ msgstr ""
"خواندن صحیح بکاپ جدول تخصیص بلوک با شکست مواجه شد\n"
"(0x8000-0x9FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
@@ -2380,12 +2428,17 @@ msgstr ""
"خواندن صحیح جدول تخصیص بلوک با شکست مواجه شد\n"
"(0x6000-0x7FFF)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr "خواندن داده از فایل با شکست مواجه شد %d"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
@@ -2393,7 +2446,7 @@ msgstr ""
"خواندن صحیح بکاپ پوشه با شکست مواجه شد\n"
"(0x4000-0x5FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
@@ -2401,7 +2454,11 @@ msgstr ""
"خواندن صحیح پوشه با شکست مواجه شد\n"
"(0x2000-0x3FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
@@ -2409,64 +2466,64 @@ msgstr ""
"خواندن سرخط با شکست مواجه شد\n"
"(0x0000-0x1FFF)"
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr "خواندن آی دی یگانه از ایمیج دیسک با شکست مواجه شد"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr "نوشتن BT.DINF به SYSCONF با شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr "نوشتن bkhdr با شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr "نوشتن سرخط برای %s با شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr "نوشتن سرخط برای فایل %d با شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
msgstr "پارسی"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr "سریع"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr "نسخه سریع واحد مدیریت حافظه. برای همه بازی ها عمل نمی کند."
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
msgstr ""
"همگاه سازی مجدد مهلک. خروج نمایش. (خطا در ویموت پخش: %u !=%u, بایت %u.)%s"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr "پخش کننده فیفو"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
msgstr "مشخصات فایل"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr "فایل شامل کدی نیست."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr "فایل تبدیل شده است به .gci"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
@@ -2474,7 +2531,7 @@ msgstr ""
"فایل قادر به باز شدن نیست\n"
"یا دارای پسوند معتبر نیست"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
@@ -2483,36 +2540,36 @@ msgstr ""
"فایل پسوند \"%s\" دارد\n"
"پسوند های معتبر عبارتند از (.raw/,gcp)"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr "فایل به عنوان کارت حافظه شناخته نشده است"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr "فایل فشرده نیست"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr "ورودی/خروجی فایل: حالت گشودن ناشناس : 0x%02x"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr "فایل سیستم"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
msgstr "نوع فایل 'ini' ناشناس است! باز نخواهد شد!"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr "پیدا کردن بعدی"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr "پیدا کردن قبلی"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr "بلوک اول"
@@ -2520,23 +2577,23 @@ msgstr "بلوک اول"
msgid "Fix Checksums"
msgstr "درست کردن چک سام ها"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr "۱۶:۹ اجباری"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr "۴:۳ اجباری"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
msgstr "کنسول به عنوان NTSC-J اجباری"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
msgstr "فیلتر کردن بافت اشیاء اجباری"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2549,7 +2606,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2561,7 +2618,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
@@ -2571,7 +2628,7 @@ msgstr ""
"این گزینه را رها کنید، حالت پیش فرض دلفین NTSC-U می باشد, دلفین به طور "
"خودکار این گزینه را برای بازی های ژاپنی فعال می کند."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
@@ -2579,148 +2636,147 @@ msgstr ""
"قالب بندی بعنوان اسکی (NTSC\\PAL)?\n"
"انتخاب پاسخ منفی برای SJIS (NTSC-J)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr "جلو"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr "پیدا کردن نتایج %d برای '"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr "فریم"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
msgstr "فریم"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr "پيشروى فریم"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr "نسخه برداری فریم با استفاده از FFV1"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr "مشخصات فریم"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr "محدوده فریم"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr "پری&دن از روی فریم"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr "حد فریم:"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr "فریم ها برای ضبط شدن"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr "نگاه آزاد"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr "فرانسوی"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr "تحریک"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr "از"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr "تمام صفحه"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr "وضوح حالت تمام صفحه:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr "فایل جی سی آی(*.gci)"
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr "پیکربندی میکروفن گیم کیوب"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr "گیم پد گیم کیوب"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr "GX_CMD_INVL_VC"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
msgstr "آی دی بازی:"
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr "بازی قبلا اجرا شده است!"
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr "بازی اجرا نشده است!"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
-#, fuzzy
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
-msgstr "بازی پیدا نشد!"
+msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr "تنظیمات مشخصات بازی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr "پیکربندی بازی"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr "فایل های ذخیره بازی گیم کیوب(*.gci;*.gcs;*.sav)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr "گیم کیوب"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr "تنظیمات &دسته گیم کیوب"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
msgstr "کارت های حافظه گیم کیوب (*.raw.*.gcp)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr "تنظیمات دسته گیم کیوب"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
msgstr "کدهای گیکو"
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2733,10 +2789,10 @@ msgstr ""
"توسط قرار دادن فایل codehandler.bin در داخل پوشه Sys و شروع مجدد دلفین "
"استفاده کنید.)"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr "کلی"
@@ -2744,30 +2800,30 @@ msgstr "کلی"
msgid "General Settings"
msgstr "تنظیمات جامع"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr "آلمانی"
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr "گرفتن کد اکشن ریپلی: فهرست بزرگتر از سایز لیست است %lu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr "گرافیک"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
msgstr "تنظیمات گرافیک"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr "بزرگتر از"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2784,51 +2840,67 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را رها کنید."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr "یونانی"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr "سبز"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr "سبز چپ"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr "سبز راست"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr "گیتار"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr "HCI_CMD_INQUIY فرا خوانده شد، لطفا گزارش دهید!"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr "هک"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr "چک کردن سر خط برای یافتن خطا با شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr "عبری"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr "ارتفاع"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr "کمک"
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2846,15 +2918,15 @@ msgstr ""
"\n"
"سایونارا!\n"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr "مخفی"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
msgstr "مخفی کردن نشانگر"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
@@ -2864,26 +2936,26 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را رها کنید."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
msgstr "خانه"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr "میزبان"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
msgstr "پیکربندی شرت کات"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
msgstr "شرت کاتها"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr "مجارستانی"
@@ -2891,34 +2963,30 @@ msgstr "مجارستانی"
msgid "Hybrid Wiimote"
msgstr "ویموت مخلوط"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr ""
"IOCTL_ES_GETVIEWS: آزمایش برای گرفتن داده از یک بلیط ناشناخته: %08x/%08x"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-"IOCTL_ES_LAUNCH: بازی بارگذاری آیزوها یا یک عنوان که در نند نسخه برداری شده "
-"شماست را آزمایش کرد\n"
-"آی دی عنوان %016llx.\n"
-" احتمالا اینک دلفین هنگ خواهد کرد"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
msgstr "IOCTL_ES_READCONTENT - مقصد ناصحیح"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
msgstr "تنظیمات آی پی ال"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr "فروسرخ"
@@ -2930,23 +2998,23 @@ msgstr "اشاره گر فروسرخ"
msgid "IR Sensitivity:"
msgstr "میزان حساسیت فروسرخ"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
msgstr "جزئیات آیزو"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
msgstr "پوشه های آیزو"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr "ایتالیا"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr "تندیس"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
@@ -2954,28 +3022,11 @@ msgstr ""
"اگر انتخاب شود، ثبت حد جعبه به روز خواهد شد. از سوی بازی های پیپر ماریو "
"استفاده می شود."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-"اگر تعداد فریم های نمایش داده شده بر ثانیه نامنظم است، شاید این گزینه به رفع "
-"آن کمک کند. (روشن = سازگار، خاموش = سریع)"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-"اگر شما حد فریم را بالاتر از سرعت کامل بازی تنظیم کنید (NTSC:۶۰، PAL:۵۰). "
-"استفاده کنید از دریچه صدا با استفاده از پردازشگر صدای دلفین (شاید صدا های "
-"تیک را درست کند اما همچنین می تواند موجب نویز ثابت بسته به بازی شود)."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr "تغییرات قالب بندی نادیده گرفته شود"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -2989,7 +3040,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را رها کنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -3007,11 +3058,11 @@ msgstr ""
msgid "Import Save"
msgstr "وارد کردن ذخیره"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr "وارد کردن با شکست مواجه شد، سعی دوباره؟"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
@@ -3019,11 +3070,11 @@ msgstr ""
"پسوند فایل وارد شده جی اس سی است\n"
"اما دارای سرخط صحیح نمی باشد"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr "طول فایل وارد شده نامعتبر می باشد"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
@@ -3031,19 +3082,7 @@ msgstr ""
"پسوند فایل وارد شده اس ای وی می باشد\n"
"اما دارای سرخط صحیح نمی باشد"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"کارآئى را بالا می برد اما سبب نقص های گرافیکی در اکثر بازی هایی که بر "
-"برابرسازی مه تکیه می کنند می شود.\n"
-"\n"
-"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
msgstr "در بازی"
@@ -3051,67 +3090,67 @@ msgstr "در بازی"
msgid "In-Game"
msgstr "در بازی"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr "مشخصات"
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
msgstr "مشخصات"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr "ورودی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr "درج"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr "درج کد رمز شده و یا کشف شده..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
msgstr "درج کارت اس دی"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr "درج اسم..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
msgstr "نصب واد"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr "نصب به فهرست انتخاب وی"
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
"نصب دستگذار استثناء فراخوانده شد، اما این پلتفورم هنوز از این امکان پشتیبانی "
"نمی کند."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
msgstr "در حال نصب واد..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr "خطای بررسی درست بودن"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr "بررسی درست بودن به پایان رسید"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr "بررسی درست بودن به پایان رسید. خطایی پیدا نشد."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
@@ -3120,19 +3159,19 @@ msgstr ""
"بررسی درست بودن پارتیشن %d با شکست مواجه شد. نسخه برداری شما به احتمال زیاد "
"خراب یا نادرست وصله خورده است."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
msgstr "واسط گرافیک"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
msgstr "تنظیمات واسط گرافیک"
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr "خطای داخلی LZO - فشرده سازی با شکست مواجه شد"
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
@@ -3141,41 +3180,45 @@ msgstr ""
"خطای داخلی LZO - ناهمفشرده سازی با شکست مواجه شد (%d) (%li, %li) \n"
"سعی مجدد برای بار گذاری وضعیت"
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr "خطای داخلی LZO - lzo_init() با شکست مواجه شد"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr "وضوح داخلی:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr "صفحه نخست"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr "سایز نا معتبر (%x) یا کلمه جادو (%x)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
msgstr "مقدار نامعتبر!"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr "bat.map نامعتبر یا ورودی پوشه"
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr "نوع واقعه نامعتبر %i"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr "فایل نامعتبر"
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -3186,46 +3229,54 @@ msgstr ""
"%s\n"
"شاید لازم باشد شما مجدد از این بازی نسخه برداری کنید."
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr "فایل ضبط نامعتبر"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr "پارامتر های جستجوی نامعتبر (هیچ شیئ انتخاب نشده)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr "رشته جستجوی نامعتبر (قادر به تبدیل به عدد نیست)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr "رشته جستجوی نامعتبر (فقط رشته های با طول زوج پشتیبانی می شود)"
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr "وضعیت نامعتبر"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr "ایتالیایی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr "ژاپن"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr "ژاپنی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr "کره"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
@@ -3235,62 +3286,62 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
msgstr "بر راس نگه داشتن پنجره"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr "کلید"
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr "کره ای"
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr "ال"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
msgstr "دکمه ال"
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr "ال آنالوگ"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr "زبان:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr "آخرین وضعیت بازنویسی شده"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr "آخرین وضعیت ذخیره شده"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
msgstr "زمان بيکارى:"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr "چپ"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr "استیک چپ"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
@@ -3298,7 +3349,7 @@ msgstr ""
"کلیک چپ برای کشف کلیدهای فوری.\n"
"کلید فاصله برای پاک کردن."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
@@ -3308,7 +3359,7 @@ msgstr ""
"کلیک وسط برای پاک کردن.\n"
"کلیک راست برای گزینه های بیشتر."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
@@ -3316,76 +3367,76 @@ msgstr ""
"کلیک چپ/راست برای گزینه های بیشتر.\n"
"کلیک وسط برای پاک کردن."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr "کمتر از"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr "محدود کردن توسط تعداد فریم ها بر ثانیه"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr "بارگذاری"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr "بارگذاری بافت اشیاء دلخواه"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr "بارگذاری وضعیت - شکاف ۱"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr "بارگذاری وضعیت - شکاف ۲"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr "بارگذاری وضعیت - شکاف ۳"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr "بارگذاری وضعیت - شکاف ۴"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr "بارگذاری وضعیت - شکاف ۵"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr "بارگذاری وضعیت - شکاف ۶"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr "بارگذاری وضعیت - شکاف ۷"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr "بارگذاری وضعیت - شکاف ۸"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr "بارگذاری وضعیت..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
msgstr "بارگذاری منوی سیستم وی"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
msgstr "بارگذاری منوی سیستم وی %d%c"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
@@ -3395,7 +3446,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr "بارگذاری مقدار های از پیش تنظیم شده از الگوهای هک موجود است."
@@ -3403,23 +3454,23 @@ msgstr "بارگذاری مقدار های از پیش تنظیم شده از ا
msgid "Local"
msgstr "محلی"
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr "ثبت وقایع"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr "پیکر بندی ثبت وقایع"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr "ثبت فریم بر ثانیه به فایل"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr "انواع ثبت وقایع"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3431,24 +3482,24 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را رها کنید."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr "خروجی های واقعه نگار"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr "واقعه نگاری"
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr "ارتباط با سرور قطع شد!"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr "دکمه ام"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
@@ -3457,51 +3508,60 @@ msgstr ""
"چک سام MD5 ناهمسان است\n"
" %016llx%016llx != %016llx%016llx"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr "هک کردن سرعت واحد مدیریت حافظه"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr "فایل های گیم شارک مد کتذ (*.gcs)"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr "استیک اصلی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
msgstr "آی دی سازنده"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr "سازنده"
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr "حداکثر"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
msgstr "کارت حافظه فایل ذخیره برای این عنوان را دارد"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr "کارت حافظه قبلا باز شده است"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr "بایت حافظه"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
msgstr "کارت حافظه"
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
@@ -3509,7 +3569,7 @@ msgstr ""
"اخطار: قبل از استفاده از کارت حافظه بک آپ بگیرید، شاید درست شود اما اطلاعات "
"از بین خواهد رفت!"
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3526,15 +3586,15 @@ msgstr ""
"%s\n"
"آیا مایل هستید فایل قبلی را به مکان جدید کپی کنید؟\n"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr "سایز کارت حافظه با سرخط تطابق ندارد"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr "فهرست انتخاب"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr "میکروفن"
@@ -3543,20 +3603,20 @@ msgstr "میکروفن"
msgid "Min"
msgstr "حداقل"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr "متفرقه"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr "تنظیمات متفرقه"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr "پیراینده"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3568,20 +3628,20 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr "فونت هم عرض"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr "موشن پلاس"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr "موتور"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3600,224 +3660,235 @@ msgstr ""
"\n"
"\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
msgstr "ضریب"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
msgstr "ناپ"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr "توجه: سایز مسیل با طول حقیقی داده برابر نیست\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
msgstr "اضافه کردن ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr "شروع ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
msgstr "دسیمال ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
msgstr "حذف ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
msgid "NP Divide"
msgstr "جداکردن ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
msgstr "پایین ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
msgstr "پایان ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
msgstr "وارد شدن ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
msgstr "یکسان ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr "خانه ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
msgstr "درج ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
msgid "NP Left"
msgstr "چپ ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
msgid "NP Multiply"
msgstr "تکثیر ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
msgid "NP Page Down"
msgstr "صفحه پایین ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
msgid "NP Page Up"
msgstr "صفحه بالا ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
msgid "NP Right"
msgstr "راست ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
msgid "NP Separator"
msgstr "جدا ساز ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
msgstr "فاصله ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
msgid "NP Subtract"
msgstr "کاستن ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
msgid "NP Tab"
msgstr "تب ان پی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
msgid "NP Up"
msgstr "بالا ان پی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr "اسم:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr "اسم:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr "فایل های جی سی آی محلی(*.gci)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
msgstr "پویش جدید"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr "صفحه بعد"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
msgstr "پویش بعدی"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr "اسم مستعار :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr "بدون کشور (SDK)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr "هیچ آیزو یا وادی پیدا نشد"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
msgid "No banner file found for title %s"
msgstr "فایل نشان برای عنوان %s پیدا نشد"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
msgid "No description available"
msgstr "تشریحی دردسترس نیست"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
msgid "No docking"
msgstr "بدون جاخالی کردن"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
msgid "No file loaded"
msgstr "هیچ فایلی بارگذاری نشده"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
msgid "No free dir index entries"
msgstr "بدون مقادیر اطلاعاتی فهرست پوشه آزاد"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
msgid "No recorded file"
msgstr "بدون فایل ضبط شده"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
#, c-format
msgid "No save folder found for title %s"
msgstr "پوشه فایل ذخیره برای عنوان %s پیدا نشد"
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr "هیچ"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr "بوکمال نروژی"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr "برابر نیست"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr "ست نشده است"
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr "متصل نشده است"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr "یادداشت ها"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr "یادداشت ها:"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr "توجه"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr "قفل کلید نام لاک"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
msgstr "تعداد کدها:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr "ننچاک"
@@ -3826,96 +3897,97 @@ msgstr "ننچاک"
msgid "Nunchuk Acceleration"
msgstr "شتاب دهنده ننچاک"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr "شیی"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr "محدوده شیی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr "خاموش"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr "افست:"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr "پیام های روی صفحه نمایش"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr "فقط بلوک های %d موجود است"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr "گشودن"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr "باز کردن پوشه &شامل"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr "باز کردن پوشه &ذخیره وی"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr "گشودن فایل..."
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr "اپن ای ال (OpenAL): ناتوان در ساخت زمینه برای دستگاه %s"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr "اپن ای ال (OpenAL): ناتوان در پیدا کردن دستگاهای صدا"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr "اپن ای ال (OpenAL): ناتوان در باز کردن دستگاه صدا %s"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
msgstr "کدبرداری بافت اشیاء توسط OpenCL"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr "کدبرداری بافت اشیاء توسط OpenMP"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
msgstr "گزینه ها"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr "نارنجی"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
+#, fuzzy
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
"ترتیب فایل ها در پوشه فایل با ترتیب بلوک یکسان نیست\n"
"کلیک راست کنید و تمام ذخیره ها را صادر کنید،\n"
"و ذخیره ها را به کارت حافظه ای جدید وارد کنید\n"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr "غیره"
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
@@ -3923,15 +3995,15 @@ msgstr ""
"مشتری دیگری در حالی که بازی در حال اجراست قطع شد!! نت پلی غیر فعال است. بازی "
"را دستی متوقف کنید."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr "خروجی"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr "ض&بط کردن بازی..."
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr "گیم پد"
@@ -3939,160 +4011,160 @@ msgstr "گیم پد"
msgid "Pad "
msgstr "گیم پد"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr "گیم پد ها"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
msgstr "صفحه پايينی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
msgstr "صفحه بالایی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr "پاراگراف"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr "پارامترها"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr "پارتیشن %i"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
msgstr "وصله ها"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr "مسیرها"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr "مکث"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr "مکث در پایان فیلم"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr "نورپردازی به ازای هر پیکسل"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr "کامل"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr "چشم انداز %d"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr "شروع بازی"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr "شروع ضبط"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr "شروع بازی/مکث"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr "قابل بازی"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr "گزینه های بازنواخت"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr "بازی کنان"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr "لطفا تایید کنید..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr "لطفا قبل از ذخیره کردن یک چشم انداز بسازید"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr "مینوس پلاس"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr "لهستانی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
msgstr "درگاه ۱"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
msgstr "درگاه ۲"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
msgstr "درگاه ۳"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
msgstr "درگاه ۴"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr "درگاه :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr "پرتقالی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr "پرتقالی (برزیلی)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr "افکت ها:"
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr "پایان نابهنگام فیلم در کنترل کننده پخش. %u + 8 > %u"
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr "پایان نابهنگام فیلم در ویموت پخش. %u + %d > %u"
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr "پایان نابهنگام فیلم در ویموت پخش. %u > %u"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr "حالت های از پیش تنظیم شده:"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr "صفحه قبلی"
@@ -4100,67 +4172,67 @@ msgstr "صفحه قبلی"
msgid "Previous Page"
msgstr "صفحه قبلی"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr "مقدار قبلی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr "چاپ"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr "پروفایل"
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr "خواص"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
msgstr "پاکسازی حافظه ميانى"
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr "سوال"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr "خارج شدن"
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr "آر"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
msgstr "دکمه آر"
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr "آر آنالوگ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr "حافطه رم"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr "روسیه"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr "محدوده"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr "حالت فقط خواندنی"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr "واقعی"
@@ -4176,33 +4248,33 @@ msgstr "ویموت های واقعی"
msgid "Reconnect Wiimote on State Loading"
msgstr "برقراری ارتباط مجدد ویموت در بارگذاری وضعیت"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr "ضبط"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr "اطلاعات ضبط"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr "گزینه های ضبط"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr "قرمز"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr "قرمز چپ"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr "قرمز راست"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -4218,28 +4290,28 @@ msgstr ""
"اگر در این مورد اطمینان ندارید، \"هیچ\" را انتخاب کنید."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr "به روز کردن"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr "به روز کردن لیست"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr "به روز کردن لیست بازی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr "پاک کردن"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
@@ -4249,198 +4321,202 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr "نمایش در پنجره اصلی"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr "شروع دوباره"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr "نتایج"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
msgstr "برگشت"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr "راست"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr "استیک راست"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr "شوک"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
msgstr ""
-"اجرای شبیه ساز سطح پائین پردازشگر صدای دلفین بر روی ریسمان جداگانه (توصیه "
-"نمی شود)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr "روسی"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr "ذخ&یره وضعیت"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr "بی خطر"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr "ذخیره"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
msgstr "ذخیره جی سی آی بعنوان..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
msgstr "ذخیره وضعیت - شکاف ۱"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
msgstr "ذخیره وضعیت - شکاف ۲"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
msgstr "ذخیره وضعیت - شکاف ۳"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
msgstr "ذخیره وضعیت - شکاف ۴"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
msgstr "ذخیره وضعیت - شکاف ۵"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
msgstr "ذخیره وضعیت - شکاف ۶"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
msgstr "ذخیره وضعیت - شکاف ۷"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
msgstr "ذخیره وضعیت - شکاف ۸"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
msgstr "ذخیره وضعیت..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr "ذخیره بعنوان..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr "ذخیره جی سی ام/آیزو فشرده شده"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr "دخیره چشم انداز فعلی"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr "ذخیره جی سی ام/آیزو ناهمفشرده شده"
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr "ذخیره وضعیت فیلم %s خراب است، ضبط فیلم میایستد..."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr "کپی ای اف بی تغییر سایز یافته"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr "در حال پویش %s"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
msgstr "پویش برای فایل های آیزو"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr "در حال پویش..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr "عکس فوری"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
msgstr "اسکرول لاک"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr "جستجو"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr "فیلتر جستجو"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr "جستجوی پوشه های فرعی"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr "جستجوی موضوع فعلی"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr "جستجو برای مقدار هگزا:"
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr "بخش %s در SYSCONF پیدا نشد"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr "انتخاب"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr "انتخاب فایل ضبط شده"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr "انتخاب فایل وی واد برای نصب"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
@@ -4450,31 +4526,31 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، گزینه اول را انتخاب کنید."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr "یک فایل ذخیره برای وارد کردن انتخاب کنید"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr "انتخاب پنجره های شناور"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr "انتخاب فایل برای بارگذاری"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr "انتخاب فایل ذخیره"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr "انتخاب وضعیت برای بارگذاری"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr "انتخاب وضعیت برای ذخیره"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4493,15 +4569,15 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، اتوماتیک را انتخاب کنید."
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
msgstr "پروفایل انتخاب شده وجود ندارد"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr "دست خط انتخاب شده"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4518,24 +4594,27 @@ msgstr ""
"اگر همچنان اطمینان ندارید، از بالاترین وضوحی که برای شما کار می کند استفاده "
"کنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
-"انتخاب کنید که چه رابط گرافیکی به طور داخلی بکار گرفته شود.\n"
-"معمولا Direct3D ۹ سریع ترین است. گرچه OpenGL دقیق تر است. Direct3D ۱۱ چیزی "
-"است بین این دو.\n"
-"توجه داشته باشید که پشتوانه Direct3D فقط در ویندوز موجود است.\n"
-"\n"
-"اگر در این مورد اطمینان ندارید، از Direct3D ۹ برای ویندوز و از OpenGL برای "
-"گینو لینوکس/مکینتاش استفاده کنید."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr "فرستادن"
@@ -4543,26 +4622,26 @@ msgstr "فرستادن"
msgid "Sensor Bar Position:"
msgstr "موقعیت سنسور بار:"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr "جدا کننده"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr "صربستانی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr ""
"درگاه سریال ۱ - این درگاهی است که دستگاه هایی مانند آداپتور شبکه از آن "
"استفاده می کنند"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr "ست"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr "ست کردن بعنوان آیزو &پیش فرض"
@@ -4571,14 +4650,14 @@ msgstr "ست کردن بعنوان آیزو &پیش فرض"
msgid "Set as default Memcard %c"
msgstr "ست کردن بعنوان کارت حافظه پیش فرض %c"
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr ""
"ست کردن کد اکشن ریپلی_فعال است: فهرست بزرگتر از سایز لیست کد اکشن ریپلی است "
"%lu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
@@ -4586,123 +4665,123 @@ msgstr ""
"ست کردن زمان بيکارى (بر حسب میلی ثانیه). مقادیر بالاتر این زمان می تواند "
"صدای ترق و تروق را کاهش دهد. فقط پشتوانه اپن ای ال (OpenAL)."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr "تنظیمات..."
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr "برپاکردن حافظه وی: ناتوان در پیدا کردن فایل تنظیم"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr "لرزش"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr "اسم کوتاه:"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr "دکمه های شانه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr "نمایش &میز فرمان"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr "نمایش &ثبت وقایع"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr "نمایش نوار &وضعیت"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr "نمایش نوار &ابزار"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr "نمایش درایوها"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr "نمایش مناطق کپی ای اف بی"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr "نمایش فریم بر ثانیه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr "نمایش فرانسه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr "نمایش گیم کیوب"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr "نمایش ورودی تصویر"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr "نمایش ایتالیا"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr "نمایش ژاپن"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr "نمایش کره"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
msgstr "نمایش زبان:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr "نمایش &پیکربندی ثبت وقایع"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr "نمایش پال"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr "نمایش پایگاه ها"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr "نمایش مناطق"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
msgstr "نمایش آمار"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr "نمایش تایوان"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr "نمایش ایالات متحده آمریکا"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr "نمایش واد"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr "نمایش وی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
msgstr "نمایش پنجره تایید قبل از متوقف کردن بازی."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4717,11 +4796,11 @@ msgstr ""
msgid "Show first block"
msgstr "نمایش بلوک اول"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr "نمایش شمارنده تاخیر"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4747,7 +4826,7 @@ msgstr "نمایش تندیس ذخیره"
msgid "Show save title"
msgstr "نمایش عنوان ذخیره"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4758,11 +4837,11 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr "نمایش ناشناخته"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
@@ -4772,47 +4851,31 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr "ویموت فرعی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
msgstr "چینی ساده شده"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr "سایز"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
msgstr "جهش از روی بایوس"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
msgstr "از قلم انداختن پاکسازی DCBZ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr "از قلم انداختن مقصد آلفا پاس"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr "از قلم انداختن دسترسی ای اف بی از پردازنده"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"از قلم انداختن مقصد آلفا پاس در بسیاری از بازی ها برای افکت های متفرقه "
-"گرافیک استفاده می شود.\n"
-"\n"
-"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4829,25 +4892,25 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr "شکاف %i"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
msgstr "شکاف ای"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
msgstr "شکاف بی"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr "عکس فوری"
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
msgstr "ارائه دهنده نرم افزاری"
@@ -4864,27 +4927,27 @@ msgstr ""
"آیا شما واقعا قصد فعال کردن این گزینه را دارید؟ اگر در این مورد اطمینان "
"ندارید، 'نه' را انتخاب کنید."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
msgstr "تنظیمات صدا"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr "پشتوانه صدا %s معتبر نیست."
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr "ایجاد حافظه میانجی صدا با شکست مواجه شد: %s"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr "فضا"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr "اسپانیایی"
@@ -4892,7 +4955,7 @@ msgstr "اسپانیایی"
msgid "Speaker Volume:"
msgstr "حجم صدای اسپیکر:"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4911,63 +4974,63 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه \"۶۴۰x۵۲۸\" را انتخاب کنید."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr "بالا بردن نرخ نقل و انتقال دادهای دیسک"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr "استیک مربع"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr "کنترولر استاندارد"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr "شروع"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
msgstr "شروع &نت پلی"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr "شروع &ضبط"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr "شروع ضبط"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr "وضعیت"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr "ذخیره های وضعیت"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
msgstr "چرخ فرمان"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr "استیک"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr "توقف"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -4981,107 +5044,117 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را رها کنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr "کشیدن تصویر به سایز فعلی پنجره"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr "مرتعش کردن"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr "کاستن"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr "صادر کردن فایل به %s با موفقیت انجام شد"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr "فایل های ذخیره با موفقیت وارد شدند"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
msgstr "نوسان"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr "زبان سیستم:"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr "تایوان"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr "ورودی تاس"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr "تب"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr "جدا کردن تب"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr "جدول چپ"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr "جدول راست"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr "گرفتن عکس فوری"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr "تارو کونگا (بنگوس)"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr "آزمودن"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr "بافت اشیاء"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr "حافظه ميانى بافت اشیاء"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr "قالب بندی بافت اشیاء"
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr "واد با موفقیت نصب شد"
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr "آدرس بی اعتبار است"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr "چک سام با موفقیت درست شد"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr "پوشه برگزیده قبلا در لیست بوده است"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
@@ -5090,7 +5163,7 @@ msgstr ""
"فایل %s قبلا به وجود آمده.\n"
"آیا مایل هستید این فایل را جایگزین کنید؟"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
@@ -5099,29 +5172,29 @@ msgstr ""
"فایل %s نمی تواند برای نوشتن باز شود. لطفا بررسی کنید که این فایل قبلا توسط "
"برنامه دیگری باز نشده باشد."
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr "فایل %s قبلا باز بود، سرخط فایل نوشته نخواهد شد."
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr "فایلی که شما مشخص (%s) کرده اید وجود ندارد"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr "اسم نمی تواند خالی باشد"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr "اسم نمی تواند شامل کاراکتر '،' باشد"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr "نتیجه کد رمزگشایی شده اکشن ریپلی شامل هیچ خطی نیست."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -5133,47 +5206,47 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، از چپ ترین مقدار استفاده کنید."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr "سایز فایل ذخیره ای که سعی در کپی کردن آن دارید بی اعتبار است"
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
msgstr ""
"زبان انتخاب شده توسط سیستم شما پشتیبانی نمی شود. برگشت به زبان پیش فرض سیستم."
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr "نسخه سرور و نت پلی مشتری نا سازگار است!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr "سرور پر شده است!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
msgstr "سرور پاسخ داد: بازی در حال اجراست!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
msgstr "سرور یک پیغام خطای ناشناخته فرستاد!"
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr "فایل مشخص شده \"%s\" وجود ندارد"
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
msgstr "مقدار بی اعتبار است"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
msgstr "تم:"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
@@ -5181,7 +5254,7 @@ msgstr ""
"باید بلیطی برای ۰۰۰۰۰۰۰۱/۰۰۰۰۰۰۰۲ وجود داشته باشد. نسخه برداری نند شما "
"احتمالا ناقص است."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
@@ -5189,7 +5262,7 @@ msgstr ""
"این تنظیمات تنظیمات هسته دلفین را خنثی می کند.\n"
"نامعین یعنی بازی از تنظیمات دلفین استفاده می کند."
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
@@ -5197,11 +5270,11 @@ msgstr ""
"این شبیه ساز اکشن ریپلی از کدهایی که توسط خود اکشن ریپلی پیراسته شده باشد "
"پشتیبانی نمی کند."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr "این مورد میتواند سبب کند شدن منوی وی و تعدادی از بازی ها شود."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -5221,7 +5294,19 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+#, fuzzy
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+"اگر شما حد فریم را بالاتر از سرعت کامل بازی تنظیم کنید (NTSC:۶۰، PAL:۵۰). "
+"استفاده کنید از دریچه صدا با استفاده از پردازشگر صدای دلفین (شاید صدا های "
+"تیک را درست کند اما همچنین می تواند موجب نویز ثابت بسته به بازی شود)."
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -5233,61 +5318,61 @@ msgstr ""
"سبب افزایش چشم گیر سرعت روی کامپیوترهایی با بیش از یک هسته می شود، اما "
"همچنین می تواند خرابی های گاه و بی گاه را سبب شود."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr "این مورد به شما اجازه خواهد داد تا فایل پیکربندی INI را ویرایش کنید"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr "سرحد"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr "لرزیدن"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr "عنوان"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr "به"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr "تبدیل انواع ثبت وقایع"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
msgstr "تبدیل حالت تمام صفحه"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr "بالا"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
msgstr "چینی سنتی"
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr "آزمایش برای بارگذاری فایل ناشناخته."
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr "دکمه ها"
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr "تلاش برای خواندن از روی SYSCONF نامعتبر"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
@@ -5295,15 +5380,15 @@ msgstr ""
"تلاش برای خواندن از SYSCONF نامعتبر\n"
"آی دی های بلوتوث ویموت موجود نیست"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr "ترکی"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr "ديسک"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr "نوع"
@@ -5311,25 +5396,25 @@ msgstr "نوع"
msgid "UDP Port:"
msgstr "درگاه UDP:"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
msgstr "ویموت UDP"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr "ناشناخته"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
msgstr "ناشناخته_%02X"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr "ایالات متحده آمریکا"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
@@ -5337,7 +5422,7 @@ msgstr ""
"قادر به ساختن وصله از مقادیر داده شده نیست.\n"
"ورودی اصلاح نشد."
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -5348,74 +5433,88 @@ msgstr ""
"معتبر. وارسی کنید که کد را درست وارد کرده باشید.\n"
"آیا مایل هستید که این خط را نادیده بگیرید و به تجزیه ادامه دهید؟"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr "تعریف نشده %i"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr "خنثی کردن وضعیت بارگذاری"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr "فرمان 0x80 غیرمنتظره؟ برنامه در حال اجرا متوقف می شود..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr "ناشناخته"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr "دستور دی وی دی ناشناخته %08x - خطای مهلک"
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr ""
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
msgstr "نوع ورودی ناشناخته %i در SYSCONF (%s@%x)!"
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr "پیام ناشناخته با آی دی %d دریافت شد"
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr "پیام ناشناخته با آی دی:%d از بازیکن:%d بیرون انداختن بازیکن!"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr "بالا"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr "به روز کردن"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr "ویموت عمودی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr "استفاده از حالت پال ۶۰ هرتز (PAL60)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr "استفاده از حالت تمام صفحه"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr "استفاده از حالت شانزده شانزدهی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr "استفاده از دستگذار پنیک"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -5428,7 +5527,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -5442,53 +5541,58 @@ msgstr ""
"مزاحمت را از طریق فعال کردن این گزینه امکان پذیر سازد.\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr "کاربردی"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr "هماهنگ کردن فرکانس عمودی بازی با صفحه نمایش"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+#, fuzzy
+msgid "VBeam Speed Hack"
+msgstr "هک کردن سرعت واحد مدیریت حافظه"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr "مقدار"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr "مقدار:"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr "مقدار:"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr "دراز نویسی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr "ویدیو"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr "مجازی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr "حجم صدا"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
msgstr "نصب واد با شکست مواجه شد: خطای ایجاد %s"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
msgstr "نصب واد با شکست مواجه شد: خطای ایجاد بلیط"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5499,25 +5603,25 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr "اخطار"
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
msgstr "اخطار - شروع دال در حالت کنسول اشتباه!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
msgstr "اخطار - شروع ای ال اف در حالت کنسول اشتباه!"
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
msgstr "اخطار - شروع آیزو در حالت کنسول اشتباه!"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5528,7 +5632,7 @@ msgstr ""
"%s\n"
"آیا مایل به ادامه هستید؟"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5541,7 +5645,7 @@ msgstr ""
"و داشتن اسم یکسان مانند یک فایل در کارت حافظه شما\n"
"ادامه می دهید؟"
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
@@ -5553,7 +5657,7 @@ msgstr ""
"دیگری را بارگذاری کنید، یا این وضعیت را با حالت فقط خواندنی خاموش بارگذاری "
"کنید."
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
@@ -5564,7 +5668,7 @@ msgstr ""
"ندارد. قبل از ادامه شما باید ذخیره دیگری را بارگذاری کنید، یا این وضعیت را "
"با حالت فقط خواندنی خاموش بارگذاری کنید. وگرنه شاید شما دچار نا همزمانی شوید."
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5597,49 +5701,49 @@ msgstr ""
"شروع=%d, A=%d, B=%d, X=%d, Y=%d, Z=%d, DUp=%d, DDown=%d, DLeft=%d, DRight="
"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr "نویسنده فایل ویو - فایل باز نیست."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr "بد شانسی"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
msgstr "هک کردن صفحه عریض"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr "عرض"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr "وی"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
msgstr "میز فرمان وی"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr "ریشه وی نند:"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
msgstr "وارد کردن فایل ذخیره وی"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
msgstr "فایل های ذخیره وی (*.bin)|*.bin"
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr "وی واد: ناتوان در خواندن از فایل"
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr "ویموت"
@@ -5648,7 +5752,7 @@ msgstr "ویموت"
msgid "Wiimote %i"
msgstr "ویموت %i"
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr "ویموت متصل شد"
@@ -5656,7 +5760,7 @@ msgstr "ویموت متصل شد"
msgid "Wiimote Motor"
msgstr "موتور ویموت"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
msgstr "تنظیمات ویموت"
@@ -5664,102 +5768,117 @@ msgstr "تنظیمات ویموت"
msgid "Wiimotes"
msgstr "ویموت ها"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr "پنجره ها چپ"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
msgstr "فهرست پنجره ها"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr "پنجره ها راست"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr "پیچیدن کلمه"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr "در حال کار..."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr "نوشتن در میز فرمان"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
msgstr "نوشتن به صورت اشکال زدایی"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
msgstr "نوشتن به فایل"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
msgstr "نوشتن در پنجره"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr "صدای اکس ۲ (XAdudio2) - ساخت آوای منبع با شکست مواجه شد: %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
msgstr "صدای اکس ۲ (XAdudio2) - اينيت با شکست مواجه شد: %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr "صدای اکس ۲ (XAdudio2) - ساخت آوای مستر منبع با شکست مواجه شد: %#X"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr "ثبت اکس اف"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr "زرد"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
-"شما از رام های پردازشگر صدای دلفین مجانی که توسط تیم دلفین ساخته شده استفاده "
-"می کنید.\n"
-"فقط بازی های ماکرو کد زلدا درست با این رام ها کار می کنند.\n"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr "شما نمی توانید قطعاتی که حاوی صفحات می باشند را ببندید."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr "شما باید یک بازی انتخاب کنید!!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
msgstr "شما باید یک اسم وارد کنید!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
msgstr "شما باید یک مقدار صحیح برای دسیمال، هگزادسیمال یا اکتال وارد کنید."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr "شما باید یک اسم معتبر برای پروفایل وارد کنید."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr "برای اعمال تغییرات شما باید دلفین را از نو اجرا کنید."
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
@@ -5767,7 +5886,7 @@ msgstr ""
"به نظر می رسد فایل آیزو/جی سی ام شما نامعتبر می باشد (کشور نامعتبر).\n"
"ادامه با ناحیه پال؟"
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
@@ -5778,25 +5897,25 @@ msgstr ""
"سایز فایل باید 0x%04x باشد (اما سایز این فایل 0x%04llx است)\n"
"آیا میخواهید یک فایل جدید تولید شود؟"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
msgstr "هک افسانه زلدا: شاهدخت سپیده دم"
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr "کد صفر ۳ پشتیبانی نمی شود"
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
msgstr "کد ناشناخته صفر به دلفین: %08x"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr "[ منتظر بمانید ]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5808,11 +5927,11 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr "[دستی]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5831,7 +5950,7 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5845,97 +5964,47 @@ msgstr ""
"\n"
"اگر در این مورد اطمینان ندارید، این گزینه را فعال نکنید."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr "^ اضافه کردن"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr "بارگذار برنامه (.img)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr "خواندن سرخط بی کی با شکست مواجه شد"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr "خواندن دادها از فایل با شکست مواجه شد: %s"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr "خواندن سرخط با شکست مواجه شد"
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr "خطای iCacheJIT: خواندن شناسنده از %x. لطفا گزارش دهید."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr "یک ذخیره وی نیست یا شکست برای خواندن سایز سرخط فایل %x"
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr "s"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr "فرمان ناشناخته 0x%08x"
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
msgstr "خطای 1- wxExecute در اجرای برنامه!"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr "اصلاح z دور:"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr "اصلاح z نزدیک:"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr "| یا"
-#~ msgid "%i connected"
-#~ msgstr "%i متصل شده است"
-
-#~ msgid "Alternate Wiimote Timing"
-#~ msgstr "زمان بندی جایگزین برای ویموت"
-
-#~ msgid "Interpreter (VERY slow)"
-#~ msgstr "مفسر (بسیار کند)"
-
-#~ msgid "JIT Recompiler (recommended)"
-#~ msgstr "ری کامپایلر جیت (تایید شده)"
-
-#~ msgid "JITIL experimental recompiler"
-#~ msgstr "ری کامپایلر آزمایشی جیتیل"
+#~ msgid "Accurate VBeam emulation"
+#~ msgstr "برابرسازی دقیق وی بیم"
#~ msgid ""
-#~ "Mutes the Wiimote speaker. Fixes random disconnections on real wiimotes. "
-#~ "No effect on emulated wiimotes."
+#~ "If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
#~ msgstr ""
-#~ "خفه کردن اسپیکر ویموت. درست کردن قطعی های تصادفی ویموت های واقعی. هیچ "
-#~ "تاثیری بر ویموت های برابرسازی شده ندارد."
+#~ "اگر تعداد فریم های نمایش داده شده بر ثانیه نامنظم است، شاید این گزینه به "
+#~ "رفع آن کمک کند. (روشن = سازگار، خاموش = سریع)"
-#~ msgid "Pair Up"
-#~ msgstr "جفت شدن"
-
-#~ msgid "Reconnect Wiimote Confirm"
-#~ msgstr "تایید اتصال ویموت"
-
-#~ msgid ""
-#~ "Wiimote %i has been disconnected by system.\n"
-#~ "Maybe this game doesn't support multi-wiimote,\n"
-#~ "or maybe it is due to idle time out or other reason.\n"
-#~ "Do you want to reconnect immediately?"
-#~ msgstr ""
-#~ "ویموت %i توسط سیستم قطع شد.\n"
-#~ "شاید این بازی از مولتی ویموت پشتیبانی نمی کند،\n"
-#~ "یا شاید این قطعی ناشی از وقفه بیهوده یا دلیلی دیگر باشد.\n"
-#~ "آیا می خواهید بی درنگ از نو متصل شوید؟"
+#~ msgid "Skip Dest. Alpha Pass"
+#~ msgstr "از قلم انداختن مقصد آلفا پاس"
diff --git a/Languages/po/fr.po b/Languages/po/fr.po
index a6a562a634..0c037107d4 100644
--- a/Languages/po/fr.po
+++ b/Languages/po/fr.po
@@ -3,14 +3,14 @@
# This file is distributed under the same license as the dolphin-emu package.
#
# Translators:
-# Pascal , 2013.
-# Vinet Sebastien , 2011.
+# FRtranslator , 2013
+# Vinet Sebastien , 2011
msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emulator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
-"PO-Revision-Date: 2013-02-02 20:43+0000\n"
+"POT-Creation-Date: 2013-04-18 23:00-0500\n"
+"PO-Revision-Date: 2013-04-18 10:41+0000\n"
"Last-Translator: FRtranslator \n"
"Language-Team: French (http://www.transifex.com/projects/p/dolphin-emu/"
"language/fr/)\n"
@@ -20,21 +20,21 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
msgstr "(trop nombreux pour être affichés)"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr "Jeu :"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr "! NOT"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
@@ -43,34 +43,44 @@ msgstr ""
"\"%s\" n'existe pas.\n"
" Voulez-vous créer une nouvelle carte mémoire de 16MB ?"
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
msgstr ""
"\"%s\" n'est pas un fichier GCM/ISO valide, ou n'est pas une ISO GC/Wii."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
msgstr "%08X: "
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
msgstr "%1$sCopie%1$s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr "%d échantillons"
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr "%d échantillons (de qualité niveau %d)"
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
msgstr "%s existe déjà. Voulez-vous le remplacer ?"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
msgstr "%s n'a pas pu être compressé. L'image est probablement corrompue."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -79,7 +89,7 @@ msgstr ""
"%s n'a pu être lu en tant que carte mémoire.\n"
" La taille du fichier de la carte n'est pas valide (0x%x octets)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -88,7 +98,7 @@ msgstr ""
"%s n'a pu être lu en tant que carte mémoire.\n"
" La taille de la carte n'est pas valide (0x%x octets)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
@@ -98,48 +108,37 @@ msgstr ""
"Le fichier n'est pas assez grand pour être un fichier de carte mémoire "
"valide (0x%x octets)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr "Impossible d'ouvrir %s"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-"%s a un hachage incorrect.\n"
-"Voulez-vous arrêter maintenant pour corriger le problème ?\n"
-"Si vous sélectionnez \"Non\", le son sera déterioré."
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
msgstr "%s est un fichier de 0 octet"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
msgstr "%s est déjà compressé. Impossible de le compresser d'avantage."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr "%s est un nom de fichier trop long, le maximum est de 45 caractères."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr "%sSupprimer%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr "%sExporter GCI%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr "%sImporter GCI%s"
@@ -149,252 +148,275 @@ msgstr "%sImporter GCI%s"
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr "%u blocs libres, %u entrées de rép. libres"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr "&& AND"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr "&A propos..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr "&Démarrer à partir du lecteur..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr "&Points d'arrêt"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr "&Rechercher des ISOs"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
msgstr "Gestionnaire de &cheats"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
msgstr "Paramètres &DSP (audio)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr "&Supprimer l'ISO..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr "&Supprimer les ISO sélectionnés"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr "&Emulation"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr "&Fichier"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr "&Avancement d'image"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr "&Plein écran"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
msgstr "Paramètres &Graphiques"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr "&Aide"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr "Paramètres des &Raccouris clavier"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr "&JIT"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
msgstr "&Charger l'état"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
msgstr "Gestionnaire de cartes &mémoires (GC)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr "&Mémoire"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr "&Ouvrir..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr "&Options"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr "&Pause"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr "&Démarrer"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr "&Propriétés"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
msgstr "Mode &Lecture seule"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
msgstr "Rafraîchir la &liste"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr "&Registres"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr "&Reset"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
msgstr "&Son"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr "&Stop"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
msgstr "&Outils"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr "&Vidéo"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr "&Affichage"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
msgstr "Paramètres de la &Wiimote"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr "&Wiki"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr "'"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr "(-)+zFar"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr "(-)+zNear"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr "Inconnu"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr "(aucun)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr "0x44"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr "1,5x la réso. native (960x792)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr "16 bit"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr "Résolution native : 1x (640x528)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr "2,5x la réso. native (1600x1320)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr "2x la réso. native (1280x1056)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr "32 bit"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr "3D Vision"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr "3x la réso. native (1920x1584)"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr "4x la réso. native (2560x2112)"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr "8 bit"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr "A"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
msgstr "Une fenêtre Netplay est déjà ouverte !"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
msgstr "Il n'y a pas de jeu en cours d'émulation."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:68
-#, fuzzy
msgid ""
"A supported bluetooth device could not be found.\n"
"You must manually connect your wiimotes."
msgstr ""
-"Aucun périphérique Bluetooth prise en charge n'a été détecté !\n"
-"Si vous n'utilisez pas la pile Bluetooth de Microsoft, vous pouvez jumeler "
-"manuellement vos Wiimotes et utiliser uniquement le bouton \"Rafraîchir\"."
+"Aucun périphérique Bluetooth prise en charge n'a été détecté.\n"
+"Vous devez jumeler manuellement vos Wiimotes."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
+#, fuzzy
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
"ATTENTION :\n"
"\n"
@@ -413,17 +435,17 @@ msgstr ""
"\n"
"Vous devez indiquer le port TCP à l'hôte !!"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr "AM-Baseboard"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr "Codes AR"
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr "A propos de Dolphin"
@@ -431,15 +453,11 @@ msgstr "A propos de Dolphin"
msgid "Acceleration"
msgstr "Accéleration"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr "Précision :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr "Emulation fidèle VBeam"
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -453,12 +471,12 @@ msgstr ""
"\n"
"Dans le doute, cochez plutôt EFB vers texture."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr "Action"
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -473,7 +491,7 @@ msgstr ""
"Culprit Code:\n"
"%s"
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
@@ -481,7 +499,7 @@ msgstr ""
"Erreur Action Replay : Taille non valide (%08x : adresse = %08x) dans le "
"code Ajout (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
@@ -490,7 +508,7 @@ msgstr ""
"Erreur Action Replay : Taille non valide (%08x : adresse = %08x) dans le "
"code Remplir et déplacer (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
@@ -499,7 +517,7 @@ msgstr ""
"Erreur Action Replay : Taille non valide (%08x : adresse = %08x) dans "
"l'écriture de la RAM et Remplir (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
@@ -508,13 +526,13 @@ msgstr ""
"Erreur Action Replay : Taille non valide (%08x : adresse = %08x) dans Ecrire "
"vers Pointeur (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr ""
"Erreur Action Replay : Valeur non valide (%08x) dans la Copie de mémoire (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
@@ -524,63 +542,63 @@ msgstr ""
"(%s)\n"
"Les Master codes ne sont pas requis. Ne les utilisez pas."
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr "Erreur Action Replay : code AR non valide à la ligne %s"
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr "Action Replay : Code Conditionnel : Taille non valide %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr "Action Replay : Type de Code Normal non valide %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr "Action Replay ; Code Normal %i : Sous-type non valide %08x (%s)"
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr "Action Replay : Code Normal 0 : Sous-type non valide %08x (%s)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr "Carte :"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr "Ajouter"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
msgstr "Ajouter un code ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr "Ajouter un patch"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr "Ajouter un nouveau panneau"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr "Ajouter..."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
msgstr "Adresse :"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -598,7 +616,7 @@ msgstr ""
"\n"
"NOTE: Consultez LogWindow/Console pour les valeurs acquises."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -616,94 +634,94 @@ msgstr ""
"\n"
"NOTE: Consultez LogWindow/Console pour les valeurs acquises."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr ""
"Ajuste le contrôle analogique de pression requise pour activer les boutons."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr "Avancé"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr "Paramètres avancés"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
msgstr "Tous les fichiers GC/Wii (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
msgstr "Toutes les images GC/Wii (gcm, iso, wbfs, ciso, gcz)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
msgstr "Tous les fichiers GameCube GCM (gcm)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr "Tous les états sauvegardés (sav, s##)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr "Tous les fichiers ISO Wii (iso)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr "Tous les fichiers ISO compressés GC/Wii (gcz)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr "Tous les fichiers (*.*)|*.*"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-"Permet d'activer certaines options via les raccourcis clavier 3 (résolution "
-"interne), 4 (ratio d'image), 5 (Copie d'EFB), et 6 (Brouillard) dans la "
-"fenêtre d'émulation.\n"
+"Permet d'activer certaines options via les raccourcis clavier dans la "
+"fenêtre d'émulation : 3 (résolution interne), 4 (ratio d'image), 5 (Copie "
+"d'EFB), et 6 (Brouillard) .\n"
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr "Analyser"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
msgstr "Angle"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
msgstr "Filtrage anisotropique :"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
msgstr "Anti-Aliasing :"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr "L'apploader n'a pas la bonne taille... est-ce vraiment un apploader ?"
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr "L'apploader ne peut charger depuis ce fichier"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr "Apploader :"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr "Appliquer"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
@@ -714,11 +732,11 @@ msgstr ""
"\n"
"Dans le doute, sélectionnez (aucun)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr "Arabe"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
msgstr "Êtes-vous sûr de vouloir supprimer \"%s\" ?"
@@ -737,46 +755,50 @@ msgstr ""
"Êtes-vous sûr de vouloir supprimer ce fichier ? Il sera supprimé "
"définitivement !"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr "ARM JIT (expérimental)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr "Format d'écran :"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr "Au moins un panneau doit rester ouvert."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr "Audio"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr "Moteur audio :"
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr "AudioCommon : impossible d'ouvrir le périphérique AO.\n"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr "Auto"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
msgstr "Auto (Multiple de 640x528)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
msgstr "Auto (taille de la fenêtre)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr "Ajuster auto. la taille de la fenêtre"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
@@ -786,132 +808,132 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr "B"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
msgstr "Registres BP"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr "Retour"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
msgstr "Paramètres de l'interface audio"
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr "Moteur :"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr "Entrée en arrière-plan"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr "Arrière"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr "Mauvaise entête de fichier"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr "Bannière"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
msgstr "Détails de la bannière"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr "Bannière :"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr "Barre"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr "Paramètres de base"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr "Paramètres de base"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr "Basse"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr ""
"Echec de la vérification de la somme de contrôle de la Table d'Allocation de "
"Blocs"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr "Blocs"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr "Bleu"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr "Bleu Gauche"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr "Bleu Droite"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr "Bas"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr "Contrôles liés : %lu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
msgstr "Corrompu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr "Parcourir"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr "Choisir un dossier à ajouter"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr "Rechercher un dossier contenant des ISO"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr "Parcourir un dossier de destination"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr "Buffer :"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr "Boutons"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
@@ -919,31 +941,31 @@ msgstr ""
"Ignore le vidage du cache de données par l'instruction DCBZ. Dans le doute, "
"décochez cette case."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr "C"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr "Stick-C"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr "Stick-C"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr "CP reg"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr "Moteur d'émulation du CPU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr "Cache des listes d'affichage"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -959,24 +981,39 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr "Impossible de trouver la Wiimote par bd: %02x:%02x:%02x:%02x:%02x:%02x"
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr "Impossible de trouver la Wiimote par le gestionnaire de connexion %02x"
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr "Impossible de lire depuis DVD_Plugin - erreur fatale de DVD-Interface"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr "Annuler"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr "Impossible d'ouvrir %s"
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr ""
"Impossible de désenregistrer des évènements alors qu'il y en a en attente."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
@@ -987,7 +1024,7 @@ msgstr ""
"%s\n"
"n'est pas un fichier de carte mémoire GameCube valide."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
@@ -995,32 +1032,15 @@ msgstr ""
"Impossible d'utiliser ce fichier comme carte mémoire.\n"
"Essayez-vous d'utiliser le même fichier sur les 2 slots ?"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr ""
-"Impossible de trouver la Wiimote par bd : %02x:%02x:%02x:%02x:%02x:%02x"
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr "Impossible de trouver la Wiimote par le gestionnaire de connexion %02x"
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr ""
-"Impossible de lire à partir de DVD_Plugin - DVD-Interface : Erreur fatale"
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
msgstr "Verr Maj"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr "Catalan"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr "Centre"
@@ -1028,12 +1048,12 @@ msgstr "Centre"
msgid "Change"
msgstr "Changer"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr "&Changer de disque..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr "Changer de disque"
@@ -1041,7 +1061,7 @@ msgstr "Changer de disque"
msgid "Change Game"
msgstr "Changer de Jeu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
@@ -1049,75 +1069,75 @@ msgstr ""
"Changer la langue de l'interface.\n"
"Demande un redémarrage"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr "Change le signe du paramètre zFar (après correction)"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr "Change le signe du paramètre zNear (après correction)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr "Changer ceci n'aura aucun effet durant l'émulation !"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr "Chat"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr "Cheat Code"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
msgstr "Rechercher un cheat"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
msgstr "Gestionnaire de Cheats"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr "Vérifier l'intégrité de la partition"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr "Vérification de l'intégrité..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
msgstr "Chinois (simplifié)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr "Chinois (traditionnel)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr "Choisir un dossier racine pour le DVD :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr "Choisir un dossier racine pour la NAND :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr "Choisir un ISO par défaut"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr "Choisir un dossier à ajouter"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
msgstr "Choisir un fichier à ouvrir"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr "Choisir une carte mémoire :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
@@ -1125,27 +1145,27 @@ msgstr ""
"Choisir un fichier comme apploader : (uniquement pour les disques créés à "
"partir de dossiers)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
msgstr "Choisir le dossier de destination de l'extraction"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr "Stick circulaire"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr "Classique"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr "Effacer"
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
@@ -1153,138 +1173,138 @@ msgstr ""
"Le client s'est déconnecté alors que le jeu est en cours !! NetPlay est "
"désactivé. Vous devez arrêter le jeu manuellement."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr "Fermer"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
msgstr "Co&nfigurer..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
msgstr "Info du code"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
msgstr "Code :"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr "Commande"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr "Commentaire"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr "Commentaire :"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr "Compresser l'ISO"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
msgstr "Compresser les ISO sélectionnés..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr "Compression de l'ISO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr "Configurer"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr "Configurer"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr "Configurer le contrôle"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr "Configurer les manettes"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr "Configurer"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr "Confirmer l'écrasement du fichier"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
msgstr "Confirmer l'arrêt de l'émulation"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr "Connecter"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
msgstr "Connecter le clavier USB"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr "Connecter la Wiimote %i"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr "Connecter la 1ère Wiimote"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr "Connecter la 2è Wiimote"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr "Connecter la 3è Wiimote"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr "Connecter la 4è Wiimote"
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr "Connexion..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr "Console"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:71
msgid "Continuous Scanning"
-msgstr ""
+msgstr "Recherche en continu"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr "Contrôle"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr "Convertir en GCI"
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr "Echec de la copie"
@@ -1293,21 +1313,21 @@ msgstr "Echec de la copie"
msgid "Copy to Memcard %c"
msgstr "Copier vers la carte mémoire %c"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr "Core"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr "Impossible de créer %s"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr "Impossible d'initialiser le moteur %s."
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
@@ -1319,12 +1339,12 @@ msgstr ""
"GameCube et Wii ne peuvent pas être plus par la plupart des lecteurs DVD sur "
"PC."
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr "Impossible de reconnaître le fichier ISO %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
msgstr "Impossible de sauvegarder %s"
@@ -1339,24 +1359,32 @@ msgstr ""
"(le paramétrage des manettes pendant l'émulation du jeu n'est pas encore "
"pris en charge)"
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
-msgstr ""
-"Impossible d'écrire le fichier de carte mémoire %s.\n"
+"protected?\n"
"\n"
-"Exécutez-vous Dolpin à partir d'un CD/DVD, ou le fichier de sauvegarde est "
-"peut-être protégé contré l'écriture ?"
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
+msgstr ""
+"Impossible d'écrire sur fichier de la carte mémoire %s.\n"
+"\n"
+"Exécutez-vous Dolphin à partir d'un CD/DVD, ou bien le fichier de sauvegarde "
+"est en lecture seule ?\n"
+"\n"
+"Venez-vous de déplacer le répertoire de l'émulateur ?\n"
+"Dans ce cas, vous devez à nouveau spécifier l'emplacement du fichier de "
+"sauvegarde dans les options."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
msgstr "Impossible de trouver la commande d'ouverture pour l'extension 'ini' !"
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
@@ -1364,38 +1392,38 @@ msgstr ""
"Impossible d'initialiser les composants de base.\n"
"Vérifiez votre configuration."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr "Nombre :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr "Pays :"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr "Créer un code AR"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr "Créer une nouvelle perspective"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
msgstr "Créateur :"
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr "Critique"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
-msgstr "Couper"
+msgstr "Recadrer"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
@@ -1405,140 +1433,140 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
msgstr "Crossfade"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
-msgstr "Le dossier actuel a été changé de %s en %s après wxFileSelector !"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
+msgstr "Le répertoire en cours a changé de %s vers %s après wxFileSelector !"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
msgid "Custom Projection Hack"
msgstr "Hack de projection personnalisé"
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
msgid "Custom Projection Hack Settings"
msgstr "Paramètres du hack de projection personnalisé"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
msgstr "Personnalise certains paramètres de projection orthographique."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr "Tchèque"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr "D"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr "Pad numérique"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr "DSP"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr "Moteur d'émulation du DSP (Audio)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr "Emulation du DSP en HLE (rapide)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr "Interpréteur du DSP en LLE (lent)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr "DSP LLE sur thread"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr "Recompilateur du DSP en LLE"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr "DSP sur un thread dédié"
+
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP settings"
msgstr "Paramètres DSP (audio)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr "Racine du DVD :"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr "DVDLowRead - Erreur fatale : impossible de lire le volume"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr "DVDLowUnencryptedRead - Erreur fatale : impossible de lire le volume"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr "Taille des données"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr "Date :"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr "Fichiers Datel MaxDrive/Pro (*.sav)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr "Zone morte"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr "Débug"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr "Débug"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
msgstr "Décimal"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr "Décompresser l'ISO"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr "Décompresser les ISO sélectionnés..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr "Décompression de l'ISO"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr "Par défaut"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr "ISO par défaut :"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr "Police par défaut"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
msgstr "Supprimer"
@@ -1546,21 +1574,21 @@ msgstr "Supprimer"
msgid "Delete Save"
msgstr "Supprimer la sauvegarde"
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr "Supprimer le fichier '%s' ?"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr "Description"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr "Détecter"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
@@ -1568,29 +1596,29 @@ msgstr ""
"Détecté que le DVD a essayé de lire plus de données que ce que peut contenir "
"le buffer de sortie."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr "Appareil"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr "Paramètres de la console virtuelle"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr "Appel"
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr "Direct3D11"
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr "Direct3D9"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
@@ -1598,16 +1626,20 @@ msgstr ""
"La vérification de la somme de contrôle du dossier a échoué\n"
" et la vérification de la somme de contrôle du dossier de sauvegarde a échoué"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr "Désactiver"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
-msgid "Disable Fog"
-msgstr "Désactiver la fumée"
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
+msgid "Disable Fog"
+msgstr "Désactiver le brouillard"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1621,7 +1653,7 @@ msgstr ""
"\n"
"Dans le doute, cochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1637,20 +1669,33 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#, fuzzy
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Saute la passe alpha de destination, utilisée dans beaucoup de jeux pour "
+"divers effets graphiques.\n"
+"\n"
+"Dans le doute, décochez cette case."
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr "Disque"
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr "Erreur de lecture du disque"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr "Vidéo"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
@@ -1660,32 +1705,32 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
msgstr "Diviser"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr "Voulez-vous arrêter l'émulation en cours ?"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
msgstr "Décodeur Dolby Pro Logic II"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr "Dolphin"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr "Configuration des graphismes %s pour Dolphin"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
msgstr "Site &web de Dolphin"
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
msgstr "Configuration de Dolphin"
@@ -1693,16 +1738,16 @@ msgstr "Configuration de Dolphin"
msgid "Dolphin Emulated Wiimote Configuration"
msgstr "Configuration de la Wiimote pour Dolphin"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
msgstr "Dolphin FIFO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr "Configuration de la manette GC pour Dolphin"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr "Films TAS Dolphin (*.dtm)"
@@ -1710,11 +1755,11 @@ msgstr "Films TAS Dolphin (*.dtm)"
msgid "Dolphin Wiimote Configuration"
msgstr "Configuration de la Wiimote pour Dolphin"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr "Dolphin dans &Google Code"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
@@ -1722,7 +1767,7 @@ msgstr ""
"Dolphin n'a pas trouvé d'ISO GC/Wii. Double-cliquez ici pour chercher des "
"fichiers..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
@@ -1730,50 +1775,59 @@ msgstr ""
"Dolphin est paramétré pour cacher tous les jeux. Double-cliquez ici pour "
"afficher tous les jeux..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
msgstr "Dolphin n'a pas pu exécuter l'action demandée."
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#, fuzzy
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+"Activer l'accès disque rapide. Requis pour certains jeux. (MARCHE = Rapide, "
+"ARRÊT = Compatible)"
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
msgstr "Bas"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
msgstr "Télécharger des codes (sur WiiRD)"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr "%lu codes ont été téléchargés. (%lu ajoutés)"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr "Percussions"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
msgstr "Factice"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr "Enregistrer le son"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr "Copier l'EFB cible"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr "Copier les images"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr "Copier les textures"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
@@ -1784,7 +1838,7 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
@@ -1794,7 +1848,7 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
@@ -1804,21 +1858,21 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr "Néerlandais"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr "&Quitter"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr "Copies de l'EFB"
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1831,52 +1885,52 @@ msgstr ""
"distribution de Dolphin, un redémarrage est probablement nécessaire pour que "
"Windows charge le nouveau pilote."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr "Europe"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
msgstr "Premières mises à jour de mémoire"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr "Editer"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr "Editer le code ActionReplay"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr "Editer la configuration"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr "Editer le patch"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr "Modifier la perspective actuelle"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr "Editer..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr "Effets"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr "Buffer d'image embarqué"
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr "Thread d'émulation déjà en cours d'exécution"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1890,7 +1944,7 @@ msgstr ""
"\n"
"Dans le doute, sélectionnez plutôt Virtuel."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1910,7 +1964,7 @@ msgstr ""
msgid "Emulated Wiimote"
msgstr "Wiimote émulée"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
msgstr "Etat de l'émulation :"
@@ -1918,7 +1972,7 @@ msgstr "Etat de l'émulation :"
msgid "Enable"
msgstr "Activer"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1934,72 +1988,71 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr "Activer la journalisation AR"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr "Activer l'assemblage de blocs"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr "Active le calcul de la boîte liée."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr "Activer le cache"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr "Activer les Cheats"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr "Activer le Dual Core"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr "Activer le Dual Core (plus rapide)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
msgstr "Activer les touches de raccourci"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr "Activer le saut d'inactivité"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
msgstr "Activer le saut d'inactivité (plus rapide)"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr "Activer le MMU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
msgstr "Activer le Progressive Scan"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
msgstr "Activer l'économiseur d'écran"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:75
-#, fuzzy
msgid "Enable Speaker Data"
-msgstr "Activer les appels"
+msgstr "Activer les données du haut-parleur"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr "Activer l'écran large (16/9è)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
msgstr "Activer le rendu en fil de fer"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -2014,7 +2067,7 @@ msgstr ""
"\n"
"Dans le doute, sélectionnez 1x."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
@@ -2026,7 +2079,7 @@ msgstr ""
msgid "Enable pages"
msgstr "Activer les appels"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -2039,7 +2092,7 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -2051,7 +2104,7 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
@@ -2059,11 +2112,11 @@ msgstr ""
"Activer ceci pour accélérer La légende de Zelda : Twilight Princess. "
"Désactiver pour TOUS les autres jeux."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr "Active un hack de projection personnalisé"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
@@ -2071,14 +2124,14 @@ msgstr ""
"Active l'émulation Dolby Pro Logic II en utilisant le son surround 5.1. Non "
"disponible sur OS X."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr ""
"Active l'émulation Dolby Pro Logic II en utilisant le son surround 5.1. "
"Uniquement avec le moteur OpenAL."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
@@ -2087,19 +2140,20 @@ msgstr ""
"Uniquement avec le moteur OpenAL. Il peut être nécessaire de renommer le "
"fichier soft_oal.dll en OpenAL32.dll pour que cela fonctionne."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-"Active le scan progressif, s'il est pris en charge par le logiciel émulé.\n"
+"Active l'affichage progressif, s'il est pris en charge par le logiciel "
+"émulé.\n"
"La plupart des jeux n'en tiennent pas compte.\n"
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
@@ -2107,7 +2161,7 @@ msgstr ""
"Activer le Memory Management Unit (unité de gestion de la mémoire), requis "
"pour certains jeux. (ON = Compatible, OFF = Vitesse)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
@@ -2117,52 +2171,52 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr "Fin"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr "Anglais"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
msgstr "Améliorations"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr "Entrer un nom pour la nouvelle perspective :"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr "Entrée %d/%d"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr "Entrée 1/%d"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr "Egal"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr "Erreur"
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr ""
"Erreur lors du chargement de la langue sélectionnée. Retour à la langue par "
"défaut du système."
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
@@ -2171,7 +2225,7 @@ msgstr ""
"Erreur : Après \"%s\", trouvé %d (0x%X) au lieu d'un marqueur de sauvegarde "
"%d (0x%X). Abandon du chargement de la sauvegarde d'état."
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
@@ -2180,39 +2234,39 @@ msgstr ""
"Erreur : essai d'accès aux polices %s mais elles ne sont pas chargées. Les "
"jeux peuvent ne pas afficher les polices correctement, ou planter."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr "Echap"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr "Euphorie"
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr ""
"Erreur d'exception : accès à un espace en-dessous de la mémoire. %08llx%08llx"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr "Exécuter"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr "Echec de l'exportation"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr "Exporter un fichier"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr "Exporter l'enregistrement..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr "Exporter l'enregistrement..."
@@ -2220,7 +2274,7 @@ msgstr "Exporter l'enregistrement..."
msgid "Export Save"
msgstr "Exporter une sauvegarde"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr "Exporter une sauvegarde Wii (expérimental)"
@@ -2228,100 +2282,100 @@ msgstr "Exporter une sauvegarde Wii (expérimental)"
msgid "Export all saves"
msgstr "Exporter toutes les sauvegardes"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr "L'exportation a échoué. Essayer de nouveau ?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr "Exporter l'enregistrement sous..."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr "Extension"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr "Buffer d'image externe"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr "Paramètres supplémentaires"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
msgstr "Paramètre supplémentaire utile dans ''Metroid: Other M'' uniquement."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr "Extraire tous les fichiers..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr "Extraire l'Apploader..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr "Extraire le DOL..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr "Extraire un dossier..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr "Extraire un fichier..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr "Extraire une partition..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr "Extraction de %s"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
msgstr "Extraction de tous les fichiers"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
msgstr "Extraction du dossier"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr "Extraction..."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr "Octet FIFO"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr "Lecteur FIFO"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr "France"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr "Taille FST :"
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr "Connexion impossible !"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr "Ecoute impossible !"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
msgstr "Impossible de télécharger les codes."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
msgstr "Impossible d'extraire vers %s !"
@@ -2348,26 +2402,30 @@ msgstr ""
"d'extration de ROM.\n"
"(Sélectionnez-le depuis l'onglet \"Audio\" dans la fenêtre de configuration.)"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr "Impossible de charger bthprops.cpl"
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr "Impossible de charger hid.dll"
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
msgstr "Impossible de lire %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr "Impossible de lire banner.bin"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr "Impossible de lire l'entête bk"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
@@ -2378,7 +2436,7 @@ msgstr ""
"La carte mémoire est peut-être tronquée\n"
"Position du fichier : %llx"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
@@ -2387,7 +2445,7 @@ msgstr ""
"blocs\n"
"(0x8000-0x9FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
@@ -2395,12 +2453,17 @@ msgstr ""
"Impossible de lire correctement la table d'allocation des blocs\n"
"(0x6000-0x7FFF)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr "Impossible de lire les données du fichier %d"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr "Impossible de lire les données du fichier %s"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
@@ -2408,7 +2471,7 @@ msgstr ""
"Impossible de lire correctement la sauvegarde des dossiers\n"
"(0x4000-0x5FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
@@ -2416,7 +2479,11 @@ msgstr ""
"Impossible de lire le dossier correctement\n"
"(0x2000-0x3FFF)"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr "Impossible de lire l'entête"
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
@@ -2424,41 +2491,41 @@ msgstr ""
"Impossible de lire l'entête correctement\n"
"(0x0000-0x1FFF)"
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr "Impossible de lire l'ID unique depuis l'image du disque"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr "Impossible d'écrire BT.DINF vers SYSCONF"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr "Impossible d'écrire bkhdr"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr "Impossible d'écrire l'entête de %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr "Impossible d'écire l'entête du fichier %d"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
msgstr "Perse"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr "Rapide"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr "Version rapide de la MMU. Ne fonctionne pas avec tous les jeux."
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
@@ -2466,23 +2533,23 @@ msgstr ""
"Désynchro fatale. Abandon de la lecure. (Erreur dans Play Wiimote : %u != "
"%u, byte %u.)%s"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr "Lecteur FIFO"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
msgstr "Infos du fichier"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr "Le fichier ne contient pas de code."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr "Fichier converti en .gci"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
@@ -2490,7 +2557,7 @@ msgstr ""
"Le fichier n'a pu être ouvert\n"
"ou n'a pas d'extension valide"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
@@ -2499,36 +2566,36 @@ msgstr ""
"Le fichier a l'extension \"%s\"\n"
"Les extensions valides sont (.raw/.gcp)"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr "Le fichier n'est pas reconnu comme une carte mémoire"
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr "Fichier non compressé"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr "FileIO : mode d'ouverture inconnu : 0x%02x"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr "Système de fichiers"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
msgstr "Type de fichier 'ini' est inconnu ! Ne sera pas ouvert !"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr "Trouver le suivant"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr "Trouver le précédent"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr "Premier bloc"
@@ -2536,23 +2603,23 @@ msgstr "Premier bloc"
msgid "Fix Checksums"
msgstr "Corriger les sommes de contôle"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr "Forcer 16/9è"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr "Forcer 4/3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
msgstr "Forcer la console comme NTSC-J"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
msgstr "Forcer le filtrage de texture"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2565,7 +2632,7 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2578,7 +2645,7 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
@@ -2588,7 +2655,7 @@ msgstr ""
"Si cette case est décochée, Dolphin sera par défaut en NTSC-U et activera "
"automatiquement cette option lorsque des jeux japonais seront lancés."
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
@@ -2596,148 +2663,147 @@ msgstr ""
"Formater comme ASCII (NTSC\\PAL)?\n"
"Choisir Non pour sjis (NTSC-J)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr "Avant"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr "Trouvé %d résultats pour '"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr "Image"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
msgstr "Image "
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr "Avancement d'image"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr "L'enregistrement d'images utilise FFV1"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr "Info image"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr "Plage d'images :"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr "Saut d'&image :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr "Image/s max :"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr "Images à enregistrer :"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr "Vue libre"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr "Français"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr "Frets"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr "De"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr "Plein écran"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr "Résolution en Plein écran :"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr "Fichier GCI (*.gci)"
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr "Configuration du micro GC"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr "Manette GC"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr "GX_CMD_INVL_VC"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
msgstr "ID du jeu :"
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr "Le jeu est déjà en cours d'émulation !"
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr "Le jeu n'est pas en cours d'émulation !"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
-#, fuzzy
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
-msgstr "Jeu non trouvé !!"
+msgstr "Jeu non trouvé !"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr "Paramètres spécifiques au jeu"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr "Config du Jeu"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr "Fichiers de sauvegarde GameCube (*.gci;*.gcs;*.sav)"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr "GameCube"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr "Paramètres de la &manette GameCube"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
msgstr "Carte mémoires de GameCube (*.raw,*.gcp)"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr "Paramètres de la manette GameCube"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
msgstr "Codes Gecko"
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2750,10 +2816,10 @@ msgstr ""
"avec le code natif en plaçant le fichier codehandler.bin dans le répertoire "
"Sys, puis redémarrez Dolphin.)"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr "Général"
@@ -2761,31 +2827,31 @@ msgstr "Général"
msgid "General Settings"
msgstr "Paramètres généraux"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr "Allemand"
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr ""
"GetARCode : l'index est plus grand que la taille de la liste de codes %lu"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr "Graphismes"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
msgstr "Paramètres graphiques"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr "Plus grand que"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2804,51 +2870,76 @@ msgstr ""
"\n"
"Dans le doute, cochez cette case."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr "Grèque"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr "Vert"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr "Vert Gauche"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr "Vert Droite"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr "Guitare"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr "Appel de HCI_CMD_INQUIRY, veuillez nous le signaler !"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr "Hack de Transmission du Buffer"
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr "Hacks"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr "Echec de la vérification de la somme de contrôle de l'entête"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr "Hébreu"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr "Hauteur"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr "Aide"
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+"Bonjour,\n"
+"\n"
+"Dolphin requiert Mac OS X 10.7 ou plus récent.\n"
+"Malheureusement, vous exécutez une ancienne version d'OS X.\n"
+"La dernière version de Dolphin fonctionnant sur OS X 10.6 est Dolphin 3.5.\n"
+"Veuillez mettre à niveau OS X vers 10.7 ou plus récent pour utiliser les "
+"dernières versions de Dolphin.\n"
+"\n"
+"Sayonara !\n"
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2866,15 +2957,15 @@ msgstr ""
"\n"
"Sayonara !\n"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr "Cacher"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
msgstr "Masquer le curseur de la souris"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
@@ -2885,26 +2976,26 @@ msgstr ""
"\n"
"Dans le doute, cochez cette case."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
msgstr "Home"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr "Hôte"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
msgstr "Configuration des raccourcis clavier"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
msgstr "Raccourcis clavier"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr "Hongrois"
@@ -2912,35 +3003,35 @@ msgstr "Hongrois"
msgid "Hybrid Wiimote"
msgstr "Wiimote hybride"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr ""
"IOCTL_ES_GETVIEWS : Impossible d'obtenir des données à partir d'un ticket "
"inconnu : %08x/%08x"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-"IOCTL_ES_LAUNCH : Le jeu a essayé de recharger ios ou un titre qui n'est pas "
-"disponible dans votre copie de la NAND\n"
+"IOCTL_ES_LAUNCH : Le jeu a essayé de recharger IOS ou un titre qui n'est pas "
+"disponible dans la copie de votre NAND.\n"
"ID du titre : %016llx.\n"
-" Dolphin va probablement figer maintenant"
+"Dolphin va probablement se bloquer maintenant."
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
msgstr "IOCTL_ES_READCONTENT - mauvaise destination"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
msgstr "Paramètres IPL"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr "IR"
@@ -2952,23 +3043,23 @@ msgstr "Pointeur IR"
msgid "IR Sensitivity:"
msgstr "Sensibilité de l'IR"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
msgstr "Détails de l'ISO"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
msgstr "Dossiers des ISO"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr "Italie"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr "Icône"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
@@ -2976,29 +3067,11 @@ msgstr ""
"Si coché, les registres de la boîte liée seront mis à jour. Utilisé par les "
"jeux Paper Mario."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-"Si les FPS ne sont pas corrects, cette option peut résoudre le souci. (ON = "
-"Compatible, OFF = Vitesse)"
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-"Si vous définissez le limitateur de vitesse (Image /s max) à une valeur plus "
-"élevée que la vitesse du jeu (NTSC:60, PAL:50), activer le contrôle audio "
-"pour DSP (peut éliminer les clics audio mais peut causer un bruit constant "
-"selon les jeux)."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr "Ignorer les changements de formats"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -3012,7 +3085,7 @@ msgstr ""
"\n"
"Dans le doute, cochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -3030,11 +3103,11 @@ msgstr ""
msgid "Import Save"
msgstr "Importer une sauvegarde"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr "L'importation a échoué. Essayer de nouveau ?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
@@ -3042,11 +3115,11 @@ msgstr ""
"Le fichier importé a l'extension GSC\n"
"mais n'a pas une entête valide"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr "Le fichier importé a une longueur non valide"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
@@ -3054,19 +3127,7 @@ msgstr ""
"Le fichier importé a l'extension SAV\n"
"mais n'a pas une entête valide"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"Améliore les performances mais peut causer de petits pépins dans les jeux "
-"s'appuyant sur une émulation de brouillard/fumée correcte.\n"
-"\n"
-"Dans le doute, décochez cette case."
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
msgstr "Dans le jeu"
@@ -3074,67 +3135,67 @@ msgstr "Dans le jeu"
msgid "In-Game"
msgstr "Dans le jeu"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr "Info"
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
msgstr "Information"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr "Entrée"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr "Insérer"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr "Indiquer un code crypté ou décrypté ici..."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
msgstr "Insérer une carte SD"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr "Indiquer un nom ici..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
msgstr "Installer un WAD"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr "Installer dans le menu Wii"
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
"InstallExceptionHandler a été appelé, mais cette plateforme ne le prend pas "
"encore en charge."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
msgstr "Installation du WAD..."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr "Erreur lors de la vérification de l'intégrité"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr "Vérification de l'intégrité terminée"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr "Vérification de l'intégrité terminée. Aucune erreur trouvée."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
@@ -3143,19 +3204,19 @@ msgstr ""
"Echec de la vérification de l'intégrité pour la partition %d. Votre copie "
"est certainement corrompue ou a été incorrectement patchée."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
msgstr "Interface"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
msgstr "Paramètres de l'interface"
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr "Erreur interne LZO - échec de la compression"
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
@@ -3164,41 +3225,45 @@ msgstr ""
"Erreur interne LZO - échec de la décompression (%d) (%li, %li) \n"
"Essayez de charger à nouveau l'état"
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr "Erreur interne LZO - échec de lzo_init()"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr "Résolution interne :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr "Interpréteur (TRÈS lent)"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr "Intro"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr "Taille invalide (%x) ou mot Magique (%x)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
msgstr "Valeur non valide !"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr "bar.map ou entrée dir non valide"
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr "Type d'évènement non valide : %i"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr "Fichier non valide"
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -3209,48 +3274,56 @@ msgstr ""
"%s\n"
"Vous devriez copier à nouveau ce jeu."
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr "Fichier d'enregitrement non valide"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr "Paramètres de recherche non valide (aucun objet sélectionné)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr "Texte de recherche non valide (impossible à convertir en nombre)"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr ""
"Texte de recherche non valide (seules les longueurs de chaînes de caractères "
"sont prises en charge)"
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr "Etat non valide"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr "Italien"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr "Japon"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr "Recompilateur JIT (recommandé)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr "Recompilateur expérimental JITIL"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr "Japonais"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr "Corée"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
@@ -3260,62 +3333,62 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
msgstr "Toujours au premier plan"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr "Touche"
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr "Coréen"
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr "L"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
msgstr "Bouton L"
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr "L Analog."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr "Langue :"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr "Dernier état écrasé"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr "Dernier état sauvegardé"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
msgstr "Latence :"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr "Gauche"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr "Stick Gauche"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
@@ -3323,7 +3396,7 @@ msgstr ""
"Clic gauche pour détecter le raccourci clavier.\n"
"Touche Espace pour effacer."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
@@ -3333,7 +3406,7 @@ msgstr ""
"Clic du milieu pour effacer.\n"
"Clic droit pour plus d'options."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
@@ -3341,76 +3414,76 @@ msgstr ""
"Clic gauche/droit pour plus d'options.\n"
"Clic sur molette pour effacer."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr "Plus petit que"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr "Nb de FPS comme limite"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr "Charger"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr "Charger textures personnalisées"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr "Charger l'état du Slot 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr "Charger l'état du Slot 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr "Charger l'état du Slot 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr "Charger l'état du Slot 4"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr "Charger l'état du Slot 5"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr "Charger l'état du Slot 6"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr "Charger l'état du Slot 7"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr "Charger l'état du Slot 8"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr "Charger un état..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
msgstr "Charger le Menu Système Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
msgstr "Charger le Menu Système Wii %d%c"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
@@ -3420,7 +3493,7 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr ""
"Charger les valeurs de pré-réglage à partir de la palette de hack "
@@ -3430,23 +3503,23 @@ msgstr ""
msgid "Local"
msgstr "Local"
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr "Journal"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr "Configuration de la journalisation"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr "Enregistrer le nombre de FPS"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr "Types de journaux"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3459,24 +3532,24 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr "Sorties des journalisations"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr "Journalisation"
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr "Connexion au serveur perdue !"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr "Bouton M"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
@@ -3485,51 +3558,66 @@ msgstr ""
"MD5 non concordant\n"
" %016llx%016llx != %016llx%016llx"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr "Hack de vitesse pour le MMU"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr "Fichiers MadCatz Gameshark (*.gcs)"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr "Stick principal"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
msgstr "ID concepteur :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr "Concepteur :"
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Rendre les objets lointains plus visibles en enlevant le brouillard, "
+"améliorant donc les détails.\n"
+"Faire ceci va empêcher certains jeux se basant sur une émulation correcte du "
+"brouillard de fonctionner correctement.\n"
+"\n"
+"Dans le doute, décochez cette case."
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr "Max"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
msgstr "La carte mémoire contient déjà une sauvegarde pour ce titre"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr "Carte mémoire déjà chargée"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr "Octet mémoire"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
msgstr "Carte mémoire"
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
@@ -3537,7 +3625,7 @@ msgstr ""
"Gestionnaire de cartes mémoires | ATTENTION : Faites des sauvegardes avant "
"utilisation, devrait être OK mais corruption possible de données !"
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3554,17 +3642,17 @@ msgstr ""
"%s\n"
"Voulez-vous copier l'ancien fichier vers ce nouvel endroit ?\n"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr ""
"La taille du fichier de la carte mémoire ne correspond pas à la taille de "
"l'entête."
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr "Menu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr "Micro"
@@ -3573,20 +3661,20 @@ msgstr "Micro"
msgid "Min"
msgstr "Min"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr "Divers"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr "Paramètres divers"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr "Modif."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3599,20 +3687,20 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr "Police mono-espacée."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr "Motion Plus"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr "Vibreur"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3630,225 +3718,238 @@ msgstr ""
"\n"
"\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
msgstr "Multiplier"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
msgstr "NOP"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr ""
"Note : La taille du flux est différente de la longueur actuelle des données\n"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
msgstr "NP Ajout"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr "NP Début"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
msgstr "NP Décimal"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
msgstr "NP Supprimer"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
msgid "NP Divide"
msgstr "NP Diviser"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
msgstr "NP Bas"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
msgstr "NP End"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
msgstr "NP Entrée"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
msgstr "NP Egal"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr "NP Début"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
msgstr "NP Insérer"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
msgid "NP Left"
msgstr "NP Gauche"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
msgid "NP Multiply"
msgstr "NP Multiplier"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
msgid "NP Page Down"
msgstr "NP Page bas"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
msgid "NP Page Up"
msgstr "NP Page Haut"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
msgid "NP Right"
msgstr "NP Droite"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
msgid "NP Separator"
msgstr "NP Séparateur"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
msgstr "NP Espace"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
msgid "NP Subtract"
msgstr "NP Soustraire"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
msgid "NP Tab"
msgstr "NP Tabulation"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
msgid "NP Up"
msgstr "NP Haut"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr "Nom :"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr "Nom :"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr "Fichiers natifs GCI (*.gci)"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
msgstr "Nouvelle recherche"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr "Page suivante"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
msgstr "Recherche suivante"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr "Pseudo :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr "Pas de pays (SDK)"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr "Aucun ISO ou WAD trouvé"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
+msgstr "Pas de sortie audio"
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
msgid "No banner file found for title %s"
msgstr "Aucune bannière trouvée pour le titre %s"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
msgid "No description available"
msgstr "Aucune description disponible"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
msgid "No docking"
msgstr "Pas d'attachement"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
msgid "No file loaded"
msgstr "Aucun fichier chargé"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
msgid "No free dir index entries"
msgstr "Aucune entrée de dossier d'index libre"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
msgid "No recorded file"
msgstr "Aucun fichier enregistré"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
#, c-format
msgid "No save folder found for title %s"
msgstr "Aucun dossier de sauvegarde trouvé pour le titre %s"
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr "Aucune"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr "Norvégien Bokmål"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr "Différent"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr "Non défini"
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr ""
+"Ce n'est pas une sauvegarde Wii ou échec de le lecture de la taille de "
+"l'entête du fichier %x"
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr "Non connectée"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr "Notes"
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr "Notes :"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr "Note"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr "Verr. Num"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
msgstr "Nombre de codes :"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr "Nunchuck"
@@ -3857,97 +3958,98 @@ msgstr "Nunchuck"
msgid "Nunchuk Acceleration"
msgstr "Accéleration du Nunchuck"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr "Objet"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr "Plage d'objets :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr "Arrêt"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr "Offset :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr "Afficher les messages informatifs"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr "%d blocs disponibles seulement"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr "Ouvrir"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr "Ouvrir l'emplacement du fichier"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr "Ouvrir le dossier de &sauvegarde Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr "Ouvrir un fichier..."
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr "OpenAL : impossible de créer le contexte pour le matériel %s"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr "OpenAL : impossible de trouver des périphériques audio"
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr "OpenAL : impossible d'ouvrir le périphérique %s"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
msgstr "Décodeur de texture OpenCL"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr "Décodeur de texture OpenMP"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
msgstr "Options"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr "Orange"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
+#, fuzzy
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
"L'ordre des fichiers dans le Dossier de fichiers ne correspond pas à l'ordre "
"des blocs\n"
"Faites un clic droit et exportez toutes les sauvegardes,\n"
"et importez les sauvegardes vers une nouvelle carte mémoire\n"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr "Autres"
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
@@ -3955,15 +4057,15 @@ msgstr ""
"Autre client déconnecté pendant que le jeu est en cours d'exécution !! "
"NetPlay est désactivé. Vous devez arrêter le jeu manuellement."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr "Sortie"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr "Jouer l'enregistrement..."
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr "Manette"
@@ -3971,160 +4073,160 @@ msgstr "Manette"
msgid "Pad "
msgstr "Manette "
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr "Manettes"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
msgstr "Défil Bas"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
msgstr "Défil Haut"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr "Paragraphe"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr "Paramètres"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr "Partition %i"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
msgstr "Patchs"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr "Chemins"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr "Pause"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr "Faire une pause à la fin du film"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr "Eclairage par pixel"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr "Parfait"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr "Perspective %d"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr "Démarrer"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr "Jouer l'enregistrement..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr "Démarrer/Arrêter"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr "Jouable"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr "Options de lecture"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr "Joueurs"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr "Veuillez confirmer..."
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr "Merci de créer une perspective avant de sauvegarder"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr "Plus-Moins"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr "Polonais"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
msgstr "Port 1"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
msgstr "Port 2"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
msgstr "Port 3"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
msgstr "Port 4"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr "Port :"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr "Portugais"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr "Portugais (brésilien)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr "Effet de Post-processing :"
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr "Fin de film prématurée dans Play Controller (%u + 8 > %u)"
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr "Fin de film prématurée dans Play Wiimote (%u + %d > %u)"
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr "Fin de film prématurée dans Play Wiimote (%u > %u)"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr "Pré-réglages :"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr "Page préc."
@@ -4132,67 +4234,67 @@ msgstr "Page préc."
msgid "Previous Page"
msgstr "Page précédente"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr "Valeur précédente"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr "Imprimer"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr "Profil"
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr "Propriétés"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
msgstr "Vider le cache"
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr "Question"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr "Quitter"
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr "R"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
msgstr "Bouton R"
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr "R Analog."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr "RAM"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr "Russie"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr "Etendue"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr "Mode Lecture seule"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr "Réel"
@@ -4208,33 +4310,33 @@ msgstr "Wiimote physique"
msgid "Reconnect Wiimote on State Loading"
msgstr "Reconnecter la Wiimote lors du chargement d'un état"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr "Enregistrer"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr "Infos sur l'enregistrement"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr "Options d'enregistrement"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr "Rouge"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr "Rouge Gauche"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr "Rouge Droite"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -4250,28 +4352,28 @@ msgstr ""
"Dans le doute, sélectionnez Aucune."
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr "Rafraîchir"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr "Rafraîchir la liste"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr "Rafraîchir la liste des jeux"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr "Retirer"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
@@ -4281,198 +4383,206 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr "Rendu dans la fenêtre principale"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr "Reset"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr "Résultats"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
msgstr "Entrée"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr "Droite"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr "Stick Droit"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr "Rumble"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
-msgstr "Exécuter DSP LLE sur un thread dédié (non recommandé)."
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
+msgstr ""
+"Exécute les DSP HLE et LLE sur un thread dédié (non recommandé : peut "
+"provoquer des pépins avec le HLE et des blocages avec le LLE)."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr "Russe"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr "Sau&vegarder l'état"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr "Sûr "
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr "Sauver"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
msgstr "Enregistrer GCI sous..."
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
msgstr "Sauvegarder l'état vers le Slot 1"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
msgstr "Sauvegarder l'état vers le Slot 2"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
msgstr "Sauvegarder l'état vers le Slot 3"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
msgstr "Sauvegarder l'état vers le Slot 4"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
msgstr "Sauvegarder l'état vers le Slot 5"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
msgstr "Sauvegarder l'état vers le Slot 6"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
msgstr "Sauvegarder l'état vers le Slot 7"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
msgstr "Sauvegarder l'état vers le Slot 8"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
msgstr "Enregistrer l'état"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr "Enregistrer sous..."
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr "Sauver le fichier compressé GCM/ISO"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr "Sauvegarder la perspective actuelle"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr "Sauvegarder le fichier GCM/ISO décompressé"
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr ""
"Le film de sauvegarde d'état %s est corrompu, arrêt de l'enregistrement du "
"film..."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr "Copie à l'échelle de l'EFB"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr "Analyse de %s"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
msgstr "Recherche d'ISO"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr "Recherche..."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr "Capt écran"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
msgstr "Arrêt défil."
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr "Rechercher"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr "Fitre de recherche"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr "Chercher dans sous-dossiers"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr "Rechercher l'objet actuel"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr "Rechercher une valeur Hexadécimale :"
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr "La section %s n'a pas été trouvée dans SYSCONF"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr "Select"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr "Sélectionner le fichier d'enregistrement"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr "Sélectionner un fichier WAD de Wii à installer"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
@@ -4482,31 +4592,31 @@ msgstr ""
"\n"
"Dans le doute, sélectionnez la première."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr "Sélectionner un fichier de sauvegarde à importer"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr "Sélectionner les fenêtres flottantes"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr "Sélectionner le fichier à charger"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr "Sélectionner le fichier à enregistrer"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr "Sélectionner l'état à charger"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr "Sélectionner l'état à enregistrer"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4525,15 +4635,15 @@ msgstr ""
"\n"
"Dans le doute, choisissez Auto."
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
msgstr "Le profil de controleur sélectionné n'existe pas"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr "Police sélectionnée"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4550,23 +4660,39 @@ msgstr ""
"Si vous ne savez toujours pas, sélectionnez la plus haute résolution "
"affichée."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
-"Sélectionne l'API graphique à utiliser.\n"
-"Direct3D 9 est généralement le plus rapide. OpenGL est cependant le plus "
-"précis. Direct3D 11 est quelque part entre les deux.\n"
+"Sélectionne quel moteur graphique doit être utilisé en interne.\n"
+"Direct3D 9 est généralement le plus rapide. OpenGL est le plus précis. "
+"Direct3D 11 est entre les deux.\n"
"Les moteurs Direct3D ne sont disponibles que pour Windows.\n"
"\n"
-"Dans le doute, sélectionnez Direct3D 9."
+"Dans le doute, sélectionnez Direct3D 11."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+"Sélectionne quel moteur graphique doit être utilisé en interne.\n"
+"Direct3D 9 est généralement le plus rapide. OpenGL est le plus précis. "
+"Direct3D 11 est entre les deux.\n"
+"Les moteurs Direct3D ne sont disponibles que pour Windows.\n"
+"\n"
+"Dans le doute, sélectionnez OpenGL."
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr "Envoyer"
@@ -4574,26 +4700,26 @@ msgstr "Envoyer"
msgid "Sensor Bar Position:"
msgstr "Position de la Sensor Bar :"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr "Séparateur"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr "Serbe"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr ""
"Port série 1 - C'est le port que les périphériques tels que l'adaptateur "
"ethernet utilisent"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr "Paramétrer"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr "Définir comme l'ISO par &défaut"
@@ -4602,14 +4728,14 @@ msgstr "Définir comme l'ISO par &défaut"
msgid "Set as default Memcard %c"
msgstr "Définir comme carte mémoire par défaut : %c"
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr ""
"SetARCode_IsActive : L'index est plus grand que la taille de la liste des "
"codes AR %lu"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
@@ -4617,123 +4743,123 @@ msgstr ""
"Configure la latence (en ms). Des valeurs plus élevées peuvent réduire le "
"craquement audio. Uniquement avec le moteur OpenAL."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr "Configurer..."
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr "SetupWiiMem: Impossible de trouver le fichier des paramètres"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr "Secouement"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr "Nom court :"
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr "Boutons latéraux"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr "Afficher la &Console"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr "Afficher le &journal"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr "Afficher la barre d'&état"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr "Afficher la barre d'&outils"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr "Afficher les lecteurs"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr "Afficher les régions copiées d'EFB"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr "Afficher les FPS"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr "Afficher France"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr "Afficher GameCube"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr "Afficher le graphisme en entrée"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr "Afficher Italie"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr "Afficher Japon"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr "Afficher Corée"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
msgstr "Afficher la langue :"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr "Afficher la config. de journalisation"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr "Afficher PAL"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr "Afficher les plateformes"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr "Afficher les régions"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
msgstr "Afficher les statistiques"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr "Afficher Taïwan"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr "Afficher USA"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr "Afficher WAD"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr "Afficher Wii"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
msgstr "Demande confirmation avant d'arrêter le jeu."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4748,11 +4874,11 @@ msgstr ""
msgid "Show first block"
msgstr "Afficher le premier bloc"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr "Afficher le compteur de lag"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4778,7 +4904,7 @@ msgstr "Afficher l'icône de la sauvegarde"
msgid "Show save title"
msgstr "Afficher le titre de sauvegarde"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4790,11 +4916,11 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr "Afficher les inconnus"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
@@ -4804,47 +4930,31 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr "Wiimote à l'horizontale"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
msgstr "Chinois simplifié"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr "Taille"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
msgstr "Ne pas exécuter le BIOS"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
msgstr "Ignorer le vidage DCBZ"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr "Ignorer Passe Alpha de dest."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr "Ignorer l'accès à l'EFB depuis le CPU"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-"Saute la passe alpha de destination, utilisée dans beaucoup de jeux pour "
-"divers effets graphiques.\n"
-"\n"
-"Dans le doute, décochez cette case."
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4861,25 +4971,25 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr "Slot %i"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
msgstr "Slot A"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
msgstr "Slot B"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr "Capture"
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
msgstr "Rendu logiciel"
@@ -4896,27 +5006,27 @@ msgstr ""
"Êtes-vous certain d'activer le rendu logiciel ? Dans le doute, choisissez "
"'Non'."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
msgstr "Paramètres audio"
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr "Le moteur audio %s n'est pas valide"
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr "Echec de la création du buffer audio : %s"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr "Espace"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr "Espagnol"
@@ -4924,7 +5034,7 @@ msgstr "Espagnol"
msgid "Speaker Volume:"
msgstr "Volume du haut-parleur :"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4944,63 +5054,63 @@ msgstr ""
"\n"
"Dans le doute, sélectionnez 640x528."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr "Accélerer le taux de transfert du disque"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr "Stick carré"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr "Contrôleur standard"
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr "Start"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
msgstr "Démarrer &NetPlay"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr "Commencer l'enregistrement"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr "Commencer l'enregistrement"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr "Etat"
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr "Etats"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
msgstr "Volant"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr "Stick"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr "Arrêter"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -5014,107 +5124,119 @@ msgstr ""
"\n"
"Dans le doute, sélectionnez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr "Etirer à la fenêtre"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr "Gratter"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr "Soustraire"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr "Fichier exporté avec succès vers %s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr "Fichiers de sauvegarde importés avec succès"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
msgstr "Balancement"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr "Synchroniser le thread du GPU"
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+"Synchronise les transferts entre le GPU et le CPU pour éviter des blocages "
+"aléatoires en mode Dual Core. (Coché = Compatible, Décoché = Rapide)"
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr "Langue du système :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr "Taïwan"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr "Entrée TAS"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr "Tab"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr "Séparateur par tabulation"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr "Table Gauche"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr "Table Droite"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr "Capture d'écran"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr "TaruKonga (Bongos)"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr "Test"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr "Texture"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr "Cache de texture"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr "Infos de format de texture"
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr "Le WAD a été installé avec succès"
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr "L'adresse n'est pas valide"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr "La somme de contrôle a été corrigée avec succès"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr "Le dossier sélectionné est déjà dans la liste"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
@@ -5123,7 +5245,7 @@ msgstr ""
"Le fichier %s existe déjà.\n"
"Voulez-vous le remplacer ?"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
@@ -5132,29 +5254,29 @@ msgstr ""
"Le fichier %s n'a pas pu être ouvert pour l'écriture. Vérifiez qu'il n'a pas "
"été ouvert par un autre programme."
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr "Le fichier %s a déjà été ouvert, son entête n'a pas pu être écrite."
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr "Le fichier que vous avez spécifié (%s) n'existe pas"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr "Le nom ne peut être vide"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr "Le nom ne peut contenir le caractère ','"
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr "Le code AR décrypté ne contient aucune ligne."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -5166,12 +5288,12 @@ msgstr ""
"\n"
"Dans le doute, utilisez la position la plus à droite."
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr ""
"La sauvegarde que vous essayez de copier a une taille de fichier non valide"
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
@@ -5179,36 +5301,36 @@ msgstr ""
"La langue sélectionnée n'est pas prise en charge par votre système. Retour à "
"la langue par défaut du système."
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr "Les versions NetPlay du serveur et du client sont incompatibles !"
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr "Le serveur est plein !"
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
msgstr "Le serveur a répondu que le jeu est déjà en cours d'exécution !"
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
msgstr "Le serveur a envoyé un message d'erreur inconnu !"
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr "Le fichier spécifié \"%s\" n'existe pas"
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
msgstr "La valeur n'est pas valide"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
msgstr "Thème :"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
@@ -5216,7 +5338,7 @@ msgstr ""
"Il doit y avoir un ticket pour 00000001/00000002. Votre copie de la NAND est "
"probablement incomplète."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
@@ -5224,7 +5346,7 @@ msgstr ""
"Ces paramètres écrasent ceux de Dolphin.\n"
"Indéterminé signifie que les paramètres de Dolphin sont appliqués."
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
@@ -5232,11 +5354,11 @@ msgstr ""
"Ce simulateur d'Action Replay ne prend pas en charge les codes qui modifient "
"l'Action Replay lui-même."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr "Ceci peut ralentir le Menu Wii et quelques jeux."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -5257,7 +5379,20 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+#, fuzzy
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+"Si vous définissez le limitateur de vitesse (Image /s max) à une valeur plus "
+"élevée que la vitesse du jeu (NTSC:60, PAL:50), activer le contrôle audio "
+"pour DSP (peut éliminer les clics audio mais peut causer un bruit constant "
+"selon les jeux)."
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -5270,62 +5405,62 @@ msgstr ""
"qui plus d'un coeur, mais peut occasionnellement causer des petits pépins ou "
"des plantages."
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr ""
"Ceci vous permettra de modifier manuellement le fichier de configuration INI"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr "Seuil"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr "Tilt"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr "Titre"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr "A"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr "Activer tous les types de journaux"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
msgstr "Activer le plein écran"
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr "Haut"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
msgstr "Chinois traditionnel"
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr "Echec de chargement d'un type de fichier inconnu."
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr "Déclencheurs"
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr "Essai de lecture d'un fichier SYSCONF non valide"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
@@ -5333,15 +5468,15 @@ msgstr ""
"Essai de lecture à partir d'un SYSCONF non valide\n"
"Les IDs BT de la Wiimote ne sont pas disponibles"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr "Turque"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr "Tourne-disque"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr "Type"
@@ -5349,25 +5484,25 @@ msgstr "Type"
msgid "UDP Port:"
msgstr "Port UDP :"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
msgstr "Wiimote UDP :"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr "Inconnu"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
msgstr "Inconnu_%02X"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr "USA"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
@@ -5375,7 +5510,7 @@ msgstr ""
"Impossible de créer un patch à partir des valeurs données.\n"
"L'entrée n'a pas été modifiée."
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -5386,75 +5521,94 @@ msgstr ""
"décrypté valide. Veuillez vérifier que vous l'avez correctement tapé.\n"
"Voulez-vous ignorer cette ligne et continuer l'analyse ?"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr "%i non défini"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr "&Annuler le lancement d'état"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr "Appel 0x80 inattendu. Abandon..."
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr "Inconnu"
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr "Commande DVD inconnue %08x - erreur fatale"
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr "Commande 0x%08x inconnue"
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
msgstr "Type d'entrée %i inconnue dans SYSCONF (%s@%x) !"
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr "Reception d'un message inconnu avec l'ID : %d"
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr ""
"Message inconnu avec l'ID %d reçue du lecteur %d. Banissement du lecteur !"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr "Haut"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr "Mettre à jour"
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr "Wiimote debout"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr "Utiliser le mode EuRGB60 (PAL60)"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr "&Plein écran"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr "Utiliser Hexa"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr "Utiliser les gestionnaires de panique"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+"Utiliser une stratégie hackée d'envoi pour transmettre les sommets.\n"
+"Cela permet d'accélérer le rendu, mais est interdit par les spécifications "
+"d'OpenGL et peut provoquer de gros bugs graphiques.\n"
+"\n"
+"Dans le doute, décochez cette case."
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -5467,7 +5621,7 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -5482,53 +5636,58 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr "Utilitaires"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr "Synchro verticale"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+#, fuzzy
+msgid "VBeam Speed Hack"
+msgstr "Hack de vitesse pour le MMU"
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr "Valeur"
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr "Valeur :"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr "Valeur"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr "Niveau de détail"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr "Vidéo"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr "Virtuel"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr "Volume"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
msgstr "Echec de l'installation du WAD : erreur lors de la création de %s"
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
msgstr "Echec de l'installation du WAD : erreur lors de la création du ticket"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5540,25 +5699,25 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr "Attention"
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
msgstr "Attention : démarrage du DOL dans un mauvais mode de console !"
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
msgstr "Attention : démarrage de l'ELF dans un mauvais mode de console !"
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
msgstr "Attention : démarrage d\" l'ISO dans un mauvais mode de console !"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5570,7 +5729,7 @@ msgstr ""
"%s\n"
"Voulez-vous continuer ?"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5584,7 +5743,7 @@ msgstr ""
"et vont avoir le même nom que le fichier sur votre carte mémoire\n"
"Continuer ?"
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
@@ -5596,7 +5755,7 @@ msgstr ""
"autre sauvegarde avant de continuer, ou charger cette sauvegarde en "
"désactivant le mode Lecture seule."
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
@@ -5608,7 +5767,7 @@ msgstr ""
"charger cet état en désactivant le mode Lecture seule. Dans le cas "
"contraire, il y aura probablement une désynchronisation."
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5642,49 +5801,49 @@ msgstr ""
"Start=%d, A=%d, B=%d, X=%d, Y=%d, Z=%d,DHaut=%d, DBas=%d, DGauche=%d, "
"DDroite=%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr "WaveFileWriter - fichier non ouvert."
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr "Whammy"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
msgstr "Hack écran large (16/9è)"
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr "Largeur"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr "Wii"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
msgstr "Console Wii"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr "Racine de la NAND (Wii) :"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
msgstr "Importer une sauvegarde Wii"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
msgstr "Fichiers de sauvegarde Wii (*.bin)|*.bin"
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr "WiiWAD : impossible de lire le fichier"
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr "Wiimote"
@@ -5693,7 +5852,7 @@ msgstr "Wiimote"
msgid "Wiimote %i"
msgstr "Wiimote %i"
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr "Wiimote connectée"
@@ -5701,7 +5860,7 @@ msgstr "Wiimote connectée"
msgid "Wiimote Motor"
msgstr "Vibreur de la Wiimote"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
msgstr "Paramètres de la Wiimote"
@@ -5709,102 +5868,127 @@ msgstr "Paramètres de la Wiimote"
msgid "Wiimotes"
msgstr "Wiimotes"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr "Windows Gauche"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
msgstr "Windows Menu"
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr "Windows Droit"
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr "Casse"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr "Travail..."
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr "Ecrire dans la console"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
msgstr "Ecrire dans le débugueur"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
msgstr "Ecrire dans le fichier"
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
msgstr "Ecrire dans la fenêtre"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr "Echec de XAudio2 CreateSourceVoice : %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
msgstr "Echec de l'initialisation de XAudio2 : %#X"
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr "Echec de la création de la voix principale dans XAudio2 : %#X"
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr "XF reg"
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr "Jaune"
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
-"Vous utilisez des ROM de DSP gratuits créés par l'équipe de Dolphin.\n"
-"Seuls les jeux basés sur les ucodes de Zelda fonctionneront correctement "
-"avec ces ROM.\n"
+"Vous utilisez une ROM audio \"DSP\" gratuite conçue par l'équipe de "
+"Dolphin.\n"
+"Tous les jeux Wii fonctionneront correctement, et la plupart des jeux "
+"GameCube aussi, mais les UCodes GBA/IPL/CARD ne fonctionneront pas.\n"
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+"Vous utilisez une ancienne ROM audio \"DSP\" conçue par l'équipe de "
+"Dolphin.\n"
+"Seuls les jeux utilisant les UCodes Zelda fonctionneront correctement.\n"
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr "Vous ne pouvez pas fermer des panneaux contenant des appels."
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr "Vous devez choisir un jeu !!"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
msgstr "Vous devez entrer un nom !"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
msgstr "Vous devez entrer une valeur décimale, hexadécimale ou octale valide."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr "Vous devez entrer un profil de nom valide."
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr "Vous devez redémarrer Dolphin pour que ce changement prenne effet."
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+"Vos ROM audio \"DSP\" ont des hashs incorrects.\n"
+"Voulez-vous arrêter l'émulation maintenant pour corriger le problème ?\n"
+"Si vous choisissez \"Non\", l'audio pourra être déformé."
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
@@ -5812,7 +5996,7 @@ msgstr ""
"Votre fichier GCM/ISO ne semble pas valide (pays non valide).\n"
"Voulez-vous continuer en tant que région PAL ?"
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
@@ -5823,25 +6007,25 @@ msgstr ""
"Il devrait être de 0x%04x (au lieu de 0x%04llx).\n"
"Voulez-vous en générer un nouveau ?"
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
msgstr "ZTP hack"
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr "Code Zero 3 non pris en charge"
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
msgstr "Zero code inconnu pour Dolphin : %08x"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr "[ attente ]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5853,11 +6037,11 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr "[Personnalisé]"
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5876,7 +6060,7 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5890,99 +6074,47 @@ msgstr ""
"\n"
"Dans le doute, décochez cette case."
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr "^ ADD"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr "apploader (.img)"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr "impossible de lire l'entête bk"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr "Impossible de lire les données du fichier %s"
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr "Impossible de lire l'entête"
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr "iCacheJIT : Lecture de l'Opcode depuis %x. Merci de nous le signaler."
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr ""
-"Ceci n'est pas une sauvegarde Wii, ou erreur de lecture de la taille de "
-"l'entête du fichier %x"
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr "s"
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr "Commande inconnue 0x%08x"
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
msgstr "wxExecute a retourné -1 sur l'exécution de l'application !"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr "Correction zFar :"
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr "Correction zNear :"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr "| OR"
-#~ msgid "%i connected"
-#~ msgstr "%i connectée(s)"
-
-#~ msgid "Alternate Wiimote Timing"
-#~ msgstr "Délai alternatif de communication avec la Wiimote"
-
-#~ msgid "Interpreter (VERY slow)"
-#~ msgstr "Interpréteur (TRES lent)"
-
-#~ msgid "JIT Recompiler (recommended)"
-#~ msgstr "Recompilateur JIT (recommandé) "
-
-#~ msgid "JITIL experimental recompiler"
-#~ msgstr "Recompilateur expérimental JIT"
+#~ msgid "Accurate VBeam emulation"
+#~ msgstr "Emulation fidèle VBeam"
#~ msgid ""
-#~ "Mutes the Wiimote speaker. Fixes random disconnections on real wiimotes. "
-#~ "No effect on emulated wiimotes."
+#~ "If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
#~ msgstr ""
-#~ "Supprime le son du haut-parleur de la Wiimote. Corrige les déconnexions "
-#~ "aléatoires sur les Wiimotes physiques. N'affecte pas les Wiimotes émulées."
+#~ "Si les FPS ne sont pas corrects, cette option peut résoudre le souci. (ON "
+#~ "= Compatible, OFF = Vitesse)"
-#~ msgid "Pair Up"
-#~ msgstr "Jumeler"
-
-#~ msgid "Reconnect Wiimote Confirm"
-#~ msgstr "Confirmation de reconnexion de la Wiimote"
-
-#~ msgid ""
-#~ "Wiimote %i has been disconnected by system.\n"
-#~ "Maybe this game doesn't support multi-wiimote,\n"
-#~ "or maybe it is due to idle time out or other reason.\n"
-#~ "Do you want to reconnect immediately?"
-#~ msgstr ""
-#~ "La Wiimote %i a été déconnectée par le système.\n"
-#~ "Peut-être que ce jeu ne prend pas en charge plusieurs Wiimotes,\n"
-#~ "ou bien c'est dû à un temps d'attente trop long, ou encore autre chose.\n"
-#~ "Voulez-vous la reconnecter tout de suite ?"
+#~ msgid "Skip Dest. Alpha Pass"
+#~ msgstr "Ignorer Passe Alpha de dest."
diff --git a/Languages/po/he.po b/Languages/po/he.po
index 0f29560163..ee43341847 100644
--- a/Languages/po/he.po
+++ b/Languages/po/he.po
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the dolphin-emu package.
#
# Translators:
-# Ely , 2011.
+# nakee , 2011
msgid ""
msgstr ""
"Project-Id-Version: Dolphin Emulator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-10 08:56-0500\n"
-"PO-Revision-Date: 2013-02-02 08:31+0000\n"
+"POT-Creation-Date: 2013-04-18 23:00-0500\n"
+"PO-Revision-Date: 2013-04-04 08:13+0000\n"
"Last-Translator: delroth \n"
"Language-Team: LANGUAGE \n"
"Language: he\n"
@@ -18,113 +18,115 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:511
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:499
msgid " (too many to display)"
msgstr "(ארוך מידי)"
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:270
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:273
#: Source/Core/DolphinWX/Src/NetWindow.cpp:491
#: Source/Core/DolphinWX/Src/NetWindow.cpp:530
msgid " Game : "
msgstr "משחק:"
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:507
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:494
msgid "! NOT"
msgstr "! לא"
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:70
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:58
#, c-format
msgid ""
"\"%s\" does not exist.\n"
" Create a new 16MB Memcard?"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:142
+#: Source/Core/Core/Src/CoreParameter.cpp:131
#, c-format
msgid "\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:722
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:721
#, c-format
msgid "%08X: "
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:196
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:183
#, c-format
msgid "%1$sCopy%1$s"
msgstr "%1$sהעתק%1$s"
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:128
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:296
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:113
+#, c-format
+msgid "%d samples"
+msgstr ""
+
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:112
+#, c-format
+msgid "%d samples (quality level %d)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:121
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:289
#, c-format
msgid "%s already exists, overwrite?"
msgstr ""
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:167
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:154
#, c-format
msgid "%s failed to be scrubbed. Probably the image is corrupt."
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:95
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:83
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
" Card file size is invalid (0x%x bytes)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:110
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:98
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
" Card size is invalid (0x%x bytes)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:90
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:78
#, c-format
msgid ""
"%s failed to load as a memorycard \n"
"file is not large enough to be a valid memory card file (0x%x bytes)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:359
#, c-format
msgid "%s failed to open"
msgstr ""
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:97
-#, c-format
-msgid ""
-"%s has an incorrect hash.\n"
-"Would you like to stop now to fix the problem?\n"
-"If you select \"No\", audio will be garbled."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:360
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:352
#, c-format
msgid "%s is a 0 byte file"
msgstr ""
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:159
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:146
#, c-format
msgid "%s is already compressed! Cannot compress it further."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:345
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:337
#, c-format
msgid "%s is too long for the filename, max chars is 45"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:202
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
#, c-format
msgid "%sDelete%s"
msgstr "%sמחק%s"
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:200
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:187
#, c-format
msgid "%sExport GCI%s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:198
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:185
#, c-format
msgid "%sImport GCI%s"
msgstr ""
@@ -134,222 +136,246 @@ msgstr ""
msgid "%u Free Blocks; %u Free Dir Entries"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:506
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
msgid "&& AND"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:295
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:301
msgid "&About..."
msgstr "&אודות"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:99
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:100
msgid "&Boot from DVD Drive..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:231
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
msgid "&Breakpoints"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:110
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:111
msgid "&Browse for ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:195
msgid "&Cheats Manager"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
msgid "&DSP Settings"
msgstr "הגדרות קול"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:885
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
msgid "&Delete ISO..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:903
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:897
msgid "&Delete selected ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:170
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:173
msgid "&Emulation"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:114
msgid "&File"
msgstr "&קובץ"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:341
msgid "&Frame Advance"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:352
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:358
msgid "&Fullscreen"
msgstr "&מסך מלא"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:176
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
msgid "&Graphics Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:296
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:302
msgid "&Help"
msgstr "&עזרה"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:180
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:183
msgid "&Hotkey Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:236
msgid "&JIT"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:148
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
msgid "&Load State"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:190
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:193
msgid "&Memcard Manager (GC)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:232
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
msgid "&Memory"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:313
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
msgid "&Open..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:186
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:189
msgid "&Options"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:324
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:330
msgid "&Pause"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:326
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
msgid "&Play"
msgstr "&שחק"
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:858
msgid "&Properties"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:354
msgid "&Read-only mode"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:319
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:325
msgid "&Refresh List"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:230
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:233
msgid "&Registers"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:338
msgid "&Reset"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:234
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:237
msgid "&Sound"
msgstr "&קול"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:329
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:335
msgid "&Stop"
msgstr "&עצור"
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:207
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
msgid "&Tools"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:235
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:238
msgid "&Video"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:287
msgid "&View"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:179
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:182
msgid "&Wiimote Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:859
msgid "&Wiki"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
msgid "'"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:59
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:46
msgid "(-)+zFar"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:54
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:41
msgid "(-)+zNear"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:99
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:86
msgid "(UNKNOWN)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:376
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:384
msgid "(off)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:655
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:654
msgid "0x44"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:171
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1.5x Native (960x792)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:158
msgid "16 bit"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:172
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "1x Native (640x528)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "2.5x Native (1600x1320)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:346
+msgid "2x Native (1280x1056)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:159
msgid "32 bit"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:401
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:412
msgid "3D Vision"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "3x Native (1920x1584)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:347
+msgid "4x Native (2560x2112)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:157
msgid "8 bit"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:43
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:30
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:255
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:262
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:84
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:162
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:162
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:150
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:150
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:286
msgid ""
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:695
msgid "A"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:201
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:235
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:204
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:238
msgid "A NetPlay window is already open!!"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:365
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:399
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:353
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:387
msgid "A game is not currently running."
msgstr ""
@@ -359,36 +385,36 @@ msgid ""
"You must manually connect your wiimotes."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:109
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:100
msgid ""
"ALERT:\n"
"\n"
-"NetPlay will currently only work properly when using the following "
-"settings:\n"
-" - Dual Core [OFF]\n"
-" - Audio Throttle [OFF]\n"
-" - DSP-HLE with \"Null Audio\" or DSP-LLE\n"
-" - Manually set the exact number of controllers that will be used to "
-"[Standard Controller]\n"
+"Netplay will only work with the following settings:\n"
+" - Enable Dual Core [OFF]\n"
+" - DSP Emulator Engine Must be the same on all computers!\n"
+" - DSP on Dedicated Thread [OFF]\n"
+" - Framelimit NOT set to [Audio]\n"
+" - Manually set the exact number of controllers to be used to [Standard "
+"Controller]\n"
"\n"
-"All players should try to use the same Dolphin version and settings.\n"
-"Disable all memory cards or send them to all players before starting.\n"
-"Wiimote support has not been implemented.\n"
+"All players should use the same Dolphin version and settings.\n"
+"All memory cards must be identical between players or disabled.\n"
+"Wiimote support has not been implemented!\n"
"\n"
-"You must forward TCP port to host!!"
+"The host must have the chosen TCP port open/forwarded!\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:111
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:116
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:91
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:96
msgid "AM-Baseboard"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:128
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:299
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:115
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:300
msgid "AR Codes"
msgstr ""
-#: Source/Core/DolphinWX/Src/AboutDolphin.h:33
+#: Source/Core/DolphinWX/Src/AboutDolphin.h:21
msgid "About Dolphin"
msgstr ""
@@ -396,15 +422,11 @@ msgstr ""
msgid "Acceleration"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:463
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
msgid "Accuracy:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
-msgid "Accurate VBeam emulation"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
msgid ""
"Accurately emulate EFB copies.\n"
"Some games depend on this for certain graphical effects or gameplay "
@@ -413,12 +435,12 @@ msgid ""
"If unsure, check EFB to Texture instead."
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:239
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:239
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:227
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:227
msgid "Action"
msgstr ""
-#: Source/Core/Core/Src/ARDecrypt.cpp:481
+#: Source/Core/Core/Src/ARDecrypt.cpp:469
#, c-format
msgid ""
"Action Replay Code Decryption Error:\n"
@@ -428,102 +450,102 @@ msgid ""
"%s"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:667
+#: Source/Core/Core/Src/ActionReplay.cpp:657
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Add Code (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:755
+#: Source/Core/Core/Src/ActionReplay.cpp:745
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Fill and Slide "
"(%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:547
+#: Source/Core/Core/Src/ActionReplay.cpp:537
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Ram Write And "
"Fill (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:607
+#: Source/Core/Core/Src/ActionReplay.cpp:597
#, c-format
msgid ""
"Action Replay Error: Invalid size (%08x : address = %08x) in Write To "
"Pointer (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:802
+#: Source/Core/Core/Src/ActionReplay.cpp:792
#, c-format
msgid "Action Replay Error: Invalid value (%08x) in Memory Copy (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:682
+#: Source/Core/Core/Src/ActionReplay.cpp:672
#, c-format
msgid ""
"Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
"Master codes are not needed. Do not use master codes."
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:196
+#: Source/Core/Core/Src/ActionReplay.cpp:184
#, c-format
msgid "Action Replay Error: invalid AR code line: %s"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:872
+#: Source/Core/Core/Src/ActionReplay.cpp:862
#, c-format
msgid "Action Replay: Conditional Code: Invalid Size %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:945
+#: Source/Core/Core/Src/ActionReplay.cpp:935
#, c-format
msgid "Action Replay: Invalid Normal Code Type %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:896
+#: Source/Core/Core/Src/ActionReplay.cpp:886
#, c-format
msgid "Action Replay: Normal Code %i: Invalid subtype %08x (%s)"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:838
+#: Source/Core/Core/Src/ActionReplay.cpp:828
#, c-format
msgid "Action Replay: Normal Code 0: Invalid Subtype %08x (%s)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:242
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:247
msgid "Adapter:"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:76
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:76
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:63
msgid "Add"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1275
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1301
msgid "Add ActionReplay Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1204
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1230
msgid "Add Patch"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:507
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:528
msgid "Add new pane"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:404
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:426
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:408
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:430
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
msgid "Add..."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:90
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:81
msgid "Address :"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:58
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:45
msgid ""
"Adds the specified value to zFar Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -534,7 +556,7 @@ msgid ""
"NOTE: Check LogWindow/Console for the acquired values."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:53
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:40
msgid ""
"Adds the specified value to zNear Parameter.\n"
"Two ways to express the floating point values.\n"
@@ -545,48 +567,48 @@ msgid ""
"NOTE: Check LogWindow/Console for the acquired values."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:755
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:744
msgid "Adjust the analog control pressure required to activate buttons."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:522
msgid "Advanced"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:581
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
msgid "Advanced Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:584
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:587
msgid "All GC/Wii files (elf, dol, gcm, iso, wbfs, ciso, gcz, wad)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:797
msgid "All GC/Wii images (gcm, iso, wbfs, ciso, gcz)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1189
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1190
msgid "All Gamecube GCM files (gcm)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1390
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1404
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1417
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1431
msgid "All Save States (sav, s##)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1187
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1188
msgid "All Wii ISO files (iso)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1207
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1208
msgid "All compressed GC/Wii ISO files (gcz)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:124
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:104
msgid "All files (*.*)|*.*"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:123
msgid ""
"Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 "
"(Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n"
@@ -594,50 +616,50 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:272
msgid "Analyze"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:285
msgid "Angle"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:367
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:375
msgid "Anisotropic Filtering:"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:350
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:358
msgid "Anti-Aliasing:"
msgstr ""
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:308
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:299
msgid "Apploader is the wrong size...is it really an apploader?"
msgstr ""
-#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:302
+#: Source/Core/DiscIO/Src/VolumeDirectory.cpp:293
msgid "Apploader unable to load from file"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:841
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
msgid "Apploader:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:135
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:122
msgid "Apply"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:124
msgid ""
"Apply a post-processing effect after finishing a frame.\n"
"\n"
"If unsure, select (off)."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:287
msgid "Arabic"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:614
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
#, c-format
msgid "Are you sure you want to delete \"%s\"?"
msgstr ""
@@ -652,206 +674,210 @@ msgstr ""
msgid "Are you sure you want to delete this file? It will be gone forever!"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:789
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:277
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:44
+msgid "Arm JIT (experimental)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:770
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
msgid "Aspect Ratio:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:70
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:58
msgid "At least one pane must remain open."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:553
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:245
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:533
msgid "Audio"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:694
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:675
msgid "Audio Backend:"
msgstr ""
-#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:41
+#: Source/Core/AudioCommon/Src/AOSoundStream.cpp:28
msgid "AudioCommon: Error opening AO device.\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:244
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Auto"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Multiple of 640x528)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:345
msgid "Auto (Window Size)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:297
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:305
msgid "Auto adjust Window Size"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:73
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
msgid ""
"Automatically adjusts the window size to your internal resolution.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:696
msgid "B"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:754
msgid "BP register "
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:14
msgid "Back"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:698
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:679
msgid "Backend Settings"
msgstr ""
-#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:60
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:206
+#: Source/Plugins/Plugin_VideoSoftware/Src/VideoConfigDialog.cpp:47
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:211
msgid "Backend:"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:318
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:95
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:82
msgid "Background Input"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:279
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:266
msgid "Backward"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:264
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:257
msgid "Bad File Header"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:627
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:303
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:621
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:290
msgid "Banner"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:519
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:529
msgid "Banner Details"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:483
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:491
msgid "Banner:"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:61
msgid "Bar"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
msgid "Basic"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:575
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
msgid "Basic Settings"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Bass"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:186
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:174
msgid "Block Allocation Table checksum failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:631
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:625
msgid "Blocks"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Blue"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Blue Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Blue Right"
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:270
msgid "Bottom"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:238
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:225
#, c-format
msgid "Bound Controls: %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:345
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
msgid "Broken"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:256
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:243
msgid "Browse for a directory to add"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:422
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:428
msgid "Browse for an ISO directory..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1079
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1080
msgid "Browse for output directory"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:331
msgid "Buffer:"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:71
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:58
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:23
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:119
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:106
msgid "Buttons"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:317
msgid ""
"Bypass the clearing of the data cache by the DCBZ instruction. Usually leave "
"this option disabled."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "C"
msgstr ""
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:77
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:64
msgid "C Stick"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:77
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:64
msgid "C-Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:764
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:763
msgid "CP reg"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:567
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:547
msgid "CPU Emulator Engine"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:500
msgid "Cache Display Lists"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
msgid ""
"Calculate lighting of 3D graphics per-pixel rather than per vertex.\n"
"Decreases emulation speed by some percent (depending on your GPU).\n"
@@ -860,23 +886,38 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:137
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1858
+#, c-format
+msgid "Can't find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
+msgstr ""
+
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1872
+#, c-format
+msgid "Can't find WiiMote by connection handle %02x"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:669
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
+msgid "Can't read from DVD_Plugin - DVD-Interface: Fatal Error"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
msgid "Cancel"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:91
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:240
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:84
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:171
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:233
#, c-format
msgid "Cannot open %s"
msgstr ""
-#: Source/Core/Core/Src/CoreTiming.cpp:141
+#: Source/Core/Core/Src/CoreTiming.cpp:128
msgid "Cannot unregister events with events pending"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1078
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1061
#, c-format
msgid ""
"Cannot use that file as a memory card.\n"
@@ -884,36 +925,21 @@ msgid ""
"is not a valid gamecube memory card file"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1091
msgid ""
"Cannot use that file as a memory card.\n"
"Are you trying to use the same file in both slots?"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1867
-#, c-format
-msgid "Cant find WiiMote by bd: %02x:%02x:%02x:%02x:%02x:%02x"
-msgstr ""
-
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1881
-#, c-format
-msgid "Cant find WiiMote by connection handle %02x"
-msgstr ""
-
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:679
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:689
-msgid "Cant read from DVD_Plugin - DVD-Interface: Fatal Error"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:52
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
msgid "Caps Lock"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:288
msgid "Catalan"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:311
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:298
msgid "Center"
msgstr ""
@@ -921,12 +947,12 @@ msgstr ""
msgid "Change"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:316
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:322
msgid "Change &Disc..."
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:179
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:179
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:167
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:167
msgid "Change Disc"
msgstr ""
@@ -934,228 +960,228 @@ msgstr ""
msgid "Change Game"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:495
msgid ""
"Change the language of the user interface.\n"
"Requires restart."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:60
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:47
msgid "Changes sign to zFar Parameter (after correction)"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:55
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:42
msgid "Changes sign to zNear Parameter (after correction)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:519
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:499
msgid "Changing this will have no effect while the emulator is running!"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:295
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:298
msgid "Chat"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:47
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
msgid "Cheat Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:131
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:118
msgid "Cheat Search"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:38
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:25
msgid "Cheats Manager"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:623
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:633
msgid "Check Partition Integrity"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
msgid "Checking integrity..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:289
msgid "Chinese (Simplified)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:290
msgid "Chinese (Traditional)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:818
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:799
msgid "Choose a DVD root directory:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:822
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:803
msgid "Choose a NAND root directory:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:815
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:796
msgid "Choose a default ISO:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1236
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1219
msgid "Choose a directory to add"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1065
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1048
msgid "Choose a file to open"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:217
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:204
msgid "Choose a memory card:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:800
msgid ""
"Choose file to use as apploader: (applies to discs constructed from "
"directories only)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:767
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:806
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:781
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:822
msgid "Choose the folder to extract to"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:297
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:284
msgid "Circle Stick"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:52
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:56
msgid "Classic"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:144
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:487
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:913
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:137
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:474
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:904
msgid "Clear"
msgstr ""
-#: Source/Core/Core/Src/NetPlayServer.cpp:259
+#: Source/Core/Core/Src/NetPlayServer.cpp:263
msgid ""
"Client disconnect while game is running!! NetPlay is disabled. You must "
"manually stop the game."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:298
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:247
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:552
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:578
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:285
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:234
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:562
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:590
msgid "Close"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:174
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:177
msgid "Co&nfigure..."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:86
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:73
msgid "Code Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:568
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:556
msgid "Code: "
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
msgid "Command"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:629
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:623
msgid "Comment"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:489
msgid "Comment:"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:893
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:884
msgid "Compress ISO..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:905
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:899
msgid "Compress selected ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Compressing ISO"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Config"
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:37
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:135
-#: Source/Core/DolphinWX/Src/InputConfigDiag.h:154
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:122
+#: Source/Core/DolphinWX/Src/InputConfigDiag.h:141
msgid "Configure"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:98
msgid "Configure Control"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:306
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:309
#: Source/Core/DolphinWX/Src/NetWindow.cpp:583
msgid "Configure Pads"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:429
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:435
msgid "Configure..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1119
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1147
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1120
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1148
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1218
msgid "Confirm File Overwrite"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:597
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:577
msgid "Confirm on Stop"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:83
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:105
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:74
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:96
msgid "Connect"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:783
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:764
msgid "Connect USB Keyboard"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:362
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:368
#, c-format
msgid "Connect Wiimote %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
msgid "Connect Wiimote 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:196
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:196
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
msgid "Connect Wiimote 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
msgid "Connect Wiimote 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:186
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:186
msgid "Connect Wiimote 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:627
+#: Source/Core/DolphinWX/Src/Main.cpp:655
msgid "Connecting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:155
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:156
msgid "Console"
msgstr ""
@@ -1163,15 +1189,15 @@ msgstr ""
msgid "Continuous Scanning"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:33
msgid "Control"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:189
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:176
msgid "Convert to GCI"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:379
+#: Source/Core/Core/Src/CoreParameter.cpp:368
msgid "Copy failed"
msgstr ""
@@ -1180,21 +1206,21 @@ msgstr ""
msgid "Copy to Memcard %c"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:356
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:359
msgid "Core"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:154
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:148
#, c-format
msgid "Could not create %s"
msgstr ""
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:75
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:62
#, c-format
msgid "Could not initialize backend %s."
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:137
+#: Source/Core/Core/Src/CoreParameter.cpp:126
#, c-format
msgid ""
"Could not read \"%s\". There is no disc in the drive, or it is not a GC/Wii "
@@ -1202,12 +1228,12 @@ msgid ""
"most PC DVD drives."
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:292
+#: Source/Core/Core/Src/CoreParameter.cpp:281
#, c-format
msgid "Could not recognize ISO file %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:569
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:579
#, c-format
msgid "Could not save %s"
msgstr ""
@@ -1218,197 +1244,201 @@ msgid ""
"(setting pads while the game is running is not yet supported)"
msgstr ""
-#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:123
+#: Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp:119
#, c-format
msgid ""
"Could not write memory card file %s.\n"
"\n"
"Are you running Dolphin from a CD/DVD, or is the save file maybe write "
-"protected?"
+"protected?\n"
+"\n"
+"Are you receiving this after moving the emulator directory?\n"
+"If so, then you may need to re-specify your memory card location in the "
+"options."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1107
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1133
msgid "Couldn't find open command for extension 'ini'!"
msgstr ""
-#: Source/Core/Core/Src/BootManager.cpp:146
+#: Source/Core/Core/Src/BootManager.cpp:137
msgid ""
"Couldn't init the core.\n"
"Check your configuration."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:507
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:170
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:495
msgid "Count:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
msgid "Country:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:186
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:562
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:173
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:550
msgid "Create AR Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:543
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:608
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:569
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:641
msgid "Create new perspective"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:27
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:17
msgid "Creator: "
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:68
+#: Source/Core/Common/Src/MsgHandler.cpp:54
msgid "Critical"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:562
msgid "Crop"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:119
msgid ""
"Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:52
msgid "Crossfade"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:597
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:600
#, c-format
-msgid "Current dir changed from %s to %s after wxFileSelector!"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:336
-msgid "Custom Projection Hack"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/PHackSettings.h:30
-msgid "Custom Projection Hack Settings"
+msgid "Current directory changed from %s to %s after wxFileSelector!"
msgstr ""
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:339
+msgid "Custom Projection Hack"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/PHackSettings.h:17
+msgid "Custom Projection Hack Settings"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:342
msgid "Customize some Orthographic Projection parameters."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:311
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
msgid "Czech"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:698
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:697
msgid "D"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:89
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
msgid "D-Pad"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP"
msgstr "קול"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:658
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:639
msgid "DSP Emulator Engine"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:274
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:254
msgid "DSP HLE emulation (fast)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:276
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:256
msgid "DSP LLE interpreter (slow)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:660
-msgid "DSP LLE on Thread"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:275
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:255
msgid "DSP LLE recompiler"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:641
+msgid "DSP on Dedicated Thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:437
msgid "DSP settings"
msgstr "הגדרות קול"
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:838
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:819
msgid "DVD Root:"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:239
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:226
msgid "DVDLowRead - Fatal Error: failed to read from volume"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:333
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:320
msgid "DVDLowUnencryptedRead - Fatal Error: failed to read from volume"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:176
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:163
msgid "Data Size"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
msgid "Date:"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:528
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:564
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:518
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:557
msgid "Datel MaxDrive/Pro files(*.sav)"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:242
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:259
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:267
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:229
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:246
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:268
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:283
msgid "Dead Zone"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:35
msgid "Debug"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:521
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
msgid "Debugging"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:79
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:66
msgid "Decimal"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:890
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:881
msgid "Decompress ISO..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:906
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:900
msgid "Decompress selected ISOs..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1088
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1224
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
msgid "Decompressing ISO"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:912
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
msgid "Default"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:835
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:816
msgid "Default ISO:"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:114
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:107
msgid "Default font"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:32
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:926
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:19
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:917
msgid "Delete"
msgstr ""
@@ -1416,64 +1446,68 @@ msgstr ""
msgid "Delete Save"
msgstr ""
-#: Source/Core/VideoCommon/Src/AVIDump.cpp:77
+#: Source/Core/VideoCommon/Src/AVIDump.cpp:64
#, c-format
msgid "Delete the existing file '%s'?"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:671
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:683
msgid "Description"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Detect"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:233
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:328
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:220
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:315
msgid ""
"Detected attempt to read more data from the DVD than fit inside the out "
"buffer. Clamp."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:127
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:898
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:114
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:889
msgid "Device"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:750
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:798
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:731
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:779
msgid "Device Settings"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:45
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:49
msgid "Dial"
msgstr ""
-#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:146
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:135
msgid "Direct3D11"
msgstr ""
-#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:128
+#: Source/Plugins/Plugin_VideoDX9/Src/main.cpp:125
msgid "Direct3D9"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:167
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:155
msgid ""
"Directory checksum failed\n"
" and Directory backup checksum failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:433
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:443
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:485
msgid "Disable"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:491
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:501
+msgid "Disable Destination Alpha"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:409
msgid "Disable Fog"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
msgid ""
"Disable any XFB emulation.\n"
"Speeds up emulation a lot but causes heavy glitches in many games which rely "
@@ -1482,7 +1516,7 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
msgid ""
"Disable emulation of EFB copies.\n"
"These are often used for post-processing or render-to-texture effects, so "
@@ -1492,52 +1526,60 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:543
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+msgid ""
+"Disables emulation of a hardware feature called destination alpha, which is "
+"used in many games for various graphical effects.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:553
msgid "Disc"
msgstr ""
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:107
-#: Source/Core/DiscIO/Src/DriveBlob.cpp:126
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:94
+#: Source/Core/DiscIO/Src/DriveBlob.cpp:113
msgid "Disc Read Error"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:312
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:320
msgid "Display"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
msgid ""
"Display the inputs read by the emulator.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:80
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:67
msgid "Divide"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:987
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:990
msgid "Do you want to stop the current emulation?"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:663
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:644
msgid "Dolby Pro Logic II decoder"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:864
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:856
msgid "Dolphin"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:183
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:188
#, c-format
msgid "Dolphin %s Graphics Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:292
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:298
msgid "Dolphin &Web Site"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.h:37
+#: Source/Core/DolphinWX/Src/ConfigMain.h:24
msgid "Dolphin Configuration"
msgstr ""
@@ -1545,16 +1587,16 @@ msgstr ""
msgid "Dolphin Emulated Wiimote Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:394
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:383
msgid "Dolphin FIFO"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1136
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1153
msgid "Dolphin GCPad Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:679
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1074
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:685
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1089
msgid "Dolphin TAS Movies (*.dtm)"
msgstr ""
@@ -1562,101 +1604,107 @@ msgstr ""
msgid "Dolphin Wiimote Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:293
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:299
msgid "Dolphin at &Google Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:364
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:351
msgid ""
"Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for "
"files..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:368
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:355
msgid ""
"Dolphin is currently set to hide all games. Doubleclick here to show all "
"games..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1159
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1245
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1160
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1246
msgid "Dolphin was unable to complete the requested action."
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:275
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:58
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+msgid ""
+"Doubles the emulated GPU clock rate. May speed up some games (ON = Fast, OFF "
+"= Compatible)"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:262
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:45
msgid "Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:54
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:44
msgid "Download Codes (WiiRD Database)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:297
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:287
#, c-format
msgid "Downloaded %lu codes. (added %lu)"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:31
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:35
msgid "Drums"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:105
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:85
msgid "Dummy"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:661
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
msgid "Dump Audio"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:545
msgid "Dump EFB Target"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:533
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:546
msgid "Dump Frames"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:543
msgid "Dump Textures"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:114
msgid ""
"Dump all rendered frames to an AVI file in User/Dump/Frames/\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
msgid ""
"Dump decoded game textures to User/Dump/Textures//\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:108
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
msgid ""
"Dump the contents of EFB copies to User/Dump/Textures/\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:474
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:285
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:482
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:265
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:292
msgid "Dutch"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:112
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:113
msgid "E&xit"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:441
msgid "EFB Copies"
msgstr ""
-#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:223
+#: Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp:210
#, c-format
msgid ""
"ERROR: This version of Dolphin requires a TAP-Win32 driver that is at least "
@@ -1665,52 +1713,52 @@ msgid ""
"driver."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:160
msgid "EUROPE"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:156
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:143
msgid "Early Memory Updates"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:30
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.h:17
msgid "Edit ActionReplay Code"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:285
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
msgid "Edit Config"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.h:30
+#: Source/Core/DolphinWX/Src/PatchAddEdit.h:17
msgid "Edit Patch"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:447
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:453
msgid "Edit current perspective"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:403
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:425
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:407
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:429
msgid "Edit..."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:44
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:48
msgid "Effect"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:425
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
msgid "Embedded Frame Buffer"
msgstr ""
-#: Source/Core/Core/Src/Core.cpp:201
+#: Source/Core/Core/Src/Core.cpp:190
msgid "Emu Thread already running"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:110
msgid ""
"Emulate XFBs accurately.\n"
"Slows down emulation a lot and prohibits high-resolution rendering but is "
@@ -1719,7 +1767,7 @@ msgid ""
"If unsure, check virtual XFB emulation instead."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:104
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:109
msgid ""
"Emulate XFBs using GPU texture objects.\n"
"Fixes many games which don't work without XFB emulation while not being as "
@@ -1733,7 +1781,7 @@ msgstr ""
msgid "Emulated Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:343
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
msgid "Emulation State: "
msgstr ""
@@ -1741,7 +1789,7 @@ msgstr ""
msgid "Enable"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
msgid ""
"Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's "
"supported by your GPU.\n"
@@ -1751,55 +1799,55 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:111
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:98
msgid "Enable AR Logging"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:324
msgid "Enable Block Merging"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
msgid "Enable Bounding Box Calculation"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:436
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:446
msgid "Enable Cache"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:562
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:542
msgid "Enable Cheats"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:309
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
msgid "Enable Dual Core"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:560
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:540
msgid "Enable Dual Core (speedup)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:550
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:563
msgid "Enable Hotkeys"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:310
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
msgid "Enable Idle Skipping"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:561
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:541
msgid "Enable Idle Skipping (speedup)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:311
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
msgid "Enable MMU"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:554
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:567
msgid "Enable Progressive Scan"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:757
msgid "Enable Screen Saver"
msgstr ""
@@ -1807,15 +1855,15 @@ msgstr ""
msgid "Enable Speaker Data"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:328
msgid "Enable WideScreen"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:516
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:529
msgid "Enable Wireframe"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
msgid ""
"Enable anisotropic filtering.\n"
"Enhances visual quality of textures that are at oblique viewing angles.\n"
@@ -1824,7 +1872,7 @@ msgid ""
"If unsure, select 1x."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:323
msgid ""
"Enable fast disc access. Needed for a few games. (ON = Fast, OFF = "
"Compatible)"
@@ -1834,7 +1882,7 @@ msgstr ""
msgid "Enable pages"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
msgid ""
"Enable this if you want the whole screen to be used for rendering.\n"
"If this is disabled, a render window will be created instead.\n"
@@ -1842,7 +1890,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:76
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
msgid ""
"Enable this if you want to use the main Dolphin window for rendering rather "
"than a separate render window.\n"
@@ -1850,34 +1898,34 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:335
msgid ""
"Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for "
"ANY other game."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:337
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:340
msgid "Enables Custom Projection Hack"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:528
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on "
"OSX."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:530
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:510
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
msgid ""
"Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend "
"only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:77
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:81
msgid ""
"Enables progressive scan if supported by the emulated software.\n"
"Most games don't care about this.\n"
@@ -1885,108 +1933,108 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:312
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
msgid ""
"Enables the Memory Management Unit, needed for some games. (ON = Compatible, "
"OFF = Fast)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:111
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
msgid ""
"Encode frame dumps using the FFV1 codec.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:53
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
msgid "End"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:469
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:293
msgid "English"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:329
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:407
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:337
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:417
msgid "Enhancements"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:607
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:640
msgid "Enter a name for the new perspective:"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:191
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:178
#, c-format
msgid "Entry %d/%d"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:85
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:72
#, c-format
msgid "Entry 1/%d"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:217
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:204
msgid "Equal"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:45
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:156
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:32
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:150
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "Error"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:381
+#: Source/Core/DolphinWX/Src/Main.cpp:409
msgid "Error loading selected language. Falling back to system default."
msgstr ""
-#: Source/Core/Common/Src/ChunkFile.h:226
+#: Source/Core/Common/Src/ChunkFile.h:221
#, c-format
msgid ""
"Error: After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
"Aborting savestate load..."
msgstr ""
-#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:342
+#: Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp:329
#, c-format
msgid ""
"Error: Trying to access %s fonts but they are not loaded. Games may not show "
"fonts correctly, or crash."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:30
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:17
msgid "Escape"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:26
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:30
msgid "Euphoria"
msgstr ""
#: Source/Core/Core/Src/ArmMemTools.cpp:78
-#: Source/Core/Core/Src/x64MemTools.cpp:217
+#: Source/Core/Core/Src/x64MemTools.cpp:206
#, c-format
msgid "Exception handler - access below memory space. %08llx%08llx"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:61
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:48
msgid "Execute"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:459
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:446
msgid "Export Failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:639
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:649
msgid "Export File"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:177
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:177
msgid "Export Recording"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:351
msgid "Export Recording..."
msgstr ""
@@ -1994,7 +2042,7 @@ msgstr ""
msgid "Export Save"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:874
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:865
msgid "Export Wii save (Experimental)"
msgstr ""
@@ -2002,100 +2050,100 @@ msgstr ""
msgid "Export all saves"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:80
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:72
msgid "Export failed, try again?"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:559
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:552
msgid "Export save as..."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:297
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:284
msgid "Extension"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:473
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:483
msgid "External Frame Buffer"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:61
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
msgid "Extra Parameter"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:62
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:49
msgid "Extra Parameter useful in ''Metroid: Other M'' only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:614
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:624
msgid "Extract All Files..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:616
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:626
msgid "Extract Apploader..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:617
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:627
msgid "Extract DOL..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:610
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:620
msgid "Extract Directory..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:612
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:622
msgid "Extract File..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:608
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:618
msgid "Extract Partition..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:738
#, c-format
msgid "Extracting %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting All Files"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:707
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:721
msgid "Extracting Directory"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:710
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:724
msgid "Extracting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:892
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:893
msgid "FIFO Byte"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:45
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:32
msgid "FIFO Player"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:163
msgid "FRANCE"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
msgid "FST Size:"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:77
+#: Source/Core/Core/Src/NetPlayClient.cpp:81
msgid "Failed to Connect!"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:225
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:228
msgid "Failed to Listen!!"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:307
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:300
msgid "Failed to download codes."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:827
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:843
#, c-format
msgid "Failed to extract to %s!"
msgstr ""
@@ -2113,26 +2161,30 @@ msgid ""
"(Choose it from the \"Audio\" tab of the configuration dialog.)"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:116
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:139
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:108
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:131
msgid "Failed to load bthprops.cpl"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:100
-#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:109
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:90
+#: Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp:101
msgid "Failed to load hid.dll"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:792
+#: Source/Core/Core/Src/Movie.cpp:783
#, c-format
msgid "Failed to read %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:151
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:144
msgid "Failed to read banner.bin"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:223
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:178
+msgid "Failed to read bk header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:211
#, c-format
msgid ""
"Failed to read block %d of the save data\n"
@@ -2140,140 +2192,149 @@ msgid ""
"FilePosition:%llx"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:148
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
msgid ""
"Failed to read block allocation table backup correctly\n"
"(0x8000-0x9FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:142
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
msgid ""
"Failed to read block allocation table correctly\n"
"(0x6000-0x7FFF)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:286
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:279
#, c-format
msgid "Failed to read data from file %d"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:136
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:367
+#, c-format
+msgid "Failed to read data from file: %s"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
msgid ""
"Failed to read directory backup correctly\n"
"(0x4000-0x5FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:130
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:118
msgid ""
"Failed to read directory correctly\n"
"(0x2000-0x3FFF)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:90
+msgid "Failed to read header"
+msgstr ""
+
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:107
msgid ""
"Failed to read header correctly\n"
"(0x0000-0x1FFF)"
msgstr ""
-#: Source/Core/DiscIO/Src/VolumeGC.cpp:61
+#: Source/Core/DiscIO/Src/VolumeGC.cpp:48
msgid "Failed to read unique ID from disc image"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:84
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:71
msgid "Failed to write BT.DINF to SYSCONF"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:228
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:221
msgid "Failed to write bkhdr"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:164
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:157
#, c-format
msgid "Failed to write header for %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:258
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:251
#, c-format
msgid "Failed to write header for file %d"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:314
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:294
msgid "Farsi"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:467
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
msgid "Fast"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
msgid "Fast version of the MMU. Does not work for every game."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1046
+#: Source/Core/Core/Src/Movie.cpp:1037
#, c-format
msgid ""
"Fatal desync. Aborting playback. (Error in PlayWiimote: %u != %u, byte %u.)%s"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:202
msgid "Fifo Player"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:99
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:86
msgid "File Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:304
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:295
msgid "File contained no codes."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:413
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:400
msgid "File converted to .gci"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:428
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:415
msgid ""
"File could not be opened\n"
"or does not have a valid extension"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:84
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:72
#, c-format
msgid ""
"File has the extension \"%s\"\n"
"valid extensions are (.raw/.gcp)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:425
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:412
msgid "File is not recognized as a memcard"
msgstr ""
-#: Source/Core/DiscIO/Src/CompressedBlob.cpp:294
+#: Source/Core/DiscIO/Src/CompressedBlob.cpp:281
msgid "File not compressed"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:127
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp:109
#, c-format
msgid "FileIO: Unknown open mode : 0x%02x"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:531
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:541
msgid "Filesystem"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1100
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1126
msgid "Filetype 'ini' is unknown! Will not open!"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:265
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:252
msgid "Find next"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:266
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:253
msgid "Find previous"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:632
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:626
msgid "First Block"
msgstr ""
@@ -2281,23 +2342,23 @@ msgstr ""
msgid "Fix Checksums"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 16:9"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Force 4:3"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:568
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:548
msgid "Force Console as NTSC-J"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:398
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:406
msgid "Force Texture Filtering"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:85
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:90
msgid ""
"Force texture filtering even if the emulated game explicitly disabled it.\n"
"Improves texture quality slightly but causes glitches in some games.\n"
@@ -2305,7 +2366,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
msgid ""
"Force the game to output graphics for widescreen resolutions.\n"
"Causes graphical glitches is some games.\n"
@@ -2313,160 +2374,160 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:508
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:488
msgid ""
"Forces NTSC-J mode for using the Japanese ROM font.\n"
"Left unchecked, dolphin defaults to NTSC-U and automatically enables this "
"setting when playing Japanese games."
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:74
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:62
msgid ""
"Format as ascii (NTSC\\PAL)?\n"
"Choose no for sjis (NTSC-J)"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:278
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:265
msgid "Forward"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:505
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:504
#, c-format
msgid "Found %d results for '"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:857
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:858
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:926
msgid "Frame"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:867
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:868
msgid "Frame "
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:185
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:185
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
msgid "Frame Advance"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:536
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:549
msgid "Frame Dumps use FFV1"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:227
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:214
msgid "Frame Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:116
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:103
msgid "Frame Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:138
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:139
msgid "Frame S&kipping"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:572
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
msgid "Framelimit:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:191
msgid "Frames To Record"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:534
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:547
msgid "Free Look"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:471
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:262
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:295
msgid "French"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:42
msgid "Frets"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:118
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:137
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:105
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:124
msgid "From"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
msgid "FullScr"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:256
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:263
msgid "Fullscreen resolution:"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:534
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:524
msgid "GCI File(*.gci)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GCMicDlg.h:44
+#: Source/Core/DolphinWX/Src/GCMicDlg.h:31
msgid "GCMic Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "GCPad"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:659
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:658
msgid "GX_CMD_INVL_VC"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:452
msgid "Game ID:"
msgstr ""
-#: Source/Core/Core/Src/NetPlay.cpp:229
+#: Source/Core/Core/Src/NetPlay.cpp:216
msgid "Game is already running!"
msgstr ""
-#: Source/Core/Core/Src/NetPlay.cpp:259
+#: Source/Core/Core/Src/NetPlay.cpp:246
msgid "Game isn't running!"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:389
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:393
msgid "Game not found!"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:385
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:389
msgid "Game-Specific Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:293
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:294
msgid "GameConfig"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:525
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:515
msgid "GameCube Savegame files(*.gci;*.gcs;*.sav)"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:554
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:534
msgid "Gamecube"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:181
msgid "Gamecube &Pad Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:218
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1069
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1052
msgid "Gamecube Memory Cards (*.raw,*.gcp)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:438
msgid "Gamecube Pad settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:130
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:301
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:117
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:302
msgid "Gecko Codes"
msgstr ""
-#: Source/Core/Core/Src/GeckoCode.cpp:222
+#: Source/Core/Core/Src/GeckoCode.cpp:214
#, c-format
msgid ""
"GeckoCode failed to run (CT%i CST%i) (%s)\n"
@@ -2475,10 +2536,10 @@ msgid ""
"directory and restarting Dolphin.)"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:551
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:197
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:160
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:160
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:202
msgid "General"
msgstr ""
@@ -2486,30 +2547,30 @@ msgstr ""
msgid "General Settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:470
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:316
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:478
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:261
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:296
msgid "German"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:449
+#: Source/Core/Core/Src/ActionReplay.cpp:439
#, c-format
msgid "GetARCode: Index is greater than ar code list size %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:436
msgid "Graphics settings"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:218
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:205
msgid "Greater Than"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:83
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
msgid ""
"Greatly increases quality of textures generated using render to texture "
"effects.\n"
@@ -2520,51 +2581,67 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:317
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:297
msgid "Greek"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Green"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Green Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Green Right"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:35
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:39
msgid "Guitar"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1259
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:1250
msgid "HCI_CMD_INQUIRY is called, please report!"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:421
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:504
+msgid "Hacked Buffer Upload"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:431
msgid "Hacks"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:158
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:146
msgid "Header checksum failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:318
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:298
msgid "Hebrew"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:313
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:300
msgid "Height"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
msgid "Help"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:209
+#: Source/Core/DolphinWX/Src/Main.cpp:229
+msgid ""
+"Hi,\n"
+"\n"
+"Dolphin requires Mac OS X 10.7 or greater.\n"
+"Unfortunately you're running an old version of OS X.\n"
+"The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n"
+"Please upgrade to 10.7 or greater to use the newest Dolphin version.\n"
+"\n"
+"Sayonara!\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:220
msgid ""
"Hi,\n"
"\n"
@@ -2574,41 +2651,41 @@ msgid ""
"Sayonara!\n"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:309
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:296
msgid "Hide"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:299
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:307
msgid "Hide Mouse Cursor"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:79
msgid ""
"Hides the mouse cursor if it's on top of the emulation window.\n"
"\n"
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:54
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:41
msgid "Home"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:85
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:138
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:76
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:141
msgid "Host"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.h:44
+#: Source/Core/DolphinWX/Src/HotkeyDlg.h:31
msgid "Hotkey Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:272
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:272
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:594
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:260
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:260
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:574
msgid "Hotkeys"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:319
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
msgid "Hungarian"
msgstr ""
@@ -2616,29 +2693,29 @@ msgstr ""
msgid "Hybrid Wiimote"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:532
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:519
#, c-format
msgid "IOCTL_ES_GETVIEWS: Tried to get data from an unknown ticket: %08x/%08x"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:786
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:773
#, c-format
msgid ""
-"IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available "
-"in your nand dump\n"
+"IOCTL_ES_LAUNCH: Game tried to reload an IOS or a title that is not "
+"available in your NAND dump\n"
"TitleID %016llx.\n"
-" Dolphin will likely hang now"
+" Dolphin will likely hang now."
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:313
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:300
msgid "IOCTL_ES_READCONTENT - bad destination"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:748
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:729
msgid "IPL Settings"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:282
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:269
msgid "IR"
msgstr ""
@@ -2650,45 +2727,33 @@ msgstr ""
msgid "IR Sensitivity:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:502
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:512
msgid "ISO Details"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:830
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:811
msgid "ISO Directories"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:166
msgid "ITALY"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:630
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:624
msgid "Icon"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:332
msgid ""
"If checked, the bounding box registers will be updated. Used by the Paper "
"Mario games."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
-msgid ""
-"If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
-msgid ""
-"If you set Framelimit higher than game full speed (NTSC:60, PAL:50). Use "
-"Audio to throttle using the DSP (might fix audio clicks but can also cause "
-"constant noise depending on the game)."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:428
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:438
msgid "Ignore Format Changes"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
msgid ""
"Ignore any changes to the EFB format.\n"
"Improves performance in many games without any negative effect. Causes "
@@ -2697,7 +2762,7 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:88
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
msgid ""
"Ignore any requests of the CPU to read from or write to the EFB.\n"
"Improves performance in some games, but might disable some gameplay-related "
@@ -2710,35 +2775,27 @@ msgstr ""
msgid "Import Save"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:59
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:48
msgid "Import failed, try again?"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:454
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:441
msgid ""
"Imported file has gsc extension\n"
"but does not have a correct header"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:442
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:429
msgid "Imported file has invalid length"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:451
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:438
msgid ""
"Imported file has sav extension\n"
"but does not have a correct header"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:95
-msgid ""
-"Improves performance but causes glitches in most games which rely on proper "
-"fog emulation.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:350
msgid "In Game"
msgstr ""
@@ -2746,125 +2803,129 @@ msgstr ""
msgid "In-Game"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:47
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:304
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:34
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:305
msgid "Info"
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:65
+#: Source/Core/Common/Src/MsgHandler.cpp:51
msgid "Information"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Input"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:63
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
msgid "Insert"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:176
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:166
msgid "Insert Encrypted or Decrypted code here..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:782
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:763
msgid "Insert SD Card"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:34
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:21
msgid "Insert name here.."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:196
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:199
msgid "Install WAD"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:895
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:888
msgid "Install to Wii Menu"
msgstr ""
-#: Source/Core/Core/Src/x64MemTools.cpp:252
+#: Source/Core/Core/Src/x64MemTools.cpp:242
msgid ""
"InstallExceptionHandler called, but this platform does not yet support it."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1297
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1324
msgid "Installing WAD..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:885
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:901
msgid "Integrity Check Error"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:891
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:907
msgid "Integrity check completed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:890
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:906
msgid "Integrity check completed. No errors have been found."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:882
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:898
#, c-format
msgid ""
"Integrity check for partition %d failed. Your dump is most likely corrupted "
"or has been patched incorrectly."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:552
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:532
msgid "Interface"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:646
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:627
msgid "Interface Settings"
msgstr ""
-#: Source/Core/Core/Src/State.cpp:240
+#: Source/Core/Core/Src/State.cpp:228
msgid "Internal LZO Error - compression failed"
msgstr ""
-#: Source/Core/Core/Src/State.cpp:348
+#: Source/Core/Core/Src/State.cpp:336
#, c-format
msgid ""
"Internal LZO Error - decompression failed (%d) (%li, %li) \n"
"Try loading the state again"
msgstr ""
-#: Source/Core/Core/Src/State.cpp:485
+#: Source/Core/Core/Src/State.cpp:473
msgid "Internal LZO Error - lzo_init() failed"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:344
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:352
msgid "Internal Resolution:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:346
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:42
+msgid "Interpreter (VERY slow)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
msgid "Intro"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:194
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:187
#, c-format
msgid "Invalid Size(%x) or Magic word (%x)"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:612
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:600
msgid "Invalid Value!"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:462
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:449
msgid "Invalid bat.map or dir entry"
msgstr ""
-#: Source/Core/Core/Src/CoreTiming.cpp:548
+#: Source/Core/Core/Src/CoreTiming.cpp:553
#, c-format
msgid "Invalid event type %i"
msgstr ""
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:326
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:309
msgid "Invalid file"
msgstr ""
-#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:41
+#: Source/Core/DiscIO/Src/BannerLoaderGC.cpp:28
#, c-format
msgid ""
"Invalid opening.bnr found in gcm:\n"
@@ -2872,203 +2933,211 @@ msgid ""
" You may need to redump this game."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:735
+#: Source/Core/Core/Src/Movie.cpp:726
msgid "Invalid recording file"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:473
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:472
msgid "Invalid search parameters (no object selected)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:456
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:455
msgid "Invalid search string (couldn't convert to number)"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:444
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:443
msgid "Invalid search string (only even string lengths supported)"
msgstr ""
-#: Source/Core/Core/Src/Core.cpp:513
+#: Source/Core/Core/Src/Core.cpp:511
msgid "Invalid state"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:473
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:284
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:320
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:481
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:264
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
msgid "Italian"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:183
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:177
msgid "JAPAN"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:299
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:321
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:46
+msgid "JIT Recompiler (recommended)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:47
+msgid "JITIL experimental recompiler"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:279
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
msgid "Japanese"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:188
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:182
msgid "KOREA"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
msgid ""
"Keep the game window on top of all other windows.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:298
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:306
msgid "Keep window on top"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:241
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:241
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:229
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:229
msgid "Key"
msgstr ""
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:282
#: Source/Core/DolphinWX/Src/ConfigMain.cpp:302
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:322
msgid "Korean"
msgstr ""
#. i18n: Left
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:57
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:44
msgid "L"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:39
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:26
msgid "L Button"
msgstr ""
#. i18n: Left-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:61
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:48
msgid "L-Analog"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:605
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:585
msgid "Language:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:153
msgid "Last Overwritten State"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:159
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:161
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:160
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:162
msgid "Last Saved State"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:677
msgid "Latency:"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:276
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:55
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:263
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
msgid "Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:60
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:64
msgid "Left Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:257
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:257
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:245
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:245
msgid ""
"Left click to detect hotkeys.\n"
"Enter space to clear."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:689
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:678
msgid ""
"Left-click to detect input.\n"
"Middle-click to clear.\n"
"Right-click for more options."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:694
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:683
msgid ""
"Left/Right-click for more options.\n"
"Middle-click to clear."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:219
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:206
msgid "Less Than"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:565
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:545
msgid "Limit by FPS"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:924
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
msgid "Load"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:544
msgid "Load Custom Textures"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
msgid "Load State Slot 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:189
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:189
msgid "Load State Slot 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
msgid "Load State Slot 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:191
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:191
msgid "Load State Slot 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
msgid "Load State Slot 5"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:205
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:205
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
msgid "Load State Slot 6"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:206
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:206
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:194
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:194
msgid "Load State Slot 7"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:207
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:207
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:195
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:195
msgid "Load State Slot 8"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:155
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:156
msgid "Load State..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1332
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1359
msgid "Load Wii System Menu"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1327
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1354
#, c-format
msgid "Load Wii System Menu %d%c"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:112
msgid ""
"Load custom textures from User/Load/Textures//\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:50
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:37
msgid "Load preset values from hack patterns available."
msgstr ""
@@ -3076,23 +3145,23 @@ msgstr ""
msgid "Local"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.h:51
+#: Source/Core/DolphinWX/Src/LogWindow.h:38
msgid "Log"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:26
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:13
msgid "Log Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:296
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:304
msgid "Log FPS to file"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:96
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:83
msgid "Log Types"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:103
msgid ""
"Log the number of frames rendered per second to User/Logs/fps.txt. Use this "
"feature when you want to measure the performance of Dolphin.\n"
@@ -3100,81 +3169,90 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:81
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:68
msgid "Logger Outputs"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:132
-#: Source/Core/DolphinWX/Src/Frame.cpp:328
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:119
+#: Source/Core/DolphinWX/Src/Frame.cpp:314
msgid "Logging"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:255
+#: Source/Core/Core/Src/NetPlayClient.cpp:259
msgid "Lost connection to server!"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:42
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
msgid "M Button"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:119
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:112
#, c-format
msgid ""
"MD5 mismatch\n"
" %016llx%016llx != %016llx%016llx"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:313
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:314
msgid "MMU Speed Hack"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:527
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:563
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:517
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:556
msgid "MadCatz Gameshark files(*.gcs)"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:76
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:51
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:38
msgid "Main Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:456
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:460
msgid "Maker ID:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:479
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:487
msgid "Maker:"
msgstr ""
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+msgid ""
+"Makes distant objects more visible by removing fog, thus increasing the "
+"overall detail.\n"
+"Disabling fog will break some games which rely on proper fog emulation.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:97
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:100
msgid "Max"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:448
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:435
msgid "Memcard already has a save for this title"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:291
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:278
msgid "Memcard already opened"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:912
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:913
msgid "Memory Byte"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:225
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:113
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:212
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:93
msgid "Memory Card"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.h:36
+#: Source/Core/DolphinWX/Src/MemcardManager.h:23
msgid ""
"Memory Card Manager WARNING-Make backups before using, should be fixed but "
"could mangle stuff!"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:371
+#: Source/Core/Core/Src/CoreParameter.cpp:360
#, c-format
msgid ""
"Memory Card filename in Slot %c is incorrect\n"
@@ -3185,15 +3263,15 @@ msgid ""
"Would you like to copy the old file to this new location?\n"
msgstr ""
-#: Source/Core/Core/Src/HW/GCMemcard.cpp:124
+#: Source/Core/Core/Src/HW/GCMemcard.cpp:112
msgid "Memorycard filesize does not match the header size"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:50
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:37
msgid "Menu"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:114
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:94
msgid "Mic"
msgstr ""
@@ -3202,20 +3280,20 @@ msgstr ""
msgid "Min"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:568
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:580
msgid "Misc"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:795
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:776
msgid "Misc Settings"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:240
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:294
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:227
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:281
msgid "Modifier"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:101
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:106
msgid ""
"Modify textures to show the format they're encoded in. Needs an emulation "
"reset in most cases.\n"
@@ -3223,20 +3301,20 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:115
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:108
msgid "Monospaced font"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:305
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:292
msgid "Motion Plus"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:309
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:86
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:296
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:73
msgid "Motor"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:654
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:666
msgid ""
"Move the mouse pointer over an option to display a detailed description.\n"
"\n"
@@ -3247,224 +3325,235 @@ msgid ""
"\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:75
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
msgid "Multiply"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:651
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:650
msgid "NOP"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:629
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:628
msgid "NOTE: Stream size doesn't match actual data length\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:129
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
msgid "NP Add"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:124
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
msgid "NP Begin"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:132
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
msgid "NP Decimal"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:126
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:113
msgid "NP Delete"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:133
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
msgid "NP Divide"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:120
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
msgid "NP Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
msgid "NP End"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:111
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:98
msgid "NP Enter"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:127
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:114
msgid "NP Equal"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:116
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:103
msgid "NP Home"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:125
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:112
msgid "NP Insert"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:104
msgid "NP Left"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:128
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:115
msgid "NP Multiply"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
msgid "NP Page Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
msgid "NP Page Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:119
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
msgid "NP Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:130
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:117
msgid "NP Separator"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:109
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:96
msgid "NP Space"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:131
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
msgid "NP Subtract"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:110
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:97
msgid "NP Tab"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:118
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
msgid "NP Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:444
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:59
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:50
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:448
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:46
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:37
msgid "Name:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:85
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:295
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:565
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:25
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:72
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:282
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:553
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:15
msgid "Name: "
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:526
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:562
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:516
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:555
msgid "Native GCI files(*.gci)"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:161
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:148
msgid "New Scan"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:206
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:193
#: Source/Core/DolphinWX/Src/MemcardManager.cpp:801
msgid "Next Page"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:165
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:152
msgid "Next Scan"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:68
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:59
msgid "Nickname :"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:196
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:190
msgid "No Country (SDK)"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:370
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:357
msgid "No ISOs or WADS found"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:508
-#, c-format
-msgid "No banner file found for title %s"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:761
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:768
-msgid "No description available"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:514
-msgid "No docking"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:859
-msgid "No file loaded"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:439
-msgid "No free dir index entries"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:895
-msgid "No recorded file"
+#: Source/Core/Core/Src/ConfigManager.h:17
+msgid "No audio output"
msgstr ""
#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:501
#, c-format
+msgid "No banner file found for title %s"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:760
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:767
+msgid "No description available"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:535
+msgid "No docking"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:860
+msgid "No file loaded"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:426
+msgid "No free dir index entries"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:896
+msgid "No recorded file"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:494
+#, c-format
msgid "No save folder found for title %s"
msgstr ""
+#: Source/Plugins/Plugin_VideoOGL/Src/main.cpp:132
+#: Source/Plugins/Plugin_VideoDX11/Src/main.cpp:111
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:23
#: Source/Core/DolphinWX/Src/NetWindow.cpp:600
msgid "None"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:323
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:303
msgid "Norwegian Bokmaal"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:216
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:203
msgid "Not Equal"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:344
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:804
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:347
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:794
msgid "Not Set"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:626
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:101
+#, c-format
+msgid "Not a Wii save or read failure for file header size %x"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/Main.cpp:654
msgid "Not connected"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:309
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:296
msgid "Notes"
msgstr ""
-#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:26
+#: Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp:16
msgid "Notes: "
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:71
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:74
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:580
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:621
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:629
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:59
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:64
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:613
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:659
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:667
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:31
msgid "Notice"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:105
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:92
msgid "Num Lock"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:88
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:75
msgid "Number Of Codes: "
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:30
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp:34
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:26
msgid "Nunchuk"
msgstr ""
@@ -3473,107 +3562,107 @@ msgstr ""
msgid "Nunchuk Acceleration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:877
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:878
msgid "Object"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:135
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:122
msgid "Object Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:243
msgid "Off"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:62
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:49
msgid "Offset:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:602
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:582
msgid "On-Screen Display Messages"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:436
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:423
#, c-format
msgid "Only %d blocks available"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:166
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:166
msgid "Open"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:876
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:867
msgid "Open &containing folder"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:873
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:864
msgid "Open Wii &save folder"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:420
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
msgid "Open file..."
msgstr ""
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:61
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:48
#, c-format
msgid "OpenAL: can't create context for device %s"
msgstr ""
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:72
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:59
msgid "OpenAL: can't find sound devices"
msgstr ""
-#: Source/Core/AudioCommon/Src/OpenALStream.cpp:66
+#: Source/Core/AudioCommon/Src/OpenALStream.cpp:53
#, c-format
msgid "OpenAL: can't open device %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:502
msgid "OpenCL Texture Decoder"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:494
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:503
msgid "OpenMP Texture Decoder"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:317
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:94
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:304
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:81
msgid "Options"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:22
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:26
msgid "Orange"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:468
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:455
msgid ""
"Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\n"
-"and import the the saves to a new memcard\n"
+"and import the saves to a new memcard\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:316
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:496
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:324
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:509
msgid "Other"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:206
+#: Source/Core/Core/Src/NetPlayClient.cpp:210
msgid ""
"Other client disconnected while game is running!! NetPlay is disabled. You "
"manually stop the game."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:481
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:468
msgid "Output"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:342
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:348
msgid "P&lay Recording..."
msgstr ""
-#: Source/Core/Core/Src/HW/GCPad.cpp:30
+#: Source/Core/Core/Src/HW/GCPad.cpp:18
msgid "Pad"
msgstr ""
@@ -3581,160 +3670,160 @@ msgstr ""
msgid "Pad "
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:34
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:38
msgid "Pads"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:108
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:95
msgid "Page Down"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:107
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:94
msgid "Page Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:35
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:22
msgid "Paragraph"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:64
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
msgid "Parameters"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:222
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:217
#, c-format
msgid "Partition %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:296
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:297
msgid "Patches"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:556
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:536
msgid "Paths"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1538
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1539
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:51
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1565
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1566
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
msgid "Pause"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:129
msgid "Pause at end of movie"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:397
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:405
msgid "Per-Pixel Lighting"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:349
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:352
msgid "Perfect"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:609
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:642
#, c-format
msgid "Perspective %d"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:165
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:424
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1547
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1548
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:152
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:430
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1574
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1575
msgid "Play"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:188
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:188
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:176
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:176
msgid "Play Recording"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:182
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:182
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:170
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:170
msgid "Play/Pause"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:348
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:351
msgid "Playable"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:154
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:141
msgid "Playback Options"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:301
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:304
msgid "Players"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:988
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:991
msgid "Please confirm..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:579
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:612
msgid "Please create a perspective before saving"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:36
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:23
msgid "Plus-Minus"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:324
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:304
msgid "Polish"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:732
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:713
msgid "Port 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:733
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:714
msgid "Port 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:734
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
msgid "Port 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:735
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:716
msgid "Port 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:97
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:130
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:88
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:133
msgid "Port :"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:325
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:305
msgid "Portuguese"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:326
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:306
msgid "Portuguese (Brazilian)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:391
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:399
msgid "Post-Processing Effect:"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:936
+#: Source/Core/Core/Src/Movie.cpp:927
#, c-format
msgid "Premature movie end in PlayController. %u + 8 > %u"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1055
+#: Source/Core/Core/Src/Movie.cpp:1046
#, c-format
msgid "Premature movie end in PlayWiimote. %u + %d > %u"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:1032
+#: Source/Core/Core/Src/Movie.cpp:1023
#, c-format
msgid "Premature movie end in PlayWiimote. %u > %u"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:48
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:35
msgid "Presets: "
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:205
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:192
msgid "Prev Page"
msgstr ""
@@ -3742,67 +3831,67 @@ msgstr ""
msgid "Previous Page"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:183
msgid "Previous Value"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:60
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:47
msgid "Print"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:885
msgid "Profile"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.h:55
+#: Source/Core/DolphinWX/Src/ISOProperties.h:42
msgid "Properties"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:283
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:286
msgid "Purge Cache"
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:66
+#: Source/Core/Common/Src/MsgHandler.cpp:52
msgid "Question"
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:159
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:316
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:162
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:319
msgid "Quit"
msgstr ""
#. i18n: Right
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:59
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:46
msgid "R"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:40
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:27
msgid "R Button"
msgstr ""
#. i18n: Right-Analog
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:63
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
msgid "R-Analog"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:435
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:445
msgid "RAM"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:175
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:169
msgid "RUSSIA"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:528
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:515
msgid "Range"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:190
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:190
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:178
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:178
msgid "Read-only mode"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:477
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:487
msgid "Real"
msgstr ""
@@ -3818,33 +3907,33 @@ msgstr ""
msgid "Reconnect Wiimote on State Loading"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:193
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:217
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:791
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:180
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:204
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:790
msgid "Record"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:174
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:161
msgid "Recording Info"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:202
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:189
msgid "Recording Options"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Red"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:24
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:28
msgid "Red Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:25
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
msgid "Red Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:86
msgid ""
"Reduces the amount of aliasing caused by rasterizing 3D graphics.\n"
"This makes the rendered picture look less blocky.\n"
@@ -3854,255 +3943,261 @@ msgid ""
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:60
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:903
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:894
msgid "Refresh"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:168
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:168
msgid "Refresh List"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:421
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
msgid "Refresh game list"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:405
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:427
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:77
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:812
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:409
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:431
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:64
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:793
msgid "Remove"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:94
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:99
msgid ""
"Render the scene as a wireframe.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:300
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:308
msgid "Render to Main Window"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:184
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:184
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:915
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:172
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:172
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:906
msgid "Reset"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:190
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:177
msgid "Results"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:29
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:16
msgid "Return"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:277
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:57
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:464
+msgid "Revision:"
+msgstr ""
+
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:264
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:44
msgid "Right"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:61
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Classic.cpp:65
msgid "Right Stick"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:308
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:85
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:295
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:72
msgid "Rumble"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:518
-msgid "Run DSP LLE on a dedicated thread (not recommended)."
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:498
+msgid ""
+"Run DSP HLE and LLE on a dedicated thread (not recommended: might cause "
+"audio glitches with HLE and freezes with LLE)."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:327
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:307
msgid "Russian"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:149
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:150
msgid "Sa&ve State"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:465
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:475
msgid "Safe"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:196
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:925
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:183
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:916
msgid "Save"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:532
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:522
msgid "Save GCI as..."
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:209
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:209
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:197
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:197
msgid "Save State Slot 1"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:210
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:210
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:198
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:198
msgid "Save State Slot 2"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:211
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:211
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:199
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:199
msgid "Save State Slot 3"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:212
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:212
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:200
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:200
msgid "Save State Slot 4"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:213
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:213
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:201
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:201
msgid "Save State Slot 5"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:214
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:214
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:202
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:202
msgid "Save State Slot 6"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:215
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:215
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:203
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:203
msgid "Save State Slot 7"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:216
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:216
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:204
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:204
msgid "Save State Slot 8"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:151
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:152
msgid "Save State..."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:582
#: Source/Core/DolphinWX/Src/ISOProperties.cpp:592
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:602
msgid "Save as..."
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1203
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1204
msgid "Save compressed GCM/ISO"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:446
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:452
msgid "Save current perspective"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1192
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1193
msgid "Save decompressed GCM/ISO"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:801
+#: Source/Core/Core/Src/Movie.cpp:792
#, c-format
msgid "Savestate movie %s is corrupted, movie recording stopping..."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:396
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
msgid "Scaled EFB Copy"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:556
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:543
#, c-format
msgid "Scanning %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:539
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:526
msgid "Scanning for ISOs"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:540
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:527
msgid "Scanning..."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
msgid "ScrShot"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:106
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:93
msgid "Scroll Lock"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:264
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:251
msgid "Search"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:227
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:214
msgid "Search Filter"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:810
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:791
msgid "Search Subfolders"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:250
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:237
msgid "Search current Object"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:254
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:241
msgid "Search for hex Value:"
msgstr ""
-#: Source/Core/Common/Src/SysConf.h:103 Source/Core/Common/Src/SysConf.h:126
-#: Source/Core/Common/Src/SysConf.h:146 Source/Core/Common/Src/SysConf.h:167
+#: Source/Core/Common/Src/SysConf.h:90 Source/Core/Common/Src/SysConf.h:113
+#: Source/Core/Common/Src/SysConf.h:133 Source/Core/Common/Src/SysConf.h:154
#, c-format
msgid "Section %s not found in SYSCONF"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:59
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:490
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:46
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:477
msgid "Select"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:677
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1072
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:683
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1087
msgid "Select The Recording File"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1285
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1312
msgid "Select a Wii WAD file to install"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:74
msgid ""
"Select a hardware adapter to use.\n"
"\n"
"If unsure, use the first one."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:520
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:510
msgid "Select a save file to import"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:363
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:366
msgid "Select floating windows"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:582
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:585
msgid "Select the file to load"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1241
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1268
msgid "Select the save file"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1388
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1415
msgid "Select the state to load"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1402
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1429
msgid "Select the state to save"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:78
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:82
msgid ""
"Select what aspect ratio to use when rendering:\n"
"Auto: Use the native aspect ratio\n"
@@ -4113,15 +4208,15 @@ msgid ""
"If unsure, select Auto."
msgstr ""
-#: Source/Core/InputCommon/Src/InputConfig.cpp:61
+#: Source/Core/InputCommon/Src/InputConfig.cpp:48
msgid "Selected controller profile does not exist"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:116
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:109
msgid "Selected font"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:71
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:75
msgid ""
"Selects the display resolution used in fullscreen mode.\n"
"This should always be bigger than or equal to the internal resolution. "
@@ -4131,17 +4226,27 @@ msgid ""
"If still unsure, use the highest resolution which works for you."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:69
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:70
msgid ""
"Selects what graphics API to use internally.\n"
"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
"Direct3D 11 is somewhere between the two.\n"
"Note that the Direct3D backends are only available on Windows.\n"
"\n"
-"If unsure, use Direct3D 9."
+"If unsure, use Direct3D 11."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:288
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:72
+msgid ""
+"Selects what graphics API to use internally.\n"
+"Direct3D 9 usually is the fastest one. OpenGL is more accurate though. "
+"Direct3D 11 is somewhere between the two.\n"
+"Note that the Direct3D backends are only available on Windows.\n"
+"\n"
+"If unsure, use OpenGL."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:291
msgid "Send"
msgstr ""
@@ -4149,24 +4254,24 @@ msgstr ""
msgid "Sensor Bar Position:"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:77
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:64
msgid "Separator"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:328
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:308
msgid "Serbian"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:522
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:502
msgid ""
"Serial Port 1 - This is the port which devices such as the net adapter use"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:488
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:475
msgid "Set"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:877
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:868
msgid "Set as &default ISO"
msgstr ""
@@ -4175,134 +4280,134 @@ msgstr ""
msgid "Set as default Memcard %c"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:460
+#: Source/Core/Core/Src/ActionReplay.cpp:450
#, c-format
msgid "SetARCode_IsActive: Index is greater than ar code list size %lu"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:515
msgid ""
"Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL "
"backend only."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:338
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:341
msgid "Settings..."
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:222
+#: Source/Core/Core/Src/Boot/Boot_BS2Emu.cpp:209
msgid "SetupWiiMem: Cant find setting file"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:291
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:278
msgid "Shake"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:477
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:485
msgid "Short Name:"
msgstr ""
-#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:103
+#: Source/Core/DolphinWX/Src/TASInputDlg.cpp:90
msgid "Shoulder Buttons"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:217
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:220
msgid "Show &Console"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:218
msgid "Show &Log"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:212
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:215
msgid "Show &Statusbar"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:210
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:213
msgid "Show &Toolbar"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:281
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:284
msgid "Show Drives"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:517
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:530
msgid "Show EFB Copy Regions"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:295
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:303
msgid "Show FPS"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:274
msgid "Show France"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:260
msgid "Show GameCube"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:548
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:561
msgid "Show Input Display"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:273
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:276
msgid "Show Italy"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:264
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:267
msgid "Show JAP"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:275
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:278
msgid "Show Korea"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:468
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:476
msgid "Show Language:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:216
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:219
msgid "Show Log &Configuration"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:269
msgid "Show PAL"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:254
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:257
msgid "Show Platforms"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:263
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:266
msgid "Show Regions"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:518
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:531
msgid "Show Statistics"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:277
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:280
msgid "Show Taiwan"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:268
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:271
msgid "Show USA"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:259
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:262
msgid "Show Wad"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:255
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:258
msgid "Show Wii"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:511
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:491
msgid "Show a confirmation box before stopping a game."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:512
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:492
msgid ""
"Show a message box when a potentially serious error has occurred.\n"
"Disabling this may avoid annoying and non-fatal messages, but it may also "
@@ -4313,11 +4418,11 @@ msgstr ""
msgid "Show first block"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:130
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:131
msgid "Show lag counter"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:513
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:493
msgid ""
"Show messages on the emulation screen area.\n"
"These messages include memory card writes, video backend and CPU "
@@ -4340,7 +4445,7 @@ msgstr ""
msgid "Show save title"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:97
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
msgid ""
"Show the number of frames rendered per second as a measure of emulation "
"speed.\n"
@@ -4348,54 +4453,42 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:279
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:282
msgid "Show unknown"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:100
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:105
msgid ""
"Show various statistics.\n"
"\n"
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:319
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:306
msgid "Sideways Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:300
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:280
msgid "Simplified Chinese"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:311
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:298
msgid "Size"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:715
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:696
msgid "Skip BIOS"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:315
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:316
msgid "Skip DCBZ clearing"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:492
-msgid "Skip Dest. Alpha Pass"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:454
msgid "Skip EFB Access from CPU"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
-msgid ""
-"Skip the destination alpha pass used in many games for various graphical "
-"effects.\n"
-"\n"
-"If unsure, leave this unchecked."
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:125
msgid ""
"Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\n"
"Sometimes also increases visual quality.\n"
@@ -4405,25 +4498,25 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:374
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:386
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:380
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:392
#, c-format
msgid "Slot %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:719
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:700
msgid "Slot A"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:720
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:701
msgid "Slot B"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:62
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:49
msgid "Snapshot"
msgstr ""
-#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:58
+#: Source/Plugins/Plugin_VideoSoftware/Src/SWmain.cpp:46
msgid "Software Renderer"
msgstr ""
@@ -4435,27 +4528,27 @@ msgid ""
"Do you really want to enable software rendering? If unsure, select 'No'."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:683
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:664
msgid "Sound Settings"
msgstr ""
-#: Source/Core/AudioCommon/Src/AudioCommon.cpp:77
+#: Source/Core/AudioCommon/Src/AudioCommon.cpp:64
#, c-format
msgid "Sound backend %s is not valid."
msgstr ""
-#: Source/Core/AudioCommon/Src/DSoundStream.cpp:59
+#: Source/Core/AudioCommon/Src/DSoundStream.cpp:46
#, c-format
msgid "Sound buffer creation failed: %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:31
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:18
msgid "Space"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:472
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:283
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:329
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:480
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:263
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:309
msgid "Spanish"
msgstr ""
@@ -4463,7 +4556,7 @@ msgstr ""
msgid "Speaker Volume:"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:87
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:92
msgid ""
"Specifies the resolution used to render at. A high resolution will improve "
"visual quality a lot but is also quite heavy on performance and might cause "
@@ -4475,63 +4568,63 @@ msgid ""
"If unsure, select 640x528."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:319
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:322
msgid "Speed up Disc Transfer Rate"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:243
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:230
msgid "Square Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:107
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:87
msgid "Standard Controller"
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:50
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:38
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:322
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:37
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:25
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
msgid "Start"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:197
msgid "Start &NetPlay"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:339
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:345
msgid "Start Re&cording"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:187
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:187
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:175
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:175
msgid "Start Recording"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:312
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:299
msgid "State"
msgstr ""
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:173
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:173
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:161
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:161
msgid "State Saves"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:108
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:88
msgid "Steering Wheel"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:53
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:57
msgid "Stick"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:420
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:425
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:183
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:183
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:325
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:419
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:431
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:171
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:171
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:328
msgid "Stop"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:91
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:96
msgid ""
"Store EFB copies in GPU texture objects.\n"
"This is not so accurate, but it works well enough for most games and gives a "
@@ -4540,143 +4633,153 @@ msgid ""
"If unsure, leave this checked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:275
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:283
msgid "Stretch to Window"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:43
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:47
msgid "Strum"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:78
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:65
msgid "Subtract"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:77
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:67
#, c-format
msgid "Successfully exported file to %s"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:56
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:43
msgid "Successfully imported save files"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:285
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:272
msgid "Swing"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:744
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:792
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:320
+msgid "Synchronize GPU thread"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:321
+msgid ""
+"Synchronizes the GPU and CPU threads to help prevent random freezes in Dual "
+"Core mode. (ON = Compatible, OFF = Fast)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:725
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:773
msgid "System Language:"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:191
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:185
msgid "TAIWAN"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:127
-#: Source/Core/DolphinWX/Src/TASInputDlg.h:32
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:128
+#: Source/Core/DolphinWX/Src/TASInputDlg.h:19
msgid "TAS Input"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:28
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:15
msgid "Tab"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:510
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:531
msgid "Tab split"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:37
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:41
msgid "Table Left"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:38
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:42
msgid "Table Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:355
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:427
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:193
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:193
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:361
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:181
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:181
msgid "Take Screenshot"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:109
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:89
msgid "TaruKonga (Bongos)"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:485
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:472
msgid "Test"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:434
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:444
msgid "Texture"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:451
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:461
msgid "Texture Cache"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:519
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:532
msgid "Texture Format Overlay"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:226
+#: Source/Core/Core/Src/CoreParameter.cpp:215
msgid "The WAD has been installed successfully"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:197
+#: Source/Core/Core/Src/ActionReplay.cpp:185
msgid "The address is invalid"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:509
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:496
msgid "The checksum was successfully fixed"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1242
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:1226
msgid "The chosen directory is already in the list"
msgstr ""
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1117
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1145
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1216
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1118
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1146
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1217
#, c-format
msgid ""
"The file %s already exists.\n"
"Do you wish to replace it?"
msgstr ""
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:51
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:38
#, c-format
msgid ""
"The file %s could not be opened for writing. Please check if it's already "
"opened by another program."
msgstr ""
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:44
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:31
#, c-format
msgid "The file %s was already open, the file header will not be written."
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:332
+#: Source/Core/Core/Src/Boot/Boot.cpp:320
#, c-format
msgid "The file you specified (%s) does not exist"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:628
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:666
msgid "The name can not be empty"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:620
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:658
msgid "The name can not contain the character ','"
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:142
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:129
msgid "The resulting decrypted AR code doesn't contain any lines."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:93
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:98
msgid ""
"The safer you adjust this, the less likely the emulator will be missing any "
"texture updates from RAM.\n"
@@ -4684,68 +4787,68 @@ msgid ""
"If unsure, use the rightmost value."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:445
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:432
msgid "The save you are trying to copy has an invalid file size"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:388
+#: Source/Core/DolphinWX/Src/Main.cpp:416
msgid ""
"The selected language is not supported by your system. Falling back to "
"system default."
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:43
+#: Source/Core/Core/Src/NetPlayClient.cpp:47
msgid "The server and client's NetPlay versions are incompatible!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:40
+#: Source/Core/Core/Src/NetPlayClient.cpp:44
msgid "The server is full!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:46
+#: Source/Core/Core/Src/NetPlayClient.cpp:50
msgid "The server responded: the game is currently running!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:49
+#: Source/Core/Core/Src/NetPlayClient.cpp:53
msgid "The server sent an unknown error message!"
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:119
+#: Source/Core/Core/Src/CoreParameter.cpp:108
#, c-format
msgid "The specified file \"%s\" does not exist"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:198
+#: Source/Core/Core/Src/ActionReplay.cpp:186
msgid "The value is invalid"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:642
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:623
msgid "Theme:"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:476
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp:463
msgid ""
"There must be a ticket for 00000001/00000002. Your NAND dump is probably "
"incomplete."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:307
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:308
msgid ""
"These settings override core Dolphin settings.\n"
"Undetermined means the game uses Dolphin's setting."
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:355
+#: Source/Core/Core/Src/ActionReplay.cpp:345
msgid ""
"This action replay simulator does not support codes that modify Action "
"Replay itself."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:525
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:505
msgid "This could cause slow down in Wii Menu and some games."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:113
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:118
msgid ""
"This feature allows you to change the game's camera.\n"
"Move the mouse while holding the right mouse button to pan and while holding "
@@ -4757,7 +4860,15 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:504
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:485
+msgid ""
+"This limits the game speed to the specified number of frames per second "
+"(full speed is 60 for NTSC and 50 for PAL). Alternatively, use Audio to "
+"throttle using the DSP (might fix audio clicks but can also cause constant "
+"noise depending on the game)."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:484
msgid ""
"This splits the Video and CPU threads, so they can be run on separate "
"cores.\n"
@@ -4765,75 +4876,75 @@ msgid ""
"cause occasional crashes/glitches."
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:286
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:287
msgid "This will let you Manually Edit the INI config file"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:249
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:254
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:236
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:241
msgid "Threshold"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:288
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:275
msgid "Tilt"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:628
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:304
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:622
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:291
msgid "Title"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:125
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:144
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:112
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:131
msgid "To"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:72
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
msgid "Toggle All Log Types"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:426
-#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:192
-#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:192
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:432
+#: Source/Core/DolphinWX/Src/HotkeyDlg.cpp:180
+#: Source/Core/DolphinWX/Src/GCMicDlg.cpp:180
msgid "Toggle Fullscreen"
msgstr ""
#: Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp:87
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:291
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:271
msgid "Top"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:301
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:281
msgid "Traditional Chinese"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:426
+#: Source/Core/Core/Src/Boot/Boot.cpp:414
msgid "Tried to load an unknown file type."
msgstr ""
-#: Source/Core/Core/Src/HW/GCPadEmu.cpp:80
+#: Source/Core/Core/Src/HW/GCPadEmu.cpp:67
msgid "Triggers"
msgstr ""
-#: Source/Core/Common/Src/SysConf.h:91 Source/Core/Common/Src/SysConf.h:114
+#: Source/Core/Common/Src/SysConf.h:78 Source/Core/Common/Src/SysConf.h:101
msgid "Trying to read from invalid SYSCONF"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:44
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp:31
msgid ""
"Trying to read from invalid SYSCONF\n"
"Wiimote bt ids are not available"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:330
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:310
msgid "Turkish"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:29
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Turntable.cpp:33
msgid "Turntable"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:71
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:58
msgid "Type"
msgstr ""
@@ -4841,31 +4952,31 @@ msgstr ""
msgid "UDP Port:"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:279
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:266
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:12
msgid "UDP Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:199
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:193
msgid "UNKNOWN"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:756
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:755
#, c-format
msgid "UNKNOWN_%02X"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:178
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:172
msgid "USA"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:225
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:214
msgid ""
"Unable to create patch from given values.\n"
"Entry not modified."
msgstr ""
-#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:124
+#: Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp:111
#, c-format
msgid ""
"Unable to parse line %lu of the entered AR code as a valid encrypted or "
@@ -4873,74 +4984,88 @@ msgid ""
"Would you like to ignore this line and continue parsing?"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:391
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:397
#, c-format
msgid "Undefined %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:163
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:164
msgid "Undo Load State"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:718
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:717
msgid "Unexpected 0x80 call? Aborting..."
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:215
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:202
msgid "Unknown"
msgstr ""
-#: Source/Core/Core/Src/HW/DVDInterface.cpp:971
+#: Source/Core/Core/Src/HW/DVDInterface.cpp:965
#, c-format
msgid "Unknown DVD command %08x - fatal error"
msgstr ""
-#: Source/Core/Common/Src/SysConf.cpp:145
+#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:444
+#, c-format
+msgid "Unknown command 0x%08x"
+msgstr ""
+
+#: Source/Core/Common/Src/SysConf.cpp:132
#, c-format
msgid "Unknown entry type %i in SYSCONF (%s@%x)!"
msgstr ""
-#: Source/Core/Core/Src/NetPlayClient.cpp:228
+#: Source/Core/Core/Src/NetPlayClient.cpp:232
#, c-format
msgid "Unknown message received with id : %d"
msgstr ""
-#: Source/Core/Core/Src/NetPlayServer.cpp:504
+#: Source/Core/Core/Src/NetPlayServer.cpp:508
#, c-format
msgid "Unknown message with id:%d received from player:%d Kicking player!"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:274
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:56
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:261
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:43
msgid "Up"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:108
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:95
#: Source/Core/DolphinWX/Src/UDPConfigDiag.cpp:17
msgid "Update"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:320
+#: Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp:307
msgid "Upright Wiimote"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:777
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:758
msgid "Use EuRGB60 Mode (PAL60)"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:286
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:294
msgid "Use Fullscreen"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:575
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:563
msgid "Use Hex"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:600
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:580
msgid "Use Panic Handlers"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:117
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:89
+msgid ""
+"Use a hacked upload strategy to stream vertices.\n"
+"This usually speed up, but is forbidden by OpenGL specification and may "
+"causes heavy glitches.\n"
+"\n"
+"If unsure, leave this unchecked."
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:122
msgid ""
"Use multiple threads to decode textures.\n"
"Might result in a speedup (especially on CPUs with more than two cores).\n"
@@ -4948,7 +5073,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:126
msgid ""
"Usually if shader compilation fails, an error message is displayed.\n"
"However, one may skip the popups to allow interruption free gameplay by "
@@ -4957,53 +5082,57 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:539
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:552
msgid "Utility"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:285
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:293
msgid "V-Sync"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:209
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:318
+msgid "VBeam Speed Hack"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:196
msgid "Value"
msgstr ""
-#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:73
+#: Source/Core/DolphinWX/Src/PatchAddEdit.cpp:60
msgid "Value:"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:572
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:560
msgid "Value: "
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:51
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:38
msgid "Verbosity"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:377
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:381
msgid "Video"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:476
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:486
msgid "Virtual"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:689
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:670
msgid "Volume"
msgstr ""
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:498
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:527
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:488
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:517
#, c-format
msgid "WAD installation failed: error creating %s"
msgstr ""
-#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:547
+#: Source/Core/DiscIO/Src/NANDContentLoader.cpp:537
msgid "WAD installation failed: error creating ticket"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:80
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:84
msgid ""
"Wait for vertical blanks in order to reduce tearing.\n"
"Decreases performance if emulation speed is below 100%.\n"
@@ -5011,25 +5140,25 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/Common/Src/MsgHandler.cpp:67
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
+#: Source/Core/Common/Src/MsgHandler.cpp:53
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:33
#: Source/Core/DolphinWX/Src/VideoConfigDiag.h:85
msgid "Warning"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:291
+#: Source/Core/Core/Src/Boot/Boot.cpp:279
msgid "Warning - starting DOL in wrong console mode!"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:341
+#: Source/Core/Core/Src/Boot/Boot.cpp:329
msgid "Warning - starting ELF in wrong console mode!"
msgstr ""
-#: Source/Core/Core/Src/Boot/Boot.cpp:221
+#: Source/Core/Core/Src/Boot/Boot.cpp:209
msgid "Warning - starting ISO in wrong console mode!"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:519
+#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:512
#, c-format
msgid ""
"Warning! it is advised to backup all files in the folder:\n"
@@ -5037,7 +5166,7 @@ msgid ""
"Do you wish to continue?"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemcardManager.cpp:585
+#: Source/Core/DolphinWX/Src/MemcardManager.cpp:578
#, c-format
msgid ""
"Warning: This will overwrite any existing saves that are in the folder:\n"
@@ -5046,7 +5175,7 @@ msgid ""
"Continue?"
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:844
+#: Source/Core/Core/Src/Movie.cpp:835
#, c-format
msgid ""
"Warning: You loaded a save that's after the end of the current movie. (byte "
@@ -5054,7 +5183,7 @@ msgid ""
"load this state with read-only mode off."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:861
+#: Source/Core/Core/Src/Movie.cpp:852
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You "
@@ -5062,7 +5191,7 @@ msgid ""
"only mode off. Otherwise you'll probably get a desync."
msgstr ""
-#: Source/Core/Core/Src/Movie.cpp:870
+#: Source/Core/Core/Src/Movie.cpp:861
#, c-format
msgid ""
"Warning: You loaded a save whose movie mismatches on frame %d. You should "
@@ -5081,49 +5210,49 @@ msgid ""
"%d, L=%d, R=%d, LT=%d, RT=%d, AnalogX=%d, AnalogY=%d, CX=%d, CY=%d"
msgstr ""
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:106
-#: Source/Core/AudioCommon/Src/WaveFile.cpp:129
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:93
+#: Source/Core/AudioCommon/Src/WaveFile.cpp:116
msgid "WaveFileWriter - file not open."
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:56
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Guitar.cpp:60
msgid "Whammy"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:404
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:408
msgid "Widescreen Hack"
msgstr ""
-#: Source/Core/InputCommon/Src/ControllerEmu.cpp:312
+#: Source/Core/InputCommon/Src/ControllerEmu.cpp:299
msgid "Width"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:555
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:535
msgid "Wii"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:368
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:372
msgid "Wii Console"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:844
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:825
msgid "Wii NAND Root:"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:191
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:194
msgid "Wii Save Import"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1243
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1270
msgid "Wii save files (*.bin)|*.bin"
msgstr ""
-#: Source/Core/DiscIO/Src/WiiWad.cpp:82
+#: Source/Core/DiscIO/Src/WiiWad.cpp:69
msgid "WiiWAD: Could not read from file"
msgstr ""
-#: Source/Core/Core/Src/HW/Wiimote.cpp:17
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/Core/Src/HW/Wiimote.cpp:20
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote"
msgstr ""
@@ -5132,7 +5261,7 @@ msgstr ""
msgid "Wiimote %i"
msgstr ""
-#: Source/Core/DolphinWX/Src/Main.cpp:628
+#: Source/Core/DolphinWX/Src/Main.cpp:656
msgid "Wiimote Connected"
msgstr ""
@@ -5140,7 +5269,7 @@ msgstr ""
msgid "Wiimote Motor"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:433
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:439
msgid "Wiimote settings"
msgstr ""
@@ -5148,105 +5277,123 @@ msgstr ""
msgid "Wiimotes"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:134
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:121
msgid "Windows Left"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:136
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:123
msgid "Windows Menu"
msgstr ""
-#: Source/Core/DolphinWX/Src/WXInputBase.cpp:135
+#: Source/Core/DolphinWX/Src/WXInputBase.cpp:122
msgid "Windows Right"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogWindow.cpp:131
+#: Source/Core/DolphinWX/Src/LogWindow.cpp:124
msgid "Word Wrap"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameTools.cpp:1298
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:864
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1089
-#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1225
+#: Source/Core/DolphinWX/Src/FrameTools.cpp:1325
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:880
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1090
+#: Source/Core/DolphinWX/Src/GameListCtrl.cpp:1226
msgid "Working..."
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:59
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:338
+msgid "Write memcards (GC)"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:46
msgid "Write to Console"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:67
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:54
msgid "Write to Debugger"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:57
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:44
msgid "Write to File"
msgstr ""
-#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:61
+#: Source/Core/DolphinWX/Src/LogConfigWindow.cpp:48
msgid "Write to Window"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:60
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:47
#, c-format
msgid "XAudio2 CreateSourceVoice failed: %#X"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:114
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:101
#, c-format
msgid "XAudio2 init failed: %#X"
msgstr ""
-#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:124
+#: Source/Core/AudioCommon/Src/XAudio2Stream.cpp:111
#, c-format
msgid "XAudio2 master voice creation failed: %#X"
msgstr ""
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:766
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:765
msgid "XF reg"
msgstr ""
-#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:21
+#: Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Drums.cpp:25
msgid "Yellow"
msgstr ""
-#: Source/Core/Core/Src/DSP/DSPCore.cpp:107
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:120
msgid ""
-"You are using free dsp roms made by Dolphin Team.\n"
-"Only Zelda ucode games will work correctly with them.\n"
+"You are using a free DSP ROM made by the Dolphin Team.\n"
+"All Wii games will work correctly, and most GC games should also work fine, "
+"but the GBA/IPL/CARD UCodes will not work.\n"
msgstr ""
-#: Source/Core/DolphinWX/Src/FrameAui.cpp:73
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:116
+msgid ""
+"You are using an old free DSP ROM made by the Dolphin Team.\n"
+"Only games using the Zelda UCode will work correctly.\n"
+msgstr ""
+
+#: Source/Core/DolphinWX/Src/FrameAui.cpp:63
msgid "You can't close panes that have pages in them."
msgstr ""
-#: Source/Core/DolphinWX/Src/NetWindow.cpp:207
+#: Source/Core/DolphinWX/Src/NetWindow.cpp:210
msgid "You must choose a game!!"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:605
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:593
msgid "You must enter a name!"
msgstr ""
-#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:450
+#: Source/Core/DolphinWX/Src/CheatsWindow.cpp:438
msgid "You must enter a valid decimal, hexadecimal or octal value."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:603
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:591
msgid "You must enter a valid profile name."
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:936
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:917
msgid "You must restart Dolphin in order for the change to take effect."
msgstr ""
-#: Source/Core/Core/Src/CoreParameter.cpp:175
+#: Source/Core/Core/Src/DSP/DSPCore.cpp:109
+msgid ""
+"Your DSP ROMs have incorrect hashes.\n"
+"Would you like to stop now to fix the problem?\n"
+"If you select \"No\", audio might be garbled."
+msgstr ""
+
+#: Source/Core/Core/Src/CoreParameter.cpp:164
msgid ""
"Your GCM/ISO file seems to be invalid (invalid country).\n"
"Continue with PAL region?"
msgstr ""
-#: Source/Core/Common/Src/SysConf.cpp:58
+#: Source/Core/Common/Src/SysConf.cpp:45
#, c-format
msgid ""
"Your SYSCONF file is the wrong size.\n"
@@ -5254,25 +5401,25 @@ msgid ""
"Do you want to generate a new one?"
msgstr ""
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:331
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:334
msgid "ZTP hack"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:387
+#: Source/Core/Core/Src/ActionReplay.cpp:377
msgid "Zero 3 code not supported"
msgstr ""
-#: Source/Core/Core/Src/ActionReplay.cpp:408
+#: Source/Core/Core/Src/ActionReplay.cpp:398
#, c-format
msgid "Zero code unknown to dolphin: %08x"
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:436
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:460
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:423
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:447
msgid "[ waiting ]"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:102
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:107
msgid ""
"[BROKEN]\n"
"Highlight regions the EFB was copied from.\n"
@@ -5280,11 +5427,11 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:91
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:78
msgid "[Custom]"
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:115
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:120
msgid ""
"[EXPERIMENTAL]\n"
"Aims to speed up emulation by offloading texture decoding to the GPU using "
@@ -5295,7 +5442,7 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:116
+#: Source/Core/DolphinWX/Src/VideoConfigDiag.cpp:121
msgid ""
"[EXPERIMENTAL]\n"
"Speeds up emulation a bit by caching display lists.\n"
@@ -5304,58 +5451,35 @@ msgid ""
"If unsure, leave this unchecked."
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:508
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:495
msgid "^ ADD"
msgstr ""
-#: Source/Core/DolphinWX/Src/ConfigMain.cpp:820
+#: Source/Core/DolphinWX/Src/ConfigMain.cpp:801
msgid "apploader (.img)"
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:185
-msgid "failed to read bk header"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:375
-#, c-format
-msgid "failed to read data from file: %s"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:97
-msgid "failed to read header"
-msgstr ""
-
-#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:285
+#: Source/Core/Core/Src/PowerPC/JitInterface.cpp:272
#, c-format
msgid "iCacheJIT: Reading Opcode from %x. Please report."
msgstr ""
-#: Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp:108
-#, c-format
-msgid "not a wii save or read failure for file header size %x"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:935
+#: Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp:936
msgid "s"
msgstr ""
-#: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp:457
-#, c-format
-msgid "unknown cmd 0x%08x"
-msgstr ""
-
-#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1110
+#: Source/Core/DolphinWX/Src/ISOProperties.cpp:1136
msgid "wxExecute returned -1 on application run!"
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:56
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:43
msgid "zFar Correction: "
msgstr ""
-#: Source/Core/DolphinWX/Src/PHackSettings.cpp:51
+#: Source/Core/DolphinWX/Src/PHackSettings.cpp:38
msgid "zNear Correction: "
msgstr ""
-#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:493
+#: Source/Core/DolphinWX/Src/InputConfigDiag.cpp:480
msgid "| OR"
msgstr ""
diff --git a/Languages/po/hu.po b/Languages/po/hu.po
index addc5ec0f2..6aa0b790bc 100644
--- a/Languages/po/hu.po
+++ b/Languages/po/hu.po
@@ -3,36 +3,38 @@
# This file is distributed under the same license as the dolphin-emu package.
#
# Translators:
-# Delirious , 2011.
+# Delirious