Merge branch 'feature/merge-ryzomcore-to-develop+CI' into 'develop'

Feature/merge ryzomcore to develop+ci



See merge request !22
This commit is contained in:
Zatalyz 2016-08-14 20:47:52 +00:00
commit 7e1800a9fe
234 changed files with 42490 additions and 1959 deletions

View file

@ -61,7 +61,7 @@ SET(NL_VERSION_MAJOR 0)
SET(NL_VERSION_MINOR 12) SET(NL_VERSION_MINOR 12)
SET(NL_VERSION_PATCH 0) SET(NL_VERSION_PATCH 0)
SET(YEAR "2004-${CURRENT_YEAR}") SET(YEAR "2004-${CURRENT_YEAR}")
SET(AUTHOR "Winchgate and The Ryzom Core Community") SET(AUTHOR "Winch Gate and The Ryzom Core Community")
SET(RYZOM_VERSION_MAJOR 2) SET(RYZOM_VERSION_MAJOR 2)
SET(RYZOM_VERSION_MINOR 9) SET(RYZOM_VERSION_MINOR 9)

View file

@ -22,13 +22,8 @@ IF(NOT TARGET_CPU)
SET(TARGET_CPU "armv7") SET(TARGET_CPU "armv7")
ENDIF() ENDIF()
SET(ARMV7_HARD_FLOAT OFF)
IF(TARGET_CPU STREQUAL "armv7") IF(TARGET_CPU STREQUAL "armv7")
SET(LIBRARY_ARCHITECTURE "armeabi-v7a") SET(LIBRARY_ARCHITECTURE "armeabi-v7a")
IF(ARMV7_HARD_FLOAT)
SET(LIBRARY_ARCHITECTURE "${LIBRARY_ARCHITECTURE}-hard")
ENDIF()
SET(CMAKE_SYSTEM_PROCESSOR "armv7") SET(CMAKE_SYSTEM_PROCESSOR "armv7")
SET(TOOLCHAIN_ARCH "arm") SET(TOOLCHAIN_ARCH "arm")
SET(GCC_TOOLCHAIN_PREFIX "arm-linux-androideabi") SET(GCC_TOOLCHAIN_PREFIX "arm-linux-androideabi")
@ -123,6 +118,12 @@ MACRO(SEARCH_TOOLCHAIN _COMPILER)
ENDFOREACH() ENDFOREACH()
ENDIF() ENDIF()
# try prefixes without version
SET(_TOOLCHAIN_WITHOUT_VERSION "${NDK_ROOT}/toolchains/${${_COMPILER}_TOOLCHAIN_PREFIX}")
IF(EXISTS ${_TOOLCHAIN_WITHOUT_VERSION})
LIST(APPEND ${_COMPILER}_TOOLCHAIN_VERSIONS "default")
ENDIF()
IF(NOT ${_COMPILER}_TOOLCHAIN_VERSIONS) IF(NOT ${_COMPILER}_TOOLCHAIN_VERSIONS)
MESSAGE(FATAL_ERROR "No Android ${_COMPILER} toolchain found in default search path ${NDK_ROOT}/toolchains") MESSAGE(FATAL_ERROR "No Android ${_COMPILER} toolchain found in default search path ${NDK_ROOT}/toolchains")
ENDIF() ENDIF()
@ -136,7 +137,15 @@ MACRO(SEARCH_TOOLCHAIN _COMPILER)
LIST(GET ${_COMPILER}_TOOLCHAIN_VERSIONS 0 ${_COMPILER}_TOOLCHAIN_VERSION) LIST(GET ${_COMPILER}_TOOLCHAIN_VERSIONS 0 ${_COMPILER}_TOOLCHAIN_VERSION)
ENDIF() ENDIF()
MESSAGE(STATUS "TOOLCHAIN_PREFIX = ${${_COMPILER}_TOOLCHAIN_VERSION}")
IF("${${_COMPILER}_TOOLCHAIN_VERSION}" STREQUAL "default")
MESSAGE(STATUS "default")
SET(${_COMPILER}_TOOLCHAIN_ROOT "${NDK_ROOT}/toolchains/${${_COMPILER}_TOOLCHAIN_PREFIX}/prebuilt/${TOOLCHAIN_HOST}")
ELSE()
MESSAGE(STATUS "not default")
SET(${_COMPILER}_TOOLCHAIN_ROOT "${NDK_ROOT}/toolchains/${${_COMPILER}_TOOLCHAIN_PREFIX}-${${_COMPILER}_TOOLCHAIN_VERSION}/prebuilt/${TOOLCHAIN_HOST}") SET(${_COMPILER}_TOOLCHAIN_ROOT "${NDK_ROOT}/toolchains/${${_COMPILER}_TOOLCHAIN_PREFIX}-${${_COMPILER}_TOOLCHAIN_VERSION}/prebuilt/${TOOLCHAIN_HOST}")
ENDIF()
IF(NOT EXISTS "${${_COMPILER}_TOOLCHAIN_ROOT}") IF(NOT EXISTS "${${_COMPILER}_TOOLCHAIN_ROOT}")
FILE(GLOB _TOOLCHAIN_PREFIXES "${${_COMPILER}_TOOLCHAIN_ROOT}*") FILE(GLOB _TOOLCHAIN_PREFIXES "${${_COMPILER}_TOOLCHAIN_ROOT}*")
@ -214,6 +223,14 @@ IF(CLANG)
SET_TOOLCHAIN_BINARY_LLVM(CMAKE_ASM_COMPILER llvm-as) SET_TOOLCHAIN_BINARY_LLVM(CMAKE_ASM_COMPILER llvm-as)
SET_TOOLCHAIN_BINARY_LLVM(CMAKE_AR llvm-ar) SET_TOOLCHAIN_BINARY_LLVM(CMAKE_AR llvm-ar)
SET_TOOLCHAIN_BINARY_LLVM(CMAKE_LINKER clang++) SET_TOOLCHAIN_BINARY_LLVM(CMAKE_LINKER clang++)
IF(NOT EXISTS "${CMAKE_ASM_COMPILER}")
SET_TOOLCHAIN_BINARY_GCC(CMAKE_ASM_COMPILER as)
ENDIF()
IF(NOT EXISTS "${CMAKE_AR}")
SET_TOOLCHAIN_BINARY_GCC(CMAKE_AR ar)
ENDIF()
ELSE() ELSE()
MESSAGE(STATUS "Using GCC compiler") MESSAGE(STATUS "Using GCC compiler")

View file

@ -124,7 +124,7 @@ IF(WITH_LUA51)
IF(WITH_STLPORT) IF(WITH_STLPORT)
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua51) LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua51)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua51d) LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua51d)
ENDIF(WITH_STLPORT) ENDIF()
LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua51) LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua51)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua51d) LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua51d)
@ -134,7 +134,7 @@ IF(WITH_LUA50)
IF(WITH_STLPORT) IF(WITH_STLPORT)
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua50) LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua50)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua50d) LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua50d)
ENDIF(WITH_STLPORT) ENDIF()
LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua50) LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua50)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua50d) LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua50d)
@ -195,7 +195,7 @@ IF(LUABIND_INCLUDE_DIR AND Boost_INCLUDE_DIR)
SET(LUABIND_FOUND TRUE) SET(LUABIND_FOUND TRUE)
SET(LUABIND_LIBRARIES ${LUABIND_LIBRARY_DEBUG}) SET(LUABIND_LIBRARIES ${LUABIND_LIBRARY_DEBUG})
ENDIF(LUABIND_LIBRARY_RELEASE AND LUABIND_LIBRARY_DEBUG) ENDIF(LUABIND_LIBRARY_RELEASE AND LUABIND_LIBRARY_DEBUG)
ENDIF(LUABIND_INCLUDE_DIR AND Boost_INCLUDE_DIR) ENDIF()
IF(LUABIND_FOUND) IF(LUABIND_FOUND)
SET(LUABIND_INCLUDE_DIR ${LUABIND_INCLUDE_DIR} ${Boost_INCLUDE_DIR}) SET(LUABIND_INCLUDE_DIR ${LUABIND_INCLUDE_DIR} ${Boost_INCLUDE_DIR})
@ -203,17 +203,17 @@ IF(LUABIND_FOUND)
FIND_FILE(LUABIND_VERSION_FILE luabind/version.hpp PATHS ${LUABIND_INCLUDE_DIR}) FIND_FILE(LUABIND_VERSION_FILE luabind/version.hpp PATHS ${LUABIND_INCLUDE_DIR})
IF(LUABIND_VERSION_FILE) IF(LUABIND_VERSION_FILE)
SET(LUABIND_DEFINITIONS "-DHAVE_LUABIND_VERSION") SET(LUABIND_DEFINITIONS "-DHAVE_LUABIND_VERSION")
ENDIF(LUABIND_VERSION_FILE) ENDIF()
FIND_CORRECT_LUA_VERSION() FIND_CORRECT_LUA_VERSION()
IF(NOT Luabind_FIND_QUIETLY) IF(NOT Luabind_FIND_QUIETLY)
MESSAGE(STATUS "Found Luabind: ${LUABIND_LIBRARIES}") MESSAGE(STATUS "Found Luabind: ${LUABIND_LIBRARIES}")
ENDIF(NOT Luabind_FIND_QUIETLY) ENDIF(NOT Luabind_FIND_QUIETLY)
ELSE(LUABIND_FOUND) ELSE()
IF(NOT Luabind_FIND_QUIETLY) IF(NOT Luabind_FIND_QUIETLY)
MESSAGE(STATUS "Warning: Unable to find Luabind!") MESSAGE(STATUS "Warning: Unable to find Luabind!")
ENDIF(NOT Luabind_FIND_QUIETLY) ENDIF()
ENDIF(LUABIND_FOUND) ENDIF(LUABIND_FOUND)
MARK_AS_ADVANCED(LUABIND_LIBRARY_RELEASE LUABIND_LIBRARY_DEBUG Boost_LIB_DIAGNOSTIC_DEFINITIONS) MARK_AS_ADVANCED(LUABIND_LIBRARY_RELEASE LUABIND_LIBRARY_DEBUG Boost_LIB_DIAGNOSTIC_DEFINITIONS)

View file

@ -366,20 +366,35 @@ FIND_PATH(WINSDK_LIBRARY_DIR ComCtl32.lib
) )
IF(WINSDK_UCRT_DIR) IF(WINSDK_UCRT_DIR)
# determine exact UCRT version
SET(WINSDK_UCRT_INCLUDE_ROOT_DIR ${WINSDK_UCRT_DIR}/Include)
SET(WINSDK_UCRT_LIB_ROOT_DIR ${WINSDK_UCRT_DIR}/Lib)
FILE(GLOB UCRT_SUBDIRS RELATIVE ${WINSDK_UCRT_INCLUDE_ROOT_DIR} ${WINSDK_UCRT_INCLUDE_ROOT_DIR}/*)
SET(UCRT_VERSION)
FOREACH(UCRT_SUBDIR ${UCRT_SUBDIRS})
IF(NOT UCRT_VERSION OR UCRT_SUBDIR VERSION_GREATER UCRT_VERSION)
SET(UCRT_VERSION ${UCRT_SUBDIR})
ENDIF()
ENDFOREACH()
IF(UCRT_VERSION)
MESSAGE(STATUS "Using Windows UCRT ${UCRT_VERSION}")
# directory where UCRT headers are found # directory where UCRT headers are found
FIND_PATH(WINSDK_UCRT_INCLUDE_DIR corecrt.h FIND_PATH(WINSDK_UCRT_INCLUDE_DIR corecrt.h
HINTS HINTS
${WINSDK_UCRT_DIR}/Include/10.0.10056.0/ucrt ${WINSDK_UCRT_INCLUDE_ROOT_DIR}/${UCRT_VERSION}/ucrt
${WINSDK_UCRT_DIR}/Include/10.0.10150.0/ucrt
) )
# directory where UCRT libraries are found # directory where UCRT libraries are found
FIND_PATH(WINSDK_UCRT_LIBRARY_DIR ucrt.lib FIND_PATH(WINSDK_UCRT_LIBRARY_DIR ucrt.lib
HINTS HINTS
${WINSDK_UCRT_DIR}/Lib/10.0.10056.0/ucrt/${WINSDK8_SUFFIX} ${WINSDK_UCRT_LIB_ROOT_DIR}/${UCRT_VERSION}/ucrt/${WINSDK8_SUFFIX}
${WINSDK_UCRT_DIR}/Lib/10.0.10150.0/ucrt/${WINSDK8_SUFFIX}
) )
ENDIF() ENDIF()
ENDIF()
# signtool is used to sign executables # signtool is used to sign executables
FIND_PROGRAM(WINSDK_SIGNTOOL signtool FIND_PROGRAM(WINSDK_SIGNTOOL signtool

View file

@ -177,26 +177,26 @@ ENDIF()
# set the architecture for iOS - using ARCHS_STANDARD_32_BIT sets armv7,armv7s and appears to be XCode's standard. # set the architecture for iOS - using ARCHS_STANDARD_32_BIT sets armv7,armv7s and appears to be XCode's standard.
# The other value that works is ARCHS_UNIVERSAL_IPHONE_OS but that sets armv7 only # The other value that works is ARCHS_UNIVERSAL_IPHONE_OS but that sets armv7 only
IF(ARCHS) IF(ARCHS)
SET(CMAKE_OSX_ARCHITECTURES ${ARCHS} CACHE string "Build architecture for iOS") SET(CMAKE_OSX_ARCHITECTURES ${ARCHS} CACHE STRING "Build architecture for iOS")
ENDIF() ENDIF()
# Set the find root to the iOS developer roots and to user defined paths # Set the find root to the iOS developer roots and to user defined paths
set (CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_IOS_SDK_ROOT} ${CMAKE_PREFIX_PATH} ${CMAKE_INSTALL_PREFIX} $ENV{EXTERNAL_IOS_PATH} CACHE string "iOS find search path root") SET(CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_IOS_SDK_ROOT} ${CMAKE_PREFIX_PATH} ${CMAKE_INSTALL_PREFIX} ${CMAKE_SOURCE_DIR}/external $ENV{EXTERNAL_IOS_PATH} CACHE STRING "iOS find search path root")
# default to searching for frameworks first # default to searching for frameworks first
set (CMAKE_FIND_FRAMEWORK FIRST) SET(CMAKE_FIND_FRAMEWORK FIRST)
# set up the default search directories for frameworks # set up the default search directories for frameworks
set (CMAKE_SYSTEM_FRAMEWORK_PATH SET(CMAKE_SYSTEM_FRAMEWORK_PATH
${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks ${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks
${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks ${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks
${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks ${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks
) )
# only search the iOS sdks, not the remainder of the host filesystem # only search the iOS sdks, not the remainder of the host filesystem
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
# determinate location for bin utils based on CMAKE_FIND_ROOT_PATH # determinate location for bin utils based on CMAKE_FIND_ROOT_PATH
include(CMakeFindBinUtils) include(CMakeFindBinUtils)

View file

@ -246,11 +246,12 @@ MACRO(NL_SETUP_DEFAULT_OPTIONS)
### ###
OPTION(WITH_SYMBOLS "Keep debug symbols in binaries" OFF) OPTION(WITH_SYMBOLS "Keep debug symbols in binaries" OFF)
IF(WIN32) # only enable STLport for VC++ 2010 and less
IF(WIN32 AND MSVC_VERSION LESS 1600)
OPTION(WITH_STLPORT "With STLport support." ON ) OPTION(WITH_STLPORT "With STLport support." ON )
ELSE(WIN32) ELSE()
OPTION(WITH_STLPORT "With STLport support." OFF) OPTION(WITH_STLPORT "With STLport support." OFF)
ENDIF(WIN32) ENDIF()
OPTION(BUILD_DASHBOARD "Build to the CDash dashboard" OFF) OPTION(BUILD_DASHBOARD "Build to the CDash dashboard" OFF)
@ -321,7 +322,7 @@ MACRO(NL_SETUP_RYZOM_DEFAULT_OPTIONS)
OPTION(WITH_RYZOM_CLIENT "Build Ryzom Core Client" ON ) OPTION(WITH_RYZOM_CLIENT "Build Ryzom Core Client" ON )
OPTION(WITH_RYZOM_TOOLS "Build Ryzom Core Tools" ON ) OPTION(WITH_RYZOM_TOOLS "Build Ryzom Core Tools" ON )
OPTION(WITH_RYZOM_SERVER "Build Ryzom Core Services" ON ) OPTION(WITH_RYZOM_SERVER "Build Ryzom Core Services" ON )
OPTION(WITH_RYZOM_SOUND "Enable Ryzom Core Sound" ON ) OPTION(WITH_RYZOM_INSTALLER "Build Ryzom Installer" OFF)
### ###
# Optional support # Optional support
@ -534,31 +535,31 @@ MACRO(NL_SETUP_BUILD)
# without inlining it's unusable, use custom optimizations again # without inlining it's unusable, use custom optimizations again
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}") SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
ELSEIF(MSVC12) ELSEIF(MSVC12)
ADD_PLATFORM_FLAGS("/Gy- /MP") ADD_PLATFORM_FLAGS("/Gy- /MP /Zm1000")
# /Ox is working with VC++ 2013, but custom optimizations don't exist # /Ox is working with VC++ 2013, but custom optimizations don't exist
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}") SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
# without inlining it's unusable, use custom optimizations again # without inlining it's unusable, use custom optimizations again
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}") SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
ELSEIF(MSVC11) ELSEIF(MSVC11)
ADD_PLATFORM_FLAGS("/Gy- /MP") ADD_PLATFORM_FLAGS("/Gy- /MP /Zm1000")
# /Ox is working with VC++ 2012, but custom optimizations don't exist # /Ox is working with VC++ 2012, but custom optimizations don't exist
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}") SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
# without inlining it's unusable, use custom optimizations again # without inlining it's unusable, use custom optimizations again
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}") SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
ELSEIF(MSVC10) ELSEIF(MSVC10)
ADD_PLATFORM_FLAGS("/Gy- /MP") ADD_PLATFORM_FLAGS("/Gy- /MP /Zm1000")
# /Ox is working with VC++ 2010, but custom optimizations don't exist # /Ox is working with VC++ 2010, but custom optimizations don't exist
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}") SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
# without inlining it's unusable, use custom optimizations again # without inlining it's unusable, use custom optimizations again
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}") SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
ELSEIF(MSVC90) ELSEIF(MSVC90)
ADD_PLATFORM_FLAGS("/Gy- /MP") ADD_PLATFORM_FLAGS("/Gy- /MP /Zm1000")
# don't use a /O[012x] flag if you want custom optimizations # don't use a /O[012x] flag if you want custom optimizations
SET(RELEASE_CFLAGS "/Ob2 /Oi /Ot /Oy /GT /GF /GS- ${RELEASE_CFLAGS}") SET(RELEASE_CFLAGS "/Ob2 /Oi /Ot /Oy /GT /GF /GS- ${RELEASE_CFLAGS}")
# without inlining it's unusable, use custom optimizations again # without inlining it's unusable, use custom optimizations again
SET(DEBUG_CFLAGS "/Ob1 /GF- ${DEBUG_CFLAGS}") SET(DEBUG_CFLAGS "/Ob1 /GF- ${DEBUG_CFLAGS}")
ELSEIF(MSVC80) ELSEIF(MSVC80)
ADD_PLATFORM_FLAGS("/Gy- /Wp64") ADD_PLATFORM_FLAGS("/Gy- /Wp64 /Zm1000")
# don't use a /O[012x] flag if you want custom optimizations # don't use a /O[012x] flag if you want custom optimizations
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}") SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
# without inlining it's unusable, use custom optimizations again # without inlining it's unusable, use custom optimizations again
@ -567,7 +568,7 @@ MACRO(NL_SETUP_BUILD)
MESSAGE(FATAL_ERROR "Can't determine compiler version ${MSVC_VERSION}") MESSAGE(FATAL_ERROR "Can't determine compiler version ${MSVC_VERSION}")
ENDIF(MSVC14) ENDIF(MSVC14)
ADD_PLATFORM_FLAGS("/D_CRT_SECURE_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /Zm1000 /wd4250") ADD_PLATFORM_FLAGS("/D_CRT_SECURE_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /wd4250")
IF(TARGET_X64) IF(TARGET_X64)
# Fix a bug with Intellisense # Fix a bug with Intellisense

View file

@ -163,7 +163,7 @@ public:
/** There is (OrderS/2+1) * (OrderT/2+1) tiles light influence. /** There is (OrderS/2+1) * (OrderT/2+1) tiles light influence.
* It indicates which static pointLight influence each corner of a TessBlock (block of 2*2 tiles). * It indicates which static pointLight influence each corner of a TessBlock (block of 2*2 tiles).
* *
* If size()==0, suppose no light influence. but CZone::retrieve() always return a * If empty(), suppose no light influence. but CZone::retrieve() always return a
* size() == (OrderS/2+1) * (OrderT/2+1). * size() == (OrderS/2+1) * (OrderT/2+1).
* *
* They are stored in line first order, from S=0 to 1, and T=0 to 1. * They are stored in line first order, from S=0 to 1, and T=0 to 1.

View file

@ -39,7 +39,6 @@ namespace NLGUI
class CGroupParagraph; class CGroupParagraph;
extern std::string CurrentCookie; extern std::string CurrentCookie;
extern std::string HTTPCurrentDomain;
// HTML group // HTML group
/** /**
@ -78,7 +77,7 @@ namespace NLGUI
class CStyleParams class CStyleParams
{ {
public: public:
CStyleParams () : TextColor(255,255,255,255) CStyleParams () : FontFamily(""), TextColor(255,255,255,255)
{ {
FontSize=10; FontSize=10;
FontWeight=400; FontWeight=400;
@ -93,6 +92,7 @@ namespace NLGUI
uint FontSize; uint FontSize;
uint FontWeight; uint FontWeight;
bool FontOblique; bool FontOblique;
std::string FontFamily;
NLMISC::CRGBA TextColor; NLMISC::CRGBA TextColor;
bool Underlined; bool Underlined;
bool StrikeThrough; bool StrikeThrough;
@ -282,9 +282,6 @@ namespace NLGUI
// A new text block has been parsed // A new text block has been parsed
virtual void addText (const char * buf, int len); virtual void addText (const char * buf, int len);
// A link has been parsed
virtual void addLink (uint element_number, const std::vector<bool> &present, const std::vector<const char *> &value);
// A new begin HTML element has been parsed (<IMG> for exemple) // A new begin HTML element has been parsed (<IMG> for exemple)
virtual void beginElement (uint element_number, const std::vector<bool> &present, const std::vector<const char *> &value); virtual void beginElement (uint element_number, const std::vector<bool> &present, const std::vector<const char *> &value);
@ -376,6 +373,7 @@ namespace NLGUI
std::string _URL; std::string _URL;
// Current URL // Current URL
std::string _DocumentUrl; std::string _DocumentUrl;
std::string _DocumentDomain;
// Valid base href was found // Valid base href was found
bool _IgnoreBaseUrlTag; bool _IgnoreBaseUrlTag;
// Fragment from loading url // Fragment from loading url
@ -511,6 +509,15 @@ namespace NLGUI
return _GlobalColor.back(); return _GlobalColor.back();
} }
// Current font name
std::vector<std::string> _FontFamily;
inline const char* getFontFamily() const
{
if (_FontFamily.empty())
return "";
return _FontFamily.back().c_str();
}
// Current font size // Current font size
std::vector<uint> _FontSize; std::vector<uint> _FontSize;
inline uint getFontSize() const inline uint getFontSize() const

View file

@ -51,7 +51,8 @@ namespace NLGUI
public: public:
std::string scheme; std::string scheme;
std::string domain; std::string authority;
std::string host;
std::string path; std::string path;
std::string query; std::string query;
std::string hash; std::string hash;

View file

@ -586,8 +586,12 @@ namespace NLGUI
static NL3D::UDriver *driver; static NL3D::UDriver *driver;
static NL3D::UTextContext *textcontext; static NL3D::UTextContext *textcontext;
typedef CHashMap< std::string, NL3D::UTextContext* > TFontsList;
static TFontsList fonts;
public: public:
static NL3D::UTextContext* getTextContext(){ return textcontext; } static NL3D::UTextContext* getTextContext(const std::string &name="");
static bool registerFont(const std::string &name, const std::string &font);
/// Set of hw cursor images /// Set of hw cursor images
static std::set< std::string > *hwCursors; static std::set< std::string > *hwCursors;

View file

@ -80,6 +80,7 @@ namespace NLGUI
/// Set /// Set
void setText (const ucstring &text); void setText (const ucstring &text);
void setFontName (const std::string &name);
void setFontSize (sint nFontSize); void setFontSize (sint nFontSize);
void setEmbolden (bool nEmbolden); void setEmbolden (bool nEmbolden);
void setOblique (bool nOblique); void setOblique (bool nOblique);
@ -94,6 +95,7 @@ namespace NLGUI
void setMultiLineClipEndSpace (bool state); // use it for multiline edit box for instance void setMultiLineClipEndSpace (bool state); // use it for multiline edit box for instance
void setFirstLineX (uint firstLineX); void setFirstLineX (uint firstLineX);
void setMultiMaxLine(uint l) { _MultiMaxLine = l; } void setMultiMaxLine(uint l) { _MultiMaxLine = l; }
void setMultiMinLine(uint l) { _MultiMinLine = l; }
// Force only a subset of letter to be displayed. Default is 0/0xFFFFFFFF // Force only a subset of letter to be displayed. Default is 0/0xFFFFFFFF
void enableStringSelection(uint start, uint end); void enableStringSelection(uint start, uint end);
@ -103,6 +105,7 @@ namespace NLGUI
ucstring getText() const { return _Text; } ucstring getText() const { return _Text; }
sint getFontSize() const; sint getFontSize() const;
std::string getFontName() const { return _FontName; }
bool getEmbolden() { return _Embolden; } bool getEmbolden() { return _Embolden; }
bool getOblique() { return _Oblique; } bool getOblique() { return _Oblique; }
NLMISC::CRGBA getColor() { return _Color; } NLMISC::CRGBA getColor() { return _Color; }
@ -114,6 +117,8 @@ namespace NLGUI
sint getMultiLineSpace() const { return _MultiLineSpace; } sint getMultiLineSpace() const { return _MultiLineSpace; }
bool getMultiLineMaxWOnly() const { return _MultiLineMaxWOnly; } bool getMultiLineMaxWOnly() const { return _MultiLineMaxWOnly; }
uint32 getMultiMaxLine() const { return _MultiMaxLine; } uint32 getMultiMaxLine() const { return _MultiMaxLine; }
uint32 getMultiMinLine() const { return _MultiMinLine; }
uint32 getMultiMinOffsetY() const;
// get current Hint font width, in pixels // get current Hint font width, in pixels
uint getFontWidth() const; uint getFontWidth() const;
@ -224,6 +229,8 @@ namespace NLGUI
uint _Index; uint _Index;
/// info on the computed String associated to this text control /// info on the computed String associated to this text control
NL3D::UTextContext::CStringInfo _Info; NL3D::UTextContext::CStringInfo _Info;
/// Font name to get TextContext
std::string _FontName;
/// the font size /// the font size
sint _FontSize; sint _FontSize;
bool _Embolden; bool _Embolden;
@ -259,6 +266,7 @@ namespace NLGUI
sint _MultiLineSpace; sint _MultiLineSpace;
sint _LastMultiLineMaxW; sint _LastMultiLineMaxW;
uint32 _MultiMaxLine; uint32 _MultiMaxLine;
uint32 _MultiMinLine;
/// FormatTag handling /// FormatTag handling
@ -316,7 +324,7 @@ namespace NLGUI
CFormatInfo Format; CFormatInfo Format;
public: public:
// build from a string, using the current text context // build from a string, using the current text context
void build(const ucstring &text, uint numSpaces= 0); void build(const ucstring &text, NL3D::UTextContext &textContext, uint numSpaces= 0);
}; };
typedef std::vector<CWord> TWordVect; typedef std::vector<CWord> TWordVect;
@ -327,9 +335,9 @@ namespace NLGUI
// ctor // ctor
CLine(); CLine();
// Clear the line & remove text contexts // Clear the line & remove text contexts
void clear(); void clear(NL3D::UTextContext &textContext);
// Add a new word (and its context) in the line + a number of spaces to append at the end of the line // Add a new word (and its context) in the line + a number of spaces to append at the end of the line
void addWord(const ucstring &word, uint numSpaces, const CFormatInfo &wordFormat, uint fontWidth); void addWord(const ucstring &word, uint numSpaces, const CFormatInfo &wordFormat, uint fontWidth, NL3D::UTextContext &textContext);
void addWord(const CWord &word, uint fontWidth); void addWord(const CWord &word, uint fontWidth);
uint getNumWords() const { return (uint)_Words.size(); } uint getNumWords() const { return (uint)_Words.size(); }
CWord &getWord(uint index) { return _Words[index]; } CWord &getWord(uint index) { return _Words[index]; }

View file

@ -442,6 +442,7 @@ namespace NLGUI
OptionTimeoutMessages, OptionTimeoutMessages,
OptionTimeoutContext, OptionTimeoutContext,
OptionTimeoutContextHtml, OptionTimeoutContextHtml,
OptionMonospaceFont,
NumSystemOptions NumSystemOptions
}; };

View file

@ -120,9 +120,9 @@ public:
*/ */
std::string toString() const std::string toString() const
{ {
if (_Ids.size()==0) return std::string(""); if (_Ids.empty()) return std::string("");
std::string str=_Ids[0]; std::string str=_Ids[0];
for (unsigned i=1; i<_Ids.size(); i++) for (uint i=1; i<_Ids.size(); i++)
str +=std::string(":")+ _Ids[i]; str +=std::string(":")+ _Ids[i];
return str; return str;
} }

View file

@ -50,14 +50,14 @@ IDriver::~IDriver()
{ {
CSynchronized<TTexDrvInfoPtrMap>::CAccessor access(&_SyncTexDrvInfos); CSynchronized<TTexDrvInfoPtrMap>::CAccessor access(&_SyncTexDrvInfos);
TTexDrvInfoPtrMap &rTexDrvInfos = access.value(); TTexDrvInfoPtrMap &rTexDrvInfos = access.value();
nlassert( rTexDrvInfos.size() == 0 ); nlassert(rTexDrvInfos.empty());
} }
nlassert(_TexDrvShares.size()==0); nlassert(_TexDrvShares.empty());
nlassert(_MatDrvInfos.size()==0); nlassert(_MatDrvInfos.empty());
nlassert(_VBDrvInfos.size()==0); nlassert(_VBDrvInfos.empty());
nlassert(_IBDrvInfos.size()==0); nlassert(_IBDrvInfos.empty());
nlassert(_GPUPrgDrvInfos.size()==0); nlassert(_GPUPrgDrvInfos.empty());
} }

View file

@ -4,7 +4,7 @@ NL_TARGET_DRIVER(nel_drv_direct3d_win ${SRC})
INCLUDE_DIRECTORIES(BEFORE ${DXSDK_INCLUDE_DIR}) INCLUDE_DIRECTORIES(BEFORE ${DXSDK_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(nel_drv_direct3d_win nel3d nelmisc ${DXSDK_D3DX9_LIBRARY} ${DXSDK_D3D9_LIBRARY} ${DXSDK_DINPUT_LIBRARY} ${DXSDK_GUID_LIBRARY}) TARGET_LINK_LIBRARIES(nel_drv_direct3d_win nel3d nelmisc ${DXSDK_D3DX9_LIBRARY} ${DXSDK_D3D9_LIBRARY})
NL_DEFAULT_PROPS(nel_drv_direct3d_win "NeL, Driver, Video: Direct3D") NL_DEFAULT_PROPS(nel_drv_direct3d_win "NeL, Driver, Video: Direct3D")
NL_ADD_RUNTIME_FLAGS(nel_drv_direct3d_win) NL_ADD_RUNTIME_FLAGS(nel_drv_direct3d_win)

View file

@ -125,7 +125,7 @@ uint8 *CVBDrvInfosD3D::lock (uint begin, uint end, bool readOnly)
} }
else else
{ {
nlinfo("Buffer %s at %x is Locked", (*it)->VertexBufferPtr->getName().c_str(), (int) *it); nlinfo("Buffer %s at %p is Locked", (*it)->VertexBufferPtr->getName().c_str(), *it);
} }
} }
} }

View file

@ -6,7 +6,7 @@ extern "C" {
#endif #endif
/* /*
** Copyright (c) 2013-2015 The Khronos Group Inc. ** Copyright (c) 2013-2016 The Khronos Group Inc.
** **
** Permission is hereby granted, free of charge, to any person obtaining a ** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the ** copy of this software and/or associated documentation files (the
@ -33,7 +33,7 @@ extern "C" {
** used to make the header, and the header can be found at ** used to make the header, and the header can be found at
** http://www.opengl.org/registry/ ** http://www.opengl.org/registry/
** **
** Khronos $Revision: 32155 $ on $Date: 2015-10-22 23:25:39 -0400 (Thu, 22 Oct 2015) $ ** Khronos $Revision: 32957 $ on $Date: 2016-06-09 17:03:08 -0400 (Thu, 09 Jun 2016) $
*/ */
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@ -53,7 +53,7 @@ extern "C" {
#define GLAPI extern #define GLAPI extern
#endif #endif
#define GL_GLEXT_VERSION 20151022 #define GL_GLEXT_VERSION 20160609
/* Generated C header for: /* Generated C header for:
* API: gl * API: gl
@ -5596,6 +5596,10 @@ GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLf
#define GL_AMD_shader_atomic_counter_ops 1 #define GL_AMD_shader_atomic_counter_ops 1
#endif /* GL_AMD_shader_atomic_counter_ops */ #endif /* GL_AMD_shader_atomic_counter_ops */
#ifndef GL_AMD_shader_explicit_vertex_parameter
#define GL_AMD_shader_explicit_vertex_parameter 1
#endif /* GL_AMD_shader_explicit_vertex_parameter */
#ifndef GL_AMD_shader_stencil_export #ifndef GL_AMD_shader_stencil_export
#define GL_AMD_shader_stencil_export 1 #define GL_AMD_shader_stencil_export 1
#endif /* GL_AMD_shader_stencil_export */ #endif /* GL_AMD_shader_stencil_export */
@ -8636,6 +8640,20 @@ GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei s
#endif #endif
#endif /* GL_EXT_vertex_weighting */ #endif /* GL_EXT_vertex_weighting */
#ifndef GL_EXT_window_rectangles
#define GL_EXT_window_rectangles 1
#define GL_INCLUSIVE_EXT 0x8F10
#define GL_EXCLUSIVE_EXT 0x8F11
#define GL_WINDOW_RECTANGLE_EXT 0x8F12
#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
typedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box);
#endif
#endif /* GL_EXT_window_rectangles */
#ifndef GL_EXT_x11_sync_object #ifndef GL_EXT_x11_sync_object
#define GL_EXT_x11_sync_object 1 #define GL_EXT_x11_sync_object 1
#define GL_SYNC_X11_FENCE_EXT 0x90E1 #define GL_SYNC_X11_FENCE_EXT 0x90E1
@ -9129,6 +9147,17 @@ GLAPI void APIENTRY glBlendBarrierNV (void);
#define GL_NV_blend_square 1 #define GL_NV_blend_square 1
#endif /* GL_NV_blend_square */ #endif /* GL_NV_blend_square */
#ifndef GL_NV_clip_space_w_scaling
#define GL_NV_clip_space_w_scaling 1
#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
typedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
#endif
#endif /* GL_NV_clip_space_w_scaling */
#ifndef GL_NV_command_list #ifndef GL_NV_command_list
#define GL_NV_command_list 1 #define GL_NV_command_list 1
#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 #define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000
@ -9231,6 +9260,17 @@ GLAPI void APIENTRY glConservativeRasterParameterfNV (GLenum pname, GLfloat valu
#endif #endif
#endif /* GL_NV_conservative_raster_dilate */ #endif /* GL_NV_conservative_raster_dilate */
#ifndef GL_NV_conservative_raster_pre_snap_triangles
#define GL_NV_conservative_raster_pre_snap_triangles 1
#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param);
#endif
#endif /* GL_NV_conservative_raster_pre_snap_triangles */
#ifndef GL_NV_copy_depth_to_color #ifndef GL_NV_copy_depth_to_color
#define GL_NV_copy_depth_to_color 1 #define GL_NV_copy_depth_to_color 1
#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E #define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
@ -10223,6 +10263,11 @@ GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname,
#endif #endif
#endif /* GL_NV_register_combiners2 */ #endif /* GL_NV_register_combiners2 */
#ifndef GL_NV_robustness_video_memory_purge
#define GL_NV_robustness_video_memory_purge 1
#define GL_PURGED_CONTEXT_RESET_NV 0x92BB
#endif /* GL_NV_robustness_video_memory_purge */
#ifndef GL_NV_sample_locations #ifndef GL_NV_sample_locations
#define GL_NV_sample_locations 1 #define GL_NV_sample_locations 1
#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D #define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
@ -10255,6 +10300,10 @@ GLAPI void APIENTRY glResolveDepthValuesNV (void);
#define GL_NV_shader_atomic_float 1 #define GL_NV_shader_atomic_float 1
#endif /* GL_NV_shader_atomic_float */ #endif /* GL_NV_shader_atomic_float */
#ifndef GL_NV_shader_atomic_float64
#define GL_NV_shader_atomic_float64 1
#endif /* GL_NV_shader_atomic_float64 */
#ifndef GL_NV_shader_atomic_fp16_vector #ifndef GL_NV_shader_atomic_fp16_vector
#define GL_NV_shader_atomic_fp16_vector 1 #define GL_NV_shader_atomic_fp16_vector 1
#endif /* GL_NV_shader_atomic_fp16_vector */ #endif /* GL_NV_shader_atomic_fp16_vector */
@ -10318,6 +10367,10 @@ GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLs
#define GL_NV_shader_thread_shuffle 1 #define GL_NV_shader_thread_shuffle 1
#endif /* GL_NV_shader_thread_shuffle */ #endif /* GL_NV_shader_thread_shuffle */
#ifndef GL_NV_stereo_view_rendering
#define GL_NV_stereo_view_rendering 1
#endif /* GL_NV_stereo_view_rendering */
#ifndef GL_NV_tessellation_program5 #ifndef GL_NV_tessellation_program5
#define GL_NV_tessellation_program5 1 #define GL_NV_tessellation_program5 1
#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 #define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
@ -11088,6 +11141,26 @@ GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot
#define GL_NV_viewport_array2 1 #define GL_NV_viewport_array2 1
#endif /* GL_NV_viewport_array2 */ #endif /* GL_NV_viewport_array2 */
#ifndef GL_NV_viewport_swizzle
#define GL_NV_viewport_swizzle 1
#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358
#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B
typedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
#endif
#endif /* GL_NV_viewport_swizzle */
#ifndef GL_OML_interlace #ifndef GL_OML_interlace
#define GL_OML_interlace 1 #define GL_OML_interlace 1
#define GL_INTERLACE_OML 0x8980 #define GL_INTERLACE_OML 0x8980

View file

@ -6,7 +6,7 @@ extern "C" {
#endif #endif
/* /*
** Copyright (c) 2013-2015 The Khronos Group Inc. ** Copyright (c) 2013-2016 The Khronos Group Inc.
** **
** Permission is hereby granted, free of charge, to any person obtaining a ** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the ** copy of this software and/or associated documentation files (the
@ -33,10 +33,10 @@ extern "C" {
** used to make the header, and the header can be found at ** used to make the header, and the header can be found at
** http://www.opengl.org/registry/ ** http://www.opengl.org/registry/
** **
** Khronos $Revision: 31597 $ on $Date: 2015-06-25 16:32:35 -0400 (Thu, 25 Jun 2015) $ ** Khronos $Revision: 32889 $ on $Date: 2016-05-31 07:09:51 -0400 (Tue, 31 May 2016) $
*/ */
#define GLX_GLXEXT_VERSION 20150623 #define GLX_GLXEXT_VERSION 20160531
/* Generated C header for: /* Generated C header for:
* API: glx * API: glx
@ -317,6 +317,11 @@ void glXFreeContextEXT (Display *dpy, GLXContext context);
#endif #endif
#endif /* GLX_EXT_import_context */ #endif /* GLX_EXT_import_context */
#ifndef GLX_EXT_libglvnd
#define GLX_EXT_libglvnd 1
#define GLX_VENDOR_NAMES_EXT 0x20F6
#endif /* GLX_EXT_libglvnd */
#ifndef GLX_EXT_stereo_tree #ifndef GLX_EXT_stereo_tree
#define GLX_EXT_stereo_tree 1 #define GLX_EXT_stereo_tree 1
typedef struct { typedef struct {
@ -543,6 +548,11 @@ int glXBindVideoDeviceNV (Display *dpy, unsigned int video_slot, unsigned int vi
#endif #endif
#endif /* GLX_NV_present_video */ #endif /* GLX_NV_present_video */
#ifndef GLX_NV_robustness_video_memory_purge
#define GLX_NV_robustness_video_memory_purge 1
#define GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7
#endif /* GLX_NV_robustness_video_memory_purge */
#ifndef GLX_NV_swap_group #ifndef GLX_NV_swap_group
#define GLX_NV_swap_group 1 #define GLX_NV_swap_group 1
typedef Bool ( *PFNGLXJOINSWAPGROUPNVPROC) (Display *dpy, GLXDrawable drawable, GLuint group); typedef Bool ( *PFNGLXJOINSWAPGROUPNVPROC) (Display *dpy, GLXDrawable drawable, GLuint group);

View file

@ -6,7 +6,7 @@ extern "C" {
#endif #endif
/* /*
** Copyright (c) 2013-2015 The Khronos Group Inc. ** Copyright (c) 2013-2016 The Khronos Group Inc.
** **
** Permission is hereby granted, free of charge, to any person obtaining a ** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the ** copy of this software and/or associated documentation files (the
@ -33,7 +33,7 @@ extern "C" {
** used to make the header, and the header can be found at ** used to make the header, and the header can be found at
** http://www.opengl.org/registry/ ** http://www.opengl.org/registry/
** **
** Khronos $Revision: 31597 $ on $Date: 2015-06-25 16:32:35 -0400 (Thu, 25 Jun 2015) $ ** Khronos $Revision: 32686 $ on $Date: 2016-04-19 21:08:44 -0400 (Tue, 19 Apr 2016) $
*/ */
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@ -41,7 +41,7 @@ extern "C" {
#include <windows.h> #include <windows.h>
#endif #endif
#define WGL_WGLEXT_VERSION 20150623 #define WGL_WGLEXT_VERSION 20160419
/* Generated C header for: /* Generated C header for:
* API: wgl * API: wgl

View file

@ -676,8 +676,8 @@ bool CDriverGL::setupDisplay()
} }
#endif #endif
// Reset the vbl interval // Get initial VBL interval
setSwapVBLInterval(_Interval); _Interval = getSwapVBLInterval();
return true; return true;
} }
@ -2288,16 +2288,22 @@ void CDriverGL::setSwapVBLInterval(uint interval)
H_AUTO_OGL(CDriverGL_setSwapVBLInterval); H_AUTO_OGL(CDriverGL_setSwapVBLInterval);
if (!_Initialized) if (!_Initialized)
{
nlwarning("OpenGL driver not initialized when calling setSwapVBLInterval");
return; return;
}
bool res = true; bool res = true;
// don't try to change VBL if interval didn't change
if (_Interval == interval) return;
#ifdef USE_OPENGLES #ifdef USE_OPENGLES
res = eglSwapInterval(_EglDisplay, _Interval) == EGL_TRUE; res = eglSwapInterval(_EglDisplay, interval) == EGL_TRUE;
#elif defined(NL_OS_WINDOWS) #elif defined(NL_OS_WINDOWS)
if(_Extensions.WGLEXTSwapControl) if(_Extensions.WGLEXTSwapControl)
{ {
res = nwglSwapIntervalEXT(_Interval) == TRUE; res = nwglSwapIntervalEXT(interval) == TRUE;
} }
#elif defined(NL_OS_MAC) #elif defined(NL_OS_MAC)
[_ctx setValues:(GLint*)&interval forParameter:NSOpenGLCPSwapInterval]; [_ctx setValues:(GLint*)&interval forParameter:NSOpenGLCPSwapInterval];

View file

@ -1991,24 +1991,32 @@ bool registerWGlExtensions(CGlExtensions &ext, HDC hDC)
if (ext.WGLNVGPUAffinity) if (ext.WGLNVGPUAffinity)
{ {
uint i = 0; uint gpuIndex = 0;
HGPUNV hGPU; HGPUNV hGPU;
while(nwglEnumGpusNV(i, &hGPU)) // list all GPUs
while (nwglEnumGpusNV(gpuIndex, &hGPU))
{ {
uint j = 0; uint j = 0;
PGPU_DEVICE lpGpuDevice = NULL; _GPU_DEVICE gpuDevice;
gpuDevice.cb = sizeof(gpuDevice);
while(nwglEnumGpuDevicesNV(hGPU, j, lpGpuDevice)) // list all devices connected to GPU
while(nwglEnumGpuDevicesNV(hGPU, j, &gpuDevice))
{ {
nlinfo("Device: %s - %s - flags: %u", lpGpuDevice->DeviceName, lpGpuDevice->DeviceString, lpGpuDevice->Flags); nlinfo("Device: %s / %s / flags: %u", gpuDevice.DeviceName, gpuDevice.DeviceString, (uint)gpuDevice.Flags);
if (gpuDevice.Flags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP)
{
nlinfo("Virtual screen: (%d,%d)-(%d,%d)", (sint)gpuDevice.rcVirtualScreen.left, (sint)gpuDevice.rcVirtualScreen.top, (sint)gpuDevice.rcVirtualScreen.right, (sint)gpuDevice.rcVirtualScreen.bottom);
}
++j; ++j;
} }
++i; ++gpuIndex;
} }
} }

View file

@ -528,7 +528,7 @@ void CDRU::drawTrianglesUnlit(const NLMISC::CTriangleUV *trilist, sint ntris,
// *************************************************************************** // ***************************************************************************
void CDRU::drawTrianglesUnlit(const std::vector<NLMISC::CTriangleUV> &trilist, CMaterial &mat, IDriver& driver) void CDRU::drawTrianglesUnlit(const std::vector<NLMISC::CTriangleUV> &trilist, CMaterial &mat, IDriver& driver)
{ {
if(trilist.size()==0) if(trilist.empty())
return; return;
CDRU::drawTrianglesUnlit( &(*trilist.begin()), (uint)trilist.size(), mat, driver); CDRU::drawTrianglesUnlit( &(*trilist.begin()), (uint)trilist.size(), mat, driver);
@ -570,7 +570,7 @@ void CDRU::drawLinesUnlit(const NLMISC::CLine *linelist, sint nlines, CMateria
// *************************************************************************** // ***************************************************************************
void CDRU::drawLinesUnlit(const std::vector<NLMISC::CLine> &linelist, CMaterial &mat, IDriver& driver) void CDRU::drawLinesUnlit(const std::vector<NLMISC::CLine> &linelist, CMaterial &mat, IDriver& driver)
{ {
if(linelist.size()==0) if(linelist.empty())
return; return;
CDRU::drawLinesUnlit( &(*linelist.begin()), (sint)linelist.size(), mat, driver); CDRU::drawLinesUnlit( &(*linelist.begin()), (sint)linelist.size(), mat, driver);
} }

View file

@ -2859,7 +2859,7 @@ void CLandscape::setupAutomaticLightDir(const CVector &lightDir)
// *************************************************************************** // ***************************************************************************
CVector CLandscape::getHeightFieldDeltaZ(float x, float y) const CVector CLandscape::getHeightFieldDeltaZ(float x, float y) const
{ {
if(_HeightField.ZPatchs.size()==0) if(_HeightField.ZPatchs.empty())
return CVector::Null; return CVector::Null;
// map to _HeightField coordinates. // map to _HeightField coordinates.

View file

@ -134,7 +134,7 @@ void CLandscapeVBAllocator::resetReallocation()
uint CLandscapeVBAllocator::allocateVertex() uint CLandscapeVBAllocator::allocateVertex()
{ {
// if no more free, allocate. // if no more free, allocate.
if( _VertexFreeMemory.size()==0 ) if( _VertexFreeMemory.empty() )
{ {
// enlarge capacity. // enlarge capacity.
uint newResize; uint newResize;

View file

@ -52,7 +52,7 @@ namespace NL3D
static NLMISC::CAABBoxExt makeBBox(const std::vector<CVector> &Vertices) static NLMISC::CAABBoxExt makeBBox(const std::vector<CVector> &Vertices)
{ {
NLMISC::CAABBox ret; NLMISC::CAABBox ret;
nlassert(Vertices.size()); nlassert(!Vertices.empty());
ret.setCenter(Vertices[0]); ret.setCenter(Vertices[0]);
for(sint i=0;i<(sint)Vertices.size();i++) for(sint i=0;i<(sint)Vertices.size();i++)
{ {
@ -167,7 +167,7 @@ void CMeshGeom::build (CMesh::CMeshBuild &m, uint numMaxMaterial)
sint i; sint i;
// Empty geometry? // Empty geometry?
if(m.Vertices.size()==0 || m.Faces.size()==0) if(m.Vertices.empty() || m.Faces.empty())
{ {
_VBuffer.setNumVertices(0); _VBuffer.setNumVertices(0);
_VBuffer.setName("CMeshGeom"); _VBuffer.setName("CMeshGeom");
@ -436,7 +436,7 @@ void CMeshGeom::build (CMesh::CMeshBuild &m, uint numMaxMaterial)
} }
// Set the vertex buffer preferred memory // Set the vertex buffer preferred memory
bool avoidVBHard= _Skinned || ( _MeshMorpher && _MeshMorpher->BlendShapes.size()>0 ); bool avoidVBHard= _Skinned || ( _MeshMorpher && !_MeshMorpher->BlendShapes.empty() );
_VBuffer.setPreferredMemory (avoidVBHard?CVertexBuffer::RAMPreferred:CVertexBuffer::StaticPreferred, false); _VBuffer.setPreferredMemory (avoidVBHard?CVertexBuffer::RAMPreferred:CVertexBuffer::StaticPreferred, false);
// End!! // End!!
@ -638,7 +638,7 @@ void CMeshGeom::render(IDriver *drv, CTransformShape *trans, float polygonCount,
for(uint mb=0;mb<_MatrixBlocks.size();mb++) for(uint mb=0;mb<_MatrixBlocks.size();mb++)
{ {
CMatrixBlock &mBlock= _MatrixBlocks[mb]; CMatrixBlock &mBlock= _MatrixBlocks[mb];
if(mBlock.RdrPass.size()==0) if(mBlock.RdrPass.empty())
continue; continue;
// Global alpha ? // Global alpha ?
@ -790,7 +790,7 @@ void CMeshGeom::renderSkin(CTransformShape *trans, float alphaMRM)
for(uint mb=0;mb<_MatrixBlocks.size();mb++) for(uint mb=0;mb<_MatrixBlocks.size();mb++)
{ {
CMatrixBlock &mBlock= _MatrixBlocks[mb]; CMatrixBlock &mBlock= _MatrixBlocks[mb];
if(mBlock.RdrPass.size()==0) if(mBlock.RdrPass.empty())
continue; continue;
// Render all pass. // Render all pass.
@ -840,7 +840,7 @@ void CMeshGeom::renderSimpleWithMaterial(IDriver *drv, const CMatrix &worldMatri
for(uint mb=0;mb<_MatrixBlocks.size();mb++) for(uint mb=0;mb<_MatrixBlocks.size();mb++)
{ {
CMatrixBlock &mBlock= _MatrixBlocks[mb]; CMatrixBlock &mBlock= _MatrixBlocks[mb];
if(mBlock.RdrPass.size()==0) if(mBlock.RdrPass.empty())
continue; continue;
// Render all pass. // Render all pass.
@ -998,10 +998,10 @@ void CMeshGeom::compileRunTime()
_PreciseClipping= _BBox.getRadius() >= NL3D_MESH_PRECISE_CLIP_THRESHOLD; _PreciseClipping= _BBox.getRadius() >= NL3D_MESH_PRECISE_CLIP_THRESHOLD;
// Support MeshBlockRendering only if not skinned/meshMorphed. // Support MeshBlockRendering only if not skinned/meshMorphed.
bool supportMeshBlockRendering= !_Skinned && _MeshMorpher->BlendShapes.size()==0; bool supportMeshBlockRendering= !_Skinned && _MeshMorpher->BlendShapes.empty();
// true only if one matrix block, and at least one rdrPass. // true only if one matrix block, and at least one rdrPass.
supportMeshBlockRendering= supportMeshBlockRendering && _MatrixBlocks.size()==1 && _MatrixBlocks[0].RdrPass.size()>0; supportMeshBlockRendering= supportMeshBlockRendering && _MatrixBlocks.size()==1 && !_MatrixBlocks[0].RdrPass.empty();
if (supportMeshBlockRendering && _MeshVertexProgram) if (supportMeshBlockRendering && _MeshVertexProgram)
{ {
supportMeshBlockRendering = supportMeshBlockRendering && _MeshVertexProgram->supportMeshBlockRendering(); supportMeshBlockRendering = supportMeshBlockRendering && _MeshVertexProgram->supportMeshBlockRendering();
@ -1021,7 +1021,7 @@ void CMeshGeom::compileRunTime()
if(supportMBRPerMaterial) if(supportMBRPerMaterial)
_SupportMBRFlags|= MBRSortPerMaterial; _SupportMBRFlags|= MBRSortPerMaterial;
bool avoidVBHard= _Skinned || ( _MeshMorpher && _MeshMorpher->BlendShapes.size()>0 ); bool avoidVBHard= _Skinned || ( _MeshMorpher && !_MeshMorpher->BlendShapes.empty() );
_VBuffer.setPreferredMemory (avoidVBHard?CVertexBuffer::RAMPreferred:CVertexBuffer::StaticPreferred, false); _VBuffer.setPreferredMemory (avoidVBHard?CVertexBuffer::RAMPreferred:CVertexBuffer::StaticPreferred, false);
} }

View file

@ -407,9 +407,10 @@ void CMeshMorpher::updateRawSkin (CVertexBuffer *vbOri,
rFactor*= 0.01f; rFactor*= 0.01f;
uint32 numVertices= (uint32)rBS.VertRefs.size(); uint32 numVertices= (uint32)rBS.VertRefs.size();
// don't know why, but cases happen where deltaNorm not empty while deltaPos is // don't know why, but cases happen where deltaNorm not empty while deltaPos is
bool hasPos= rBS.deltaPos.size()>0; bool hasPos = !rBS.deltaPos.empty();
bool hasNorm= rBS.deltaNorm.size()>0; bool hasNorm = !rBS.deltaNorm.empty();
bool hasUV= rBS.deltaUV.size()>0; bool hasUV = !rBS.deltaUV.empty();
for (j = 0; j < numVertices; ++j) for (j = 0; j < numVertices; ++j)
{ {
// Get the vertex Index in the VBufferFinal // Get the vertex Index in the VBufferFinal

View file

@ -180,7 +180,7 @@ void CMeshMRMGeom::CLod::optimizeTriangleOrder()
static NLMISC::CAABBoxExt makeBBox(const std::vector<CVector> &Vertices) static NLMISC::CAABBoxExt makeBBox(const std::vector<CVector> &Vertices)
{ {
NLMISC::CAABBox ret; NLMISC::CAABBox ret;
nlassert(Vertices.size()); nlassert(!Vertices.empty());
ret.setCenter(Vertices[0]); ret.setCenter(Vertices[0]);
for(sint i=0;i<(sint)Vertices.size();i++) for(sint i=0;i<(sint)Vertices.size();i++)
{ {
@ -236,7 +236,7 @@ void CMeshMRMGeom::build(CMesh::CMeshBuild &m, std::vector<CMesh::CMeshBuild*>
uint numMaxMaterial, const CMRMParameters &params) uint numMaxMaterial, const CMRMParameters &params)
{ {
// Empty geometry? // Empty geometry?
if(m.Vertices.size()==0 || m.Faces.size()==0) if(m.Vertices.empty() || m.Faces.empty())
{ {
_VBufferFinal.setNumVertices(0); _VBufferFinal.setNumVertices(0);
_VBufferFinal.reserve(0); _VBufferFinal.reserve(0);
@ -308,7 +308,7 @@ void CMeshMRMGeom::build(CMesh::CMeshBuild &m, std::vector<CMesh::CMeshBuild*>
_LevelDetail.MaxFaceUsed= 0; _LevelDetail.MaxFaceUsed= 0;
_LevelDetail.MinFaceUsed= 0; _LevelDetail.MinFaceUsed= 0;
// Count of primitive block // Count of primitive block
if(_Lods.size()>0) if (!_Lods.empty())
{ {
uint pb; uint pb;
// Compute MinFaces. // Compute MinFaces.
@ -469,7 +469,7 @@ void CMeshMRMGeom::applyGeomorph(std::vector<CMRMWedgeGeom> &geoms, float alpha
void CMeshMRMGeom::applyGeomorphWithVBHardPtr(std::vector<CMRMWedgeGeom> &geoms, float alphaLod, uint8 *vertexDestPtr) void CMeshMRMGeom::applyGeomorphWithVBHardPtr(std::vector<CMRMWedgeGeom> &geoms, float alphaLod, uint8 *vertexDestPtr)
{ {
// no geomorphs? quit. // no geomorphs? quit.
if(geoms.size()==0) if(geoms.empty())
return; return;
clamp(alphaLod, 0.f, 1.f); clamp(alphaLod, 0.f, 1.f);
@ -900,7 +900,7 @@ inline sint CMeshMRMGeom::chooseLod(float alphaMRM, float &alphaLod)
void CMeshMRMGeom::render(IDriver *drv, CTransformShape *trans, float polygonCount, uint32 rdrFlags, float globalAlpha) void CMeshMRMGeom::render(IDriver *drv, CTransformShape *trans, float polygonCount, uint32 rdrFlags, float globalAlpha)
{ {
nlassert(drv); nlassert(drv);
if(_Lods.size()==0) if(_Lods.empty())
return; return;
@ -922,7 +922,7 @@ void CMeshMRMGeom::render(IDriver *drv, CTransformShape *trans, float polygonCou
// Render the choosen Lod. // Render the choosen Lod.
CLod &lod= _Lods[numLod]; CLod &lod= _Lods[numLod];
if(lod.RdrPass.size()==0) if(lod.RdrPass.empty())
return; return;
@ -1104,7 +1104,7 @@ void CMeshMRMGeom::renderSkin(CTransformShape *trans, float alphaMRM)
{ {
H_AUTO( NL3D_MeshMRMGeom_renderSkin ); H_AUTO( NL3D_MeshMRMGeom_renderSkin );
if(_Lods.size()==0) if(_Lods.empty())
return; return;
@ -1126,7 +1126,7 @@ void CMeshMRMGeom::renderSkin(CTransformShape *trans, float alphaMRM)
// Render the choosen Lod. // Render the choosen Lod.
CLod &lod= _Lods[numLod]; CLod &lod= _Lods[numLod];
if(lod.RdrPass.size()==0) if(lod.RdrPass.empty())
return; return;
@ -1295,7 +1295,7 @@ sint CMeshMRMGeom::renderSkinGroupGeom(CMeshMRMInstance *mi, float alphaMRM, uin
// Render the choosen Lod. // Render the choosen Lod.
CLod &lod= _Lods[numLod]; CLod &lod= _Lods[numLod];
if(lod.RdrPass.size()==0) if(lod.RdrPass.empty())
// return no vertices added // return no vertices added
return 0; return 0;
@ -1942,7 +1942,7 @@ void CMeshMRMGeom::loadFirstLod(NLMISC::IStream &f)
// If empty MRM, quit. // If empty MRM, quit.
if(_LodInfos.size()==0) if(_LodInfos.empty())
return; return;
/* If the version is <4, then SkinWeights are serialised per Lod. /* If the version is <4, then SkinWeights are serialised per Lod.
@ -2431,7 +2431,7 @@ void CMeshMRMGeom::compileRunTime()
_PreciseClipping= _BBox.getRadius() >= NL3D_MESH_PRECISE_CLIP_THRESHOLD; _PreciseClipping= _BBox.getRadius() >= NL3D_MESH_PRECISE_CLIP_THRESHOLD;
// Compute if can support SkinGrouping rendering // Compute if can support SkinGrouping rendering
if(_Lods.size()==0 || !_Skinned) if(_Lods.empty() || !_Skinned)
{ {
_SupportSkinGrouping= false; _SupportSkinGrouping= false;
_SupportShadowSkinGrouping= false; _SupportShadowSkinGrouping= false;
@ -2451,7 +2451,7 @@ void CMeshMRMGeom::compileRunTime()
} }
// Support MeshBlockRendering only if not skinned/meshMorphed. // Support MeshBlockRendering only if not skinned/meshMorphed.
_SupportMeshBlockRendering= !_Skinned && _MeshMorpher.BlendShapes.size()==0; _SupportMeshBlockRendering= !_Skinned && _MeshMorpher.BlendShapes.empty();
// \todo yoyo: support later MeshVertexProgram // \todo yoyo: support later MeshVertexProgram
_SupportMeshBlockRendering= _SupportMeshBlockRendering && _MeshVertexProgram==NULL; _SupportMeshBlockRendering= _SupportMeshBlockRendering && _MeshVertexProgram==NULL;
@ -3367,7 +3367,7 @@ void CMeshMRMGeom::updateRawSkinNormal(bool enabled, CMeshMRMInstance *mi, sint
// Case of MeshMorpher // Case of MeshMorpher
//======== //========
if(_MeshMorpher.BlendShapes.size()>0) if(!_MeshMorpher.BlendShapes.empty())
{ {
skinLod.VertexRemap.resize((uint32)vertexFinalRemap.size()); skinLod.VertexRemap.resize((uint32)vertexFinalRemap.size());

View file

@ -55,7 +55,7 @@ namespace NL3D
void CMeshMRMGeom::applySkin(CLod &lod, const CSkeletonModel *skeleton) void CMeshMRMGeom::applySkin(CLod &lod, const CSkeletonModel *skeleton)
{ {
nlassert(_Skinned); nlassert(_Skinned);
if(_SkinWeights.size()==0) if(_SkinWeights.empty())
return; return;
// get vertexPtr. // get vertexPtr.

View file

@ -380,7 +380,7 @@ static void applyArraySkinTangentSpaceT(uint numMatrixes, uint32 *infPtr, CMesh:
void CMeshMRMGeom::applySkinWithNormal(CLod &lod, const CSkeletonModel *skeleton) void CMeshMRMGeom::applySkinWithNormal(CLod &lod, const CSkeletonModel *skeleton)
{ {
nlassert(_Skinned); nlassert(_Skinned);
if(_SkinWeights.size()==0) if(_SkinWeights.empty())
return; return;
// get vertexPtr / normalOff. // get vertexPtr / normalOff.
@ -446,7 +446,7 @@ void CMeshMRMGeom::applySkinWithTangentSpace(CLod &lod, const CSkeletonModel *sk
uint tangentSpaceTexCoord) uint tangentSpaceTexCoord)
{ {
nlassert(_Skinned); nlassert(_Skinned);
if(_SkinWeights.size()==0) if(_SkinWeights.empty())
return; return;
// get vertexPtr / normalOff / tangent space offset. // get vertexPtr / normalOff / tangent space offset.
@ -1468,7 +1468,7 @@ void CMeshMRMGeom::applyArrayRawSkinNormal4(CRawVertexNormalSkin4 *src, uint8 *
void CMeshMRMGeom::applyRawSkinWithNormal(CLod &lod, CRawSkinNormalCache &rawSkinLod, const CSkeletonModel *skeleton, uint8 *vbHard, float alphaLod) void CMeshMRMGeom::applyRawSkinWithNormal(CLod &lod, CRawSkinNormalCache &rawSkinLod, const CSkeletonModel *skeleton, uint8 *vbHard, float alphaLod)
{ {
nlassert(_Skinned); nlassert(_Skinned);
if(_SkinWeights.size()==0) if(_SkinWeights.empty())
return; return;
// Some assert // Some assert

View file

@ -160,7 +160,7 @@ void CMeshMRMSkinnedGeom::CLod::buildPrimitiveBlock(uint renderPass, const CInde
static NLMISC::CAABBoxExt makeBBox(const std::vector<CVector> &Vertices) static NLMISC::CAABBoxExt makeBBox(const std::vector<CVector> &Vertices)
{ {
NLMISC::CAABBox ret; NLMISC::CAABBox ret;
nlassert(Vertices.size()); nlassert(!Vertices.empty());
ret.setCenter(Vertices[0]); ret.setCenter(Vertices[0]);
for(sint i=0;i<(sint)Vertices.size();i++) for(sint i=0;i<(sint)Vertices.size();i++)
{ {
@ -211,7 +211,7 @@ void CMeshMRMSkinnedGeom::build(CMesh::CMeshBuild &m,
uint numMaxMaterial, const CMRMParameters &params) uint numMaxMaterial, const CMRMParameters &params)
{ {
// Empty geometry? // Empty geometry?
if(m.Vertices.size()==0 || m.Faces.size()==0) if(m.Vertices.empty() || m.Faces.empty())
{ {
_VBufferFinal.clear(); _VBufferFinal.clear();
_Lods.clear(); _Lods.clear();
@ -261,7 +261,7 @@ void CMeshMRMSkinnedGeom::build(CMesh::CMeshBuild &m,
_LevelDetail.MaxFaceUsed= 0; _LevelDetail.MaxFaceUsed= 0;
_LevelDetail.MinFaceUsed= 0; _LevelDetail.MinFaceUsed= 0;
// Count of primitive block // Count of primitive block
if(_Lods.size()>0) if(!_Lods.empty())
{ {
uint pb; uint pb;
// Compute MinFaces. // Compute MinFaces.
@ -421,7 +421,7 @@ void CMeshMRMSkinnedGeom::applyGeomorph(std::vector<CMRMWedgeGeom> &geoms, floa
void CMeshMRMSkinnedGeom::applyGeomorphWithVBHardPtr(std::vector<CMRMWedgeGeom> &geoms, float alphaLod) void CMeshMRMSkinnedGeom::applyGeomorphWithVBHardPtr(std::vector<CMRMWedgeGeom> &geoms, float alphaLod)
{ {
// no geomorphs? quit. // no geomorphs? quit.
if(geoms.size()==0) if(geoms.empty())
return; return;
clamp(alphaLod, 0.f, 1.f); clamp(alphaLod, 0.f, 1.f);
@ -579,7 +579,7 @@ inline sint CMeshMRMSkinnedGeom::chooseLod(float alphaMRM, float &alphaLod)
void CMeshMRMSkinnedGeom::render(IDriver *drv, CTransformShape *trans, float polygonCount, uint32 rdrFlags, float globalAlpha) void CMeshMRMSkinnedGeom::render(IDriver *drv, CTransformShape *trans, float polygonCount, uint32 rdrFlags, float globalAlpha)
{ {
nlassert(drv); nlassert(drv);
if(_Lods.size()==0) if(_Lods.empty())
return; return;
@ -597,7 +597,7 @@ void CMeshMRMSkinnedGeom::render(IDriver *drv, CTransformShape *trans, float pol
// Render the choosen Lod. // Render the choosen Lod.
CLod &lod= _Lods[numLod]; CLod &lod= _Lods[numLod];
if(lod.RdrPass.size()==0) if(lod.RdrPass.empty())
return; return;
@ -757,7 +757,7 @@ sint CMeshMRMSkinnedGeom::renderSkinGroupGeom(CMeshMRMSkinnedInstance *mi, float
// Render the choosen Lod. // Render the choosen Lod.
CLod &lod= _Lods[numLod]; CLod &lod= _Lods[numLod];
if(lod.RdrPass.size()==0) if(lod.RdrPass.empty())
// return no vertices added // return no vertices added
return 0; return 0;

View file

@ -3119,7 +3119,7 @@ bool CMRMBuilder::buildMRMSewingMeshes(const CMesh::CMeshBuild &mbuild, uint nWa
{ {
nlassert(nWantedLods>=1); nlassert(nWantedLods>=1);
nlassert(divisor>=1); nlassert(divisor>=1);
if(mbuild.Interfaces.size()==0) if(mbuild.Interfaces.empty())
return false; return false;
// must have same size // must have same size
if(mbuild.InterfaceLinks.size()!=mbuild.Vertices.size()) if(mbuild.InterfaceLinks.size()!=mbuild.Vertices.size())

View file

@ -604,7 +604,8 @@ void CPatch::addRefTessBlocks()
uint i; uint i;
TessBlockRefCount++; TessBlockRefCount++;
if(TessBlocks.size()==0)
if (TessBlocks.empty())
{ {
// Allocate the tessblocks. // Allocate the tessblocks.
//========== //==========
@ -1629,7 +1630,7 @@ void CPatch::serial(NLMISC::IStream &f)
// then just copy to TileColors. // then just copy to TileColors.
TileColors.resize(tmpArray.size()); TileColors.resize(tmpArray.size());
if(TileColors.size()>0) if(!TileColors.empty())
{ {
memcpy(&TileColors[0], &tmpArray[0], TileColors.size()*sizeof(CTileColor)); memcpy(&TileColors[0], &tmpArray[0], TileColors.size()*sizeof(CTileColor));
} }

View file

@ -1452,7 +1452,7 @@ void CPatch::computeSoftwareGeomorphAndAlpha()
// Need only to fill CTessVertex, so do it only for FarVertices // Need only to fill CTessVertex, so do it only for FarVertices
// Hence Geomorph is done twice on edges of patches!!. // Hence Geomorph is done twice on edges of patches!!.
// If not too near for precise, fast compute of geomorph. // If not too near for precise, fast compute of geomorph.
if( TessBlocks.size()==0 ) if( TessBlocks.empty() )
{ {
// Just update all vertices of master block. // Just update all vertices of master block.
computeGeomorphVertexList(MasterBlock.FarVertexList); computeGeomorphVertexList(MasterBlock.FarVertexList);

View file

@ -540,7 +540,7 @@ bool CPatchDLMContext::generate(CPatch *patch, CTextureDLM *textureDLM, CPatch
#ifndef NL_DLM_TILE_RES #ifndef NL_DLM_TILE_RES
// retrieve patch tileColor pointer. // retrieve patch tileColor pointer.
nlassert(_Patch->TileColors.size()>0); nlassert(!_Patch->TileColors.empty());
CTileColor *tileColor= &_Patch->TileColors[0]; CTileColor *tileColor= &_Patch->TileColors[0];
// skip 1 tiles colors per column and per row // skip 1 tiles colors per column and per row
@ -898,7 +898,7 @@ void CPatchDLMContext::compileLighting(TCompileType compType, CRGBA modulateCt
if(! (_IsSrcTextureFullBlack && _IsDstTextureFullBlack) ) if(! (_IsSrcTextureFullBlack && _IsDstTextureFullBlack) )
{ {
// if lightMap allocated // if lightMap allocated
if(_LightMap.size()>0 && _DLMTexture) if(!_LightMap.empty() && _DLMTexture)
{ {
// If the srcTexture is full black (ie no pointLight influence touch it), // If the srcTexture is full black (ie no pointLight influence touch it),
if(_IsSrcTextureFullBlack) if(_IsSrcTextureFullBlack)

View file

@ -226,7 +226,7 @@ void CPSFace::step(TPSProcessPass pass)
else if (pass == PSMotion) else if (pass == PSMotion)
{ {
if (_PrecompBasis.size()) // do we use precomputed basis ? if (!_PrecompBasis.empty()) // do we use precomputed basis ?
{ {
// rotate all precomputed basis // rotate all precomputed basis
for (CPSVector< CPlaneBasisPair >::V::iterator it = _PrecompBasis.begin(); it != _PrecompBasis.end(); ++it) for (CPSVector< CPlaneBasisPair >::V::iterator it = _PrecompBasis.begin(); it != _PrecompBasis.end(); ++it)
@ -394,7 +394,7 @@ void CPSFace::deleteElement(uint32 index)
NL_PS_FUNC(CPSFace_deleteElement) NL_PS_FUNC(CPSFace_deleteElement)
CPSQuad::deleteElement(index); CPSQuad::deleteElement(index);
deletePlaneBasisElement(index); deletePlaneBasisElement(index);
if (_PrecompBasis.size()) // do we use precomputed basis ? if (!_PrecompBasis.empty()) // do we use precomputed basis ?
{ {
// replace ourself by the last element... // replace ourself by the last element...
_IndexInPrecompBasis[index] = _IndexInPrecompBasis[_Owner->getSize() - 1]; _IndexInPrecompBasis[index] = _IndexInPrecompBasis[_Owner->getSize() - 1];
@ -407,7 +407,7 @@ void CPSFace::resize(uint32 size)
NL_PS_FUNC(CPSFace_resize) NL_PS_FUNC(CPSFace_resize)
nlassert(size < (1 << 16)); nlassert(size < (1 << 16));
resizePlaneBasis(size); resizePlaneBasis(size);
if (_PrecompBasis.size()) // do we use precomputed basis ? if (!_PrecompBasis.empty()) // do we use precomputed basis ?
{ {
_IndexInPrecompBasis.resize(size); _IndexInPrecompBasis.resize(size);
} }

View file

@ -1994,7 +1994,7 @@ void CPSConstraintMesh::deleteElement(uint32 index)
deleteSizeElement(index); deleteSizeElement(index);
deletePlaneBasisElement(index); deletePlaneBasisElement(index);
// TODO : avoid code cuplication with CPSFace ... // TODO : avoid code cuplication with CPSFace ...
if (_PrecompBasis.size()) // do we use precomputed basis ? if (!_PrecompBasis.empty()) // do we use precomputed basis ?
{ {
// replace ourself by the last element... // replace ourself by the last element...
_IndexInPrecompBasis[index] = _IndexInPrecompBasis[_Owner->getSize() - 1]; _IndexInPrecompBasis[index] = _IndexInPrecompBasis[_Owner->getSize() - 1];
@ -2011,7 +2011,7 @@ void CPSConstraintMesh::resize(uint32 size)
resizeSize(size); resizeSize(size);
resizePlaneBasis(size); resizePlaneBasis(size);
// TODO : avoid code cuplication with CPSFace ... // TODO : avoid code cuplication with CPSFace ...
if (_PrecompBasis.size()) // do we use precomputed basis ? if (!_PrecompBasis.empty()) // do we use precomputed basis ?
{ {
_IndexInPrecompBasis.resize(size); _IndexInPrecompBasis.resize(size);
} }

View file

@ -229,7 +229,7 @@ void CQuadEffect::processPoly(const TPoint2DVect &poly
static TRasters rDest; static TRasters rDest;
float currY; float currY;
makeRasters(poly, quadWidth, quadHeight, rDest, currY); makeRasters(poly, quadWidth, quadHeight, rDest, currY);
if (dest.size()) if (!dest.empty())
{ {
TRasters::const_iterator it, endIt = rDest.end(); TRasters::const_iterator it, endIt = rDest.end();
for (it = rDest.begin(); it != endIt; ++it) for (it = rDest.begin(); it != endIt; ++it)

View file

@ -705,7 +705,7 @@ void CShadowMapManager::renderProject(CScene *scene)
} }
driver->activeVertexBuffer (CopyQuads); driver->activeVertexBuffer (CopyQuads);
if (_ShadowCasters.size()>0) if (!_ShadowCasters.empty())
{ {
// get the transform to compute shadow map. // get the transform to compute shadow map.
CTransform *sc= _ShadowCasters[0]; CTransform *sc= _ShadowCasters[0];

View file

@ -119,7 +119,7 @@ bool CTextureDLM::canCreateLightMap(uint w, uint h)
return true; return true;
// If empty, test if there is an empty block. // If empty, test if there is an empty block.
return _EmptyBlocks.size()>0; return !_EmptyBlocks.empty();
} }
@ -166,7 +166,7 @@ bool CTextureDLM::createLightMap(uint w, uint h, uint &x, uint &y)
if(_FreeBlocks[lMapType]==NULL) if(_FreeBlocks[lMapType]==NULL)
{ {
// list is empty => allocate a block from _EmptyBlocks. // list is empty => allocate a block from _EmptyBlocks.
nlassert(_EmptyBlocks.size()>0); nlassert(!_EmptyBlocks.empty());
// pop a block from empty list // pop a block from empty list
CBlock *block= &_Blocks[_EmptyBlocks.back()]; CBlock *block= &_Blocks[_EmptyBlocks.back()];

View file

@ -108,7 +108,7 @@ void CTileBank::serial(NLMISC::IStream &f) throw(NLMISC::EStream)
if (f.isReading()) if (f.isReading())
{ {
// Checks // Checks
nlassert (_DisplacementMap.size()>0); nlassert (!_DisplacementMap.empty());
// Set first empty // Set first empty
_DisplacementMap[0].setEmpty (); _DisplacementMap[0].setEmpty ();
@ -543,7 +543,7 @@ CTileNoiseMap *CTileBank::getTileNoiseMap (uint tileNumber, uint tileSubNoise)
} }
} }
if (_DisplacementMap.size()==0 || _DisplacementMap[0]._TileNoiseMap) if (_DisplacementMap.empty() || _DisplacementMap[0]._TileNoiseMap)
return NULL; return NULL;
// Checks // Checks

View file

@ -71,7 +71,7 @@ void CVegetableBlendLayerModel::render(IDriver *driver)
nlassert(VegetableManager); nlassert(VegetableManager);
if(SortBlocks.size()==0) if(SortBlocks.empty())
return; return;
// Setup VegetableManager renderState (like pre-setuped material) // Setup VegetableManager renderState (like pre-setuped material)

View file

@ -1019,12 +1019,12 @@ void CVegetableManager::reserveIgCompile(CVegetableInstanceGroup *ig, const CV
{ {
CVegetableInstanceGroup::CVegetableRdrPass &vegetRdrPass= ig->_RdrPass[rdrPass]; CVegetableInstanceGroup::CVegetableRdrPass &vegetRdrPass= ig->_RdrPass[rdrPass];
nlassert(vegetRdrPass.TriangleIndices.getNumIndexes()==0); nlassert(vegetRdrPass.TriangleIndices.getNumIndexes()==0);
nlassert(vegetRdrPass.TriangleLocalIndices.size()==0); nlassert(vegetRdrPass.TriangleLocalIndices.empty());
nlassert(vegetRdrPass.Vertices.size()==0); nlassert(vegetRdrPass.Vertices.empty());
nlassert(vegetRdrPass.LightedInstances.size()==0); nlassert(vegetRdrPass.LightedInstances.empty());
} }
// Do the same for all quadrants of the zsort rdrPass. // Do the same for all quadrants of the zsort rdrPass.
nlassert(ig->_TriangleQuadrantOrderArray.size()==0); nlassert(ig->_TriangleQuadrantOrderArray.empty());
nlassert(ig->_TriangleQuadrantOrderNumTriangles==0); nlassert(ig->_TriangleQuadrantOrderNumTriangles==0);
@ -2553,7 +2553,7 @@ bool CVegetableManager::updateLightingIGPart()
} }
CVegetableInstanceGroup::CVegetableRdrPass &vegetRdrPass= _ULRootIg->_RdrPass[_ULCurrentIgRdrPass]; CVegetableInstanceGroup::CVegetableRdrPass &vegetRdrPass= _ULRootIg->_RdrPass[_ULCurrentIgRdrPass];
// if all instances are processed for this pass (especially if size()==0 !!) // if all instances are processed for this pass (especially if empty() !!)
if(_ULCurrentIgInstance>= vegetRdrPass.LightedInstances.size()) if(_ULCurrentIgInstance>= vegetRdrPass.LightedInstances.size())
{ {
// skip to the next rdrPass. // skip to the next rdrPass.

View file

@ -186,7 +186,7 @@ bool CVegetableVBAllocator::exceedMaxVertexInBufferHard(uint numAddVerts) cons
uint CVegetableVBAllocator::allocateVertex() uint CVegetableVBAllocator::allocateVertex()
{ {
// if no more free, allocate. // if no more free, allocate.
if( _VertexFreeMemory.size()==0 ) if( _VertexFreeMemory.empty() )
{ {
// enlarge capacity. // enlarge capacity.
uint newResize; uint newResize;

View file

@ -500,7 +500,7 @@ void CWaterModel::traverseRender()
sint startY; sint startY;
projPoly.computeBorders(rasters, startY); projPoly.computeBorders(rasters, startY);
if (rasters.size()) if (!rasters.empty())
{ {
//===========================// //===========================//
// perform Water animation // // perform Water animation //

View file

@ -1126,7 +1126,7 @@ void CZone::refineAll()
{ {
nlassert(Compiled); nlassert(Compiled);
if(Patchs.size()==0) if(Patchs.empty())
return; return;
// DO NOT do a forceNoRenderClip(), to avoid big allocation of Near/Far VB vertices in driver. // DO NOT do a forceNoRenderClip(), to avoid big allocation of Near/Far VB vertices in driver.
@ -1150,7 +1150,7 @@ void CZone::averageTesselationVertices()
{ {
nlassert(Compiled); nlassert(Compiled);
if(Patchs.size()==0) if(Patchs.empty())
return; return;
// averageTesselationVertices of ALL patchs. // averageTesselationVertices of ALL patchs.
@ -1250,8 +1250,10 @@ void CZone::resetRenderFarAndDeleteVBFV()
void CZone::forceMergeAtTileLevel() void CZone::forceMergeAtTileLevel()
{ {
CPatch *pPatch=0; CPatch *pPatch=0;
if(Patchs.size()>0)
if (!Patchs.empty())
pPatch= &(*Patchs.begin()); pPatch= &(*Patchs.begin());
for(sint n=(sint)Patchs.size();n>0;n--, pPatch++) for(sint n=(sint)Patchs.size();n>0;n--, pPatch++)
{ {
pPatch->forceMergeAtTileLevel(); pPatch->forceMergeAtTileLevel();
@ -1446,7 +1448,7 @@ void CZone::applyHeightField(const CLandscape &landScape)
vector<CBezierPatch> patchs; vector<CBezierPatch> patchs;
// no patch, do nothing. // no patch, do nothing.
if(Patchs.size()==0) if(Patchs.empty())
return; return;
// 0. Unpack patchs to Bezier Patchs. // 0. Unpack patchs to Bezier Patchs.

View file

@ -3113,7 +3113,7 @@ void CZoneLighter::addWaterShape(CWaterShape *shape, const NLMISC::CMatrix &MT)
// *********************************************************** // ***********************************************************
void CZoneLighter::makeQuadGridFromWaterShapes(NLMISC::CAABBox zoneBBox) void CZoneLighter::makeQuadGridFromWaterShapes(NLMISC::CAABBox zoneBBox)
{ {
if (!_WaterShapes.size()) return; if (_WaterShapes.empty()) return;
NLMISC::CAABBox tmpBox; NLMISC::CAABBox tmpBox;

View file

@ -43,8 +43,8 @@ namespace NLGUI
_BmpLeftW= _BmpMiddleW= _BmpRightW= _BmpH= 0; _BmpLeftW= _BmpMiddleW= _BmpRightW= _BmpH= 0;
_WMargin= 0; _WMargin= 0;
_WMin= 0; _WMin= 0;
_TextX= -2; _TextX= 0;
_TextY= -2; _TextY= 0;
_Setuped= false; _Setuped= false;
_ViewText= NULL; _ViewText= NULL;
_IsViewTextId= false; _IsViewTextId= false;
@ -602,7 +602,7 @@ namespace NLGUI
_WMin= max(_WMin, _BmpLeftW + _BmpMiddleW + _BmpRightW); _WMin= max(_WMin, _BmpLeftW + _BmpMiddleW + _BmpRightW);
// TextY // TextY
_TextY= -2; _TextY= 0;
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_y" ); prop = (char*) xmlGetProp( cur, (xmlChar*)"text_y" );
if (prop) if (prop)
{ {

View file

@ -159,7 +159,7 @@ namespace NLGUI
} }
// resize H // resize H
if(entries.size()>0) if (!entries.empty())
{ {
CInterfaceGroup *colEnclosing = entries[0]->getTargetColumn(); CInterfaceGroup *colEnclosing = entries[0]->getTargetColumn();
if (colEnclosing && !colEnclosing->getGroups().empty()) if (colEnclosing && !colEnclosing->getGroups().empty())

View file

@ -50,11 +50,12 @@ using namespace std;
using namespace NLMISC; using namespace NLMISC;
// Default timeout to connect a server // Default maximum time the request is allowed to take
#define DEFAULT_RYZOM_CONNECTION_TIMEOUT (30.0) #define DEFAULT_RYZOM_CONNECTION_TIMEOUT (300.0)
// Allow up to 10 redirects, then give up // Allow up to 10 redirects, then give up
#define DEFAULT_RYZOM_REDIRECT_LIMIT (10) #define DEFAULT_RYZOM_REDIRECT_LIMIT (10)
// //
#define FONT_WEIGHT_NORMAL 400
#define FONT_WEIGHT_BOLD 700 #define FONT_WEIGHT_BOLD 700
namespace NLGUI namespace NLGUI
@ -316,6 +317,11 @@ namespace NLGUI
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, true); curl_easy_setopt(curl, CURLOPT_NOPROGRESS, true);
curl_easy_setopt(curl, CURLOPT_URL, finalUrl.c_str()); curl_easy_setopt(curl, CURLOPT_URL, finalUrl.c_str());
std::string userAgent = options.appName + "/" + options.appVersion;
curl_easy_setopt(curl, CURLOPT_USERAGENT, userAgent.c_str());
sendCookies(curl, _DocumentDomain, _TrustedDomain);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
@ -338,14 +344,7 @@ namespace NLGUI
#ifdef LOG_DL #ifdef LOG_DL
nlwarning("Init Image Download"); nlwarning("Init Image Download");
#endif #endif
/*
// Get current flag
int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
// Turn on leak-checking bit
tmpFlag |= _CRTDBG_CHECK_ALWAYS_DF;
// Set flag to the new value
_CrtSetDbgFlag( tmpFlag );
*/
string pathName = "cache"; string pathName = "cache";
if ( ! CFile::isExists( pathName ) ) if ( ! CFile::isExists( pathName ) )
CFile::createDirectory( pathName ); CFile::createDirectory( pathName );
@ -506,7 +505,7 @@ namespace NLGUI
} }
else else
{ {
receiveCookies(_CurlWWW->Request, HTTPCurrentDomain, _TrustedDomain); receiveCookies(_CurlWWW->Request, _DocumentDomain, _TrustedDomain);
// redirect, get the location and try browse again // redirect, get the location and try browse again
// we cant use curl redirection because 'addHTTPGetParams()' must be called on new destination // we cant use curl redirection because 'addHTTPGetParams()' must be called on new destination
@ -533,7 +532,7 @@ namespace NLGUI
} }
else else
{ {
receiveCookies(_CurlWWW->Request, HTTPCurrentDomain, _TrustedDomain); receiveCookies(_CurlWWW->Request, _DocumentDomain, _TrustedDomain);
_RedirectsRemaining = DEFAULT_RYZOM_REDIRECT_LIMIT; _RedirectsRemaining = DEFAULT_RYZOM_REDIRECT_LIMIT;
@ -628,32 +627,6 @@ namespace NLGUI
curl_multi_cleanup(MultiCurl); curl_multi_cleanup(MultiCurl);
} }
/*
void dolibcurltest()
{
nlwarning("start libcurl test");
initImageDownload();
addImageDownload("http://www.ryzom.com/en/");
addImageDownload("http://www.ryzom.com/fr/");
addImageDownload("http://www.ryzom.com/de/");
do
{
checkImageDownload();
nlwarning("continue to sleep");
nlSleep(300);
}
while(RunningCurls);
releaseImageDownload();
nlwarning("end libcurl test");
}
*/
class CGroupListAdaptor : public CInterfaceGroup class CGroupListAdaptor : public CInterfaceGroup
{ {
public: public:
@ -726,10 +699,6 @@ namespace NLGUI
// Build a UTF8 string // Build a UTF8 string
string inputString(buf, buf+len); string inputString(buf, buf+len);
// inputString.resize (len);
// uint i;
// for (i=0; i<(uint)len; i++)
// inputString[i] = buf[i];
if (_ParsingLua && _TrustedDomain) if (_ParsingLua && _TrustedDomain)
{ {
@ -747,7 +716,6 @@ namespace NLGUI
ucstring tmp; ucstring tmp;
tmp.reserve(len); tmp.reserve(len);
uint ucLen = (uint)inputUCString.size(); uint ucLen = (uint)inputUCString.size();
//uint ucLenWithoutSpace = 0;
for (uint i=0; i<ucLen; i++) for (uint i=0; i<ucLen; i++)
{ {
ucchar output; ucchar output;
@ -768,23 +736,8 @@ namespace NLGUI
if (keep) if (keep)
{ {
tmp.push_back(output); tmp.push_back(output);
/*
// Break if the string is more than 50 chars long without space
if (output != ucchar(' '))
{
ucLenWithoutSpace++;
if (ucLenWithoutSpace == 50)
{
tmp.push_back(ucchar(' '));
ucLenWithoutSpace = 0;
} }
} }
else
{
ucLenWithoutSpace = 0;
}
*/ }
}
if (!tmp.empty()) if (!tmp.empty())
addString(tmp); addString(tmp);
@ -801,69 +754,6 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
void CGroupHTML::addLink (uint element_number, const std::vector<bool> &present, const std::vector<const char *> &value)
{
if (_Browsing)
{
if (element_number == HTML_A)
{
registerAnchorName(MY_HTML_A);
// #fragment works with both ID and NAME so register both
if (present[MY_HTML_A_NAME] && value[MY_HTML_A_NAME])
_AnchorName.push_back(value[MY_HTML_A_NAME]);
if (present[MY_HTML_A_HREF] && value[MY_HTML_A_HREF])
{
string suri = value[MY_HTML_A_HREF];
if(suri.find("ah:") == 0)
{
if (_TrustedDomain)
_Link.push_back (suri);
else
_Link.push_back ("");
}
else if (_TrustedDomain && suri[0] == '#' && _LuaHrefHack)
{
// Direct url (hack for lua beginElement)
_Link.push_back (suri.substr(1));
}
else
{
// convert href from "?key=val" into "http://domain.com/?key=val"
_Link.push_back(getAbsoluteUrl(suri));
}
for(uint8 i = MY_HTML_A_ACCESSKEY; i < MY_HTML_A_Z_ACTION_SHORTCUT; i++)
{
if (present[i] && value[i])
{
string title = value[i];
// nlinfo("key %d = %s", i, title.c_str());
}
}
//nlinfo("key of TITLE is : %d", MY_HTML_A_Z_ACTION_PARAMS);
if (present[MY_HTML_A_Z_ACTION_PARAMS] && value[MY_HTML_A_Z_ACTION_PARAMS])
{
string title = value[MY_HTML_A_Z_ACTION_PARAMS];
_LinkTitle.push_back(title);
}
else
_LinkTitle.push_back("");
}
else
{
_Link.push_back("");
_LinkTitle.push_back("");
}
}
}
}
// ***************************************************************************
#define getCellsParameters(prefix,inherit) \ #define getCellsParameters(prefix,inherit) \
{\ {\
CGroupHTML::CCellParams cellParams; \ CGroupHTML::CCellParams cellParams; \
@ -872,7 +762,7 @@ namespace NLGUI
cellParams = _CellParams.back(); \ cellParams = _CellParams.back(); \
} \ } \
if (present[prefix##_BGCOLOR] && value[prefix##_BGCOLOR]) \ if (present[prefix##_BGCOLOR] && value[prefix##_BGCOLOR]) \
cellParams.BgColor = getColor (value[prefix##_BGCOLOR]); \ scanHTMLColor(value[prefix##_BGCOLOR], cellParams.BgColor); \
if (present[prefix##_L_MARGIN] && value[prefix##_L_MARGIN]) \ if (present[prefix##_L_MARGIN] && value[prefix##_L_MARGIN]) \
fromString(value[prefix##_L_MARGIN], cellParams.LeftMargin); \ fromString(value[prefix##_L_MARGIN], cellParams.LeftMargin); \
if (present[prefix##_NOWRAP]) \ if (present[prefix##_NOWRAP]) \
@ -923,6 +813,30 @@ namespace NLGUI
return src; return src;
} }
static float hueToRgb(float m1, float m2, float h)
{
if (h < 0) h += 1.0f;
if (h > 1) h -= 1.0f;
if (h*6 < 1.0f) return m1 + (m2 - m1)*h*6;
if (h*2 < 1.0f) return m2;
if (h*3 < 2.0f) return m1 + (m2 - m1) * (2.0f/3.0f - h)*6;
return m1;
}
static void hslToRgb(float h, float s, float l, CRGBA &result)
{
float m1, m2;
if (l <= 0.5f)
m2 = l * (s + 1.0f);
else
m2 = l + s - l * s;
m1 = l*2 - m2;
result.R = 255 * hueToRgb(m1, m2, h + 1.0f/3.0f);
result.G = 255 * hueToRgb(m1, m2, h);
result.B = 255 * hueToRgb(m1, m2, h - 1.0f/3.0f);
}
class CNameToCol class CNameToCol
{ {
public: public:
@ -1085,6 +999,37 @@ namespace NLGUI
if (*src == '#') if (*src == '#')
{ {
++src; ++src;
if (strlen(src) == 3 || strlen(src) == 4)
{
bool hasAlpha = (strlen(src) == 4);
// check RGB for valid hex
if (isHexa(src[0]) && isHexa(src[1]) && isHexa(src[2]))
{
// check optional A for valid hex
if (hasAlpha && !isHexa(src[3])) return false;
dest.R = convertHexa(src[0]);
dest.G = convertHexa(src[1]);
dest.B = convertHexa(src[2]);
dest.R = dest.R << 4 | dest.R;
dest.G = dest.G << 4 | dest.G;
dest.B = dest.B << 4 | dest.B;
if (hasAlpha)
{
dest.A = convertHexa(src[3]);
dest.A = dest.A << 4 | dest.A;
}
else
dest.A = 255;
return true;
}
return false;
}
CRGBA result; CRGBA result;
src = scanColorComponent(src, result.R); if (!src) return false; src = scanColorComponent(src, result.R); if (!src) return false;
src = scanColorComponent(src, result.G); if (!src) return false; src = scanColorComponent(src, result.G); if (!src) return false;
@ -1098,7 +1043,101 @@ namespace NLGUI
dest = result; dest = result;
return true; return true;
} }
if (strnicmp(src, "rgb(", 4) == 0 || strnicmp(src, "rgba(", 5) == 0)
{
src += 4;
if (*src == '(') src++;
vector<string> parts;
NLMISC::splitString(src, ",", parts);
if (parts.size() >= 3)
{
CRGBA result;
sint tmpv;
float tmpf;
// R
if (getPercentage(tmpv, tmpf, parts[0].c_str())) tmpv = 255 * tmpf;
clamp(tmpv, 0, 255);
result.R = tmpv;
// G
if (getPercentage(tmpv, tmpf, parts[1].c_str())) tmpv = 255 * tmpf;
clamp(tmpv, 0, 255);
result.G = tmpv;
// B
if (getPercentage(tmpv, tmpf, parts[2].c_str())) tmpv = 255 * tmpf;
clamp(tmpv, 0, 255);
result.B = tmpv;
// A
if (parts.size() == 4)
{
if (!fromString(parts[3], tmpf)) return false;
if (parts[3].find_first_of("%") != std::string::npos)
tmpf /= 100;
tmpv = 255 * tmpf;
clamp(tmpv, 0, 255);
result.A = tmpv;
}
else else
result.A = 255;
dest = result;
return true;
}
return false;
}
if (strnicmp(src, "hsl(", 4) == 0 || strnicmp(src, "hsla(", 5) == 0)
{
src += 4;
if (*src == '(') src++;
vector<string> parts;
NLMISC::splitString(src, ",", parts);
if (parts.size() >= 3)
{
sint tmpv;
float h, s, l;
// hue
if (!fromString(parts[0], tmpv)) return false;
tmpv = ((tmpv % 360) + 360) % 360;
h = (float) tmpv / 360.0f;
// saturation
if (!getPercentage(tmpv, s, parts[1].c_str())) return false;
clamp(s, 0.0f, 1.0f);
// lightness
if (!getPercentage(tmpv, l, parts[2].c_str())) return false;
clamp(l, 0.0f, 1.0f);
CRGBA result;
hslToRgb(h, s, l, result);
// A
if (parts.size() == 4)
{
float tmpf;
if (!fromString(parts[3], tmpf)) return false;
if (parts[3].find_first_of("%") != std::string::npos)
tmpf /= 100;
clamp(tmpf, 0.0f, 1.0f);
result.A = 255 * tmpf;
}
dest = result;
return true;
}
return false;
}
{ {
// slow but should suffice for now // slow but should suffice for now
for(uint k = 0; k < sizeofarray(htmlColorNameToRGBA); ++k) for(uint k = 0; k < sizeofarray(htmlColorNameToRGBA); ++k)
@ -1166,7 +1205,7 @@ namespace NLGUI
pos = toLower(content).find("url="); pos = toLower(content).find("url=");
if (pos != string::npos) if (pos != string::npos)
_RefreshUrl = content.substr(pos + 4); _RefreshUrl = getAbsoluteUrl(content.substr(pos + 4));
} }
_NextRefreshTime += timeSec; _NextRefreshTime += timeSec;
@ -1176,7 +1215,10 @@ namespace NLGUI
break; break;
case HTML_A: case HTML_A:
{ {
registerAnchorName(MY_HTML_A);
CStyleParams style; CStyleParams style;
style.FontFamily = getFontFamily();
style.FontSize = getFontSize(); style.FontSize = getFontSize();
style.TextColor = LinkColor; style.TextColor = LinkColor;
style.Underlined = true; style.Underlined = true;
@ -1185,21 +1227,45 @@ namespace NLGUI
if (present[HTML_A_STYLE] && value[HTML_A_STYLE]) if (present[HTML_A_STYLE] && value[HTML_A_STYLE])
getStyleParams(value[HTML_A_STYLE], style); getStyleParams(value[HTML_A_STYLE], style);
_FontFamily.push_back(style.FontFamily);
_FontSize.push_back(style.FontSize); _FontSize.push_back(style.FontSize);
_TextColor.push_back(style.TextColor); _TextColor.push_back(style.TextColor);
_FontUnderlined.push_back(style.Underlined); _FontUnderlined.push_back(style.Underlined);
_FontStrikeThrough.push_back(style.StrikeThrough); _FontStrikeThrough.push_back(style.StrikeThrough);
_GlobalColor.push_back(LinkColorGlobalColor); _GlobalColor.push_back(LinkColorGlobalColor);
_A.push_back(true); _A.push_back(true);
_Link.push_back ("");
_LinkTitle.push_back("");
_LinkClass.push_back("");
// #fragment works with both ID and NAME so register both
if (present[MY_HTML_A_NAME] && value[MY_HTML_A_NAME])
_AnchorName.push_back(value[MY_HTML_A_NAME]);
if (present[MY_HTML_A_TITLE] && value[MY_HTML_A_TITLE]) if (present[MY_HTML_A_TITLE] && value[MY_HTML_A_TITLE])
_LinkTitle.push_back(value[MY_HTML_A_TITLE]); _LinkTitle.back() = value[MY_HTML_A_TITLE];
if (present[MY_HTML_A_CLASS] && value[MY_HTML_A_CLASS]) if (present[MY_HTML_A_CLASS] && value[MY_HTML_A_CLASS])
_LinkClass.push_back(value[MY_HTML_A_CLASS]); _LinkClass.back() = value[MY_HTML_A_CLASS];
if (present[MY_HTML_A_HREF] && value[MY_HTML_A_HREF])
{
string suri = value[MY_HTML_A_HREF];
if(suri.find("ah:") == 0)
{
if (_TrustedDomain)
_Link.back() = suri;
}
else if (_TrustedDomain && suri[0] == '#' && _LuaHrefHack)
{
// Direct url (hack for lua beginElement)
_Link.back() = suri.substr(1);
}
else
{
// convert href from "?key=val" into "http://domain.com/?key=val"
_Link.back() = getAbsoluteUrl(suri);
}
}
} }
break; break;
case HTML_DIV: case HTML_DIV:
{ {
_BlockLevelElement.push_back(true); _BlockLevelElement.push_back(true);
@ -1286,7 +1352,6 @@ namespace NLGUI
} }
} }
break; break;
case HTML_FONT: case HTML_FONT:
{ {
bool found = false; bool found = false;
@ -1323,7 +1388,8 @@ namespace NLGUI
{ {
if (present[HTML_BODY_BGCOLOR] && value[HTML_BODY_BGCOLOR]) if (present[HTML_BODY_BGCOLOR] && value[HTML_BODY_BGCOLOR])
{ {
CRGBA bgColor = getColor (value[HTML_BODY_BGCOLOR]); CRGBA bgColor;
if (scanHTMLColor(value[HTML_BODY_BGCOLOR], bgColor))
setBackgroundColor (bgColor); setBackgroundColor (bgColor);
} }
@ -1504,14 +1570,25 @@ namespace NLGUI
if (present[MY_HTML_INPUT_ALT] && value[MY_HTML_INPUT_ALT]) if (present[MY_HTML_INPUT_ALT] && value[MY_HTML_INPUT_ALT])
tooltip = value[MY_HTML_INPUT_ALT]; tooltip = value[MY_HTML_INPUT_ALT];
string type = toLower(value[MY_HTML_INPUT_TYPE]); // by default not inherited, font family defaults to system font
if (type == "image")
{
CStyleParams style; CStyleParams style;
// width, height from inline css style.TextColor = TextColor;
style.FontSize = TextFontSize;
style.FontWeight = FONT_WEIGHT_NORMAL;
style.FontOblique = false;
if (present[MY_HTML_INPUT_STYLE] && value[MY_HTML_INPUT_STYLE]) if (present[MY_HTML_INPUT_STYLE] && value[MY_HTML_INPUT_STYLE])
getStyleParams(value[MY_HTML_INPUT_STYLE], style); getStyleParams(value[MY_HTML_INPUT_STYLE], style);
_TextColor.push_back(style.TextColor);
_FontFamily.push_back(style.FontFamily);
_FontSize.push_back(style.FontSize);
_FontWeight.push_back(style.FontWeight);
_FontOblique.push_back(style.FontOblique);
string type = toLower(value[MY_HTML_INPUT_TYPE]);
if (type == "image")
{
// The submit button // The submit button
string name; string name;
string normal; string normal;
@ -1602,9 +1679,6 @@ namespace NLGUI
getParagraph()->addChild (buttonGroup); getParagraph()->addChild (buttonGroup);
paragraphChange (); paragraphChange ();
} }
// addButton (CCtrlTextButton::PushButton, name, normal, pushed.empty()?normal:pushed, over,
// globalColor, "html_submit_form", param.c_str(), tooltip);
} }
else if (type == "text") else if (type == "text")
{ {
@ -1722,6 +1796,12 @@ namespace NLGUI
_Forms.back().Entries.push_back (entry); _Forms.back().Entries.push_back (entry);
} }
} }
popIfNotEmpty(_FontFamily);
popIfNotEmpty(_FontSize);
popIfNotEmpty(_TextColor);
popIfNotEmpty(_FontWeight);
popIfNotEmpty(_FontOblique);
} }
} }
break; break;
@ -1834,7 +1914,29 @@ namespace NLGUI
newParagraph(PBeginSpace); newParagraph(PBeginSpace);
break; break;
case HTML_PRE: case HTML_PRE:
{
CStyleParams style;
style.TextColor = getTextColor();
style.FontFamily = "monospace";
style.FontSize = getFontSize();
style.FontWeight = getFontWeight();
style.FontOblique = getFontOblique();
style.Underlined = getFontUnderlined();
style.StrikeThrough = getFontStrikeThrough();
if (present[HTML_PRE_STYLE] && value[HTML_PRE_STYLE])
getStyleParams(value[HTML_PRE_STYLE], style);
_TextColor.push_back(style.TextColor);
_FontFamily.push_back(style.FontFamily);
_FontSize.push_back(style.FontSize);
_FontWeight.push_back(style.FontWeight);
_FontOblique.push_back(style.FontOblique);
_FontUnderlined.push_back(style.Underlined);
_FontStrikeThrough.push_back(style.StrikeThrough);
_PRE.push_back(true); _PRE.push_back(true);
}
break; break;
case HTML_TABLE: case HTML_TABLE:
{ {
@ -1851,7 +1953,7 @@ namespace NLGUI
if (present[MY_HTML_TABLE_BORDER] && value[MY_HTML_TABLE_BORDER]) if (present[MY_HTML_TABLE_BORDER] && value[MY_HTML_TABLE_BORDER])
fromString(value[MY_HTML_TABLE_BORDER], table->Border); fromString(value[MY_HTML_TABLE_BORDER], table->Border);
if (present[MY_HTML_TABLE_BORDERCOLOR] && value[MY_HTML_TABLE_BORDERCOLOR]) if (present[MY_HTML_TABLE_BORDERCOLOR] && value[MY_HTML_TABLE_BORDERCOLOR])
table->BorderColor = getColor (value[MY_HTML_TABLE_BORDERCOLOR]); scanHTMLColor(value[MY_HTML_TABLE_BORDERCOLOR], table->BorderColor);
if (present[MY_HTML_TABLE_CELLSPACING] && value[MY_HTML_TABLE_CELLSPACING]) if (present[MY_HTML_TABLE_CELLSPACING] && value[MY_HTML_TABLE_CELLSPACING])
fromString(value[MY_HTML_TABLE_CELLSPACING], table->CellSpacing); fromString(value[MY_HTML_TABLE_CELLSPACING], table->CellSpacing);
if (present[MY_HTML_TABLE_CELLPADDING] && value[MY_HTML_TABLE_CELLPADDING]) if (present[MY_HTML_TABLE_CELLPADDING] && value[MY_HTML_TABLE_CELLPADDING])
@ -1958,9 +2060,27 @@ namespace NLGUI
} }
break; break;
case HTML_TEXTAREA: case HTML_TEXTAREA:
_PRE.push_back(true);
// Got one form ? // Got one form ?
if (!(_Forms.empty())) if (!(_Forms.empty()))
{ {
// not inherited by default, font family defaults to system font
CStyleParams style;
style.TextColor = TextColor;
style.FontWeight = FONT_WEIGHT_NORMAL;
style.FontOblique = false;
style.FontSize = TextFontSize;
if (present[MY_HTML_TEXTAREA_STYLE] && value[MY_HTML_TEXTAREA_STYLE])
getStyleParams(value[MY_HTML_TEXTAREA_STYLE], style);
_TextColor.push_back(style.TextColor);
_FontFamily.push_back(style.FontFamily);
_FontSize.push_back(style.FontSize);
_FontWeight.push_back(style.FontWeight);
_FontOblique.push_back(style.FontOblique);
// read general property // read general property
string templateName; string templateName;
@ -2043,6 +2163,7 @@ namespace NLGUI
{ {
CStyleParams style; CStyleParams style;
style.TextColor = getTextColor(); style.TextColor = getTextColor();
style.FontFamily = getFontFamily();
style.FontSize = getFontSize(); style.FontSize = getFontSize();
style.FontWeight = getFontWeight(); style.FontWeight = getFontWeight();
style.FontOblique = getFontOblique(); style.FontOblique = getFontOblique();
@ -2053,6 +2174,7 @@ namespace NLGUI
getStyleParams(value[MY_HTML_SPAN_STYLE], style); getStyleParams(value[MY_HTML_SPAN_STYLE], style);
_TextColor.push_back(style.TextColor); _TextColor.push_back(style.TextColor);
_FontFamily.push_back(style.FontFamily);
_FontSize.push_back(style.FontSize); _FontSize.push_back(style.FontSize);
_FontWeight.push_back(style.FontWeight); _FontWeight.push_back(style.FontWeight);
_FontOblique.push_back(style.FontOblique); _FontOblique.push_back(style.FontOblique);
@ -2207,6 +2329,7 @@ namespace NLGUI
popIfNotEmpty (_FontSize); popIfNotEmpty (_FontSize);
break; break;
case HTML_A: case HTML_A:
popIfNotEmpty (_FontFamily);
popIfNotEmpty (_FontSize); popIfNotEmpty (_FontSize);
popIfNotEmpty (_TextColor); popIfNotEmpty (_TextColor);
popIfNotEmpty (_FontUnderlined); popIfNotEmpty (_FontUnderlined);
@ -2232,6 +2355,13 @@ namespace NLGUI
endParagraph(); endParagraph();
break; break;
case HTML_PRE: case HTML_PRE:
popIfNotEmpty (_FontFamily);
popIfNotEmpty (_FontSize);
popIfNotEmpty (_FontWeight);
popIfNotEmpty (_FontOblique);
popIfNotEmpty (_TextColor);
popIfNotEmpty (_FontUnderlined);
popIfNotEmpty (_FontStrikeThrough);
popIfNotEmpty (_PRE); popIfNotEmpty (_PRE);
break; break;
case HTML_DIV: case HTML_DIV:
@ -2277,7 +2407,15 @@ namespace NLGUI
entry.TextArea = textArea; entry.TextArea = textArea;
_Forms.back().Entries.push_back (entry); _Forms.back().Entries.push_back (entry);
} }
popIfNotEmpty (_FontFamily);
popIfNotEmpty (_FontSize);
popIfNotEmpty (_FontWeight);
popIfNotEmpty (_FontOblique);
popIfNotEmpty (_TextColor);
} }
popIfNotEmpty (_PRE);
} }
break; break;
case HTML_TITLE: case HTML_TITLE:
@ -2437,6 +2575,7 @@ namespace NLGUI
} }
break; break;
case HTML_SPAN: case HTML_SPAN:
popIfNotEmpty (_FontFamily);
popIfNotEmpty (_FontSize); popIfNotEmpty (_FontSize);
popIfNotEmpty (_FontWeight); popIfNotEmpty (_FontWeight);
popIfNotEmpty (_FontOblique); popIfNotEmpty (_FontOblique);
@ -2548,6 +2687,7 @@ namespace NLGUI
_SelectOption = false; _SelectOption = false;
_GroupListAdaptor = NULL; _GroupListAdaptor = NULL;
_DocumentUrl = ""; _DocumentUrl = "";
_DocumentDomain = "";
_UrlFragment.clear(); _UrlFragment.clear();
_RefreshUrl.clear(); _RefreshUrl.clear();
_NextRefreshTime = 0.0; _NextRefreshTime = 0.0;
@ -3907,6 +4047,7 @@ namespace NLGUI
// Compatible with current parameters ? // Compatible with current parameters ?
if (!skipLine && if (!skipLine &&
(getTextColor() == _CurrentViewLink->getColor()) && (getTextColor() == _CurrentViewLink->getColor()) &&
(getFontFamily() == _CurrentViewLink->getFontName()) &&
(getFontSize() == (uint)_CurrentViewLink->getFontSize()) && (getFontSize() == (uint)_CurrentViewLink->getFontSize()) &&
(getFontUnderlined() == _CurrentViewLink->getUnderlined()) && (getFontUnderlined() == _CurrentViewLink->getUnderlined()) &&
(getFontStrikeThrough() == _CurrentViewLink->getStrikeThrough()) && (getFontStrikeThrough() == _CurrentViewLink->getStrikeThrough()) &&
@ -3971,6 +4112,7 @@ namespace NLGUI
} }
newLink->setText(tmpStr); newLink->setText(tmpStr);
newLink->setColor(getTextColor()); newLink->setColor(getTextColor());
newLink->setFontName(getFontFamily());
newLink->setFontSize(getFontSize()); newLink->setFontSize(getFontSize());
newLink->setEmbolden(embolden); newLink->setEmbolden(embolden);
newLink->setOblique(getFontOblique()); newLink->setOblique(getFontOblique());
@ -4062,7 +4204,7 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
CInterfaceGroup *CGroupHTML::addTextArea(const std::string &templateName, const char *name, uint /* rows */, uint cols, bool multiLine, const ucstring &content, uint maxlength) CInterfaceGroup *CGroupHTML::addTextArea(const std::string &templateName, const char *name, uint rows, uint cols, bool multiLine, const ucstring &content, uint maxlength)
{ {
// In a paragraph ? // In a paragraph ?
if (!_Paragraph) if (!_Paragraph)
@ -4077,11 +4219,18 @@ namespace NLGUI
{ {
// Not added ? // Not added ?
std::vector<std::pair<std::string,std::string> > templateParams; std::vector<std::pair<std::string,std::string> > templateParams;
templateParams.push_back (std::pair<std::string,std::string> ("w", toString (cols*12))); templateParams.push_back (std::pair<std::string,std::string> ("w", toString (cols*getFontSize())));
//templateParams.push_back (std::pair<std::string,std::string> ("h", toString (rows*12)));
templateParams.push_back (std::pair<std::string,std::string> ("id", name)); templateParams.push_back (std::pair<std::string,std::string> ("id", name));
templateParams.push_back (std::pair<std::string,std::string> ("prompt", "")); templateParams.push_back (std::pair<std::string,std::string> ("prompt", ""));
templateParams.push_back (std::pair<std::string,std::string> ("multiline", multiLine?"true":"false")); templateParams.push_back (std::pair<std::string,std::string> ("multiline", multiLine?"true":"false"));
templateParams.push_back (std::pair<std::string,std::string> ("fontsize", toString (getFontSize())));
templateParams.push_back (std::pair<std::string,std::string> ("color", getTextColor().toString()));
if (getFontWeight() >= FONT_WEIGHT_BOLD)
templateParams.push_back (std::pair<std::string,std::string> ("fontweight", "bold"));
if (getFontOblique())
templateParams.push_back (std::pair<std::string,std::string> ("fontstyle", "oblique"));
if (multiLine)
templateParams.push_back (std::pair<std::string,std::string> ("multi_min_line", toString(rows)));
templateParams.push_back (std::pair<std::string,std::string> ("want_return", multiLine?"true":"false")); templateParams.push_back (std::pair<std::string,std::string> ("want_return", multiLine?"true":"false"));
templateParams.push_back (std::pair<std::string,std::string> ("enter_recover_focus", "false")); templateParams.push_back (std::pair<std::string,std::string> ("enter_recover_focus", "false"));
if (maxlength > 0) if (maxlength > 0)
@ -4279,7 +4428,6 @@ namespace NLGUI
ctrlButton->setToolTipParent(TTMouse); ctrlButton->setToolTipParent(TTMouse);
ctrlButton->setToolTipParentPosRef(Hotspot_TTAuto); ctrlButton->setToolTipParentPosRef(Hotspot_TTAuto);
ctrlButton->setToolTipPosRef(Hotspot_TTAuto); ctrlButton->setToolTipPosRef(Hotspot_TTAuto);
ctrlButton->setActionOnLeftClickParams(tooltip);
} }
getParagraph()->addChild (ctrlButton); getParagraph()->addChild (ctrlButton);
@ -4657,9 +4805,12 @@ namespace NLGUI
string finalUrl; string finalUrl;
bool isLocal = lookupLocalFile (finalUrl, _URL.c_str(), true); bool isLocal = lookupLocalFile (finalUrl, _URL.c_str(), true);
// Save new url
_URL = finalUrl; _URL = finalUrl;
CUrlParser uri (_URL);
_TrustedDomain = isTrustedDomain(uri.host);
_DocumentDomain = uri.host;
// file is probably from bnp (ingame help) // file is probably from bnp (ingame help)
if (isLocal) if (isLocal)
{ {
@ -4667,8 +4818,6 @@ namespace NLGUI
} }
else else
{ {
_TrustedDomain = isTrustedDomain(setCurrentDomain(finalUrl));
SFormFields formfields; SFormFields formfields;
if (_PostNextTime) if (_PostNextTime)
{ {
@ -4704,9 +4853,11 @@ namespace NLGUI
// Ref the form // Ref the form
CForm &form = _Forms[_PostFormId]; CForm &form = _Forms[_PostFormId];
// Save new url
_URL = form.Action; _URL = form.Action;
_TrustedDomain = isTrustedDomain(setCurrentDomain(_URL));
CUrlParser uri(_URL);
_TrustedDomain = isTrustedDomain(uri.host);
_DocumentDomain = uri.host;
for (i=0; i<form.Entries.size(); i++) for (i=0; i<form.Entries.size(); i++)
{ {
@ -4814,6 +4965,7 @@ namespace NLGUI
#endif #endif
_TrustedDomain = true; _TrustedDomain = true;
_DocumentDomain = "localhost";
// Stop previous browse, remove content // Stop previous browse, remove content
stopBrowse (); stopBrowse ();
@ -4899,7 +5051,7 @@ namespace NLGUI
curl_easy_setopt(curl, CURLOPT_USERAGENT, userAgent.c_str()); curl_easy_setopt(curl, CURLOPT_USERAGENT, userAgent.c_str());
// Cookies // Cookies
sendCookies(curl, HTTPCurrentDomain, _TrustedDomain); sendCookies(curl, _DocumentDomain, _TrustedDomain);
// Referer // Referer
if (!referer.empty()) if (!referer.empty())
@ -4983,9 +5135,6 @@ namespace NLGUI
nlwarning("(%s) HTML download finished, content length %d, type '%s', code %d", _Id.c_str(), content.size(), type.c_str(), code); nlwarning("(%s) HTML download finished, content length %d, type '%s', code %d", _Id.c_str(), content.size(), type.c_str(), code);
#endif #endif
// set trusted domain for parsing
_TrustedDomain = isTrustedDomain(setCurrentDomain(_URL));
// create <html> markup for image downloads // create <html> markup for image downloads
if (type.find("image/") == 0 && content.size() > 0) if (type.find("image/") == 0 && content.size() > 0)
{ {
@ -5468,15 +5617,11 @@ namespace NLGUI
value.insert(value.begin() + (uint)it.nextKey().toInteger(), buffer); value.insert(value.begin() + (uint)it.nextKey().toInteger(), buffer);
} }
beginElement(element_number, present, value);
if (element_number == HTML_A)
{
// ingame lua scripts from browser are using <a href="#http://..."> url scheme // ingame lua scripts from browser are using <a href="#http://..."> url scheme
// reason unknown // reason unknown
_LuaHrefHack = true; _LuaHrefHack = true;
addLink(element_number, present, value); beginElement(element_number, present, value);
_LuaHrefHack = false; _LuaHrefHack = false;
}
return 0; return 0;
} }
@ -5636,6 +5781,10 @@ namespace NLGUI
for (it=styles.begin(); it != styles.end(); ++it) for (it=styles.begin(); it != styles.end(); ++it)
{ {
if (it->first == "font-size") if (it->first == "font-size")
{
if (it->second == "inherit")
style.FontSize = getFontSize();
else
{ {
float tmp; float tmp;
sint size = 0; sint size = 0;
@ -5643,17 +5792,35 @@ namespace NLGUI
if (size > 0) if (size > 0)
style.FontSize = size; style.FontSize = size;
} }
}
else else
if (it->first == "font-style") if (it->first == "font-style")
{ {
if (it->second == "inherit")
style.FontOblique = getFontOblique();
else
if (it->second == "italic" || it->second == "oblique") if (it->second == "italic" || it->second == "oblique")
style.FontOblique = true; style.FontOblique = true;
} }
else else
if (it->first == "font-family")
{
if (it->second == "inherit")
style.FontFamily = getFontFamily();
else
if (it->second == "monospace")
style.FontFamily = "monospace";
else
style.FontFamily = "";
}
else
if (it->first == "font-weight") if (it->first == "font-weight")
{ {
// https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight
uint weight = 400; uint weight = 400;
if (it->second == "inherit")
weight = getFontWeight();
else
if (it->second == "normal") if (it->second == "normal")
weight = 400; weight = 400;
else else
@ -5686,6 +5853,9 @@ namespace NLGUI
} }
else else
if (it->first == "color") if (it->first == "color")
if (it->second == "inherit")
style.TextColor = getTextColor();
else
scanHTMLColor(it->second.c_str(), style.TextColor); scanHTMLColor(it->second.c_str(), style.TextColor);
else else
if (it->first == "text-decoration" || it->first == "text-decoration-line") if (it->first == "text-decoration" || it->first == "text-decoration-line")
@ -5827,7 +5997,6 @@ namespace NLGUI
{ {
std::string ret; std::string ret;
sint32 number = Value; sint32 number = Value;
bool upper = false;
if (Type == "disc") if (Type == "disc")
{ {

View file

@ -61,11 +61,6 @@ namespace NLGUI
} }
} }
if (element_number == HTML_A)
{
addLink(element_number, present, value);
}
beginElement(element_number, present, value); beginElement(element_number, present, value);
} }
else else

View file

@ -262,7 +262,7 @@ namespace NLGUI
{ {
tabB->setId(string("tab") + NLMISC::toString(_Buttons.size())); tabB->setId(string("tab") + NLMISC::toString(_Buttons.size()));
if(_Buttons.size()==0) if(_Buttons.empty())
{ {
tabB->setParentPos(NULL); tabB->setParentPos(NULL);
tabB->setParentPosRef(Hotspot_TL); tabB->setParentPosRef(Hotspot_TL);
@ -453,7 +453,7 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
void CGroupTab::updateFirstTabButton() void CGroupTab::updateFirstTabButton()
{ {
if(!_HideOutTabs || (_Selection<0) || (_Buttons.size()==0) || (_Parent->getWReal()<0) if(!_HideOutTabs || (_Selection<0) || _Buttons.empty() || (_Parent->getWReal()<0)
|| _FirstTabIndex>=(sint)_Buttons.size()) || _FirstTabIndex>=(sint)_Buttons.size())
return; return;

View file

@ -193,7 +193,7 @@ namespace NLGUI
xmlKeepBlanksDefault(0); xmlKeepBlanksDefault(0);
//parse all interface files and build a single xml document //parse all interface files and build a single xml document
xmlNodePtr globalEnclosing; xmlNodePtr globalEnclosing;
nlassert (strings.size()); nlassert (!strings.empty());
CIXml read; CIXml read;
string nextFileName; string nextFileName;
static const char *SCRIPT_AS_STRING = "<script as string>"; static const char *SCRIPT_AS_STRING = "<script as string>";

View file

@ -31,7 +31,6 @@ namespace NLGUI
/// store all cookies we receive and resent them depending of the domain /// store all cookies we receive and resent them depending of the domain
static std::map<std::string, std::map<std::string, std::string> > HTTPCookies; static std::map<std::string, std::map<std::string, std::string> > HTTPCookies;
std::string HTTPCurrentDomain; // The current domain that will be used to get which cookies to send
// *************************************************************************** // ***************************************************************************
@ -332,24 +331,6 @@ namespace NLGUI
return dst; return dst;
} }
// set current HTTPCurrentDomain for cookie selection, return new domain
const std::string &setCurrentDomain(const std::string &uri)
{
if (uri.find("http://") == 0)
HTTPCurrentDomain = uri.substr(7, uri.find("/", 7) - 7);
else
if (uri.find("https://") == 0)
HTTPCurrentDomain = uri.substr(8, uri.find("/", 8) - 8);
else
if (uri.find("//") == 0)
HTTPCurrentDomain = uri.substr(2, uri.find("/", 2) - 2);
else
if (uri.find("/") != std::string::npos)
HTTPCurrentDomain = uri.substr(0, uri.find("/") - 1);
return HTTPCurrentDomain;
}
// update HTTPCookies list // update HTTPCookies list
static void receiveCookie(const char *nsformat, const std::string &domain, bool trusted) static void receiveCookie(const char *nsformat, const std::string &domain, bool trusted)
{ {
@ -371,6 +352,9 @@ namespace NLGUI
chunks[0] = chunks[0].substr(10); chunks[0] = chunks[0].substr(10);
} }
// make sure domain is lowercase
chunks[0] = toLower(chunks[0]);
if (chunks[0] != domain && chunks[0] != std::string("." + domain)) if (chunks[0] != domain && chunks[0] != std::string("." + domain))
{ {
// cookie is for different domain // cookie is for different domain

View file

@ -14,8 +14,7 @@
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <string> #include "nel/misc/common.h"
#include "nel/misc/types_nl.h"
#include "nel/gui/url_parser.h" #include "nel/gui/url_parser.h"
using namespace std; using namespace std;
@ -63,22 +62,40 @@ namespace NLGUI
} }
} }
// scan for domain // scan for authority
if (uri.substr(0, 2) == "//") if (uri.substr(0, 2) == "//")
{ {
pos = uri.find("/", 3); pos = uri.find_first_of("/?", 2);
domain = uri.substr(0, pos); authority = uri.substr(0, pos);
if (pos != npos) if (pos != npos)
uri = uri.substr(pos); uri = uri.substr(pos);
else else
uri.clear(); uri.clear();
// strip empty port from authority
if (authority.find_last_of(":") == authority.length() - 1)
authority = authority.substr(0, authority.length() - 1);
// extract host from user:pass@host:port
pos = authority.find("@");
if (pos != npos)
host = authority.substr(pos + 1);
else
host = authority.substr(2);
// case-insensitive
host = NLMISC::toLower(host);
pos = host.find(":");
if (pos != npos)
host = host.substr(0, pos);
} }
// scan for query // scan for query
pos = uri.find("?"); pos = uri.find("?");
if (pos != npos) if (pos != npos)
{ {
query = uri.substr(pos + 1); query = uri.substr(pos);
uri = uri.substr(0, pos); uri = uri.substr(0, pos);
} }
@ -99,11 +116,11 @@ namespace NLGUI
scheme = base.scheme; scheme = base.scheme;
// if we already have domain, then ignore base path // if we already have authority, then ignore base path
if (!domain.empty()) if (!authority.empty())
return; return;
domain = base.domain; authority = base.authority;
if (path.empty()) if (path.empty())
{ {
path = base.path; path = base.path;
@ -190,7 +207,7 @@ namespace NLGUI
bool CUrlParser::isAbsolute() const bool CUrlParser::isAbsolute() const
{ {
return !scheme.empty() && !domain.empty(); return !scheme.empty() && !authority.empty();
} }
// serialize URL back to string // serialize URL back to string
@ -200,9 +217,9 @@ namespace NLGUI
if (!scheme.empty()) if (!scheme.empty())
result += scheme + ":"; result += scheme + ":";
if (!domain.empty()) if (!authority.empty())
{ {
result += domain; result += authority;
} }
// path already has leading slash // path already has leading slash
@ -210,7 +227,9 @@ namespace NLGUI
result += path; result += path;
if (!query.empty()) if (!query.empty())
result += "?" + query; if (query.find_first_of("?") != 0)
result += "?";
result += query;
if (!hash.empty()) if (!hash.empty())
result += "#" + hash; result += "#" + hash;

View file

@ -34,6 +34,7 @@ namespace NLGUI
NL3D::UTextContext* CViewRenderer::textcontext = NULL; NL3D::UTextContext* CViewRenderer::textcontext = NULL;
std::set< std::string >* CViewRenderer::hwCursors = NULL; std::set< std::string >* CViewRenderer::hwCursors = NULL;
float CViewRenderer::hwCursorScale = 1.0f; float CViewRenderer::hwCursorScale = 1.0f;
CViewRenderer::TFontsList CViewRenderer::fonts;
CViewRenderer::CViewRenderer() CViewRenderer::CViewRenderer()
{ {
@ -214,17 +215,65 @@ namespace NLGUI
ite++; ite++;
} }
TFontsList::iterator iteFonts = fonts.begin();
while (iteFonts != fonts.end())
{
driver->deleteTextContext(iteFonts->second);
++iteFonts;
}
_GlobalTextures.clear(); _GlobalTextures.clear();
_SImages.clear(); _SImages.clear();
_SImageIterators.clear(); _SImageIterators.clear();
_TextureMap.clear(); _TextureMap.clear();
_IndexesToTextureIds.clear(); _IndexesToTextureIds.clear();
fonts.clear();
} }
NL3D::UDriver* CViewRenderer::getDriver(){ NL3D::UDriver* CViewRenderer::getDriver(){
return driver; return driver;
} }
// ***************************************************************************
NL3D::UTextContext* CViewRenderer::getTextContext(const std::string &name)
{
if (name.size() > 0 && fonts.count(name) > 0)
return fonts[name];
return textcontext;
}
// ***************************************************************************
bool CViewRenderer::registerFont(const std::string &name, const std::string &font)
{
nlassert(driver != NULL);
// free existing font
if (fonts.count(name) > 0)
driver->deleteTextContext(fonts[name]);
std::string fontFile = CPath::lookup(font, false);
if (fontFile.size() == 0)
{
nlwarning("Font file '%s' not found", font.c_str());
return false;
}
NL3D::UTextContext *context;
context = driver->createTextContext(fontFile);
if (context == NULL)
{
nlwarning("Cannot create a TextContext with font '%s'.", font.c_str());
return false;
}
context->setKeep800x600Ratio(false);
fonts[name] = context;
return true;
}
void CViewRenderer::setTextContext(NL3D::UTextContext *textcontext) void CViewRenderer::setTextContext(NL3D::UTextContext *textcontext)
{ {
CViewRenderer::textcontext = textcontext; CViewRenderer::textcontext = textcontext;

View file

@ -61,6 +61,7 @@ namespace NLGUI
_FontSize = 12 + _FontSize = 12 +
CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32(); CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32();
_FontName.clear();
_Embolden = false; _Embolden = false;
_Oblique = false; _Oblique = false;
_Color = CRGBA(255,255,255,255); _Color = CRGBA(255,255,255,255);
@ -75,6 +76,7 @@ namespace NLGUI
_MultiLineMaxWOnly = false; _MultiLineMaxWOnly = false;
_MultiLineClipEndSpace = false; _MultiLineClipEndSpace = false;
_LastMultiLineMaxW = 0; _LastMultiLineMaxW = 0;
_MultiMinLine = 0;
_MultiMaxLine = 0; _MultiMaxLine = 0;
_Index = 0xFFFFFFFF; _Index = 0xFFFFFFFF;
@ -133,7 +135,7 @@ namespace NLGUI
CViewText::~CViewText() CViewText::~CViewText()
{ {
if (_Index != 0xFFFFFFFF) if (_Index != 0xFFFFFFFF)
CViewRenderer::getTextContext()->erase (_Index); CViewRenderer::getTextContext(_FontName)->erase (_Index);
clearLines(); clearLines();
if (!_Setuped) if (!_Setuped)
@ -147,7 +149,7 @@ namespace NLGUI
CViewText &CViewText::operator=(const CViewText &vt) CViewText &CViewText::operator=(const CViewText &vt)
{ {
if (_Index != 0xFFFFFFFF) if (_Index != 0xFFFFFFFF)
CViewRenderer::getTextContext()->erase (_Index); CViewRenderer::getTextContext(_FontName)->erase (_Index);
// Create database entries // Create database entries
_Active = vt._Active; _Active = vt._Active;
@ -305,6 +307,11 @@ namespace NLGUI
return toString( _MultiMaxLine ); return toString( _MultiMaxLine );
} }
else else
if( name == "multi_min_line" )
{
return toString( _MultiMinLine );
}
else
if( name == "underlined" ) if( name == "underlined" )
{ {
return toString( _Underlined ); return toString( _Underlined );
@ -479,6 +486,14 @@ namespace NLGUI
return true; return true;
} }
else else
if( name == "multi_min_line" )
{
uint32 i;
if( fromString( value, i ) )
_MultiMinLine = i;
return true;
}
else
if( name == "underlined" ) if( name == "underlined" )
{ {
bool b; bool b;
@ -621,6 +636,7 @@ namespace NLGUI
xmlSetProp( node, BAD_CAST "multi_line_space", BAD_CAST toString( _MultiLineSpace ).c_str() ); xmlSetProp( node, BAD_CAST "multi_line_space", BAD_CAST toString( _MultiLineSpace ).c_str() );
xmlSetProp( node, BAD_CAST "multi_line_maxw_only", BAD_CAST toString( _MultiLineMaxWOnly ).c_str() ); xmlSetProp( node, BAD_CAST "multi_line_maxw_only", BAD_CAST toString( _MultiLineMaxWOnly ).c_str() );
xmlSetProp( node, BAD_CAST "multi_max_line", BAD_CAST toString( _MultiMaxLine ).c_str() ); xmlSetProp( node, BAD_CAST "multi_max_line", BAD_CAST toString( _MultiMaxLine ).c_str() );
xmlSetProp( node, BAD_CAST "multi_min_line", BAD_CAST toString( _MultiMinLine ).c_str() );
xmlSetProp( node, BAD_CAST "underlined", BAD_CAST toString( _Underlined ).c_str() ); xmlSetProp( node, BAD_CAST "underlined", BAD_CAST toString( _Underlined ).c_str() );
xmlSetProp( node, BAD_CAST "strikethrough", BAD_CAST toString( _StrikeThrough ).c_str() ); xmlSetProp( node, BAD_CAST "strikethrough", BAD_CAST toString( _StrikeThrough ).c_str() );
xmlSetProp( node, BAD_CAST "case_mode", BAD_CAST toString( uint32( _CaseMode ) ).c_str() ); xmlSetProp( node, BAD_CAST "case_mode", BAD_CAST toString( uint32( _CaseMode ) ).c_str() );
@ -741,6 +757,11 @@ namespace NLGUI
if (prop) if (prop)
fromString((const char*)prop, _MultiMaxLine); fromString((const char*)prop, _MultiMaxLine);
prop = (char*) xmlGetProp( cur, (xmlChar*)"multi_min_line" );
_MultiMinLine = 0;
if (prop)
fromString((const char*)prop, _MultiMinLine);
prop = (char*) xmlGetProp( cur, (xmlChar*)"underlined" ); prop = (char*) xmlGetProp( cur, (xmlChar*)"underlined" );
_Underlined = false; _Underlined = false;
if (prop) if (prop)
@ -938,7 +959,7 @@ namespace NLGUI
return; return;
rVR.getScreenOOSize (oow, ooh); rVR.getScreenOOSize (oow, ooh);
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
// *** get current color // *** get current color
@ -963,8 +984,6 @@ namespace NLGUI
{ {
if (_Lines.size() == 0) return; if (_Lines.size() == 0) return;
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
TextContext->setShadeOutline (_ShadowOutline); TextContext->setShadeOutline (_ShadowOutline);
@ -981,6 +1000,13 @@ namespace NLGUI
sint y_line = _YReal+_FontLegHeight-2; sint y_line = _YReal+_FontLegHeight-2;
if (_MultiMinLine > _Lines.size())
{
uint dy = getMultiMinOffsetY();
y += dy * ooh;
y_line += dy;
}
// special selection code // special selection code
if(_TextSelection) if(_TextSelection)
{ {
@ -1233,6 +1259,24 @@ namespace NLGUI
_FormatTags.clear(); _FormatTags.clear();
} }
// ***************************************************************************
void CViewText::setFontName(const std::string &name)
{
if (_FontName == name)
return;
if (_FontName.length() > 0)
{
if (_Index != 0xFFFFFFFF)
CViewRenderer::getTextContext(_FontName)->erase (_Index);
clearLines();
}
_FontName = name;
computeFontSize ();
invalidateContent();
}
// *************************************************************************** // ***************************************************************************
void CViewText::setFontSize (sint nFontSize) void CViewText::setFontSize (sint nFontSize)
{ {
@ -1360,9 +1404,23 @@ namespace NLGUI
return _FontLegHeight; return _FontLegHeight;
} }
// ***************************************************************************
uint CViewText::getMultiMinOffsetY() const
{
uint dy = 0;
if (_MultiMinLine > _Lines.size())
{
// first line is always present even if _Lines is empty
uint nbLines = _MultiMinLine - std::max((sint)1, (sint)_Lines.size());
dy = nbLines * _FontHeight + (nbLines - 1) * _MultiLineSpace;
}
return dy;
}
// *************************************************************************** // ***************************************************************************
void CViewText::flushWordInLine(ucstring &ucCurrentWord, bool &linePushed, const CFormatInfo &wordFormat) void CViewText::flushWordInLine(ucstring &ucCurrentWord, bool &linePushed, const CFormatInfo &wordFormat)
{ {
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
// create a new line? // create a new line?
if(!linePushed) if(!linePushed)
{ {
@ -1370,7 +1428,7 @@ namespace NLGUI
linePushed= true; linePushed= true;
} }
// Append to the last line // Append to the last line
_Lines.back()->addWord(ucCurrentWord, 0, wordFormat, _FontWidth); _Lines.back()->addWord(ucCurrentWord, 0, wordFormat, _FontWidth, *TextContext);
// reset the word // reset the word
ucCurrentWord = ucstring(""); ucCurrentWord = ucstring("");
} }
@ -1406,7 +1464,7 @@ namespace NLGUI
rWidthCurrentLine= max(rWidthCurrentLine, (float)wordFormat.TabX*_FontWidth); rWidthCurrentLine= max(rWidthCurrentLine, (float)wordFormat.TabX*_FontWidth);
} }
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
// Parse the letter // Parse the letter
{ {
@ -1452,6 +1510,7 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
void CViewText::addDontClipWordLine(std::vector<CWord> &currLine) void CViewText::addDontClipWordLine(std::vector<CWord> &currLine)
{ {
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
// create a new line // create a new line
_Lines.push_back(TLineSPtr(new CLine)); _Lines.push_back(TLineSPtr(new CLine));
@ -1466,7 +1525,7 @@ namespace NLGUI
if(currLine[i].Format!=lineWordFormat) if(currLine[i].Format!=lineWordFormat)
{ {
// add the current lineWord to the line. // add the current lineWord to the line.
_Lines.back()->addWord(lineWord, 0, lineWordFormat, _FontWidth); _Lines.back()->addWord(lineWord, 0, lineWordFormat, _FontWidth, *TextContext);
// get new lineWordFormat // get new lineWordFormat
lineWordFormat= currLine[i].Format; lineWordFormat= currLine[i].Format;
// and clear // and clear
@ -1481,7 +1540,7 @@ namespace NLGUI
} }
if(!lineWord.empty()) if(!lineWord.empty())
_Lines.back()->addWord(lineWord, 0, lineWordFormat, _FontWidth); _Lines.back()->addWord(lineWord, 0, lineWordFormat, _FontWidth, *TextContext);
// clear // clear
currLine.clear(); currLine.clear();
@ -1491,6 +1550,7 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
void CViewText::updateTextContextMultiLineJustified(uint nMaxWidth, bool expandSpaces) void CViewText::updateTextContextMultiLineJustified(uint nMaxWidth, bool expandSpaces)
{ {
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
UTextContext::CStringInfo si; UTextContext::CStringInfo si;
// //
TCharPos currPos = 0; TCharPos currPos = 0;
@ -1584,7 +1644,7 @@ namespace NLGUI
// Get the word value. // Get the word value.
wordValue = _Text.substr(spaceEnd, wordEnd - spaceEnd); wordValue = _Text.substr(spaceEnd, wordEnd - spaceEnd);
// compute width of word // compute width of word
si = CViewRenderer::getTextContext()->getStringInfo(wordValue); si = TextContext->getStringInfo(wordValue);
// compute size of spaces/Tab + word // compute size of spaces/Tab + word
newLineWidth = lineWidth + numSpaces * _SpaceWidth; newLineWidth = lineWidth + numSpaces * _SpaceWidth;
@ -1641,7 +1701,7 @@ namespace NLGUI
{ {
uint maxNumSpaces = std::max(1U, (uint) (nMaxWidth / _SpaceWidth)); uint maxNumSpaces = std::max(1U, (uint) (nMaxWidth / _SpaceWidth));
CWord spaceWord; // a word with only spaces in it CWord spaceWord; // a word with only spaces in it
spaceWord.build (ucstring (""), maxNumSpaces); spaceWord.build (ucstring (""), *TextContext, maxNumSpaces);
spaceWord.Format= wordFormat; spaceWord.Format= wordFormat;
_Lines.push_back(TLineSPtr(new CLine)); _Lines.push_back(TLineSPtr(new CLine));
_Lines.back()->addWord(spaceWord, _FontWidth); _Lines.back()->addWord(spaceWord, _FontWidth);
@ -1663,14 +1723,14 @@ namespace NLGUI
for(currChar = 0; currChar < wordValue.length(); ++currChar) for(currChar = 0; currChar < wordValue.length(); ++currChar)
{ {
oneChar = wordValue[currChar]; oneChar = wordValue[currChar];
si = CViewRenderer::getTextContext()->getStringInfo(oneChar); si = TextContext->getStringInfo(oneChar);
if ((uint) (px + si.StringWidth) > nMaxWidth) break; if ((uint) (px + si.StringWidth) > nMaxWidth) break;
px += si.StringWidth; px += si.StringWidth;
} }
currChar = std::max((uint) 1, currChar); // must fit at least one character otherwise there's an infinite loop currChar = std::max((uint) 1, currChar); // must fit at least one character otherwise there's an infinite loop
wordValue = _Text.substr(spaceEnd, currChar); wordValue = _Text.substr(spaceEnd, currChar);
CWord word; CWord word;
word.build(wordValue, numSpaces); word.build(wordValue, *TextContext, numSpaces);
word.Format= wordFormat; word.Format= wordFormat;
_Lines.push_back(TLineSPtr(new CLine)); _Lines.push_back(TLineSPtr(new CLine));
float roomForSpaces = (float) nMaxWidth - word.Info.StringWidth; float roomForSpaces = (float) nMaxWidth - word.Info.StringWidth;
@ -1705,7 +1765,7 @@ namespace NLGUI
if (!wordValue.empty() || numSpaces != 0) if (!wordValue.empty() || numSpaces != 0)
{ {
CWord word; CWord word;
word.build(wordValue, numSpaces); word.build(wordValue, *TextContext, numSpaces);
word.Format= wordFormat; word.Format= wordFormat;
// update line width // update line width
_Lines.back()->addWord(word, _FontWidth); _Lines.back()->addWord(word, _FontWidth);
@ -1782,7 +1842,7 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
void CViewText::updateTextContext () void CViewText::updateTextContext ()
{ {
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
@ -1816,13 +1876,13 @@ namespace NLGUI
{ {
while (_Lines.size() > _MultiMaxLine) while (_Lines.size() > _MultiMaxLine)
{ {
_Lines.back()->clear(); _Lines.back()->clear(*TextContext);
_Lines.pop_back(); _Lines.pop_back();
} }
_Lines.pop_back(); _Lines.pop_back();
CViewText::CLine *endLine = new CViewText::CLine; CViewText::CLine *endLine = new CViewText::CLine;
CViewText::CWord w; CViewText::CWord w;
w.build(string("...")); w.build(string("..."), *TextContext);
endLine->addWord(w, _FontWidth); endLine->addWord(w, _FontWidth);
_Lines.push_back(TLineSPtr(endLine)); _Lines.push_back(TLineSPtr(endLine));
} }
@ -1836,6 +1896,10 @@ namespace NLGUI
_W = (sint)rTotalW; _W = (sint)rTotalW;
_H = std::max(_FontHeight, uint(_FontHeight * _Lines.size() + std::max(0, sint(_Lines.size()) - 1) * _MultiLineSpace)); _H = std::max(_FontHeight, uint(_FontHeight * _Lines.size() + std::max(0, sint(_Lines.size()) - 1) * _MultiLineSpace));
// See if we should pretend to have at least X lines
if (_MultiMinLine > 1)
_H = std::max(_H, sint(_FontHeight * _MultiMinLine + (_MultiMinLine - 1) * _MultiLineSpace));
// Compute tooltips size // Compute tooltips size
if (_Tooltips.size() > 0) if (_Tooltips.size() > 0)
for (uint i=0 ; i<_Lines.size() ; ++i) for (uint i=0 ; i<_Lines.size() ; ++i)
@ -2106,7 +2170,7 @@ namespace NLGUI
void CViewText::getCharacterPositionFromIndex(sint index, bool cursorAtPreviousLineEnd, sint &x, sint &y, sint &height) const void CViewText::getCharacterPositionFromIndex(sint index, bool cursorAtPreviousLineEnd, sint &x, sint &y, sint &height) const
{ {
NLMISC::clamp(index, 0, (sint) _Text.length()); NLMISC::clamp(index, 0, (sint) _Text.length());
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
TextContext->setShadeOutline (_ShadowOutline); TextContext->setShadeOutline (_ShadowOutline);
@ -2118,11 +2182,13 @@ namespace NLGUI
// //
if (_MultiLine) if (_MultiLine)
{ {
uint dy = getMultiMinOffsetY();
uint charIndex = 0; uint charIndex = 0;
// special case for end of text // special case for end of text
if (index == (sint) _Text.length()) if (index == (sint) _Text.length())
{ {
y = 0; y = dy;
if (_Lines.empty()) if (_Lines.empty())
{ {
x = 0; x = 0;
@ -2142,7 +2208,7 @@ namespace NLGUI
{ {
// should display the character at the end of previous line // should display the character at the end of previous line
CLine &currLine = *_Lines[i - 1]; CLine &currLine = *_Lines[i - 1];
y = (sint) ((_FontHeight + _MultiLineSpace) * (_Lines.size() - i)); y = (sint) ((_FontHeight + _MultiLineSpace) * (_Lines.size() - i) + dy);
x = (sint) (currLine.getWidth() + currLine.getEndSpaces() * currLine.getSpaceWidth()); x = (sint) (currLine.getWidth() + currLine.getEndSpaces() * currLine.getSpaceWidth());
sint nMaxWidth = getCurrentMultiLineMaxW(); sint nMaxWidth = getCurrentMultiLineMaxW();
x = std::min(x, nMaxWidth); x = std::min(x, nMaxWidth);
@ -2153,7 +2219,7 @@ namespace NLGUI
if ((sint) newCharIndex > index) if ((sint) newCharIndex > index)
{ {
// ok, this line contains the character, now, see which word contains it. // ok, this line contains the character, now, see which word contains it.
y = (sint) ((_FontHeight + _MultiLineSpace) * (_Lines.size() - 1 - i)); y = (sint) ((_FontHeight + _MultiLineSpace) * (_Lines.size() - 1 - i) + dy);
// see if the index is in the spaces at the end of line // see if the index is in the spaces at the end of line
if (index - charIndex >= currLine.getNumChars()) if (index - charIndex >= currLine.getNumChars())
{ {
@ -2211,7 +2277,7 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
// Tool fct : From a word and a x coordinate, give the matching character index // Tool fct : From a word and a x coordinate, give the matching character index
static uint getCharacterIndex(const ucstring &textValue, float x) static uint getCharacterIndex(const ucstring &textValue, float x, NL3D::UTextContext &textContext)
{ {
float px = 0.f; float px = 0.f;
UTextContext::CStringInfo si; UTextContext::CStringInfo si;
@ -2221,7 +2287,7 @@ namespace NLGUI
{ {
// get character width // get character width
singleChar[0] = textValue[i]; singleChar[0] = textValue[i];
si = CViewRenderer::getTextContext()->getStringInfo(singleChar); si = textContext.getStringInfo(singleChar);
px += si.StringWidth; px += si.StringWidth;
// the character is at the i - 1 position // the character is at the i - 1 position
if (px > x) if (px > x)
@ -2238,7 +2304,7 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
void CViewText::getCharacterIndexFromPosition(sint x, sint y, uint &index, bool &cursorAtPreviousLineEnd) const void CViewText::getCharacterIndexFromPosition(sint x, sint y, uint &index, bool &cursorAtPreviousLineEnd) const
{ {
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
// setup the text context // setup the text context
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
@ -2252,6 +2318,7 @@ namespace NLGUI
uint charPos = 0; uint charPos = 0;
if (_MultiLine) if (_MultiLine)
{ {
y -= getMultiMinOffsetY();
// seek the line // seek the line
float py = 0.f; float py = 0.f;
if (py > y) if (py > y)
@ -2318,7 +2385,7 @@ namespace NLGUI
else else
{ {
// the coord is in the word itself // the coord is in the word itself
index = charPos + currWord.NumSpaces + getCharacterIndex(currWord.Text, (float) x - (px + spacesWidth)); index = charPos + currWord.NumSpaces + getCharacterIndex(currWord.Text, (float) x - (px + spacesWidth), *TextContext);
cursorAtPreviousLineEnd = false; cursorAtPreviousLineEnd = false;
return; return;
} }
@ -2343,7 +2410,7 @@ namespace NLGUI
index = 0; index = 0;
return; return;
} }
index = getCharacterIndex(_Text, (float) x); index = getCharacterIndex(_Text, (float) x, *TextContext);
return; return;
} }
} }
@ -2381,15 +2448,16 @@ namespace NLGUI
quadSize--; quadSize--;
} }
// select what quad to skip // select what quad to skip
CViewRenderer::getTextContext()->setStringSelection(stringId, quadStart, quadSize); CViewRenderer::getTextContext(_FontName)->setStringSelection(stringId, quadStart, quadSize);
} }
// *************************************************************************** // ***************************************************************************
void CViewText::clearLines() void CViewText::clearLines()
{ {
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
for(uint k = 0; k < _Lines.size(); ++k) for(uint k = 0; k < _Lines.size(); ++k)
{ {
_Lines[k]->clear(); _Lines[k]->clear(*TextContext);
} }
_Lines.clear(); _Lines.clear();
} }
@ -2443,10 +2511,10 @@ namespace NLGUI
} }
// *************************************************************************** // ***************************************************************************
void CViewText::CLine::addWord(const ucstring &text, uint numSpaces, const CFormatInfo &wordFormat, uint fontWidth) void CViewText::CLine::addWord(const ucstring &text, uint numSpaces, const CFormatInfo &wordFormat, uint fontWidth, NL3D::UTextContext &textContext)
{ {
CWord word; CWord word;
word.build(text, numSpaces); word.build(text, textContext, numSpaces);
word.Format= wordFormat; word.Format= wordFormat;
addWord(word, fontWidth); addWord(word, fontWidth);
} }
@ -2468,12 +2536,12 @@ namespace NLGUI
} }
// *************************************************************************** // ***************************************************************************
void CViewText::CLine::clear() void CViewText::CLine::clear(NL3D::UTextContext &textContext)
{ {
for(uint k = 0; k < _Words.size(); ++k) for(uint k = 0; k < _Words.size(); ++k)
{ {
if (_Words[k].Index != 0xffffffff) if (_Words[k].Index != 0xffffffff)
CViewRenderer::getTextContext()->erase(_Words[k].Index); textContext.erase(_Words[k].Index);
} }
_Words.clear(); _Words.clear();
_NumChars = 0; _NumChars = 0;
@ -2490,13 +2558,12 @@ namespace NLGUI
} }
// *************************************************************************** // ***************************************************************************
void CViewText::CWord::build(const ucstring &text, uint numSpaces/*=0*/) void CViewText::CWord::build(const ucstring &text, NL3D::UTextContext &textContext, uint numSpaces)
{ {
Text = text; Text = text;
NumSpaces = numSpaces; NumSpaces = numSpaces;
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(); Index = textContext.textPush(text);
Index = TextContext->textPush(text); Info = textContext.getStringInfo(Index);
Info = TextContext->getStringInfo(Index);
} }
// *************************************************************************** // ***************************************************************************
@ -2517,7 +2584,7 @@ namespace NLGUI
static const ucstring lineFeedStr("\n"); static const ucstring lineFeedStr("\n");
float maxWidth = 0; float maxWidth = 0;
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
TextContext->setShadeOutline (_ShadowOutline); TextContext->setShadeOutline (_ShadowOutline);
@ -2604,7 +2671,7 @@ namespace NLGUI
// If we can't clip the words, return the size of the largest word // If we can't clip the words, return the size of the largest word
else if ((_TextMode == DontClipWord) || (_TextMode == Justified)) else if ((_TextMode == DontClipWord) || (_TextMode == Justified))
{ {
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
TextContext->setShadeOutline (_ShadowOutline); TextContext->setShadeOutline (_ShadowOutline);
@ -2662,7 +2729,7 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
void CViewText::computeFontSize () void CViewText::computeFontSize ()
{ {
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
TextContext->setShadeOutline (_ShadowOutline); TextContext->setShadeOutline (_ShadowOutline);
@ -2671,9 +2738,25 @@ namespace NLGUI
TextContext->setOblique (_Oblique); TextContext->setOblique (_Oblique);
// Letter size // Letter size
UTextContext::CStringInfo si = TextContext->getStringInfo(ucstring("|")); // for now we can't now that directly from UTextContext ucstring chars;
_FontHeight = (uint) si.StringHeight; // + (_Shadow?(_ShadowOutline?2:1):0); // instead of using the height of "|" that depends on font,
_FontLegHeight = (uint) si.StringLine; // + (_Shadow?(_ShadowOutline?2:1):0); // we're using 2 characters:
// - "_" that should be the character with the lowest part
// - A with an accent for the highest part
chars.fromUtf8("_\xc3\x84");
// for now we can't know that directly from UTextContext
UTextContext::CStringInfo si = TextContext->getStringInfo(chars);
// font generator changes unknown glyphs to dot '.'. use fallback if it looks odd
if (_FontSize > (si.StringHeight + si.StringLine))
{
chars.fromUtf8("|");
si = TextContext->getStringInfo(chars);
}
// add a padding of 1 pixel else the top will be truncated
_FontHeight = (uint) si.StringHeight+1;
_FontLegHeight = (uint) si.StringLine;
// Space width // Space width
si = TextContext->getStringInfo(ucstring(" ")); si = TextContext->getStringInfo(ucstring(" "));
@ -3025,7 +3108,7 @@ namespace NLGUI
} }
// convert in ULetterColors // convert in ULetterColors
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
ULetterColors * letterColors = TextContext->createLetterColors(); ULetterColors * letterColors = TextContext->createLetterColors();
for(uint i=0; i<tempLetterColors.size(); i++) for(uint i=0; i<tempLetterColors.size(); i++)
{ {

View file

@ -3170,6 +3170,7 @@ namespace NLGUI
_SystemOptions[OptionTimeoutMessages]= opt->getValue("messages_timeout"); _SystemOptions[OptionTimeoutMessages]= opt->getValue("messages_timeout");
_SystemOptions[OptionTimeoutContext]= opt->getValue("context_timeout"); _SystemOptions[OptionTimeoutContext]= opt->getValue("context_timeout");
_SystemOptions[OptionTimeoutContextHtml]= opt->getValue("context_html_timeout"); _SystemOptions[OptionTimeoutContextHtml]= opt->getValue("context_html_timeout");
_SystemOptions[OptionMonospaceFont]= opt->getValue("monospace_font");
} }
} }

View file

@ -1218,7 +1218,7 @@ const IPrimitive *IPrimitive::getPrimitive (const std::string &absoluteOrRelativ
path.erase(0,2); path.erase(0,2);
} }
while (path.size()>0) while (!path.empty())
{ {
if (path.find("/")==0) if (path.find("/")==0)
{ {

View file

@ -15,6 +15,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdlogic.h"
#include "nel/logic/logic_state.h" #include "nel/logic/logic_state.h"
#include "nel/logic/logic_state_machine.h" #include "nel/logic/logic_state_machine.h"

View file

@ -18,6 +18,7 @@
#include "nel/misc/app_context.h" #include "nel/misc/app_context.h"
#include "nel/misc/dynloadlib.h" #include "nel/misc/dynloadlib.h"
#include "nel/misc/command.h" #include "nel/misc/command.h"
#include "nel/misc/system_utils.h"
#include <locale.h> #include <locale.h>
@ -71,6 +72,9 @@ INelContext::~INelContext()
CInstanceCounterLocalManager::releaseInstance(); CInstanceCounterLocalManager::releaseInstance();
// uninit some systems stuff
CSystemUtils::uninit();
_NelContext = NULL; _NelContext = NULL;
*(_getInstance()) = NULL; *(_getInstance()) = NULL;
} }
@ -90,6 +94,9 @@ void INelContext::contextReady()
// set numeric locale to C to avoid the use of decimal separators different of a dot // set numeric locale to C to avoid the use of decimal separators different of a dot
char *locale = setlocale(LC_NUMERIC, "C"); char *locale = setlocale(LC_NUMERIC, "C");
// init some systems stuff
CSystemUtils::init();
// register any pending thinks // register any pending thinks
// register local instance counter in the global instance counter manager // register local instance counter in the global instance counter manager

View file

@ -278,7 +278,7 @@ ICDBNode * CCDBNodeBranch::getNode (const CTextId& id, bool bCreate)
{ {
// Yoyo: must not be SERVER or LOCAL, cause definied through xml. // Yoyo: must not be SERVER or LOCAL, cause definied through xml.
// This may cause some important crash error // This may cause some important crash error
//nlassert(id.size()>0); //nlassert(!id.empty());
//nlassert(id.getElement(0)!="SERVER"); //nlassert(id.getElement(0)!="SERVER");
//nlassert(id.getElement(0)!="LOCAL"); //nlassert(id.getElement(0)!="LOCAL");
ICDBNode *newNode; ICDBNode *newNode;

View file

@ -1784,7 +1784,9 @@ std::string CPath::getApplicationDirectory(const std::string &appName, bool loca
std::string CFileContainer::getApplicationDirectory(const std::string &appName, bool local) std::string CFileContainer::getApplicationDirectory(const std::string &appName, bool local)
{ {
static std::string appPaths[2]; static std::string appPaths[2];
std::string &appPath = appPaths[local ? 1 : 0]; std::string &appPath = appPaths[local ? 1 : 0];
if (appPath.empty()) if (appPath.empty())
{ {
#ifdef NL_OS_WINDOWS #ifdef NL_OS_WINDOWS
@ -1800,26 +1802,21 @@ std::string CFileContainer::getApplicationDirectory(const std::string &appName,
SHGetSpecialFolderPathW(NULL, buffer, CSIDL_APPDATA, TRUE); SHGetSpecialFolderPathW(NULL, buffer, CSIDL_APPDATA, TRUE);
} }
appPath = CPath::standardizePath(wideToUtf8(buffer)); appPath = CPath::standardizePath(wideToUtf8(buffer));
#elif defined(NL_OS_MAC)
appPath = CPath::standardizePath(getenv("HOME"));
appPath += "/Library/Application Support/";
#else #else
appPath = CPath::standardizePath(getenv("HOME")); // get user home directory from HOME environment variable
const char* homePath = getenv("HOME");
appPath = CPath::standardizePath(homePath ? homePath : ".");
#if defined(NL_OS_MAC)
appPath += "Library/Application Support/";
#else
// recommended for applications data that are owned by user
appPath += ".local/share/";
#endif
#endif #endif
} }
std::string path = appPath; return CPath::standardizePath(appPath + appName);
#ifdef NL_OS_WINDOWS
if (!appName.empty())
path = CPath::standardizePath(path + appName);
#elif defined(NL_OS_MAC)
path = CPath::standardizePath(path + appName);
#else
if (!appName.empty())
path = CPath::standardizePath(path + "." + toLower(appName));
#endif
return path;
} }
std::string CPath::getTemporaryDirectory() std::string CPath::getTemporaryDirectory()
@ -2373,13 +2370,35 @@ static bool CopyMoveFile(const std::string &dest, const std::string &src, bool c
} }
#else #else
if (rename (ssrc.c_str(), sdest.c_str()) == -1) if (rename (ssrc.c_str(), sdest.c_str()) == -1)
{
// unable to move because file systems are different
if (errno == EXDEV)
{
// different file system, we need to copy and delete file manually
if (!CopyMoveFile(dest, src, true, failIfExists, progress)) return false;
// get modification time
uint32 modificationTime = CFile::getFileModificationDate(src);
// delete original file
if (!CFile::deleteFile(src)) return false;
// set same modification time
if (!CFile::setFileModificationDate(dest, modificationTime))
{
nlwarning("Unable to set modification time %s (%u) for %s", timestampToHumanReadable(modificationTime).c_str(), modificationTime, dest.c_str());
}
}
else
{ {
nlwarning("PATH: CopyMoveFile error: can't rename '%s' into '%s', error %u", nlwarning("PATH: CopyMoveFile error: can't rename '%s' into '%s', error %u",
ssrc.c_str(), ssrc.c_str(),
sdest.c_str(), sdest.c_str(),
errno); errno);
return false; return false;
} }
}
#endif #endif
} }
if (progress) progress->progress(1.f); if (progress) progress->progress(1.f);

View file

@ -105,7 +105,7 @@ void CPolygon::clip(const CPlane *planes, uint nPlanes)
// *************************************************************************** // ***************************************************************************
void CPolygon::clip(const std::vector<CPlane> &planes) void CPolygon::clip(const std::vector<CPlane> &planes)
{ {
if(planes.size()==0) if(planes.empty())
return; return;
clip(&(*planes.begin()), (uint)planes.size()); clip(&(*planes.begin()), (uint)planes.size());
} }

View file

@ -189,38 +189,43 @@ string CSystemInfo::getOS()
#ifdef NL_OS_WINDOWS #ifdef NL_OS_WINDOWS
typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO); typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
typedef BOOL (WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD); typedef BOOL (WINAPI *PGetProductInfo)(DWORD, DWORD, DWORD, DWORD, PDWORD);
typedef LONG (WINAPI* pRtlGetVersion)(OSVERSIONINFOEXA*); typedef LONG (WINAPI* PRtlGetVersion)(OSVERSIONINFOEXA*);
SYSTEM_INFO si;
PGNSI pGNSI;
PGPI pGPI;
OSVERSIONINFOEXA osvi;
BOOL bOsVersionInfoEx;
const int BUFSIZE = 80; const int BUFSIZE = 80;
// Try calling GetVersionEx using the OSVERSIONINFOEX structure. // Try calling GetVersionEx using the OSVERSIONINFOEX structure.
// If that fails, try using the OSVERSIONINFO structure. // If that fails, try using the OSVERSIONINFO structure.
SYSTEM_INFO si;
ZeroMemory(&si, sizeof(SYSTEM_INFO)); ZeroMemory(&si, sizeof(SYSTEM_INFO));
// RtlGetVersion always returns the right version
HMODULE hNtDll = GetModuleHandleA("ntdll.dll");
PRtlGetVersion pRtlGetVersion = (PRtlGetVersion)GetProcAddress(hNtDll, "RtlGetVersion");
BOOL bOsVersionInfoEx = 0;
// init OSVERSIONINFOEXA
OSVERSIONINFOEXA osvi;
ZeroMemory(&osvi, sizeof(osvi)); ZeroMemory(&osvi, sizeof(osvi));
osvi.dwOSVersionInfoSize = sizeof(osvi); osvi.dwOSVersionInfoSize = sizeof(osvi);
HMODULE hNtDll = GetModuleHandleA("ntdll.dll"); if (pRtlGetVersion)
pRtlGetVersion RtlGetVersion = (pRtlGetVersion)GetProcAddress(hNtDll, "RtlGetVersion");
if (RtlGetVersion)
{ {
bOsVersionInfoEx = RtlGetVersion(&osvi) == 0; // try RtlGetVersion
bOsVersionInfoEx = pRtlGetVersion(&osvi) == 0;
} }
if (!bOsVersionInfoEx) if (!bOsVersionInfoEx)
{ {
// fall back to GetVersionExA
bOsVersionInfoEx = GetVersionExA ((OSVERSIONINFOA *) &osvi); bOsVersionInfoEx = GetVersionExA ((OSVERSIONINFOA *) &osvi);
} }
if (!bOsVersionInfoEx) if (!bOsVersionInfoEx)
{ {
// fall back to GetVersionA struct
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
if (! GetVersionExA ( (OSVERSIONINFOA *) &osvi) ) if (! GetVersionExA ( (OSVERSIONINFOA *) &osvi) )
return OSString+" Can't GetVersionEx()"; return OSString+" Can't GetVersionEx()";
@ -228,14 +233,14 @@ string CSystemInfo::getOS()
// Call GetNativeSystemInfo if supported or GetSystemInfo otherwise. // Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.
pGNSI = (PGNSI) GetProcAddress(GetModuleHandleA("kernel32.dll"), "GetNativeSystemInfo"); PGNSI pGNSI = (PGNSI) GetProcAddress(GetModuleHandleA("kernel32.dll"), "GetNativeSystemInfo");
if (NULL != pGNSI) if (pGNSI)
pGNSI(&si); pGNSI(&si);
else else
GetSystemInfo(&si); GetSystemInfo(&si);
// Test for the Windows NT product family. // Test for the Windows NT product family
if (VER_PLATFORM_WIN32_NT == osvi.dwPlatformId && osvi.dwMajorVersion > 4) if (VER_PLATFORM_WIN32_NT == osvi.dwPlatformId && osvi.dwMajorVersion > 4)
{ {
OSString = "Microsoft"; OSString = "Microsoft";
@ -280,240 +285,8 @@ string CSystemInfo::getOS()
} }
else else
{ {
OSString += " Windows (not released)"; OSString += " Windows (unknown)";
} }
pGPI = (PGPI) GetProcAddress(GetModuleHandleA("kernel32.dll"), "GetProductInfo");
DWORD dwType;
pGPI( osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.wServicePackMajor, osvi.wServicePackMinor, &dwType);
// Test for the specific product family.
switch( dwType )
{
#ifdef PRODUCT_UNLICENSED
case PRODUCT_UNLICENSED:
OSString += " Unlicensed";
break;
#endif
#ifdef PRODUCT_ULTIMATE
case PRODUCT_ULTIMATE:
OSString += " Ultimate Edition";
break;
#endif
#ifdef PRODUCT_HOME_BASIC
case PRODUCT_HOME_BASIC:
OSString += " Home Basic Edition";
break;
#endif
#ifdef PRODUCT_HOME_PREMIUM
case PRODUCT_HOME_PREMIUM:
OSString += " Home Premium Edition";
break;
#endif
#ifdef PRODUCT_ENTERPRISE
case PRODUCT_ENTERPRISE:
OSString += " Enterprise Edition";
break;
#endif
#ifdef PRODUCT_HOME_BASIC_N
case PRODUCT_HOME_BASIC_N:
OSString += " Home Basic N Edition";
break;
#endif
#ifdef PRODUCT_BUSINESS
case PRODUCT_BUSINESS:
OSString += " Business Edition";
break;
#endif
#ifdef PRODUCT_STANDARD_SERVER
case PRODUCT_STANDARD_SERVER:
OSString += " Standard Edition";
break;
#endif
#ifdef PRODUCT_DATACENTER_SERVER
case PRODUCT_DATACENTER_SERVER:
OSString += " Datacenter Edition";
break;
#endif
#ifdef PRODUCT_SMALLBUSINESS_SERVER
case PRODUCT_SMALLBUSINESS_SERVER:
OSString += " Small Business Server";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_SERVER
case PRODUCT_ENTERPRISE_SERVER:
OSString += " Enterprise Edition";
break;
#endif
#ifdef PRODUCT_STARTER
case PRODUCT_STARTER:
OSString += " Starter Edition";
break;
#endif
#ifdef PRODUCT_DATACENTER_SERVER_CORE
case PRODUCT_DATACENTER_SERVER_CORE:
OSString += " Datacenter Edition (core installation)";
break;
#endif
#ifdef PRODUCT_STANDARD_SERVER_CORE
case PRODUCT_STANDARD_SERVER_CORE:
OSString += " Standard Edition (core installation)";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_SERVER_CORE
case PRODUCT_ENTERPRISE_SERVER_CORE:
OSString += " Enterprise Edition (core installation)";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_SERVER_IA64
case PRODUCT_ENTERPRISE_SERVER_IA64:
OSString += " Enterprise Edition for Itanium-based Systems";
break;
#endif
#ifdef PRODUCT_BUSINESS_N
case PRODUCT_BUSINESS_N:
OSString += " Business N Edition";
break;
#endif
#ifdef PRODUCT_WEB_SERVER
case PRODUCT_WEB_SERVER:
OSString += " Web Server Edition";
break;
#endif
#ifdef PRODUCT_CLUSTER_SERVER
case PRODUCT_CLUSTER_SERVER:
OSString += " Cluster Server Edition";
break;
#endif
#ifdef PRODUCT_HOME_SERVER
case PRODUCT_HOME_SERVER:
OSString += " Home Server Edition";
break;
#endif
#ifdef PRODUCT_STORAGE_EXPRESS_SERVER
case PRODUCT_STORAGE_EXPRESS_SERVER:
OSString += " Storage Server Express Edition";
break;
#endif
#ifdef PRODUCT_STORAGE_STANDARD_SERVER
case PRODUCT_STORAGE_STANDARD_SERVER:
OSString += " Storage Server Standard Edition";
break;
#endif
#ifdef PRODUCT_STORAGE_WORKGROUP_SERVER
case PRODUCT_STORAGE_WORKGROUP_SERVER:
OSString += " Storage Server Workgroup Edition";
break;
#endif
#ifdef PRODUCT_STORAGE_ENTERPRISE_SERVER
case PRODUCT_STORAGE_ENTERPRISE_SERVER:
OSString += " Storage Server Enterprise Edition";
break;
#endif
#ifdef PRODUCT_SERVER_FOR_SMALLBUSINESS
case PRODUCT_SERVER_FOR_SMALLBUSINESS:
OSString += " Essential Server Solutions Edition";
break;
#endif
#ifdef PRODUCT_SMALLBUSINESS_SERVER_PREMIUM
case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:
OSString += " Small Business Server Premium Edition";
break;
#endif
#ifdef PRODUCT_HOME_PREMIUM_N
case PRODUCT_HOME_PREMIUM_N:
OSString += " Home Premium N Edition";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_N
case PRODUCT_ENTERPRISE_N:
OSString += " Enterprise N Edition";
break;
#endif
#ifdef PRODUCT_ULTIMATE_N
case PRODUCT_ULTIMATE_N:
OSString += " Ultimate N Edition";
break;
#endif
#ifdef PRODUCT_WEB_SERVER_CORE
case PRODUCT_WEB_SERVER_CORE:
OSString += " Web Server Edition (core installation)";
break;
#endif
#ifdef PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT
case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT:
OSString += " Essential Business Server Management Server Edition";
break;
#endif
#ifdef PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY
case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY:
OSString += " Essential Business Server Security Server Edition";
break;
#endif
#ifdef PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING
case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING:
OSString += " Essential Business Server Messaging Server Edition";
break;
#endif
#ifdef PRODUCT_SMALLBUSINESS_SERVER_PRIME
case PRODUCT_SMALLBUSINESS_SERVER_PRIME:
OSString += " Small Business Server Prime Edition";
break;
#endif
#ifdef PRODUCT_HOME_PREMIUM_SERVER
case PRODUCT_HOME_PREMIUM_SERVER:
OSString += " Home Premium Server Edition";
break;
#endif
#ifdef PRODUCT_SERVER_FOR_SMALLBUSINESS_V
case PRODUCT_SERVER_FOR_SMALLBUSINESS_V:
OSString += " Essential Server Solutions without Hyper-V Edition";
break;
#endif
#ifdef PRODUCT_STANDARD_SERVER_V
case PRODUCT_STANDARD_SERVER_V:
OSString += " Standard without Hyper-V Edition";
break;
#endif
#ifdef PRODUCT_DATACENTER_SERVER_V
case PRODUCT_DATACENTER_SERVER_V:
OSString += " Datacenter without Hyper-V Edition";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_SERVER_V
case PRODUCT_ENTERPRISE_SERVER_V:
OSString += " Enterprise without Hyper-V Edition";
break;
#endif
#ifdef PRODUCT_DATACENTER_SERVER_CORE_V
case PRODUCT_DATACENTER_SERVER_CORE_V:
OSString += " Datacenter without Hyper-V Edition (core installation)";
break;
#endif
#ifdef PRODUCT_STANDARD_SERVER_CORE_V
case PRODUCT_STANDARD_SERVER_CORE_V:
OSString += " Standard without Hyper-V Edition (core installation)";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_SERVER_CORE_V
case PRODUCT_ENTERPRISE_SERVER_CORE_V:
OSString += " Enterprise without Hyper-V Edition (core installation)";
break;
#endif
#ifdef PRODUCT_HYPERV
case PRODUCT_HYPERV:
OSString += " Hyper-V Server Edition";
break;
#endif
default:
OSString += toString(" Unknown Edition (0x%04x)", dwType);
}
if ( si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 )
OSString += " 64-bit";
else if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL )
OSString += " 32-bit";
} }
else if (osvi.dwMajorVersion == 5) else if (osvi.dwMajorVersion == 5)
{ {
@ -654,15 +427,573 @@ string CSystemInfo::getOS()
if (lstrcmpiA("WINNT", szProductType) == 0) if (lstrcmpiA("WINNT", szProductType) == 0)
OSString += " Workstation"; OSString += " Workstation";
if (lstrcmpiA("LANMANNT", szProductType) == 0) if (lstrcmpiA("LANMANNT", szProductType) == 0)
OSString += " Server"; OSString += " Server";
if (lstrcmpiA("SERVERNT", szProductType) == 0) if (lstrcmpiA("SERVERNT", szProductType) == 0)
OSString += " Advanced Server"; OSString += " Advanced Server";
} }
} }
PGetProductInfo pGetProductInfo = (PGetProductInfo)GetProcAddress(GetModuleHandleA("kernel32.dll"), "GetProductInfo");
DWORD dwType;
if (pGetProductInfo && pGetProductInfo(osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.wServicePackMajor, osvi.wServicePackMinor, &dwType))
{
// Test for the specific product family.
switch (dwType)
{
#ifdef PRODUCT_UNLICENSED
case PRODUCT_UNLICENSED:
OSString += " Unlicensed";
break;
#endif
#ifdef PRODUCT_ULTIMATE
case PRODUCT_ULTIMATE:
OSString += " Ultimate";
break;
#endif
#ifdef PRODUCT_HOME_BASIC
case PRODUCT_HOME_BASIC:
OSString += " Home Basic";
break;
#endif
#ifdef PRODUCT_HOME_PREMIUM
case PRODUCT_HOME_PREMIUM:
OSString += " Home Premium";
break;
#endif
#ifdef PRODUCT_ENTERPRISE
case PRODUCT_ENTERPRISE:
OSString += " Enterprise";
break;
#endif
#ifdef PRODUCT_HOME_BASIC_N
case PRODUCT_HOME_BASIC_N:
OSString += " Home Basic N";
break;
#endif
#ifdef PRODUCT_BUSINESS
case PRODUCT_BUSINESS:
OSString += " Business";
break;
#endif
#ifdef PRODUCT_STANDARD_SERVER
case PRODUCT_STANDARD_SERVER:
OSString += " Server Standard";
break;
#endif
#ifdef PRODUCT_DATACENTER_SERVER
case PRODUCT_DATACENTER_SERVER:
OSString += " Server Datacenter (full installation)";
break;
#endif
#ifdef PRODUCT_SMALLBUSINESS_SERVER
case PRODUCT_SMALLBUSINESS_SERVER:
OSString += " Small Business Server";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_SERVER
case PRODUCT_ENTERPRISE_SERVER:
OSString += " Server Enterprise (full installation)";
break;
#endif
#ifdef PRODUCT_STARTER
case PRODUCT_STARTER:
OSString += " Starter";
break;
#endif
#ifdef PRODUCT_DATACENTER_SERVER_CORE
case PRODUCT_DATACENTER_SERVER_CORE:
OSString += " Server Datacenter (core installation)";
break;
#endif
#ifdef PRODUCT_STANDARD_SERVER_CORE
case PRODUCT_STANDARD_SERVER_CORE:
OSString += " Server Standard (core installation)";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_SERVER_CORE
case PRODUCT_ENTERPRISE_SERVER_CORE:
OSString += " Server Enterprise (core installation)";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_SERVER_IA64
case PRODUCT_ENTERPRISE_SERVER_IA64:
OSString += " Server Enterprise for Itanium-based Systems";
break;
#endif
#ifdef PRODUCT_BUSINESS_N
case PRODUCT_BUSINESS_N:
OSString += " Business N";
break;
#endif
#ifdef PRODUCT_WEB_SERVER
case PRODUCT_WEB_SERVER:
OSString += " Web Server (full installation)";
break;
#endif
#ifdef PRODUCT_CLUSTER_SERVER
case PRODUCT_CLUSTER_SERVER:
OSString += " Server Hyper Core";
break;
#endif
#ifdef PRODUCT_HOME_SERVER
case PRODUCT_HOME_SERVER:
OSString += " Home Server";
break;
#endif
#ifdef PRODUCT_STORAGE_EXPRESS_SERVER
case PRODUCT_STORAGE_EXPRESS_SERVER:
OSString += " Storage Server Express";
break;
#endif
#ifdef PRODUCT_STORAGE_STANDARD_SERVER
case PRODUCT_STORAGE_STANDARD_SERVER:
OSString += " Storage Server Standard";
break;
#endif
#ifdef PRODUCT_STORAGE_WORKGROUP_SERVER
case PRODUCT_STORAGE_WORKGROUP_SERVER:
OSString += " Storage Server Workgroup";
break;
#endif
#ifdef PRODUCT_STORAGE_ENTERPRISE_SERVER
case PRODUCT_STORAGE_ENTERPRISE_SERVER:
OSString += " Storage Server Enterprise";
break;
#endif
#ifdef PRODUCT_SERVER_FOR_SMALLBUSINESS
case PRODUCT_SERVER_FOR_SMALLBUSINESS:
OSString += " Essential Server Solutions";
break;
#endif
#ifdef PRODUCT_SMALLBUSINESS_SERVER_PREMIUM
case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:
OSString += " Small Business Server Premium";
break;
#endif
#ifdef PRODUCT_HOME_PREMIUM_N
case PRODUCT_HOME_PREMIUM_N:
OSString += " Home Premium N";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_N
case PRODUCT_ENTERPRISE_N:
OSString += " Enterprise N";
break;
#endif
#ifdef PRODUCT_ULTIMATE_N
case PRODUCT_ULTIMATE_N:
OSString += " Ultimate N";
break;
#endif
#ifdef PRODUCT_WEB_SERVER_CORE
case PRODUCT_WEB_SERVER_CORE:
OSString += " Web Server (core installation)";
break;
#endif
#ifdef PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT
case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT:
OSString += " Essential Business Server Management Server";
break;
#endif
#ifdef PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY
case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY:
OSString += " Essential Business Server Security Server";
break;
#endif
#ifdef PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING
case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING:
OSString += " Essential Business Server Messaging Server";
break;
#endif
#ifdef PRODUCT_SERVER_FOUNDATION
case PRODUCT_SERVER_FOUNDATION:
OSString += " Server Foundation";
break;
#endif
#ifdef PRODUCT_HOME_PREMIUM_SERVER
case PRODUCT_HOME_PREMIUM_SERVER:
OSString += " Home Server";
break;
#endif
#ifdef PRODUCT_SERVER_FOR_SMALLBUSINESS_V
case PRODUCT_SERVER_FOR_SMALLBUSINESS_V:
OSString += " Server without Hyper-V for Windows Essential Server Solutions";
break;
#endif
#ifdef PRODUCT_STANDARD_SERVER_V
case PRODUCT_STANDARD_SERVER_V:
OSString += " Server Standard without Hyper-V";
break;
#endif
#ifdef PRODUCT_DATACENTER_SERVER_V
case PRODUCT_DATACENTER_SERVER_V:
OSString += " Server Datacenter without Hyper-V (full installation)";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_SERVER_V
case PRODUCT_ENTERPRISE_SERVER_V:
OSString += " Enterprise without Hyper-V (full installation)";
break;
#endif
#ifdef PRODUCT_DATACENTER_SERVER_CORE_V
case PRODUCT_DATACENTER_SERVER_CORE_V:
OSString += " Datacenter without Hyper-V (core installation)";
break;
#endif
#ifdef PRODUCT_STANDARD_SERVER_CORE_V
case PRODUCT_STANDARD_SERVER_CORE_V:
OSString += " Standard without Hyper-V (core installation)";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_SERVER_CORE_V
case PRODUCT_ENTERPRISE_SERVER_CORE_V:
OSString += " Enterprise without Hyper-V (core installation)";
break;
#endif
#ifdef PRODUCT_HYPERV
case PRODUCT_HYPERV:
OSString += " Hyper-V Server";
break;
#endif
#ifdef PRODUCT_STORAGE_EXPRESS_SERVER_CORE
case PRODUCT_STORAGE_EXPRESS_SERVER_CORE:
OSString += " Storage Server Express (core installation)";
break;
#endif
#ifdef PRODUCT_STORAGE_STANDARD_SERVER_CORE
case PRODUCT_STORAGE_STANDARD_SERVER_CORE:
OSString += " Storage Server Standard (core installation)";
break;
#endif
#ifdef PRODUCT_STORAGE_WORKGROUP_SERVER_CORE
case PRODUCT_STORAGE_WORKGROUP_SERVER_CORE:
OSString += " Storage Server Workgroup (core installation)";
break;
#endif
#ifdef PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE
case PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE:
OSString += " Storage Server Enterprise (core installation)";
break;
#endif
#ifdef PRODUCT_STARTER_N
case PRODUCT_STARTER_N:
OSString += " Starter N Edition";
break;
#endif
#ifdef PRODUCT_PROFESSIONAL
case PRODUCT_PROFESSIONAL:
OSString += " Professional";
break;
#endif
#ifdef PRODUCT_PROFESSIONAL_N
case PRODUCT_PROFESSIONAL_N:
OSString += " Professional N";
break;
#endif
#ifdef PRODUCT_SB_SOLUTION_SERVER
case PRODUCT_SB_SOLUTION_SERVER:
OSString += " Small Business Server";
break;
#endif
#ifdef PRODUCT_SERVER_FOR_SB_SOLUTIONS
case PRODUCT_SERVER_FOR_SB_SOLUTIONS:
OSString += " Server For Small Business Solutions";
break;
#endif
#ifdef PRODUCT_STANDARD_SERVER_SOLUTIONS
case PRODUCT_STANDARD_SERVER_SOLUTIONS:
OSString += " Server Solutions Premium";
break;
#endif
#ifdef PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE
case PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE:
OSString += " Server Solutions Premium (core installation)";
break;
#endif
#ifdef PRODUCT_SB_SOLUTION_SERVER_EM
case PRODUCT_SB_SOLUTION_SERVER_EM:
OSString += " Server For Small Business Solutions EM";
break;
#endif
#ifdef PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM
case PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM:
OSString += " Server For Small Business Solutions EM";
break;
#endif
#ifdef PRODUCT_SOLUTION_EMBEDDEDSERVER
case PRODUCT_SOLUTION_EMBEDDEDSERVER:
OSString += " Solution Embedded Server (full installation)";
break;
#endif
#ifdef PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE
case PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE:
OSString += " Solution Embedded Server (core installation)";
break;
#endif
#ifdef PRODUCT_PROFESSIONAL_EMBEDDED
case PRODUCT_PROFESSIONAL_EMBEDDED:
OSString += " Professional Embedded";
break;
#endif
#ifdef PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT
case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT:
OSString += " Essential Server Solution Management";
break;
#endif
#ifdef PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL
case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL:
OSString += " Essential Server Solution Additional";
break;
#endif
#ifdef PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC
case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC:
OSString += " Essential Server Solution Management SVC";
break;
#endif
#ifdef PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC
case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC:
OSString += " Essential Server Solution Additional SVC";
break;
#endif
#ifdef PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE
case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE:
OSString += " Small Business Server Premium (core installation)";
break;
#endif
#ifdef PRODUCT_CLUSTER_SERVER_V
case PRODUCT_CLUSTER_SERVER_V:
OSString += " Server Hyper Core V";
break;
#endif
#ifdef PRODUCT_EMBEDDED
case PRODUCT_EMBEDDED:
OSString += " Embedded";
break;
#endif
#ifdef PRODUCT_STARTER_E
case PRODUCT_STARTER_E:
OSString += " Starter E";
break;
#endif
#ifdef PRODUCT_HOME_BASIC_E
case PRODUCT_HOME_BASIC_E:
OSString += " Home Basic E";
break;
#endif
#ifdef PRODUCT_HOME_PREMIUM_E
case PRODUCT_HOME_PREMIUM_E:
OSString += " Home Premium E";
break;
#endif
#ifdef PRODUCT_PROFESSIONAL_E
case PRODUCT_PROFESSIONAL_E:
OSString += " Professional E";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_E
case PRODUCT_ENTERPRISE_E:
OSString += " Enterprise E";
break;
#endif
#ifdef PRODUCT_ULTIMATE_E
case PRODUCT_ULTIMATE_E:
OSString += " Ultimate E";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_EVALUATION
case PRODUCT_ENTERPRISE_EVALUATION:
OSString += " Enterprise Evaluation";
break;
#endif
#ifdef PRODUCT_MULTIPOINT_STANDARD_SERVER
case PRODUCT_MULTIPOINT_STANDARD_SERVER:
OSString += " MultiPoint Server Standard (full installation)";
break;
#endif
#ifdef PRODUCT_MULTIPOINT_PREMIUM_SERVER
case PRODUCT_MULTIPOINT_PREMIUM_SERVER:
OSString += " MultiPoint Server Premium (full installation)";
break;
#endif
#ifdef PRODUCT_STANDARD_EVALUATION_SERVER
case PRODUCT_STANDARD_EVALUATION_SERVER:
OSString += " Server Standard (evaluation installation)";
break;
#endif
#ifdef PRODUCT_DATACENTER_EVALUATION_SERVER
case PRODUCT_DATACENTER_EVALUATION_SERVER:
OSString += " Server Datacenter (evaluation installation)";
break;
#endif
#ifdef PRODUCT_ENTERPRISE_N_EVALUATION
case PRODUCT_ENTERPRISE_N_EVALUATION:
OSString += " Enterprise N (evaluation installation)";
break;
#endif
#ifdef PRODUCT_EMBEDDED_AUTOMOTIVE
case PRODUCT_EMBEDDED_AUTOMOTIVE:
OSString += " Embedded Automotive";
break;
#endif
#ifdef PRODUCT_EMBEDDED_INDUSTRY_A
case PRODUCT_EMBEDDED_INDUSTRY_A:
OSString += " Embedded Industry A";
break;
#endif
#ifdef PRODUCT_THINPC
case PRODUCT_THINPC:
OSString += " Thin PC";
break;
#endif
#ifdef PRODUCT_EMBEDDED_A
case PRODUCT_EMBEDDED_A:
OSString += " Embedded A";
break;
#endif
#ifdef PRODUCT_EMBEDDED_INDUSTRY
case PRODUCT_EMBEDDED_INDUSTRY:
OSString += " Embedded Industry";
break;
#endif
#ifdef PRODUCT_EMBEDDED_E
case PRODUCT_EMBEDDED_E:
OSString += " Embedded E";
break;
#endif
#ifdef PRODUCT_EMBEDDED_INDUSTRY_E
case PRODUCT_EMBEDDED_INDUSTRY_E:
OSString += " Embedded Industry E";
break;
#endif
#ifdef PRODUCT_EMBEDDED_INDUSTRY_A_E
case PRODUCT_EMBEDDED_INDUSTRY_A_E:
OSString += " Embedded Industry A E";
break;
#endif
#ifdef PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER
case PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER:
OSString += " Storage Server Workgroup (evaluation installation)";
break;
#endif
#ifdef PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER
case PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER:
OSString += " Storage Server Standard (evaluation installation)";
break;
#endif
#ifdef PRODUCT_CORE_ARM
case PRODUCT_CORE_ARM:
OSString += " RT";
break;
#endif
#ifdef PRODUCT_CORE_N
case PRODUCT_CORE_N:
OSString += " Home N";
break;
#endif
#ifdef PRODUCT_CORE_COUNTRYSPECIFIC
case PRODUCT_CORE_COUNTRYSPECIFIC:
OSString += " Home China";
break;
#endif
#ifdef PRODUCT_CORE_SINGLELANGUAGE
case PRODUCT_CORE_SINGLELANGUAGE:
OSString += " Home Single Language";
break;
#endif
#ifdef PRODUCT_CORE
case PRODUCT_CORE:
OSString += " Home";
break;
#endif
#ifdef PRODUCT_PROFESSIONAL_WMC
case PRODUCT_PROFESSIONAL_WMC:
OSString += " Professional with Media Center";
break;
#endif
#ifdef PRODUCT_MOBILE_CORE
case PRODUCT_MOBILE_CORE:
OSString += " Mobile";
break;
#endif
#ifdef PRODUCT_EMBEDDED_INDUSTRY_EVAL
case PRODUCT_EMBEDDED_INDUSTRY_EVAL:
OSString += " Embedded Industry (evaluation installation)";
break;
#endif
#ifdef PRODUCT_EMBEDDED_INDUSTRY_E_EVAL
case PRODUCT_EMBEDDED_INDUSTRY_E_EVAL:
OSString += " Embedded Industry E (evaluation installation)";
break;
#endif
#ifdef PRODUCT_EMBEDDED_EVAL
case PRODUCT_EMBEDDED_EVAL:
OSString += " Embedded (evaluation installation)";
break;
#endif
#ifdef PRODUCT_EMBEDDED_E_EVAL
case PRODUCT_EMBEDDED_E_EVAL:
OSString += " Embedded E (evaluation installation)";
break;
#endif
#ifdef PRODUCT_CORE_SERVER
case PRODUCT_CORE_SERVER:
OSString += " Server";
break;
#endif
#ifdef PRODUCT_CLOUD_STORAGE_SERVER
case PRODUCT_CLOUD_STORAGE_SERVER:
OSString += " Server Could Storage";
break;
#endif
#ifdef PRODUCT_CORE_CONNECTED
case PRODUCT_CORE_CONNECTED:
OSString += " Home Connected";
break;
#endif
#ifdef PRODUCT_PROFESSIONAL_STUDENT
case PRODUCT_PROFESSIONAL_STUDENT:
OSString += " Professional Student";
break;
#endif
#ifdef PRODUCT_CORE_CONNECTED_N
case PRODUCT_CORE_CONNECTED_N:
OSString += " Home N Connected";
break;
#endif
#ifdef PRODUCT_PROFESSIONAL_STUDENT_N
case PRODUCT_PROFESSIONAL_STUDENT_N:
OSString += " Professional Student N";
break;
#endif
#ifdef PRODUCT_CORE_CONNECTED_SINGLELANGUAGE
case PRODUCT_CORE_CONNECTED_SINGLELANGUAGE:
OSString += " Home Single Language Connected";
break;
#endif
#ifdef PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC
case PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC:
OSString += " Home China Connected";
break;
#endif
default:
OSString += toString(" Unknown Edition (0x%04x)", dwType);
}
}
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
OSString += " 64-bit";
else if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL)
OSString += " 32-bit";
std::string servicePack; std::string servicePack;
// special case for Windows NT 4.0
if (osvi.dwMajorVersion == 4 && lstrcmpiA(osvi.szCSDVersion, "Service Pack 6") == 0 ) if (osvi.dwMajorVersion == 4 && lstrcmpiA(osvi.szCSDVersion, "Service Pack 6") == 0 )
{ {
HKEY hKey; HKEY hKey;
@ -690,6 +1021,7 @@ string CSystemInfo::getOS()
// Include build number // Include build number
OSString += toString(" (Build %d)", osvi.dwBuildNumber & 0xFFFF); OSString += toString(" (Build %d)", osvi.dwBuildNumber & 0xFFFF);
} }
// Windows 9x
else if ( VER_PLATFORM_WIN32_WINDOWS == osvi.dwPlatformId ) else if ( VER_PLATFORM_WIN32_WINDOWS == osvi.dwPlatformId )
{ {
OSString = "Microsoft"; OSString = "Microsoft";
@ -713,10 +1045,12 @@ string CSystemInfo::getOS()
else else
OSString += " Windows 9x"; OSString += " Windows 9x";
} }
// Windows 3.1 with Win32s
else if ( VER_PLATFORM_WIN32s == osvi.dwPlatformId ) else if ( VER_PLATFORM_WIN32s == osvi.dwPlatformId )
{ {
OSString = toString("Microsoft Windows %d.%d + Win32s", osvi.dwMajorVersion, osvi.dwMinorVersion); OSString = toString("Microsoft Windows %d.%d + Win32s", osvi.dwMajorVersion, osvi.dwMinorVersion);
} }
// Unknown Windows version
else else
{ {
OSString = toString("Microsoft Windows %d.%d", osvi.dwMajorVersion, osvi.dwMinorVersion); OSString = toString("Microsoft Windows %d.%d", osvi.dwMajorVersion, osvi.dwMinorVersion);

View file

@ -107,7 +107,7 @@ bool CSystemUtils::updateProgressBar(uint value, uint total)
#ifdef TASKBAR_PROGRESS #ifdef TASKBAR_PROGRESS
if (s_window == NULL) if (s_window == NULL)
{ {
nlwarning("No window has be set with CSystemUtils::setWindow(), progress bar can't be displayed"); nldebug("No window has be set with CSystemUtils::setWindow(), progress bar can't be displayed");
return false; return false;
} }
@ -139,7 +139,7 @@ bool CSystemUtils::updateProgressBar(uint value, uint total)
bool CSystemUtils::copyTextToClipboard(const ucstring &text) bool CSystemUtils::copyTextToClipboard(const ucstring &text)
{ {
if (!text.size()) return false; if (text.empty()) return false;
bool res = false; bool res = false;

View file

@ -430,7 +430,7 @@ void serviceGetView (uint32 rid, const string &rawvarpath, TAdminViewResult &ans
else else
{ {
if (strs.size()>0) if (!strs.empty())
{ {
str = strs[0].substr(0,strs[0].size()-1); str = strs[0].substr(0,strs[0].size()-1);
// replace all spaces into udnerscore because space is a reserved char // replace all spaces into udnerscore because space is a reserved char
@ -717,7 +717,7 @@ void updateAdmin()
ICommand::execute(Alarms[i].Name, logDisplayVars, true, false); ICommand::execute(Alarms[i].Name, logDisplayVars, true, false);
const std::deque<std::string> &strs = mdDisplayVars.lockStrings(); const std::deque<std::string> &strs = mdDisplayVars.lockStrings();
if (strs.size()>0) if (!strs.empty())
{ {
str = strs[0].substr(0,strs[0].size()-1); str = strs[0].substr(0,strs[0].size()-1);
} }

View file

@ -155,7 +155,7 @@ bool CBufSock::flush( uint *nbBytesRemaining )
{ {
SendFifo.front( tmpbuffer, size ); SendFifo.front( tmpbuffer, size );
} }
while ( ! SendFifo.empty() && ( (_ReadyToSendBuffer.size()==0) || (_ReadyToSendBuffer.size() +size < MaxTCPPacketSize) ) ) while ( ! SendFifo.empty() && ( _ReadyToSendBuffer.empty() || (_ReadyToSendBuffer.size() +size < MaxTCPPacketSize) ) )
{ {
// Compute the size and add it into the beginning of the buffer // Compute the size and add it into the beginning of the buffer
netlen = htonl( (TBlockSize)size ); netlen = htonl( (TBlockSize)size );
@ -252,7 +252,7 @@ bool CBufSock::flush( uint *nbBytesRemaining )
} }
} }
while ( !SendFifo.empty() && _ReadyToSendBuffer.size()==0 ); while ( !SendFifo.empty() && _ReadyToSendBuffer.empty() );
return true; return true;
} }

View file

@ -288,7 +288,7 @@ string CLoginClient::confirmConnection(sint32 shardId)
// S05: create and send the "CS" message with the shardid choice to the LS // S05: create and send the "CS" message with the shardid choice to the LS
// //
if (!ShardList.size()) if (ShardList.empty())
{ {
_LSCallbackClient->disconnect(); _LSCallbackClient->disconnect();
return "No shard available"; return "No shard available";
@ -358,7 +358,7 @@ string CLoginClient::selectShardBegin(sint32 shardId)
ShardChooseShardReason = ""; ShardChooseShardReason = "";
ShardChooseShard = false; ShardChooseShard = false;
if (!ShardList.size()) if (ShardList.empty())
{ {
_LSCallbackClient->disconnect(); _LSCallbackClient->disconnect();
delete _LSCallbackClient; delete _LSCallbackClient;

View file

@ -420,7 +420,7 @@ bool CNamingClient::lookup (const std::string &name, CInetAddress &addr)
vector<CInetAddress> addrs; vector<CInetAddress> addrs;
find (name, addrs); find (name, addrs);
if (addrs.size()==0) if (addrs.empty())
return false; return false;
nlassert (addrs.size()==1); nlassert (addrs.size()==1);
@ -436,7 +436,7 @@ bool CNamingClient::lookup (TServiceId sid, CInetAddress &addr)
vector<CInetAddress> addrs; vector<CInetAddress> addrs;
find (sid, addrs); find (sid, addrs);
if (addrs.size()==0) if (addrs.empty())
return false; return false;
nlassert (addrs.size()==1); nlassert (addrs.size()==1);
@ -465,7 +465,7 @@ bool CNamingClient::lookupAlternate (const std::string &name, CInetAddress &addr
vector<CInetAddress> addrs; vector<CInetAddress> addrs;
find (name, addrs); find (name, addrs);
if (addrs.size()==0) if (addrs.empty())
return false; return false;
nlassert (addrs.size()==1); nlassert (addrs.size()==1);

View file

@ -1460,7 +1460,7 @@ sint IService::main (const char *serviceShortName, const char *serviceLongName,
mdDisplayVars.clear (); mdDisplayVars.clear ();
ICommand::execute(varName, logDisplayVars, true); ICommand::execute(varName, logDisplayVars, true);
const std::deque<std::string> &strs = mdDisplayVars.lockStrings(); const std::deque<std::string> &strs = mdDisplayVars.lockStrings();
if (strs.size()>0) if (!strs.empty())
{ {
str += strs[0].substr(0,strs[0].size()-1); str += strs[0].substr(0,strs[0].size()-1);
} }

View file

@ -3,7 +3,7 @@ FILE(GLOB SRC *.cpp *.h *.def *.rc)
NL_TARGET_DRIVER(nel_drv_dsound_win ${SRC}) NL_TARGET_DRIVER(nel_drv_dsound_win ${SRC})
INCLUDE_DIRECTORIES(BEFORE ${DXSDK_INCLUDE_DIR}) INCLUDE_DIRECTORIES(BEFORE ${DXSDK_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(nel_drv_dsound_win nelmisc nelsnd_lowlevel ${DXSDK_DSOUND_LIBRARY} ${DXSDK_GUID_LIBRARY}) TARGET_LINK_LIBRARIES(nel_drv_dsound_win nelmisc nelsnd_lowlevel ${DXSDK_DSOUND_LIBRARY})
NL_DEFAULT_PROPS(nel_drv_dsound_win "NeL, Driver, Sound: DirectSound") NL_DEFAULT_PROPS(nel_drv_dsound_win "NeL, Driver, Sound: DirectSound")
NL_ADD_RUNTIME_FLAGS(nel_drv_dsound_win) NL_ADD_RUNTIME_FLAGS(nel_drv_dsound_win)

View file

@ -22,6 +22,7 @@
# include <eax.h> # include <eax.h>
#endif #endif
#include <initguid.h>
#include <dsound.h> #include <dsound.h>
#include <iostream> #include <iostream>

View file

@ -197,7 +197,7 @@ CSoundDriverAL::~CSoundDriverAL()
// Remove the allocated (but not exported) source and buffer names- // Remove the allocated (but not exported) source and buffer names-
// Release internal resources of all remaining ISource instances // Release internal resources of all remaining ISource instances
if (_Sources.size()) if (!_Sources.empty())
{ {
nlwarning("AL: _Sources.size(): '%u'", (uint32)_Sources.size()); nlwarning("AL: _Sources.size(): '%u'", (uint32)_Sources.size());
set<CSourceAL *>::iterator it(_Sources.begin()), end(_Sources.end()); set<CSourceAL *>::iterator it(_Sources.begin()), end(_Sources.end());
@ -206,7 +206,7 @@ CSoundDriverAL::~CSoundDriverAL()
} }
if (!_Buffers.empty()) alDeleteBuffers(compactAliveNames(_Buffers, alIsBuffer), &*_Buffers.begin()); if (!_Buffers.empty()) alDeleteBuffers(compactAliveNames(_Buffers, alIsBuffer), &*_Buffers.begin());
// Release internal resources of all remaining IEffect instances // Release internal resources of all remaining IEffect instances
if (_Effects.size()) if (!_Effects.empty())
{ {
nlwarning("AL: _Effects.size(): '%u'", (uint32)_Effects.size()); nlwarning("AL: _Effects.size(): '%u'", (uint32)_Effects.size());
set<CEffectAL *>::iterator it(_Effects.begin()), end(_Effects.end()); set<CEffectAL *>::iterator it(_Effects.begin()), end(_Effects.end());

View file

@ -254,7 +254,7 @@ bool CSourceAL::play()
if (!_IsPlaying) // set start time if not playing yet if (!_IsPlaying) // set start time if not playing yet
_StartTime = CTime::getLocalTime(); _StartTime = CTime::getLocalTime();
_IsPlaying = true; // this play always virtually succeed but may not actually be playing _IsPlaying = true; // this play always virtually succeed but may not actually be playing
if (_QueuedBuffers.size()) // ensure buffers have actually queued if (!_QueuedBuffers.empty()) // ensure buffers have actually queued
{ {
alSourcePlay(_Source); alSourcePlay(_Source);
if (alGetError() != AL_NO_ERROR) if (alGetError() != AL_NO_ERROR)
@ -306,7 +306,7 @@ void CSourceAL::stop()
alSourceStop(_Source); alSourceStop(_Source);
alTestError(); alTestError();
// unqueue buffers // unqueue buffers
while (_QueuedBuffers.size()) while (!_QueuedBuffers.empty())
{ {
ALuint bufferName = _QueuedBuffers.front()->bufferName(); ALuint bufferName = _QueuedBuffers.front()->bufferName();
alSourceUnqueueBuffers(_Source, 1, &bufferName); alSourceUnqueueBuffers(_Source, 1, &bufferName);

View file

@ -30,7 +30,7 @@ NL_TARGET_DRIVER(nel_drv_xaudio2_win ${SRC})
INCLUDE_DIRECTORIES(BEFORE ${DXSDK_INCLUDE_DIR}) INCLUDE_DIRECTORIES(BEFORE ${DXSDK_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(nel_drv_xaudio2_win nelmisc nelsnd_lowlevel ${DXSDK_XAUDIO_LIBRARY} ${DXSDK_GUID_LIBRARY}) TARGET_LINK_LIBRARIES(nel_drv_xaudio2_win nelmisc nelsnd_lowlevel ${DXSDK_XAUDIO_LIBRARY})
NL_DEFAULT_PROPS(nel_drv_xaudio2_win "NeL, Driver, Sound: XAudio2") NL_DEFAULT_PROPS(nel_drv_xaudio2_win "NeL, Driver, Sound: XAudio2")
NL_ADD_RUNTIME_FLAGS(nel_drv_xaudio2_win) NL_ADD_RUNTIME_FLAGS(nel_drv_xaudio2_win)

View file

@ -215,7 +215,7 @@ void CSoundDriverXAudio2::release()
// the created instances must still be released by the user! // the created instances must still be released by the user!
// Release internal resources of all remaining ISource instances // Release internal resources of all remaining ISource instances
if (_Sources.size()) if (!_Sources.empty())
{ {
nlwarning(NLSOUND_XAUDIO2_PREFIX "_Sources.size(): '%u'", (uint32)_Sources.size()); nlwarning(NLSOUND_XAUDIO2_PREFIX "_Sources.size(): '%u'", (uint32)_Sources.size());
set<CSourceXAudio2 *>::iterator it(_Sources.begin()), end(_Sources.end()); set<CSourceXAudio2 *>::iterator it(_Sources.begin()), end(_Sources.end());
@ -223,7 +223,7 @@ void CSoundDriverXAudio2::release()
_Sources.clear(); _Sources.clear();
} }
// Release internal resources of all remaining IBuffer instances // Release internal resources of all remaining IBuffer instances
if (_Buffers.size()) if (!_Buffers.empty())
{ {
nlwarning(NLSOUND_XAUDIO2_PREFIX "_Buffers.size(): '%u'", (uint32)_Buffers.size()); nlwarning(NLSOUND_XAUDIO2_PREFIX "_Buffers.size(): '%u'", (uint32)_Buffers.size());
set<CBufferXAudio2 *>::iterator it(_Buffers.begin()), end(_Buffers.end()); set<CBufferXAudio2 *>::iterator it(_Buffers.begin()), end(_Buffers.end());
@ -231,7 +231,7 @@ void CSoundDriverXAudio2::release()
_Buffers.clear(); _Buffers.clear();
} }
// Release internal resources of all remaining IEffect instances // Release internal resources of all remaining IEffect instances
if (_Effects.size()) if (!_Effects.empty())
{ {
nlwarning(NLSOUND_XAUDIO2_PREFIX "_Effects.size(): '%u'", (uint32)_Effects.size()); nlwarning(NLSOUND_XAUDIO2_PREFIX "_Effects.size(): '%u'", (uint32)_Effects.size());
set<CEffectXAudio2 *>::iterator it(_Effects.begin()), end(_Effects.end()); set<CEffectXAudio2 *>::iterator it(_Effects.begin()), end(_Effects.end());

View file

@ -363,7 +363,7 @@ CSound* CSoundBank::getSound(const NLMISC::CSheetId &sheetId)
if (sheetId.getShortId() >= _Sounds.size()) if (sheetId.getShortId() >= _Sounds.size())
{ {
std::string sheetName = sheetId.toString(); std::string sheetName = sheetId.toString();
nlwarning("NLSOUND: Sound sheet id '%s' exceeds loaded sound sheets", sheetName.c_str()); nldebug("NLSOUND: Sound sheet id '%s' exceeds loaded sound sheets", sheetName.c_str());
return NULL; return NULL;
} }

View file

@ -190,6 +190,7 @@ void CCrashReportWidget::onLoad()
} }
QTextStream ss( &f ); QTextStream ss( &f );
ss.setCodec("UTF-8");
m_ui.reportEdit->setPlainText( ss.readAll() ); m_ui.reportEdit->setPlainText( ss.readAll() );
f.close(); f.close();
} }

View file

@ -8,17 +8,7 @@ SET(RZ_SERVER_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/server/src)
ADD_SUBDIRECTORY(common) ADD_SUBDIRECTORY(common)
ADD_SUBDIRECTORY(tools) ADD_SUBDIRECTORY(tools)
IF(WITH_RYZOM_CLIENT)
IF(NOT WITH_GUI)
MESSAGE( FATAL_ERROR "The client cannot be built without the NeL GUI Library (WITH_GUI)")
ENDIF()
ADD_SUBDIRECTORY(client) ADD_SUBDIRECTORY(client)
ELSEIF(WITH_RYZOM_TOOLS)
# Need clientsheets lib for sheets packer tool
ADD_SUBDIRECTORY(client)
ENDIF()
IF(WITH_RYZOM_SERVER OR WITH_RYZOM_TOOLS) IF(WITH_RYZOM_SERVER OR WITH_RYZOM_TOOLS)
# Need servershare for build packed collision tool # Need servershare for build packed collision tool

View file

@ -1,4 +1,5 @@
# Need clientsheets lib for sheets packer tool # Need clientsheets lib for sheets packer tool
# Need seven_zip for patch_gen and ryzom_installer
ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(src)
IF(WITH_RYZOM_CLIENT) IF(WITH_RYZOM_CLIENT)

View file

@ -1,9 +1,9 @@
////////////////////////// //////////////////////////
//////////////////////////
/// CLIENT CONFIG FILE /// /// CLIENT CONFIG FILE ///
////////////////////////// //////////////////////////
////////////////////////// //////////////////////////
//////////////////////////
// If you set this variable to 1, your client.cfg will be overwritten when you quit the client. // If you set this variable to 1, your client.cfg will be overwritten when you quit the client.
// You will loose all the comments and identation in this file. // You will loose all the comments and identation in this file.
@ -15,12 +15,12 @@ SaveConfig = 1;
Driver3D="Auto"; // Valid values are "Auto" or "0", "OpengGL" or "1" & "Direct3D" or "2" Driver3D="Auto"; // Valid values are "Auto" or "0", "OpengGL" or "1" & "Direct3D" or "2"
// "Auto" will choose the best suited driver depending on hardware // "Auto" will choose the best suited driver depending on hardware
FullScreen = 0; FullScreen = 1;
Width = 0; Width = 1024;
Height = 0; Height = 768;
PositionX = 0; PositionX = 0;
PositionY = 0; PositionY = 0;
Frequency = 0; Frequency = 60;
Depth = 32; Depth = 32;
Sleep = -1; Sleep = -1;
ProcessPriority = 0; // -2 = idle, -1 = below normal, 0 = normal, 1 = above normal, 2 = high, 3 = real time ProcessPriority = 0; // -2 = idle, -1 = below normal, 0 = normal, 1 = above normal, 2 = high, 3 = real time
@ -86,15 +86,9 @@ XMLOutGameInterfaceFiles = {
"out_v2_keys.xml", "out_v2_keys.xml",
}; };
TexturesInterface = { TexturesInterface = "texture_interfaces_v3";
"interface_game_khaganat" TexturesInterfaceDXTC = "texture_interfaces_dxtc";
};
TexturesLoginInterface = {
"interface_login_khaganat"
};
TexturesOutGameInterface = {
"interface_outgame_khaganat"
};
// The ligo primitive class file // The ligo primitive class file
LigoPrimitiveClass = "world_editor_classes.xml"; LigoPrimitiveClass = "world_editor_classes.xml";
@ -230,7 +224,7 @@ FXAA_ps3 = 1;
AnisotropicFilter = 0; AnisotropicFilter = 0;
Bloom = 1; Bloom = 0;
Bloom_ps0 = 0; Bloom_ps0 = 0;
Bloom_ps1 = 1; Bloom_ps1 = 1;
Bloom_ps2 = 1; Bloom_ps2 = 1;
@ -290,7 +284,7 @@ DivideTextureSizeBy2= 0; // Divide texture size
DisableVtxProgram = 0; // Disable Hardware Vertex Program. DisableVtxProgram = 0; // Disable Hardware Vertex Program.
DisableVtxAGP = 0; // Disable Hardware Vertex AGP. DisableVtxAGP = 0; // Disable Hardware Vertex AGP.
DisableTextureShdr = 0; // Disable Hardware Texture Shader. DisableTextureShdr = 0; // Disable Hardware Texture Shader.
HDEntityTexture = 1; HDEntityTexture = 0;
HDTextureInstalled = 1; HDTextureInstalled = 1;
WaitVBL = 0; // 0 or 1 to wait Vertical Sync. WaitVBL = 0; // 0 or 1 to wait Vertical Sync.
@ -349,8 +343,7 @@ SoundGameMusicVolume_max = 1.0;
SoundGameMusicVolume_step = 0.001; SoundGameMusicVolume_step = 0.001;
// MISC // MISC
PreDataPath = { "user", "data", "patch", "examples", "data/fonts" }; PreDataPath = { "user", "patch", "data", "examples" };
DataPath = { "data" };
NeedComputeVS = 0; NeedComputeVS = 0;
NegFiltersDebug = {"Update DB", "Reading:", "Read Value :", "impulseCallBack", "CLIMPD:", "LNET" }; NegFiltersDebug = {"Update DB", "Reading:", "Read Value :", "impulseCallBack", "CLIMPD:", "LNET" };

Binary file not shown.

Binary file not shown.

View file

@ -212,7 +212,6 @@
background_bitmap_view="" background_bitmap_view=""
home="" home=""
browse_next_time="false" browse_next_time="false"
timeout="5"
form_text_area_group="edit_box_widget_multiline"> form_text_area_group="edit_box_widget_multiline">
<group id="black" <group id="black"
posref="BR BR" posref="BR BR"

View file

@ -645,7 +645,7 @@
id="dist" id="dist"
posref="BM BM" posref="BM BM"
x="0" x="0"
y="0" y="2"
hardtext="uiRadarZoom0" hardtext="uiRadarZoom0"
shadow="true" shadow="true"
color="255 255 255 255" color="255 255 255 255"
@ -694,7 +694,7 @@
id="range" id="range"
posref="BM MM" posref="BM MM"
x="0" x="0"
y="16" y="20"
hardtext="uiRadarZoom0" hardtext="uiRadarZoom0"
shadow="true" shadow="true"
color="255 255 255 255" color="255 255 255 255"
@ -748,8 +748,8 @@
posref="BM BM" posref="BM BM"
x="0" x="0"
y="26" y="26"
w="44" w="46"
h="18" /> h="25" />
</group> </group>
<tree node="compass" /> <tree node="compass" />
<link expr="switch(@UI:SAVE:RADARZOOM, 'uiRadarZoom0', 'uiRadarZoom1', 'uiRadarZoom2', 'uiRadarZoom3')" <link expr="switch(@UI:SAVE:RADARZOOM, 'uiRadarZoom0', 'uiRadarZoom1', 'uiRadarZoom2', 'uiRadarZoom3')"
@ -811,7 +811,7 @@
id="upload" id="upload"
posref="TL TL" posref="TL TL"
x="0" x="0"
y="-20" y="-18"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="10" fontsize="10"
@ -823,7 +823,7 @@
posref="BL TL" posref="BL TL"
posparent="upload" posparent="upload"
x="0" x="0"
y="-2" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="10" fontsize="10"
@ -835,7 +835,7 @@
posref="BL TL" posref="BL TL"
posparent="download" posparent="download"
x="0" x="0"
y="-2" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="10" fontsize="10"
@ -847,7 +847,7 @@
posref="BL TL" posref="BL TL"
posparent="ping" posparent="ping"
x="0" x="0"
y="-2" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="10" fontsize="10"
@ -870,7 +870,7 @@
id="up_title" id="up_title"
posref="TL TL" posref="TL TL"
x="0" x="0"
y="-4" y="-2"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -879,7 +879,7 @@
id="down_title" id="down_title"
posref="TL TL" posref="TL TL"
x="0" x="0"
y="-20" y="-18"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -888,7 +888,7 @@
id="ping_title" id="ping_title"
posref="TL TL" posref="TL TL"
x="0" x="0"
y="-36" y="-34"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -897,7 +897,7 @@
id="packet_title" id="packet_title"
posref="TL TL" posref="TL TL"
x="0" x="0"
y="-52" y="-50"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -906,7 +906,7 @@
id="server_title" id="server_title"
posref="TL TL" posref="TL TL"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -915,7 +915,7 @@
id="upload" id="upload"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-4" y="-2"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="11" fontsize="11"
@ -926,7 +926,7 @@
id="download" id="download"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-20" y="-18"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="11" fontsize="11"
@ -937,7 +937,7 @@
id="ping" id="ping"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-36" y="-34"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="11" fontsize="11"
@ -948,7 +948,7 @@
id="packet" id="packet"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-52" y="-50"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="11" fontsize="11"
@ -959,7 +959,7 @@
id="server0" id="server0"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -969,7 +969,7 @@
id="server1" id="server1"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -979,7 +979,7 @@
id="server2" id="server2"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -989,7 +989,7 @@
id="server3" id="server3"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -999,7 +999,7 @@
id="server4" id="server4"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -1009,7 +1009,7 @@
id="server5" id="server5"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -1019,7 +1019,7 @@
id="server6" id="server6"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -1029,7 +1029,7 @@
id="server7" id="server7"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -1039,7 +1039,7 @@
id="server8" id="server8"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"
@ -1049,7 +1049,7 @@
id="server9" id="server9"
posref="TR TR" posref="TR TR"
x="0" x="0"
y="-68" y="-66"
color="255 255 255 255" color="255 255 255 255"
fontsize="11" fontsize="11"
shadow="true" shadow="true"

View file

@ -583,11 +583,11 @@
<param name="title_offset_x" <param name="title_offset_x"
value="8" /> value="8" />
<param name="title_offset_y" <param name="title_offset_y"
value="-10" /> value="-7" />
<param name="title_offset_openable_x" <param name="title_offset_openable_x"
value="20" /> value="20" />
<param name="title_offset_openable_y" <param name="title_offset_openable_y"
value="-10" /> value="-7" />
<param name="scrollbar_offset_x" <param name="scrollbar_offset_x"
value="6" /> value="6" />
<param name="scrollbar_size_w" <param name="scrollbar_size_w"
@ -732,11 +732,11 @@
<param name="title_offset_x" <param name="title_offset_x"
value="56" /> value="56" />
<param name="title_offset_y" <param name="title_offset_y"
value="-26" /> value="-23" />
<param name="title_offset_openable_x" <param name="title_offset_openable_x"
value="20" /> value="20" />
<param name="title_offset_openable_y" <param name="title_offset_openable_y"
value="-10" /> value="-7" />
<param name="scrollbar_offset_x" <param name="scrollbar_offset_x"
value="6" /> value="6" />
<param name="scrollbar_size_w" <param name="scrollbar_size_w"
@ -873,11 +873,11 @@
<param name="title_offset_x" <param name="title_offset_x"
value="28" /> value="28" />
<param name="title_offset_y" <param name="title_offset_y"
value="-10" /> value="-7" />
<param name="title_offset_openable_x" <param name="title_offset_openable_x"
value="20" /> value="20" />
<param name="title_offset_openable_y" <param name="title_offset_openable_y"
value="-10" /> value="-7" />
<param name="scrollbar_offset_x" <param name="scrollbar_offset_x"
value="6" /> value="6" />
<param name="scrollbar_size_w" <param name="scrollbar_size_w"
@ -1014,11 +1014,11 @@
<param name="title_offset_x" <param name="title_offset_x"
value="8" /> value="8" />
<param name="title_offset_y" <param name="title_offset_y"
value="-6" /> value="-4" />
<param name="title_offset_openable_x" <param name="title_offset_openable_x"
value="18" /> value="18" />
<param name="title_offset_openable_y" <param name="title_offset_openable_y"
value="-6" /> value="-4" />
<param name="header_h" <param name="header_h"
value="14" /> value="14" />
<param name="open_state_tx_opened" <param name="open_state_tx_opened"
@ -1109,11 +1109,11 @@
<param name="title_offset_x" <param name="title_offset_x"
value="8" /> value="8" />
<param name="title_offset_y" <param name="title_offset_y"
value="-5" /> value="-3" />
<param name="title_offset_openable_x" <param name="title_offset_openable_x"
value="20" /> value="20" />
<param name="title_offset_openable_y" <param name="title_offset_openable_y"
value="-5" /> value="-3" />
<param name="header_h" <param name="header_h"
value="12" /> value="12" />
<param name="open_state_tx_opened" <param name="open_state_tx_opened"
@ -1202,11 +1202,11 @@
<param name="title_offset_x" <param name="title_offset_x"
value="8" /> value="8" />
<param name="title_offset_y" <param name="title_offset_y"
value="-5" /> value="-3" />
<param name="title_offset_openable_x" <param name="title_offset_openable_x"
value="22" /> value="22" />
<param name="title_offset_openable_y" <param name="title_offset_openable_y"
value="-5" /> value="-3" />
<param name="header_h" <param name="header_h"
value="10" /> value="10" />
<param name="open_state_tx_opened" <param name="open_state_tx_opened"
@ -1295,11 +1295,11 @@
<param name="title_offset_x" <param name="title_offset_x"
value="18" /> value="18" />
<param name="title_offset_y" <param name="title_offset_y"
value="-5" /> value="-3" />
<param name="title_offset_openable_x" <param name="title_offset_openable_x"
value="24" /> value="24" />
<param name="title_offset_openable_y" <param name="title_offset_openable_y"
value="-5" /> value="-3" />
<param name="header_h" <param name="header_h"
value="10" /> value="10" />
<param name="open_state_tx_opened" <param name="open_state_tx_opened"
@ -1599,11 +1599,11 @@
<param name="title_offset_x" <param name="title_offset_x"
value="8" /> value="8" />
<param name="title_offset_y" <param name="title_offset_y"
value="-6" /> value="-4" />
<param name="title_offset_openable_x" <param name="title_offset_openable_x"
value="18" /> value="18" />
<param name="title_offset_openable_y" <param name="title_offset_openable_y"
value="-6" /> value="-4" />
<param name="header_h" <param name="header_h"
value="14" /> value="14" />
<!-- View state opened/closed (defined TL TL) --> <!-- View state opened/closed (defined TL TL) -->
@ -1698,11 +1698,11 @@
<param name="title_offset_x" <param name="title_offset_x"
value="8" /> value="8" />
<param name="title_offset_y" <param name="title_offset_y"
value="-2" /> value="0" />
<param name="title_offset_openable_x" <param name="title_offset_openable_x"
value="40" /> value="40" />
<param name="title_offset_openable_y" <param name="title_offset_openable_y"
value="-2" /> value="0" />
<param name="header_h" <param name="header_h"
value="12" /> value="12" />
<!-- View state opened/closed (defined TL TL) --> <!-- View state opened/closed (defined TL TL) -->
@ -1916,6 +1916,8 @@ This MUST follow the Enum MISSION_DESC::TIconId
value="basic.ttf" /> --> value="basic.ttf" /> -->
<param name="font" <param name="font"
value="ryzom.ttf" /> value="ryzom.ttf" />
<param name="monospace_font"
value="ryzom_monospace.ttf" />
<param name="add_coef_font" <param name="add_coef_font"
value="1" /> value="1" />
<param name="mul_coef_anim" <param name="mul_coef_anim"

View file

@ -138,7 +138,7 @@
x="0" x="0"
y="6" y="6"
posref="BM BM" posref="BM BM"
text_y="-2" text_y="0"
onclick_l="proc" onclick_l="proc"
params_l="welcome_close" params_l="welcome_close"
hardtext="uittOK" /> hardtext="uittOK" />
@ -199,7 +199,7 @@
x="-15" x="-15"
y="10" y="10"
posref="BM BM" posref="BM BM"
text_y="-2" text_y="0"
onclick_l="proc" onclick_l="proc"
params_l="active_hardware_cursor" params_l="active_hardware_cursor"
hardtext="uiYes" /> hardtext="uiYes" />
@ -208,7 +208,7 @@
y="0" y="0"
posparent="active_ok" posparent="active_ok"
posref="BR BL" posref="BR BL"
text_y="-2" text_y="0"
onclick_l="proc" onclick_l="proc"
params_l="close_hardware_cursor" params_l="close_hardware_cursor"
hardtext="uiNo" /> hardtext="uiNo" />
@ -316,7 +316,7 @@
x="0" x="0"
y="6" y="6"
posref="BM BM" posref="BM BM"
text_y="-2" text_y="0"
onclick_l="proc" onclick_l="proc"
params_l="universe_chanel_warning_close" params_l="universe_chanel_warning_close"
hardtext="uittOK" /> hardtext="uittOK" />
@ -356,9 +356,9 @@
</proc> </proc>
<group type="container" <group type="container"
id="death_warning" id="death_warning"
w="400" w="500"
pop_min_w="400" pop_min_w="500"
pop_max_w="400" pop_max_w="500"
h="250" h="250"
pop_min_h="250" pop_min_h="250"
pop_max_h="250" pop_max_h="250"
@ -401,7 +401,7 @@
id="death_warning_text" id="death_warning_text"
posref="TM TM" posref="TM TM"
x="0" x="0"
y="-20" y="-10"
color="255 255 255 255" color="255 255 255 255"
fontsize="12" fontsize="12"
shadow="true" shadow="true"
@ -416,6 +416,7 @@
y="30" y="30"
w="0" w="0"
h="16" h="16"
y_text="-5"
fontsize="10" fontsize="10"
hardtext="uiDeathWarningAvoid" hardtext="uiDeathWarningAvoid"
dblink="UI:VARIABLES:TEMP_DEATH_WARNING_AVOID" dblink="UI:VARIABLES:TEMP_DEATH_WARNING_AVOID"
@ -424,7 +425,7 @@
x="0" x="0"
y="6" y="6"
posref="BM BM" posref="BM BM"
text_y="-2" text_y="0"
onclick_l="proc" onclick_l="proc"
params_l="death_warning_close" params_l="death_warning_close"
hardtext="uittOK" /> hardtext="uittOK" />
@ -463,9 +464,9 @@
</proc> </proc>
<group type="container" <group type="container"
id="night_warning" id="night_warning"
w="400" w="500"
pop_min_w="400" pop_min_w="500"
pop_max_w="400" pop_max_w="500"
h="250" h="250"
pop_min_h="250" pop_min_h="250"
pop_max_h="250" pop_max_h="250"
@ -508,7 +509,7 @@
id="night_warning_text" id="night_warning_text"
posref="TM TM" posref="TM TM"
x="0" x="0"
y="-20" y="-10"
color="255 255 255 255" color="255 255 255 255"
fontsize="12" fontsize="12"
shadow="true" shadow="true"
@ -531,7 +532,7 @@
x="0" x="0"
y="6" y="6"
posref="BM BM" posref="BM BM"
text_y="-2" text_y="0"
onclick_l="proc" onclick_l="proc"
params_l="night_warning_close" params_l="night_warning_close"
hardtext="uittOK" /> hardtext="uittOK" />
@ -2828,7 +2829,7 @@
global_color_normal="true" global_color_normal="true"
global_color_over="true" global_color_over="true"
global_color_pushed="true" global_color_pushed="true"
text_y="-2" text_y="0"
fontsize="10" fontsize="10"
shadow="true" shadow="true"
case_mode="%case_upper" case_mode="%case_upper"
@ -2887,21 +2888,21 @@
x="4" x="4"
y="0" y="0"
posref="TL TL" posref="TL TL"
text_y="-2" text_y="0"
onclick_l="proc" onclick_l="proc"
params_l="proc_stat_report_yes" params_l="proc_stat_report_yes"
hardtext="uiYes" /> hardtext="uiYes" />
<ctrl style="button_cancel" <ctrl style="button_cancel"
x="4" x="4"
posparent="ok" posparent="ok"
text_y="-2" text_y="0"
posref="TR TL" posref="TR TL"
onclick_l="leave_modal" onclick_l="leave_modal"
hardtext="uiNo" /> hardtext="uiNo" />
<ctrl style="button_always" <ctrl style="button_always"
x="4" x="4"
posparent="cancel" posparent="cancel"
text_y="-2" text_y="0"
posref="TR TL" posref="TR TL"
onclick_l="proc" onclick_l="proc"
params_l="proc_stat_report_always" params_l="proc_stat_report_always"

View file

@ -57,7 +57,7 @@
<view type="text" <view type="text"
id="t" id="t"
posref="TL TL" posref="TL TL"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
fontsize="12" fontsize="12"
shadow="true" shadow="true"
@ -66,7 +66,7 @@
id="max" id="max"
posref="MR MR" posref="MR MR"
x="-4" x="-4"
y="-2" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -76,7 +76,7 @@
id="sep" id="sep"
posparent="max" posparent="max"
posref="TL TR" posref="TL TR"
x="-1" x="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -128,7 +128,7 @@
<view type="text" <view type="text"
id="t" id="t"
posref="TL TL" posref="TL TL"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
fontsize="12" fontsize="12"
shadow="true" shadow="true"
@ -137,7 +137,7 @@
id="val" id="val"
posref="MR MR" posref="MR MR"
x="-4" x="-4"
y="-2" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -176,7 +176,7 @@
<view type="text" <view type="text"
id="t" id="t"
posref="TL TL" posref="TL TL"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
fontsize="12" fontsize="12"
shadow="true" shadow="true"
@ -185,7 +185,7 @@
id="val" id="val"
posref="MR MR" posref="MR MR"
x="-4" x="-4"
y="-2" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -223,7 +223,7 @@
<view type="text" <view type="text"
id="t" id="t"
posref="TL TL" posref="TL TL"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
fontsize="12" fontsize="12"
shadow="true" shadow="true"
@ -232,7 +232,7 @@
id="val" id="val"
posref="MR MR" posref="MR MR"
x="-4" x="-4"
y="-2" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -271,7 +271,7 @@
<view type="text" <view type="text"
id="t" id="t"
posref="TL TL" posref="TL TL"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
fontsize="12" fontsize="12"
shadow="true" shadow="true"
@ -280,7 +280,7 @@
id="val" id="val"
posref="MR MR" posref="MR MR"
x="-4" x="-4"
y="-2" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -317,7 +317,7 @@
<view type="text" <view type="text"
id="t" id="t"
posref="TL TL" posref="TL TL"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
fontsize="12" fontsize="12"
shadow="true" shadow="true"
@ -326,7 +326,7 @@
id="val" id="val"
posref="MR MR" posref="MR MR"
x="-4" x="-4"
y="-2" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -362,7 +362,7 @@
<view type="text" <view type="text"
id="t" id="t"
posref="TL TL" posref="TL TL"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
fontsize="12" fontsize="12"
shadow="true" shadow="true"
@ -371,7 +371,7 @@
id="max" id="max"
posref="MR MR" posref="MR MR"
x="-4" x="-4"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -380,7 +380,7 @@
id="sep" id="sep"
posref="MR MR" posref="MR MR"
x="-20" x="-20"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -389,7 +389,7 @@
id="val" id="val"
posref="MR MR" posref="MR MR"
x="-37" x="-37"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -432,7 +432,7 @@
id="val" id="val"
posref="MR MR" posref="MR MR"
x="-4" x="-4"
y="-2" y="0"
color="255 255 255 255" color="255 255 255 255"
shadow="true" shadow="true"
fontsize="12" fontsize="12"
@ -480,7 +480,7 @@
id="t" id="t"
posref="TL TL" posref="TL TL"
x="16" x="16"
y="-3" y="2"
color="255 255 255 255" color="255 255 255 255"
global_color="false" global_color="false"
fontsize="10" fontsize="10"
@ -519,7 +519,7 @@
<view type="text" <view type="text"
id="t" id="t"
posref="TL TL" posref="TL TL"
y="-1" y="0"
color="255 255 255 255" color="255 255 255 255"
fontsize="12" fontsize="12"
shadow="true" shadow="true"
@ -569,12 +569,12 @@
value="-1" /> value="-1" />
<group type="container" <group type="container"
id="info_player_skills" id="info_player_skills"
w="500" w="540"
title="uiSkillsTitle" title="uiSkillsTitle"
global_color="false" global_color="false"
header_color="UI:SAVE:WIN:COLORS:PLA" header_color="UI:SAVE:WIN:COLORS:PLA"
min_w="330" min_w="350"
max_w="500" max_w="540"
min_h="550" min_h="550"
max_h="1600" max_h="1600"
pop_max_h="800" pop_max_h="800"
@ -681,7 +681,7 @@
posparent="basics_skills" posparent="basics_skills"
posref="TL TL" posref="TL TL"
x="0" x="0"
y="-24" y="-10"
hardtext="uiRaceBold" hardtext="uiRaceBold"
shadow="true" shadow="true"
color="255 255 255 255" color="255 255 255 255"
@ -701,7 +701,7 @@
posref="TL TL" posref="TL TL"
sizeref="w" sizeref="w"
h="14" h="14"
y="-48"> y="-30">
<view type="text" <view type="text"
id="guild_title" id="guild_title"
posref="TL TL" posref="TL TL"
@ -729,7 +729,7 @@
sizeref="w5" sizeref="w5"
w="-1" w="-1"
h="188" h="188"
y="-72"> y="-52">
<view type="text" <view type="text"
id="Skill_t" id="Skill_t"
posref="TL TL" posref="TL TL"
@ -744,7 +744,7 @@
posref="TL TL" posref="TL TL"
x="0" x="0"
sizeref="w" sizeref="w"
y="-14" y="-16"
w="0" w="0"
h="172" h="172"
inherit_gc_alpha="true"> inherit_gc_alpha="true">
@ -855,7 +855,7 @@
w="-1" w="-1"
x="1" x="1"
h="188" h="188"
y="-72"> y="-52">
<view type="text" <view type="text"
id="Skill_t" id="Skill_t"
posref="TL TL" posref="TL TL"
@ -870,7 +870,7 @@
posref="TL TL" posref="TL TL"
x="0" x="0"
sizeref="w" sizeref="w"
y="-14" y="-16"
w="0" w="0"
h="172" h="172"
inherit_gc_alpha="true"> inherit_gc_alpha="true">
@ -950,7 +950,7 @@
sizeref="w5" sizeref="w5"
w="-1" w="-1"
h="83" h="83"
y="-264"> y="-248">
<view type="text" <view type="text"
id="sp" id="sp"
posref="TL TL" posref="TL TL"
@ -965,7 +965,7 @@
posref="TL TL" posref="TL TL"
x="0" x="0"
sizeref="w" sizeref="w"
y="-14" y="-16"
w="0" w="0"
h="67" h="67"
inherit_gc_alpha="true"> inherit_gc_alpha="true">
@ -1024,7 +1024,7 @@
w="-1" w="-1"
x="1" x="1"
h="83" h="83"
y="-264"> y="-248">
<view type="text" <view type="text"
id="cm" id="cm"
posref="TL TL" posref="TL TL"
@ -1039,7 +1039,7 @@
posref="TL TL" posref="TL TL"
x="0" x="0"
sizeref="w" sizeref="w"
y="-14" y="-16"
w="0" w="0"
h="67" h="67"
inherit_gc_alpha="true"> inherit_gc_alpha="true">
@ -1110,8 +1110,8 @@
posref="TL TL" posref="TL TL"
sizeref="w5" sizeref="w5"
w="-1" w="-1"
h="155" h="157"
y="-347"> y="-338">
<view type="text" <view type="text"
id="resists_t" id="resists_t"
posref="TL TL" posref="TL TL"
@ -1129,15 +1129,15 @@
posref="TL TL" posref="TL TL"
x="0" x="0"
sizeref="w" sizeref="w"
y="-14" y="-16"
w="0" w="0"
h="141" h="140"
inherit_gc_alpha="true"> inherit_gc_alpha="true">
<instance template="tipc_magic_resist" <instance template="tipc_magic_resist"
id="Desert" id="Desert"
posref="TL TL" posref="TL TL"
x="8" x="8"
y="-10" y="-8"
w="-8" w="-8"
val="%player_resist_desert" /> val="%player_resist_desert" />
<instance template="tipc_magic_resist" <instance template="tipc_magic_resist"
@ -1173,8 +1173,8 @@
posref="TM TL" posref="TM TL"
sizeref="w5" sizeref="w5"
w="-1" w="-1"
h="155" h="158"
y="-347"> y="-337">
<view type="text" <view type="text"
id="protections_t" id="protections_t"
posref="TL TL" posref="TL TL"
@ -1192,15 +1192,15 @@
posref="TL TL" posref="TL TL"
x="0" x="0"
sizeref="w" sizeref="w"
y="-14" y="-16"
w="0" w="0"
h="141" h="140"
inherit_gc_alpha="true"> inherit_gc_alpha="true">
<instance template="tipc_magic_protect" <instance template="tipc_magic_protect"
id="Acid" id="Acid"
posref="TL TL" posref="TL TL"
x="8" x="8"
y="-10" y="-8"
w="-8" w="-8"
val="%player_protect_acid" /> val="%player_protect_acid" />
<instance template="tipc_magic_protect" <instance template="tipc_magic_protect"
@ -1256,8 +1256,8 @@
posref="TL TL" posref="TL TL"
sizeref="w5" sizeref="w5"
w="-1" w="-1"
h="40" h="42"
y="-510"> y="-500">
<view type="text" <view type="text"
id="defense_t" id="defense_t"
posref="TL TL" posref="TL TL"
@ -1272,15 +1272,15 @@
posref="TL TL" posref="TL TL"
x="0" x="0"
sizeref="w" sizeref="w"
y="-14" y="-16"
w="0" w="0"
h="26" h="24"
inherit_gc_alpha="true"> inherit_gc_alpha="true">
<instance template="tipc_scoreEP" <instance template="tipc_scoreEP"
id="dodge" id="dodge"
posref="TL TL" posref="TL TL"
x="8" x="8"
y="-7" y="-5"
w="-8" w="-8"
text="uiDodge" text="uiDodge"
val="%player_dodge_current" val="%player_dodge_current"
@ -1298,21 +1298,21 @@
posref="TM TL" posref="TM TL"
sizeref="w5" sizeref="w5"
w="-1" w="-1"
h="40" h="42"
y="-510"> y="-500">
<group id="black" <group id="black"
posref="TL TL" posref="TL TL"
x="0" x="0"
sizeref="w" sizeref="w"
y="-14" y="-16"
w="0" w="0"
h="26" h="24"
inherit_gc_alpha="true"> inherit_gc_alpha="true">
<instance template="tipc_scoreEP" <instance template="tipc_scoreEP"
id="parry" id="parry"
posref="TL TL" posref="TL TL"
x="8" x="8"
y="-7" y="-5"
w="-8" w="-8"
text="uiParry" text="uiParry"
val="%player_parry_current" val="%player_parry_current"
@ -1423,7 +1423,7 @@
posref="TL TL" posref="TL TL"
x="0" x="0"
sizeref="w" sizeref="w"
y="-14" y="-16"
w="0" w="0"
h="26" h="26"
inherit_gc_alpha="true"> inherit_gc_alpha="true">
@ -1464,7 +1464,6 @@
tooltip="uittBrowseRefresh" tooltip="uittBrowseRefresh"
onclick_l="browse_home" onclick_l="browse_home"
params_l="name=ui:interface:info_player_skills:content:rpjobs:html" /> params_l="name=ui:interface:info_player_skills:content:rpjobs:html" />
<group type="webig_html" <group type="webig_html"
id="html" id="html"
posref="TL TL" posref="TL TL"
@ -1599,7 +1598,6 @@
tooltip="uittBrowseRefresh" tooltip="uittBrowseRefresh"
onclick_l="browse_home" onclick_l="browse_home"
params_l="name=ui:interface:info_player_skills:content:webinfos:html" /> params_l="name=ui:interface:info_player_skills:content:webinfos:html" />
<group type="webig_html" <group type="webig_html"
id="html" id="html"
posref="TL TL" posref="TL TL"
@ -3776,7 +3774,7 @@
y="0" y="0"
posref="ML MR" posref="ML MR"
posparent="browse_undo" posparent="browse_undo"
text_y="-2" text_y="0"
onclick_l="lua" onclick_l="lua"
params_l="game.RingAccessPointFilter:open()" params_l="game.RingAccessPointFilter:open()"
hardtext="uiRingAccessPointFilter" hardtext="uiRingAccessPointFilter"
@ -3788,7 +3786,7 @@
y="0" y="0"
posref="ML MR" posref="ML MR"
posparent="browse_filter" posparent="browse_filter"
text_y="-2" text_y="0"
onclick_l="lua" onclick_l="lua"
params_l="game.RingAccessPointFilter:validate()" params_l="game.RingAccessPointFilter:validate()"
hardtext="uiBotChatRefresh" hardtext="uiBotChatRefresh"

View file

@ -27,6 +27,15 @@
<!-- Yoyo: prefer show an empty list when clicking --> <!-- Yoyo: prefer show an empty list when clicking -->
<!-- <action handler="leave_modal" cond="eq(getprop('ui:interface:bag_choose:list:nbelt'),0)" /> --> <!-- <action handler="leave_modal" cond="eq(getprop('ui:interface:bag_choose:list:nbelt'),0)" /> -->
</proc> </proc>
<proc id="select_special_items">
<action handler="set" params="target_property=ui:interface:inventory:content:bag:iil:active|value=0" />
<action handler="set" params="target_property=ui:interface:inventory:content:bag:webitems:active|value=1" />
<action handler="browse_home" params="name=ui:interface:inventory:content:bag:webitems:html" />
</proc>
<proc id="select_bag_items">
<action handler="set" params="target_property=ui:interface:inventory:content:bag:iil:active|value=1" />
<action handler="set" params="target_property=ui:interface:inventory:content:bag:webitems:active|value=0" />
</proc>
<!-- ************* --> <!-- ************* -->
<!-- * EQUIPMENT * --> <!-- * EQUIPMENT * -->
<!-- ************* --> <!-- ************* -->
@ -44,6 +53,83 @@
onclick_l="proc" onclick_l="proc"
params_l="inv_left_click_on_slot" params_l="inv_left_click_on_slot"
auto_grayed="false" /> auto_grayed="false" />
<template name="img_button"
id="image_button"
ok_text="uittOK"
tx_over="blank.tga"
cancel_text="uittCancel"
posparent="parent"
posref="BM TM"
onclick_ok=""
onclick_ok_param=""
x="0"
y="0"
keep="true"
tooltip_ok=""
avoid_resize_parent="false">
<group id="#id"
posparent="#posparent"
posref="#posref"
child_resize_w="true"
child_resize_h="true"
x="#x"
y="#y"
avoid_resize_parent="#avoid_resize_parent">
<ctrl style="button_ok"
id="bb"
x="0"
y="0"
posref="TL TL"
text_y="-2"
onclick_l="#onclick_ok"
params_l="#onclick_ok_param"
hardtext="#ok_text"
tooltip="#tooltip_ok" />
<ctrl type="button"
id="button"
button_type="push_button"
posref="TL TL"
x="0"
y="0"
scale="false"
tx_over="#tx_over"
color="255 255 255 255"
col_pushed="255 255 255 255"
col_over="255 255 255 0"
onclick_l="#onclick_ok"
params_l="#onclick_ok_param" />
</group>
</template>
<template name="image_button"
tx_over="blank.tga"
onclick_l=""
params_l="" >
<group id="#id"
posref="TL TL"
x="0"
y="0"
sizeref="wh"
w="0"
h="0">
<ctrl type="button"
id=""
button_type="push_button"
posref=""
posparent=""
x=""
y=""
scale="false"
tx_over="#tx_over"
color="255 255 255 255"
col_pushed="255 255 255 255"
col_over="255 255 255 0"
onclick_l="#onclick_l"
params_l="#params_l" />
</group>
</template>
<!-- For the moment we use a template because we have to make the fake container --> <!-- For the moment we use a template because we have to make the fake container -->
<template name="tinv_equip"> <template name="tinv_equip">
<group id="equip" <group id="equip"
@ -159,6 +245,7 @@
posparent="jewelry" posparent="jewelry"
hardtext="uiJewelryTitle" hardtext="uiJewelryTitle"
fontsize="10" fontsize="10"
y="2"
shadow="true" /> shadow="true" />
<!-- Armor --> <!-- Armor -->
<group id="armors" <group id="armors"
@ -234,6 +321,7 @@
posparent="armors" posparent="armors"
hardtext="uiArmorTitle" hardtext="uiArmorTitle"
fontsize="10" fontsize="10"
y="2"
shadow="true" /> shadow="true" />
<!-- <!--
<group id="hands" posparent="armors" x="8" y="0" w="86" h="42" posref="TR TL" > <group id="hands" posparent="armors" x="8" y="0" w="86" h="42" posref="TR TL" >
@ -334,6 +422,7 @@
<instance template="tinv_nbslots_bulk_weight" <instance template="tinv_nbslots_bulk_weight"
id="ibw" id="ibw"
x="-16" x="-16"
y="2"
inv_branch="%bag" inv_branch="%bag"
inv_bulk_max="%bag_bulk_max" /> inv_bulk_max="%bag_bulk_max" />
</group> </group>
@ -481,6 +570,7 @@
posref="TL TL" posref="TL TL"
group_onclick_r="active_menu" group_onclick_r="active_menu"
group_params_r="menu=ui:interface:base_menu_with_color"> group_params_r="menu=ui:interface:base_menu_with_color">
<group type="tab" <group type="tab"
id="inv_select" id="inv_select"
child_resize_w="true" child_resize_w="true"
@ -624,6 +714,99 @@
sizeref="wh" sizeref="wh"
w="0" w="0"
h="0"> h="0">
<!-- Special Items -->
<ctrl style="text_button_16"
id="bag_items"
posref="TL TL"
y="-2"
x="10"
wmargin="8"
hardtext="uitabInvBag"
tooltip="uitabInvBag"
onclick_l="proc"
params_l="select_bag_items" />
<ctrl style="text_button_16"
id="special_items"
posref="TR TL"
posparent="bag_items"
y="0"
x="2"
wmargin="8"
hardtext="uiSpecialLabo"
tooltip="uiSpecialLabo"
onclick_l="proc"
params_l="select_special_items" />
<!-- Keys
<ctrl style="text_button_16"
id="keys"
posref="TR TL"
posparent="special_items"
y="0"
x="2"
wmargin="8"
hardtext="Keys"
tooltip="uiSpecialLabo"
onclick_l="open_title_help"
params_l="from=user" />-->
<group id="webitems" posref="TL TL" sizeref="wh" h="-45" w="0" x="-10" y="-25" active="0">
<group type="webig_html"
id="html"
url="http://app.ryzom.com/app_arcc/index.php?action=mItem_DisplayUserItems"
title_prefix=""
sizeref="wh"
x="10"
y="0"
w="0"
h="0"
background_color="0 0 0 255"
error_color="255 240 48 255"
link_color="240 155 100 255"
text_color="210 210 210 255"
h1_color="255 255 255 255"
h2_color="255 255 255 255"
h3_color="255 255 255 255"
h4_color="255 255 255 255"
h5_color="255 255 255 255"
h6_color="100 255 100 255"
text_font_size="10"
h1_font_size="20"
h2_font_size="18"
h3_font_size="16"
h4_font_size="14"
h5_font_size="12"
h6_font_size="10"
paragraph_begin_space="1"
multi_line_space_factor="0.25"
td_begin_space="16"
li_begin_space="4"
ul_begin_space="12"
li_indent="0"
ul_indent="30"
checkbox_bitmap_normal="w_slot_on.tga"
checkbox_bitmap_pushed="w_opacity_on.tga"
checkbox_bitmap_over=""
background_bitmap_view="black2"
home="http://app.ryzom.com/app_arcc/index.php?action=mItem_DisplayUserItems"
browse_next_time="true"
form_text_area_group="edit_box_widget_multiline">
<group type="list"
id="text_list"
fontsize="9"
posref="TL TL"
posparent="black"
x="9"
y="-2"
space="0"
sizeref="hw"
w="-4"
h="-4"
maxelements="2000" />
<ctrl style="skin_scroll"
id="scroll_bar" />
</group>
</group>
<instance template="tinv_nbslots_bulk_weight" <instance template="tinv_nbslots_bulk_weight"
id="ibw" id="ibw"
x="0" x="0"
@ -632,7 +815,7 @@
<instance template="tinv_item_list" <instance template="tinv_item_list"
id="iil" id="iil"
inv_branch_nb="%max_bag_invslot" inv_branch_nb="%max_bag_invslot"
y="-16" y="-18"
sizeref="wh" sizeref="wh"
h="-16" h="-16"
inv_branch="%bag" inv_branch="%bag"
@ -841,7 +1024,7 @@
xitem="2" xitem="2"
yitem="-2" yitem="-2"
xtext="46" xtext="46"
ytext="-2" ytext="0"
hspace="2" hspace="2"
array="false" array="false"
maxitem="%max_temp_invslot" maxitem="%max_temp_invslot"

View file

@ -838,6 +838,8 @@ This MUST follow the Enum MISSION_DESC::TIconId
value="basic.ttf" /> --> value="basic.ttf" /> -->
<param name="font" <param name="font"
value="ryzom.ttf" /> value="ryzom.ttf" />
<param name="monospace_font"
value="ryzom_monospace.ttf" />
<param name="add_coef_font" <param name="add_coef_font"
value="3" /> value="3" />
<param name="mul_coef_anim" <param name="mul_coef_anim"

View file

@ -41,14 +41,14 @@
<view type="text" id="txt_log" x="0" posref="TM TM" posparent="window" hardtext="uiLogin" fontsize="10" y="-200" color="255 255 255 255" /> <view type="text" id="txt_log" x="0" posref="TM TM" posparent="window" hardtext="uiLogin" fontsize="10" y="-200" color="255 255 255 255" />
<view type="text" id="txt_pas" posparent="txt_log" posref="TM TM" hardtext="uiPassword" fontsize="10" y="-48" color="255 255 255 255" /> <view type="text" id="txt_pas" posparent="txt_log" posref="TM TM" hardtext="uiPassword" fontsize="10" y="-48" color="255 255 255 255" />
<instance template="edit_box_log" id="eb_login" posparent="txt_log" posref="BM TM" w="240" h="24" fontsize="12" x="0" y="-4" <instance template="edit_box_log" id="eb_login" posparent="txt_log" posref="BM TM" w="240" h="26" fontsize="12" x="0" y="-4"
text_ref="BM BM" text_y="-2" text_ref="BM BM" text_y="0"
reset_focus_on_hide="false" max_historic="0" reset_focus_on_hide="false" max_historic="0"
onenter="set_keyboard_focus" params="target=ui:login:checkpass:content:submit_gr:eb_password:eb|select_all=false" onenter="set_keyboard_focus" params="target=ui:login:checkpass:content:submit_gr:eb_password:eb|select_all=false"
prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="12" color="135 243 28 255" /> prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="12" color="135 243 28 255" />
<instance template="edit_box_log" id="eb_password" posparent="txt_pas" posref="BM TM" w="240" h="24" fontsize="14" x="0" y="-4" <instance template="edit_box_log" id="eb_password" posparent="txt_pas" posref="BM TM" w="240" h="26" fontsize="12" x="0" y="-4"
text_ref="BM BM" text_y="-2" text_ref="BM BM" text_y="0"
reset_focus_on_hide="false" max_historic="0" entry_type="password" reset_focus_on_hide="false" max_historic="0" entry_type="password"
onenter="on_login" params="" onenter="on_login" params=""
prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="20" color="135 243 28 255" /> prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="20" color="135 243 28 255" />
@ -113,11 +113,11 @@
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
<ctrl style="log_button" id="but_exit" posparent="windows" posref="BR BR" y="6" onclick_l="login_quit" hardtext="uiExitLogin" /> <ctrl style="log_button" id="but_exit" posparent="windows" posref="BR BR" y="6" onclick_l="login_quit" hardtext="uiExitLogin" />
<!-- Textes --> <!-- Textes -->
<view type="text" id="title_res" posparent="res_win" posref="TL BL" y="0" color="255 255 255 255" fontsize="10" shadow="true" hardtext="uiLOGResolution" /> <view type="text" id="title_res" posparent="res_win" posref="TL BL" y="2" color="255 255 255 255" fontsize="10" shadow="true" hardtext="uiLOGResolution" />
<view type="text" id="title_lod" posparent="lod_win" posref="TL BL" y="0" color="255 255 255 255" fontsize="10" shadow="true" hardtext="uiLOGLod" /> <view type="text" id="title_lod" posparent="lod_win" posref="TL BL" y="2" color="255 255 255 255" fontsize="10" shadow="true" hardtext="uiLOGLod" />
<view type="text" id="res_value" posparent="res_win" posref="MM MM" y="-2" color="135 243 28 255" fontsize="10" shadow="true" hardtext="uiResValue" /> <view type="text" id="res_value" posparent="res_win" posref="MM MM" y="0" color="135 243 28 255" fontsize="10" shadow="true" hardtext="uiResValue" />
<view type="text" id="lod_value" posparent="lod_win" posref="MM MM" y="-2" color="135 243 28 255" fontsize="10" shadow="true" hardtext="uiLodValue" /> <view type="text" id="lod_value" posparent="lod_win" posref="MM MM" y="0" color="135 243 28 255" fontsize="10" shadow="true" hardtext="uiLodValue" />
<!-- Boutons Res --> <!-- Boutons Res -->
@ -187,7 +187,7 @@
<view type="bitmap" id="kami" posparent="window" posref="TR TR" x="-50" y="-24" texture="log_kami.tga" global_color="false" render_layer="-1" /> <view type="bitmap" id="kami" posparent="window" posref="TR TR" x="-50" y="-24" texture="log_kami.tga" global_color="false" render_layer="-1" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
<ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-20" onclick_l="login_quit" hardtext="uiExitLogin" /> <ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-18" onclick_l="login_quit" hardtext="uiExitLogin" />
<!-- SERVER SELECTION --> <!-- SERVER SELECTION -->
<instance template="server_box" id="server_win" posparent="window" posref="ML ML" w="612" h="338" x="8" y="0" /> <instance template="server_box" id="server_win" posparent="window" posref="ML ML" w="612" h="338" x="8" y="0" />
@ -291,13 +291,13 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
<ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-20" onclick_l="login_quit" hardtext="uiExitLogin" /> <ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-18" onclick_l="login_quit" hardtext="uiExitLogin" />
<!-- Window --> <!-- Window -->
<instance template="server_box" id="check_win" posparent="window" posref="MM MM" w="600" h="128" x="0" y="0" /> <instance template="server_box" id="check_win" posparent="window" posref="MM MM" w="600" h="128" x="0" y="0" />
<!-- Textes --> <!-- Texts -->
<view type="text" id="title" posparent="check_win" posref="TM BM" y="8" color="255 255 255 255" <view type="text" id="title" posparent="check_win" posref="TM BM" y="8" color="255 255 255 255"
fontsize="12" shadow="true" hardtext="uiOnChecking" /> fontsize="12" shadow="true" hardtext="uiOnChecking" />
@ -346,7 +346,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
<ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-20" onclick_l="login_quit" hardtext="uiExitLogin" /> <ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-18" onclick_l="login_quit" hardtext="uiExitLogin" />
<!-- Window --> <!-- Window -->
<instance template="server_box" id="global_win" posparent="bl" posref="TM TM" w="400" h="22" x="-14" y="-240" /> <instance template="server_box" id="global_win" posparent="bl" posref="TM TM" w="400" h="22" x="-14" y="-240" />
@ -354,19 +354,19 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<instance template="server_box" id="opt_win" posparent="nonopt_win" posref="BM TM" w="400" h="206" y="-30" /> <instance template="server_box" id="opt_win" posparent="nonopt_win" posref="BM TM" w="400" h="206" y="-30" />
<!-- Textes --> <!-- Textes -->
<view type="text" id="title" posparent="global_win" posref="TM BM" y="24" color="255 255 255 255" <view type="text" id="title" posparent="global_win" posref="TM BM" y="2" color="255 255 255 255"
fontsize="12" shadow="true" hardtext="uiOnPatchDetail" /> fontsize="12" shadow="true" hardtext="uiOnPatchDetail" />
<view type="text" id="opt_txt" posparent="opt_win" posref="TL BL" y="1" color="255 255 255 255" <view type="text" id="opt_txt" posparent="opt_win" posref="TL BL" y="1" color="255 255 255 255"
fontsize="10" shadow="true" hardtext="uiOnPatchOpt" /> fontsize="10" shadow="true" hardtext="uiOnPatchOpt" />
<group id="global_patch" w="382" h="22" posparent="global_win" posref="MM MM" > <group id="global_patch" w="382" h="22" posparent="global_win" posref="MM MM" >
<view type="text" id="name" posref="BL BL" fontsize="12" x="2" y="0" color="135 243 28 255" shadow="true" hardtext="uiTotalPatch" /> <view type="text" id="name" posref="ML ML" fontsize="12" x="2" y="0" color="135 243 28 255" shadow="true" hardtext="uiTotalPatch" />
<view type="text" id="size" posref="BR BR" fontsize="12" x="-8" y="0" color="135 243 28 255" shadow="true" hardtext="...Kbs" /> <view type="text" id="size" posref="MR MR" fontsize="12" x="-8" y="0" color="135 243 28 255" shadow="true" hardtext="...Kbs" />
</group> </group>
<group id="nonopt_patch" w="382" h="22" posparent="nonopt_win" posref="MM MM" > <group id="nonopt_patch" w="382" h="22" posparent="nonopt_win" posref="MM MM" >
<view type="text" id="name" posref="BL BL" fontsize="12" x="2" y="0" color="135 243 28 255" shadow="true" hardtext="uiRequiredFiles" /> <view type="text" id="name" posref="ML ML" fontsize="12" x="2" y="0" color="135 243 28 255" shadow="true" hardtext="uiRequiredFiles" />
<view type="text" id="size" posref="BR BR" fontsize="12" x="-8" y="0" color="135 243 28 255" shadow="true" hardtext="...Kbs" /> <view type="text" id="size" posref="MR MR" fontsize="12" x="-8" y="0" color="135 243 28 255" shadow="true" hardtext="...Kbs" />
</group> </group>
<!-- Categories --> <!-- Categories -->
@ -403,7 +403,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
<ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-20" onclick_l="login_quit" hardtext="uiExitLogin" /> <ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-18" onclick_l="login_quit" hardtext="uiExitLogin" />
<!-- patch --> <!-- patch -->
@ -412,12 +412,12 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<link expr="eq(@UI:VARIABLES:SCREEN,4)" target="global_win:active,patch_win:active"/> <link expr="eq(@UI:VARIABLES:SCREEN,4)" target="global_win:active,patch_win:active"/>
<group id="global_patch" w="582" h="22" posparent="global_win" posref="MM MM" > <group id="global_patch" w="582" h="22" posparent="global_win" posref="MM MM" >
<view type="text" id="name" posref="BL BL" fontsize="12" x="2" y="0" color="135 243 28 255" shadow="true" hardtext="TOTAL PATCH" /> <view type="text" id="name" posref="ML ML" fontsize="12" x="2" y="0" color="135 243 28 255" shadow="true" hardtext="uiTotalPatch" />
<view type="text" id="size" posref="BR BR" fontsize="12" x="-8" y="0" color="135 243 28 255" shadow="true" hardtext=".../...Kbs" /> <view type="text" id="size" posref="MR MR" fontsize="12" x="-8" y="0" color="135 243 28 255" shadow="true" hardtext=".../...Kbs" />
</group> </group>
<link expr="eq(@UI:VARIABLES:SCREEN,4)" target="global_patch:active"/> <link expr="eq(@UI:VARIABLES:SCREEN,4)" target="global_patch:active"/>
<view type="text" id="progress" posref="TL TL" posparent="patch_win" fontsize="12" x="8" y="-8" color="135 243 28 255" shadow="true"/> <view type="text" id="progress" posref="TL TL" posparent="patch_win" fontsize="12" x="8" y="-4" color="135 243 28 255" shadow="true"/>
<view type="text" id="state" posparent="progress" posref="TR TL" w="520" x="4" y="0" line_maxw="520" color="135 243 28 255" <view type="text" id="state" posparent="progress" posref="TR TL" w="520" x="4" y="0" line_maxw="520" color="135 243 28 255"
fontsize="12" shadow="true" multi_line="true" multi_line_space="0" case_mode="%case_normal"/> fontsize="12" shadow="true" multi_line="true" multi_line_space="0" case_mode="%case_normal"/>
<link expr="eq(@UI:VARIABLES:SCREEN,4)" target="progress:active,state:active"/> <link expr="eq(@UI:VARIABLES:SCREEN,4)" target="progress:active,state:active"/>
@ -436,7 +436,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<!-- Release Note --> <!-- Release Note -->
<instance template="server_box" id="release_win" posparent="bl" posref="TM TM" w="600" h="324" x="-14" y="-282" /> <instance template="server_box" id="release_win" posparent="bl" posref="TM TM" w="600" h="324" x="-14" y="-282" />
<view type="text" id="release_title" posref="TM BM" posparent="release_win" fontsize="10" y="-2" color="255 255 255 255" <view type="text" id="release_title" posref="TM BM" posparent="release_win" fontsize="10" y="0" color="255 255 255 255"
hardtext="uiOnRelease" shadow="true"/> hardtext="uiOnRelease" shadow="true"/>
<!-- <!--
@ -511,7 +511,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
<ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-20" onclick_l="login_quit" hardtext="uiExitLogin" /> <ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-18" onclick_l="login_quit" hardtext="uiExitLogin" />
<!-- WINDOW --> <!-- WINDOW -->
<instance template="server_box" id="eula_win" posparent="window" posref="MM MM" w="612" h="338" x="-24" y="0" /> <instance template="server_box" id="eula_win" posparent="window" posref="MM MM" w="612" h="338" x="-24" y="0" />
@ -556,7 +556,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
<ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-20" onclick_l="login_quit" hardtext="uiExitLogin" /> <ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-18" onclick_l="login_quit" hardtext="uiExitLogin" />
<!-- Window --> <!-- Window -->
@ -626,7 +626,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
</group> </group>
</template> </template>
<!-- Page that show the result of data scanning --> <!-- Page that allows to create an account -->
<group id="create_account" posref="MM MM" w="1024" h="768" active="false" > <group id="create_account" posref="MM MM" w="1024" h="768" active="false" >
<group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" > <group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" >
@ -647,8 +647,8 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<!-- login --> <!-- login -->
<view type="text" id="txt_log" posref="TL TL" hardtext="uiUsername" fontsize="12" x="0" y="-60" color="255 255 255 255" /> <view type="text" id="txt_log" posref="TL TL" hardtext="uiUsername" fontsize="12" x="0" y="-60" color="255 255 255 255" />
<instance template="edit_box_log" id="eb_login" posparent="txt_log" posref="BL BL" w="260" h="24" fontsize="12" x="190" y="0" <instance template="edit_box_log" id="eb_login" posparent="txt_log" posref="BL BL" w="250" h="26" fontsize="12" x="200" y="0"
text_ref="BM BM" text_y="-2" text_ref="BM BM" text_y="0"
on_focus="create_account_rules" on_focus_params="rules_login" reset_focus_on_hide="false" max_historic="0" on_focus="create_account_rules" on_focus_params="rules_login" reset_focus_on_hide="false" max_historic="0"
onenter="set_keyboard_focus" params="target=ui:login:create_account:content:submit_gr:eb_password:eb|select_all=false" onenter="set_keyboard_focus" params="target=ui:login:create_account:content:submit_gr:eb_password:eb|select_all=false"
prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="12" color="135 243 28 255" /> prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="12" color="135 243 28 255" />
@ -656,7 +656,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<!-- password --> <!-- password -->
<view type="text" id="txt_pas" posparent="txt_log" posref="BL TL" hardtext="uiPassword" fontsize="12" x="0" y="-30" color="255 255 255 255" /> <view type="text" id="txt_pas" posparent="txt_log" posref="BL TL" hardtext="uiPassword" fontsize="12" x="0" y="-30" color="255 255 255 255" />
<instance template="edit_box_log" id="eb_password" posparent="txt_pas" posref="BL BL" w="260" h="24" fontsize="16" x="190" y="0" <instance template="edit_box_log" id="eb_password" posparent="txt_pas" posref="BL BL" w="250" h="26" fontsize="12" x="200" y="0"
text_ref="BM BM" text_y="-2" text_ref="BM BM" text_y="-2"
on_focus="create_account_rules" on_focus_params="rules_password" reset_focus_on_hide="false" max_historic="0" entry_type="password" on_focus="create_account_rules" on_focus_params="rules_password" reset_focus_on_hide="false" max_historic="0" entry_type="password"
onenter="set_keyboard_focus" params="target=ui:login:create_account:content:submit_gr:eb_confirm_password:eb|select_all=false" onenter="set_keyboard_focus" params="target=ui:login:create_account:content:submit_gr:eb_confirm_password:eb|select_all=false"
@ -665,7 +665,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<!-- confirm password --> <!-- confirm password -->
<view type="text" id="txt_confirm_pas" posparent="txt_pas" posref="BL TL" hardtext="uiConfirmPassword" fontsize="12" x="0" y="-30" color="255 255 255 255" /> <view type="text" id="txt_confirm_pas" posparent="txt_pas" posref="BL TL" hardtext="uiConfirmPassword" fontsize="12" x="0" y="-30" color="255 255 255 255" />
<instance template="edit_box_log" id="eb_confirm_password" posparent="txt_confirm_pas" posref="BL BL" w="260" h="24" fontsize="16" x="190" y="0" <instance template="edit_box_log" id="eb_confirm_password" posparent="txt_confirm_pas" posref="BL BL" w="250" h="26" fontsize="12" x="200" y="0"
text_ref="BM BM" text_y="-2" text_ref="BM BM" text_y="-2"
on_focus="create_account_rules" on_focus_params="rules_password_conf" reset_focus_on_hide="false" max_historic="0" entry_type="password" on_focus="create_account_rules" on_focus_params="rules_password_conf" reset_focus_on_hide="false" max_historic="0" entry_type="password"
onenter="set_keyboard_focus" params="target=ui:login:create_account:content:submit_gr:eb_email:eb|select_all=false" onenter="set_keyboard_focus" params="target=ui:login:create_account:content:submit_gr:eb_email:eb|select_all=false"
@ -674,8 +674,8 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<!-- email --> <!-- email -->
<view type="text" id="txt_email" posparent="txt_confirm_pas" posref="BL TL" hardtext="uiEmail" fontsize="12" x="0" y="-30" color="255 255 255 255" /> <view type="text" id="txt_email" posparent="txt_confirm_pas" posref="BL TL" hardtext="uiEmail" fontsize="12" x="0" y="-30" color="255 255 255 255" />
<instance template="edit_box_log" id="eb_email" posparent="txt_email" posref="BL BL" w="260" h="24" fontsize="12" x="190" y="0" <instance template="edit_box_log" id="eb_email" posparent="txt_email" posref="BL BL" w="250" h="26" fontsize="12" x="200" y="0"
text_ref="BM BM" text_y="-2" text_ref="BM BM" text_y="0"
on_focus="create_account_rules" on_focus_params="rules_email" reset_focus_on_hide="false" max_historic="0" on_focus="create_account_rules" on_focus_params="rules_email" reset_focus_on_hide="false" max_historic="0"
onenter="" params="" onenter="" params=""
prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="254" color="135 243 28 255" /> prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="254" color="135 243 28 255" />

View file

@ -63,7 +63,7 @@
</template> </template>
<template name="edit_box_log" posref="TL TL" text_x="0" text_y="-1" text_ref="BL BL" multi_line="false" x="0" y="0" w="0" h="0" <template name="edit_box_log" posref="TL TL" text_x="0" text_y="0" text_ref="BL BL" multi_line="false" x="0" y="0" w="0" h="0"
id="eb" posparent="parent" onenter="chat_box_entry" params="" reset_focus_on_hide="true" on_focus="" on_focus_params="" id="eb" posparent="parent" onenter="chat_box_entry" params="" reset_focus_on_hide="true" on_focus="" on_focus_params=""
enter_loose_focus="true" prompt="&gt;" enter_loose_focus="true" prompt="&gt;"
enter_recover_focus="true" enter_recover_focus="true"
@ -100,7 +100,7 @@
</template> </template>
<template name="edit_box_widget_multiline" posref="TL TL" text_x="0" text_y="-1" text_ref="BL BL" child_resize_h="true" multi_line="true" x="0" y="0" w="0" h="0" <template name="edit_box_widget_multiline" posref="TL TL" text_x="0" text_y="0" text_ref="BL BL" child_resize_h="true" multi_line="true" x="0" y="0" w="0" h="0"
sizeref="" id="eb" posparent="parent" onenter="chat_box_entry" params="" reset_focus_on_hide="true" sizeref="" id="eb" posparent="parent" onenter="chat_box_entry" params="" reset_focus_on_hide="true"
enter_loose_focus="true" prompt="&gt;" enter_loose_focus="true" prompt="&gt;"
enter_recover_focus="true" enter_recover_focus="true"
@ -112,16 +112,19 @@
keep="true" keep="true"
max_historic="40" max_historic="40"
fontsize="10" fontsize="10"
fontweight=""
fontstyle=""
backup_father_container_pos="false" backup_father_container_pos="false"
want_return="false" want_return="false"
color="255 255 255 255" color="255 255 255 255"
sizeref_eb="w" sizeref_eb="w"
render_layer="0" render_layer="0"
multi_min_line="0"
> >
<group id="#id" posref="#posref" x="#x" y="#y" posparent="#posparent" child_resize_h="#child_resize_h" sizeref="#sizeref" w="#w" h="#h" render_layer="#render_layer"> <group id="#id" posref="#posref" x="#x" y="#y" posparent="#posparent" child_resize_h="#child_resize_h" sizeref="#sizeref" w="#w" h="#h" render_layer="#render_layer">
<group type="edit_box" sizeref="#sizeref_eb" w="-16" id="eb" posref="TL TL" x="8" y="-8" child_resize_h="#child_resize_h" onenter="#onenter" params="#params" onchange="#onchange" onchange_params="#onchange_params" max_num_chars="#max_num_chars" prompt="#prompt" enter_loose_focus="#enter_loose_focus" enter_recover_focus="#enter_recover_focus" entry_type="#entry_type" reset_focus_on_hide="#reset_focus_on_hide" menu_r="#menu_r" max_historic="#max_historic" want_return="#want_return" backup_father_container_pos="#backup_father_container_pos" render_layer="#render_layer"> <group type="edit_box" sizeref="#sizeref_eb" w="-16" id="eb" posref="TL TL" x="8" y="-8" child_resize_h="#child_resize_h" onenter="#onenter" params="#params" onchange="#onchange" onchange_params="#onchange_params" max_num_chars="#max_num_chars" prompt="#prompt" enter_loose_focus="#enter_loose_focus" enter_recover_focus="#enter_recover_focus" entry_type="#entry_type" reset_focus_on_hide="#reset_focus_on_hide" menu_r="#menu_r" max_historic="#max_historic" want_return="#want_return" backup_father_container_pos="#backup_father_container_pos" render_layer="#render_layer">
<view type="bitmap" id="bg" scale="true" sizeref="hw" h="0" w="0" texture="log_eb_m.tga" inherit_gc_alpha="false" render_layer="#render_layer"/> <view type="bitmap" id="bg" scale="true" sizeref="hw" h="0" w="0" texture="log_eb_m.tga" inherit_gc_alpha="false" render_layer="#render_layer"/>
<view id="edit_text" type="text" x="#text_x" y="#text_y" posref="#text_ref" multi_line="#multi_line" multi_line_space="0" fontsize="#fontsize" color="#color" shadow="true" hardtext="" global_color="false" render_layer="#render_layer"/> <view id="edit_text" type="text" x="#text_x" y="#text_y" posref="#text_ref" multi_line="#multi_line" multi_line_space="0" multi_min_line="#multi_min_line" fontsize="#fontsize" color="#color" fontweight="#fontweight" fontstyle="#fontstyle" shadow="true" hardtext="" global_color="false" render_layer="#render_layer"/>
</group> </group>
<!-- border around the list --> <!-- border around the list -->
@ -138,7 +141,7 @@
<!-- Alternate look for multi line input --> <!-- Alternate look for multi line input -->
<template name="edit_box_widget_multiline_2" posref="TL TL" text_x="0" text_y="-1" text_ref="BL BL" child_resize_h="true" multi_line="true" x="0" y="0" w="0" h="0" <template name="edit_box_widget_multiline_2" posref="TL TL" text_x="0" text_y="0" text_ref="BL BL" child_resize_h="true" multi_line="true" x="0" y="0" w="0" h="0"
sizeref="" id="eb" posparent="parent" onenter="chat_box_entry" params="" reset_focus_on_hide="true" sizeref="" id="eb" posparent="parent" onenter="chat_box_entry" params="" reset_focus_on_hide="true"
enter_loose_focus="true" prompt="&gt;" enter_loose_focus="true" prompt="&gt;"
enter_recover_focus="true" enter_recover_focus="true"
@ -179,7 +182,7 @@
<style style="log_button" type="text_button" button_type="push_button" <style style="log_button" type="text_button" button_type="push_button"
tx_normal="log_but" tx_pushed="log_but_over" tx_over="log_but_over" wmargin="48" tx_normal="log_but" tx_pushed="log_but_over" tx_over="log_but_over" wmargin="48"
color="255 255 255 255" col_over="255 255 255 255" col_pushed="255 255 255 255" color="255 255 255 255" col_over="255 255 255 255" col_pushed="255 255 255 255"
text_y="-3" fontsize="10" shadow="true" text_y="0" fontsize="10" shadow="true"
text_color_normal="255 255 255 160" text_color_normal="255 255 255 160"
text_color_pushed="255 255 255 255" text_color_pushed="255 255 255 255"
text_color_over="255 255 255 255" text_color_over="255 255 255 255"
@ -192,7 +195,7 @@
<style style="log_std_but" type="text_button" button_type="push_button" <style style="log_std_but" type="text_button" button_type="push_button"
tx_normal="but" tx_pushed="but" tx_over="but_over" wmargin="16" tx_normal="but" tx_pushed="but" tx_over="but_over" wmargin="16"
color="255 255 255 160" col_over="255 255 255 255" col_pushed="255 255 255 255" color="255 255 255 160" col_over="255 255 255 255" col_pushed="255 255 255 255"
text_y="-3" fontsize="10" shadow="true" text_y="-1" fontsize="10" shadow="true"
text_color_normal="135 243 28 160" text_color_normal="135 243 28 160"
text_color_pushed="135 243 28 255" text_color_pushed="135 243 28 255"
text_color_over="135 243 28 255" text_color_over="135 243 28 255"
@ -229,7 +232,7 @@
<style style="text_button_16" type="text_button" button_type="push_button" <style style="text_button_16" type="text_button" button_type="push_button"
tx_normal="w_text_button_normal" tx_pushed="w_text_button_pushed" tx_over="w_text_button_over" tx_normal="w_text_button_normal" tx_pushed="w_text_button_pushed" tx_over="w_text_button_over"
global_color_normal="true" global_color_over="true" global_color_pushed="true" global_color_normal="true" global_color_over="true" global_color_pushed="true"
text_y="-2" fontsize="10" shadow="true" case_mode="%case_upper" wmargin="8" text_y="0" fontsize="10" shadow="true" case_mode="%case_upper" wmargin="8"
text_color_normal="255 255 255 128" text_color_pushed="255 255 255 255" text_color_over="255 255 255 255" /> text_color_normal="255 255 255 128" text_color_pushed="255 255 255 255" text_color_over="255 255 255 255" />
@ -382,7 +385,7 @@
<!-- * EDIT BOX WIDGET * --> <!-- * EDIT BOX WIDGET * -->
<!-- ********************* --> <!-- ********************* -->
<template name="edit_box_widget" posref="TL TL" text_x="0" text_y="-1" text_ref="BL BL" child_resize_h="true" multi_line="false" x="0" y="0" w="0" h="0" <template name="edit_box_widget" posref="TL TL" text_x="0" text_y="0" text_ref="BL BL" child_resize_h="true" multi_line="false" x="0" y="0" w="0" h="0"
sizeref="" id="eb" posparent="parent" onenter="chat_box_entry" params="" reset_focus_on_hide="true" sizeref="" id="eb" posparent="parent" onenter="chat_box_entry" params="" reset_focus_on_hide="true"
enter_loose_focus="true" prompt="&gt;" enter_loose_focus="true" prompt="&gt;"
enter_recover_focus="true" enter_recover_focus="true"
@ -420,7 +423,7 @@
</template> </template>
<!-- alternate look for edit box --> <!-- alternate look for edit box -->
<template name="edit_box_widget_2" posref="TL TL" text_x="0" text_y="-1" text_ref="BL BL" child_resize_h="true" multi_line="false" x="0" y="0" w="0" h="0" <template name="edit_box_widget_2" posref="TL TL" text_x="0" text_y="0" text_ref="BL BL" child_resize_h="true" multi_line="false" x="0" y="0" w="0" h="0"
sizeref="" id="eb" posparent="parent" onenter="chat_box_entry" params="" reset_focus_on_hide="true" sizeref="" id="eb" posparent="parent" onenter="chat_box_entry" params="" reset_focus_on_hide="true"
enter_loose_focus="true" prompt="&gt;" enter_loose_focus="true" prompt="&gt;"
enter_recover_focus="true" enter_recover_focus="true"
@ -595,8 +598,8 @@
<template name="button_ok_cancel" id="ok_cancel" ok_text="uittOK" cancel_text="uittCancel" posparent="parent" posref="BM TM" <template name="button_ok_cancel" id="ok_cancel" ok_text="uittOK" cancel_text="uittCancel" posparent="parent" posref="BM TM"
onclick_ok="" onclick_ok_param="" onclick_cancel="" onclick_cancel_param="" x="0" y="0" keep="true" > onclick_ok="" onclick_ok_param="" onclick_cancel="" onclick_cancel_param="" x="0" y="0" keep="true" >
<group id="#id" posparent="#posparent" posref="#posref" child_resize_w="true" child_resize_h="true" x="#x" y="#y"> <group id="#id" posparent="#posparent" posref="#posref" child_resize_w="true" child_resize_h="true" x="#x" y="#y">
<ctrl style="button_ok" x="0" y="0" posref="TL TL" text_y="-2" onclick_l="#onclick_ok" params_l="#onclick_ok_param" hardtext="#ok_text" /> <ctrl style="button_ok" x="0" y="0" posref="TL TL" text_y="0" onclick_l="#onclick_ok" params_l="#onclick_ok_param" hardtext="#ok_text" />
<ctrl style="button_cancel" x="4" posparent="ok" text_y="-2" posref ="TR TL" onclick_l="#onclick_cancel" params_l="#onclick_cancel_param" hardtext="#cancel_text" /> <ctrl style="button_cancel" x="4" posparent="ok" text_y="0" posref ="TR TL" onclick_l="#onclick_cancel" params_l="#onclick_cancel_param" hardtext="#cancel_text" />
</group> </group>
</template> </template>
@ -611,7 +614,7 @@
<template name="html_text_button" id="" text="" posparent="parent" posref="TL TL" <template name="html_text_button" id="" text="" posparent="parent" posref="TL TL"
onclick="" onclick_param="" x="0" y="0" keep="true" active="true" wmin="0"> onclick="" onclick_param="" x="0" y="0" keep="true" active="true" wmin="0">
<group type="html_input_offset" y_offset="-8" id="#id" posparent="#posparent" posref="#posref" child_resize_w="true" child_resize_h="true" x="#x" y="#y" active="#active"> <group type="html_input_offset" y_offset="-8" id="#id" posparent="#posparent" posref="#posref" child_resize_w="true" child_resize_h="true" x="#x" y="#y" active="#active">
<ctrl style="log_spe_but" id="button" wmin="#wmin" x="0" y="0" posref="TL TL" text_y="-2" onclick_l="#onclick" params_l="#onclick_param" hardtext="#text" color="255 255 255 200"/> <ctrl style="log_spe_but" id="button" wmin="#wmin" x="0" y="0" posref="TL TL" text_y="0" onclick_l="#onclick" params_l="#onclick_param" hardtext="#text" color="255 255 255 200"/>
</group> </group>
</template> </template>
@ -620,7 +623,7 @@
<template name="html_text_button_look2" id="" text="" posparent="parent" posref="TL TL" <template name="html_text_button_look2" id="" text="" posparent="parent" posref="TL TL"
onclick="" onclick_param="" x="0" y="0" keep="true" > onclick="" onclick_param="" x="0" y="0" keep="true" >
<group type="html_input_offset" y_offset="-8" id="#id" posparent="#posparent" posref="#posref" child_resize_w="true" child_resize_h="true" x="#x" y="#y"> <group type="html_input_offset" y_offset="-8" id="#id" posparent="#posparent" posref="#posref" child_resize_w="true" child_resize_h="true" x="#x" y="#y">
<ctrl style="log_button" id="button" wmin="0" x="0" y="0" posref="TL TL" text_y="-2" onclick_l="#onclick" params_l="#onclick_param" hardtext="#text" color="255 255 255 200"/> <ctrl style="log_button" id="button" wmin="0" x="0" y="0" posref="TL TL" text_y="0" onclick_l="#onclick" params_l="#onclick_param" hardtext="#text" color="255 255 255 200"/>
</group> </group>
</template> </template>
@ -629,7 +632,7 @@
<template name="html_text_button_look3" id="" text="" posparent="parent" posref="TL TL" <template name="html_text_button_look3" id="" text="" posparent="parent" posref="TL TL"
onclick="" onclick_param="" x="0" y="0" keep="true" > onclick="" onclick_param="" x="0" y="0" keep="true" >
<group type="html_input_offset" y_offset="-8" id="#id" posparent="#posparent" posref="#posref" child_resize_w="true" child_resize_h="true" x="#x" y="#y"> <group type="html_input_offset" y_offset="-8" id="#id" posparent="#posparent" posref="#posref" child_resize_w="true" child_resize_h="true" x="#x" y="#y">
<ctrl style="server_note" id="button" wmin="0" x="0" y="0" posref="TL TL" text_y="-2" onclick_l="#onclick" params_l="#onclick_param" hardtext="#text" color="255 255 255 200"/> <ctrl style="server_note" id="button" wmin="0" x="0" y="0" posref="TL TL" text_y="0" onclick_l="#onclick" params_l="#onclick_param" hardtext="#text" color="255 255 255 200"/>
</group> </group>
</template> </template>

View file

@ -403,11 +403,11 @@
onclick_l="new_macro_new_cmd" /> onclick_l="new_macro_new_cmd" />
<group id="cmds" type="list" posref="BR TR" posparent="sep" x="0" y="-22" over="true" > <group id="cmds" x="0" y="-22" over="true" sizeref="w" posref="TL TL" posparent="sep" child_resize_h="true" child_resize_hmargin="4">
<!-- <group id="macros" x="10" y="-4" sizeref="w" posref="TL TL" child_resize_h="true" max_h="300" >
<instance template="macro_command" id="cmd1" posref="TL TL" /> <group id="list" type="list" x="0" y="0" posref="TL TL" />
<instance template="macro_command" id="cmd2" posparent="cmd1" posref="BL TL" /> </group>
--> <ctrl style="skin_scroll" id="sv" posref="TL TL" y="-4" target="macros" />
</group> </group>
<instance template="button_ok_cancel" posparent="cmds" posref="BR TR" x="0" y="-4" <instance template="button_ok_cancel" posparent="cmds" posref="BR TR" x="0" y="-4"

View file

@ -192,8 +192,8 @@
<ctrl type="button" id="center" button_type="push_button" posparent="zoom_out" posref="TR TL" y="0" x="4" tx_normal="w_center_map.tga" tx_pushed="W_button_16_over.tga" tx_over="W_button_16_over.tga" <ctrl type="button" id="center" button_type="push_button" posparent="zoom_out" posref="TR TL" y="0" x="4" tx_normal="w_center_map.tga" tx_pushed="W_button_16_over.tga" tx_over="W_button_16_over.tga"
onclick_l="map_center" params_l="map=ui:interface:map:content:map_content:actual_map" tooltip="uittCenter" /> onclick_l="map_center" params_l="map=ui:interface:map:content:map_content:actual_map" tooltip="uittCenter" />
<view type="text" id="time" x="12" y="-1" posparent="center" posref="MR ML" color="255 255 255 255" fontsize="12" shadow="true" hardtext="" /> <view type="text" id="time" x="12" y="0" posparent="center" posref="MR ML" color="255 255 255 255" fontsize="12" shadow="true" hardtext="" />
<view type="text" id="weather" x="8" y="-18" posref="TL TL" color="255 255 255 255" fontsize="12" shadow="true" hardtext="" /> <view type="text" id="weather" x="8" y="-16" posref="TL TL" color="255 255 255 255" fontsize="12" shadow="true" hardtext="" />
<instance template="box_widget" id="back" posref="TL TL" sizeref="wh" w="-2" h="-32" x="1" y="-32" render_layer="0" /> <instance template="box_widget" id="back" posref="TL TL" sizeref="wh" w="-2" h="-32" x="1" y="-32" render_layer="0" />
@ -383,7 +383,7 @@
<ctrl style="button_ok" id="respawn" posparent="center" x="16" posref="TR TL" onclick_l="respawn_map_valid" params_l="map=ui:interface:respawn_map:content:map_content:actual_map" hardtext="uiRespawn"/> <ctrl style="button_ok" id="respawn" posparent="center" x="16" posref="TR TL" onclick_l="respawn_map_valid" params_l="map=ui:interface:respawn_map:content:map_content:actual_map" hardtext="uiRespawn"/>
<group id="timer" posparent="respawn" posref="TR TL" x="8" y="-5" child_resize_h="true" child_resize_w="true"> <group id="timer" posparent="respawn" posref="TR TL" x="8" y="-2" child_resize_h="true" child_resize_w="true">
<view type="bar" id="b" ultra_mini="true" posref="TL TL" value="%player_hp_percent" range="%player_percent_max" color="255 255 255 255" color_negative="255 255 255 255" /> <view type="bar" id="b" ultra_mini="true" posref="TL TL" value="%player_hp_percent" range="%player_percent_max" color="255 255 255 255" color_negative="255 255 255 255" />
<view type="text" id="t" posparent="b" posref="TR TL" x="4" color="255 255 255 255" fontsize="8" shadow="true" hardtext="" /> <view type="text" id="t" posparent="b" posref="TR TL" x="4" color="255 255 255 255" fontsize="8" shadow="true" hardtext="" />
</group> </group>

View file

@ -1294,7 +1294,7 @@
max_chars_size="252" menu_r="" max_historic="" entry_type="alpha"> max_chars_size="252" menu_r="" max_historic="" entry_type="alpha">
<instance template="job_border" id="bord" posref="MM MM" /> <instance template="job_border" id="bord" posref="MM MM" />
<view type="text" id="edit_text" x="0" y="-2" posref="MM MM" multi_line="false" render_layer="4" <view type="text" id="edit_text" x="0" y="0" posref="MM MM" multi_line="false" render_layer="4"
fontsize="20" shadow="true" global_color="false" case="%case_first_string_letter_up" /> fontsize="20" shadow="true" global_color="false" case="%case_first_string_letter_up" />
</group> </group>
@ -1740,7 +1740,7 @@
</proc> </proc>
<group type="modal" id="appear_infos1" x="0" y="0" w="824" h="768" posref="TR TR" render_layer="1" <group type="modal" id="appear_infos1" x="74" y="0" w="824" h="768" posref="MM MM" render_layer="1"
mouse_pos="false" escapable="false" exit_click_out="true" savable="false" mouse_pos="false" escapable="false" exit_click_out="true" savable="false"
display="false" display="false"
> >
@ -1765,7 +1765,7 @@
onclick_l="proc" params_l="proc_charsel_infos"/> onclick_l="proc" params_l="proc_charsel_infos"/>
</group> </group>
<group type="modal" id="appear_infos2" x="-74" y="-68" w="698" h="652" posref="TR TR" render_layer="1" <group type="modal" id="appear_infos2" x="-74" y="-68" w="698" h="652" posref="MM MM" render_layer="1"
mouse_pos="false" escapable="false" exit_click_out="true" mouse_pos="false" escapable="false" exit_click_out="true"
display="false" display="false"
> >
@ -1778,7 +1778,7 @@
onclick_l="proc" params_l="proc_charsel_infos"/> onclick_l="proc" params_l="proc_charsel_infos"/>
</group> </group>
<group type="modal" id="appear_infos3" x="-74" y="-68" w="698" h="652" posref="TR TR" render_layer="1" <group type="modal" id="appear_infos3" x="-74" y="-68" w="698" h="652" posref="MM MM" render_layer="1"
mouse_pos="false" escapable="false" exit_click_out="true" mouse_pos="false" escapable="false" exit_click_out="true"
display="false" display="false"
> >
@ -1791,7 +1791,7 @@
onclick_l="proc" params_l="proc_charsel_infos"/> onclick_l="proc" params_l="proc_charsel_infos"/>
</group> </group>
<group type="modal" id="appear_infos4" x="-74" y="-68" w="698" h="652" posref="TR TR" render_layer="1" <group type="modal" id="appear_infos4" x="-74" y="-68" w="698" h="652" posref="MM MM" render_layer="1"
mouse_pos="false" escapable="false" exit_click_out="true" mouse_pos="false" escapable="false" exit_click_out="true"
display="false" display="false"
> >
@ -1804,7 +1804,7 @@
onclick_l="proc" params_l="proc_charsel_infos"/> onclick_l="proc" params_l="proc_charsel_infos"/>
</group> </group>
<group type="modal" id="appear_infos5" x="-74" y="-68" w="698" h="652" posref="TR TR" render_layer="1" <group type="modal" id="appear_infos5" x="-74" y="-68" w="698" h="652" posref="MM MM" render_layer="1"
mouse_pos="false" escapable="false" exit_click_out="true" mouse_pos="false" escapable="false" exit_click_out="true"
display="false" display="false"
> >
@ -2049,19 +2049,19 @@
<instance template="outgame_black_back" id="back" /> <instance template="outgame_black_back" id="back" />
</group> </group>
<ctrl style="opt_button" id="fyros_but" posref="TL TL" x="60" y="-88" hardtext="uiCP_Specie_Fyros" <ctrl style="opt_button" id="fyros_but" posref="TL TL" x="60" y="-88" text_y="15" hardtext="uiCP_Specie_Fyros"
onover="play_sound" params_over="name=specie_but_over" onover="play_sound" params_over="name=specie_but_over"
onclick_l="proc" params_l="proc_select_specie|0"/> onclick_l="proc" params_l="proc_select_specie|0"/>
<ctrl style="opt_button" id="matis_but" posparent="fyros_but" posref="BL TL" hardtext="uiCP_Specie_Matis" <ctrl style="opt_button" id="matis_but" posparent="fyros_but" posref="BL TL" text_y="15" hardtext="uiCP_Specie_Matis"
onover="play_sound" params_over="name=specie_but_over" onover="play_sound" params_over="name=specie_but_over"
onclick_l="proc" params_l="proc_select_specie|1"/> onclick_l="proc" params_l="proc_select_specie|1"/>
<ctrl style="opt_button" id="tryker_but" posparent="matis_but" posref="BL TL" hardtext="uiCP_Specie_Tryker" <ctrl style="opt_button" id="tryker_but" posparent="matis_but" posref="BL TL" text_y="15" hardtext="uiCP_Specie_Tryker"
onover="play_sound" params_over="name=specie_but_over" onover="play_sound" params_over="name=specie_but_over"
onclick_l="proc" params_l="proc_select_specie|2"/> onclick_l="proc" params_l="proc_select_specie|2"/>
<ctrl style="opt_button" id="zorai_but" posparent="tryker_but" posref="BL TL" hardtext="uiCP_Specie_Zorai" <ctrl style="opt_button" id="zorai_but" posparent="tryker_but" posref="BL TL" text_y="15" hardtext="uiCP_Specie_Zorai"
onover="play_sound" params_over="name=specie_but_over" onover="play_sound" params_over="name=specie_but_over"
onclick_l="proc" params_l="proc_select_specie|3"/> onclick_l="proc" params_l="proc_select_specie|3"/>
@ -2091,11 +2091,11 @@
<instance template="outgame_black_back" id="back" /> <instance template="outgame_black_back" id="back" />
</group> </group>
<ctrl style="opt_button" id="male_but" posref="TL TL" x="20" y="-88" hardtext="uiCP_Sex_Male" <ctrl style="opt_button" id="male_but" posref="TL TL" x="20" y="-88" text_y="15" hardtext="uiCP_Sex_Male"
onover="play_sound" params_over="name=specie_but_over" onover="play_sound" params_over="name=specie_but_over"
onclick_l="proc" params_l="proc_select_sex|0"/> onclick_l="proc" params_l="proc_select_sex|0"/>
<ctrl style="opt_button" id="female_but" posparent="male_but" posref="BL TL" hardtext="uiCP_Sex_Female" <ctrl style="opt_button" id="female_but" posparent="male_but" posref="BL TL" text_y="15" hardtext="uiCP_Sex_Female"
onover="play_sound" params_over="name=specie_but_over" onover="play_sound" params_over="name=specie_but_over"
onclick_l="proc" params_l="proc_select_sex|1"/> onclick_l="proc" params_l="proc_select_sex|1"/>
@ -2117,7 +2117,7 @@
<!-- Height --> <!-- Height -->
<instance template="slider" id="bk1" posref="TL TL" x="20" y="-88" w="180" h="48" /> <instance template="slider" id="bk1" posref="TL TL" x="20" y="-88" w="180" h="48" />
<view type="text" id="title1" posparent="bk1" posref="TL TL" x="16" y="2" hardtext="uiHeight" color="255 255 255 255" fontsize="10"/> <view type="text" id="title1" posparent="bk1" posref="TL TL" x="16" y="4" hardtext="uiHeight" color="255 255 255 255" fontsize="10"/>
<ctrl type="scroll" id="scroll1" posparent="bk1" posref="MM MM" x="0" y="0" w="140" h="32" <ctrl type="scroll" id="scroll1" posparent="bk1" posref="MM MM" x="0" y="0" w="140" h="32"
vertical="false" align="L" min="0" max="14" value="UI:TEMP:CHAR3D:VPC:CHARACTERHEIGHT" tracksize="40" vertical="false" align="L" min="0" max="14" value="UI:TEMP:CHAR3D:VPC:CHARACTERHEIGHT" tracksize="40"
onscrollend="proc" params="CP_Camera_Face" onscrollend="proc" params="CP_Camera_Face"
@ -2125,7 +2125,7 @@
<!-- Torso --> <!-- Torso -->
<instance template="slider" id="bk2" posparent="bk1" posref="BL TL" w="180" h="48" /> <instance template="slider" id="bk2" posparent="bk1" posref="BL TL" w="180" h="48" />
<view type="text" id="title2" posparent="bk2" posref="TL TL" x="16" y="2" hardtext="uiTorso" color="255 255 255 255" fontsize="10"/> <view type="text" id="title2" posparent="bk2" posref="TL TL" x="16" y="4" hardtext="uiTorso" color="255 255 255 255" fontsize="10"/>
<ctrl type="scroll" id="scroll2" posparent="bk2" posref="MM MM" x="0" y="0" w="140" h="32" <ctrl type="scroll" id="scroll2" posparent="bk2" posref="MM MM" x="0" y="0" w="140" h="32"
vertical="false" align="L" min="0" max="14" value="UI:TEMP:CHAR3D:VPC:TORSOWIDTH" tracksize="40" vertical="false" align="L" min="0" max="14" value="UI:TEMP:CHAR3D:VPC:TORSOWIDTH" tracksize="40"
onscroll="" params="" onscroll="" params=""
@ -2133,7 +2133,7 @@
<!-- Arms --> <!-- Arms -->
<instance template="slider" id="bk3" posparent="bk2" posref="BL TL" w="180" h="48" /> <instance template="slider" id="bk3" posparent="bk2" posref="BL TL" w="180" h="48" />
<view type="text" id="title3" posparent="bk3" posref="TL TL" x="16" y="2" hardtext="uiArms" color="255 255 255 255" fontsize="10"/> <view type="text" id="title3" posparent="bk3" posref="TL TL" x="16" y="4" hardtext="uiArms" color="255 255 255 255" fontsize="10"/>
<ctrl type="scroll" id="scroll3" posparent="bk3" posref="MM MM" x="0" y="0" w="140" h="32" <ctrl type="scroll" id="scroll3" posparent="bk3" posref="MM MM" x="0" y="0" w="140" h="32"
vertical="false" align="L" min="0" max="14" value="UI:TEMP:CHAR3D:VPC:ARMSWIDTH" tracksize="40" vertical="false" align="L" min="0" max="14" value="UI:TEMP:CHAR3D:VPC:ARMSWIDTH" tracksize="40"
onscroll="" params="" onscroll="" params=""
@ -2141,7 +2141,7 @@
<!-- Legs --> <!-- Legs -->
<instance template="slider" id="bk4" posparent="bk3" posref="BL TL" w="180" h="48" /> <instance template="slider" id="bk4" posparent="bk3" posref="BL TL" w="180" h="48" />
<view type="text" id="title4" posparent="bk4" posref="TL TL" x="16" y="2" hardtext="uiLegs" color="255 255 255 255" fontsize="10"/> <view type="text" id="title4" posparent="bk4" posref="TL TL" x="16" y="4" hardtext="uiLegs" color="255 255 255 255" fontsize="10"/>
<ctrl type="scroll" id="scroll4" posparent="bk4" posref="MM MM" x="0" y="0" w="140" h="32" <ctrl type="scroll" id="scroll4" posparent="bk4" posref="MM MM" x="0" y="0" w="140" h="32"
vertical="false" align="L" min="0" max="14" value="UI:TEMP:CHAR3D:VPC:LEGSWIDTH" tracksize="40" vertical="false" align="L" min="0" max="14" value="UI:TEMP:CHAR3D:VPC:LEGSWIDTH" tracksize="40"
onscroll="" params="" onscroll="" params=""
@ -2150,7 +2150,7 @@
<!-- Breast --> <!-- Breast -->
<instance template="slider" id="bk5" posparent="bk4" posref="BL TL" w="180" h="48" active="false" /> <instance template="slider" id="bk5" posparent="bk4" posref="BL TL" w="180" h="48" active="false" />
<view type="text" id="title5" posparent="bk5" posref="TL TL" x="16" y="2" hardtext="uiBreasts" color="255 255 255 255" fontsize="10" active="false" /> <view type="text" id="title5" posparent="bk5" posref="TL TL" x="16" y="4" hardtext="uiBreasts" color="255 255 255 255" fontsize="10" active="false" />
<ctrl type="scroll" id="scroll5" posparent="bk5" posref="MM MM" x="0" y="0" w="140" h="32" <ctrl type="scroll" id="scroll5" posparent="bk5" posref="MM MM" x="0" y="0" w="140" h="32"
vertical="false" align="L" min="0" max="14" value="UI:TEMP:CHAR3D:VPC:BREASTSIZE" tracksize="40" vertical="false" align="L" min="0" max="14" value="UI:TEMP:CHAR3D:VPC:BREASTSIZE" tracksize="40"
onscroll="" params="" onscroll="" params=""
@ -2216,14 +2216,14 @@
<!-- TITLES Des SLIDERS --> <!-- TITLES Des SLIDERS -->
<view type="text" id="face1" posparent="pos1" posref="TL TL" x="16" y="2" hardtext="uiFace1Fy" color="255 255 255 255" fontsize="11"/> <view type="text" id="face1" posparent="pos1" posref="TL TL" x="2" y="4" hardtext="uiFace1Fy" color="255 255 255 255" fontsize="10"/>
<view type="text" id="face2" posparent="pos2" posref="TL TL" x="16" y="2" hardtext="uiFace2Fy" color="255 255 255 255" fontsize="11"/> <view type="text" id="face2" posparent="pos2" posref="TL TL" x="2" y="4" hardtext="uiFace2Fy" color="255 255 255 255" fontsize="10"/>
<view type="text" id="face3" posparent="pos3" posref="TL TL" x="16" y="2" hardtext="uiFace3Fy" color="255 255 255 255" fontsize="11"/> <view type="text" id="face3" posparent="pos3" posref="TL TL" x="2" y="4" hardtext="uiFace3Fy" color="255 255 255 255" fontsize="10"/>
<view type="text" id="face4" posparent="pos4" posref="TL TL" x="16" y="2" hardtext="uiFace4Fy" color="255 255 255 255" fontsize="11"/> <view type="text" id="face4" posparent="pos4" posref="TL TL" x="2" y="4" hardtext="uiFace4Fy" color="255 255 255 255" fontsize="10"/>
<view type="text" id="face5" posparent="pos5" posref="TL TL" x="16" y="2" hardtext="uiFace5Fy" color="255 255 255 255" fontsize="11"/> <view type="text" id="face5" posparent="pos5" posref="TL TL" x="2" y="4" hardtext="uiFace5Fy" color="255 255 255 255" fontsize="10"/>
<view type="text" id="face6" posparent="pos6" posref="TL TL" x="16" y="2" hardtext="uiFace6Fy" color="255 255 255 255" fontsize="11"/> <view type="text" id="face6" posparent="pos6" posref="TL TL" x="2" y="4" hardtext="uiFace6Fy" color="255 255 255 255" fontsize="10"/>
<view type="text" id="face7" posparent="pos7" posref="TL TL" x="16" y="2" hardtext="uiFace7Fy" color="255 255 255 255" fontsize="11"/> <view type="text" id="face7" posparent="pos7" posref="TL TL" x="2" y="4" hardtext="uiFace7Fy" color="255 255 255 255" fontsize="10"/>
<view type="text" id="face8" posparent="pos8" posref="TL TL" x="16" y="2" hardtext="uiFace8Fy" color="255 255 255 255" fontsize="11"/> <view type="text" id="face8" posparent="pos8" posref="TL TL" x="2" y="4" hardtext="uiFace8Fy" color="255 255 255 255" fontsize="10"/>
<!-- <!--
<view type="bitmap" id="branch" posref="BL BL" texture="branch.tga" color="255 255 255 255" global_color="false" /> <view type="bitmap" id="branch" posref="BL BL" texture="branch.tga" color="255 255 255 255" global_color="false" />
@ -2237,28 +2237,28 @@
<!-- HAIRCUT --> <!-- HAIRCUT -->
<instance template="but_slider" id="haircut" posparent="pos1" posref="TL TL" x="-516" y="0" w="180" h="48" value="UI:TEMP:HAIRCUT" max="6" /> <instance template="but_slider" id="haircut" posparent="pos1" posref="TL TL" x="-516" y="0" w="180" h="48" value="UI:TEMP:HAIRCUT" max="6" />
<view type="text" id="hair1" posparent="haircut" posref="TL TL" x="16" y="2" hardtext="uiHaircut" color="255 255 255 255" fontsize="11"/> <view type="text" id="hair1" posparent="haircut" posref="TL TL" x="16" y="4" hardtext="uiHaircut" color="255 255 255 255" fontsize="10"/>
<ctrl type="scroll" id="hair2" posparent="haircut" posref="MM MM" x="0" y="0" w="140" h="32" <ctrl type="scroll" id="hair2" posparent="haircut" posref="MM MM" x="0" y="0" w="140" h="32"
vertical="false" align="L" min="0" max="6" value="UI:TEMP:HAIRCUT" tracksize="40" vertical="false" align="L" min="0" max="6" value="UI:TEMP:HAIRCUT" tracksize="40"
tx_topright="" tx_middle="slider_m.tga" tx_bottomleft=""/> tx_topright="" tx_middle="slider_m.tga" tx_bottomleft=""/>
<!-- HAIR COLOR --> <!-- HAIR COLOR -->
<instance template="but_slider" id="haircolor" posparent="pos2" posref="TL TL" x="-516" y="0" w="180" h="48" value="UI:TEMP:CHAR3D:VPA:HATCOLOR" max="5" /> <instance template="but_slider" id="haircolor" posparent="pos2" posref="TL TL" x="-516" y="0" w="180" h="48" value="UI:TEMP:CHAR3D:VPA:HATCOLOR" max="5" />
<view type="text" id="haircol1" posparent="haircolor" posref="TL TL" x="16" y="2" hardtext="uiHairColor" color="255 255 255 255" fontsize="11"/> <view type="text" id="haircol1" posparent="haircolor" posref="TL TL" x="16" y="4" hardtext="uiHairColor" color="255 255 255 255" fontsize="10"/>
<ctrl type="scroll" id="haircol2" posparent="haircolor" posref="MM MM" x="0" y="0" w="140" h="32" <ctrl type="scroll" id="haircol2" posparent="haircolor" posref="MM MM" x="0" y="0" w="140" h="32"
vertical="false" align="L" min="0" max="5" value="UI:TEMP:CHAR3D:VPA:HATCOLOR" tracksize="40" vertical="false" align="L" min="0" max="5" value="UI:TEMP:CHAR3D:VPA:HATCOLOR" tracksize="40"
tx_topright="" tx_middle="slider_m.tga" tx_bottomleft=""/> tx_topright="" tx_middle="slider_m.tga" tx_bottomleft=""/>
<!-- TATOOS --> <!-- TATOOS -->
<instance template="but_slider" id="tatoos" posparent="pos3" posref="TL TL" x="-516" y="0" w="180" h="48" value="UI:TEMP:CHAR3D:VPC:TATTOO" max="31" /> <instance template="but_slider" id="tatoos" posparent="pos3" posref="TL TL" x="-516" y="0" w="180" h="48" value="UI:TEMP:CHAR3D:VPC:TATTOO" max="31" />
<view type="text" id="tatoo1" posparent="tatoos" posref="TL TL" x="16" y="2" hardtext="uiTatoos" color="255 255 255 255" fontsize="11"/> <view type="text" id="tatoo1" posparent="tatoos" posref="TL TL" x="16" y="4" hardtext="uiTatoos" color="255 255 255 255" fontsize="10"/>
<ctrl type="scroll" id="tatoo2" posparent="tatoos" posref="MM MM" x="0" y="0" w="140" h="32" <ctrl type="scroll" id="tatoo2" posparent="tatoos" posref="MM MM" x="0" y="0" w="140" h="32"
vertical="false" align="L" min="0" max="31" value="UI:TEMP:CHAR3D:VPC:TATTOO" tracksize="40" vertical="false" align="L" min="0" max="31" value="UI:TEMP:CHAR3D:VPC:TATTOO" tracksize="40"
tx_topright="" tx_middle="slider_m.tga" tx_bottomleft=""/> tx_topright="" tx_middle="slider_m.tga" tx_bottomleft=""/>
<!-- EYES --> <!-- EYES -->
<instance template="but_slider" id="eyes" posparent="pos4" posref="TL TL" x="-516" y="0" w="180" h="48" value="UI:TEMP:CHAR3D:VPC:EYESCOLOR" max="7" /> <instance template="but_slider" id="eyes" posparent="pos4" posref="TL TL" x="-516" y="0" w="180" h="48" value="UI:TEMP:CHAR3D:VPC:EYESCOLOR" max="7" />
<view type="text" id="eyes1" posparent="eyes" posref="TL TL" x="16" y="2" hardtext="uiEyes" color="255 255 255 255" fontsize="11"/> <view type="text" id="eyes1" posparent="eyes" posref="TL TL" x="16" y="4" hardtext="uiEyes" color="255 255 255 255" fontsize="10"/>
<ctrl type="scroll" id="eyes2" posparent="eyes" posref="MM MM" x="0" y="0" w="140" h="32" <ctrl type="scroll" id="eyes2" posparent="eyes" posref="MM MM" x="0" y="0" w="140" h="32"
vertical="false" align="L" min="0" max="7" value="UI:TEMP:CHAR3D:VPC:EYESCOLOR" tracksize="40" vertical="false" align="L" min="0" max="7" value="UI:TEMP:CHAR3D:VPC:EYESCOLOR" tracksize="40"
tx_topright="" tx_middle="slider_m.tga" tx_bottomleft=""/> tx_topright="" tx_middle="slider_m.tga" tx_bottomleft=""/>
@ -2306,9 +2306,9 @@
</group> </group>
<!-- Bonus 1 --> <!-- Bonus 1 -->
<instance template="slider" id="bp1" posref="TL TL" x="20" y="-96" w="180" h="48" /> <instance template="slider" id="bp1" posref="TL TL" x="15" y="-90" w="180" h="48" />
<view type="text" id="title1" posparent="bp1" posref="TL TL" x="16" y="2" hardtext="uiCP_BP1" color="255 255 255 255" fontsize="10"/> <view type="text" id="title1" posparent="bp1" posref="TL TL" x="0" y="2" hardtext="uiCP_BP1" color="255 255 255 255" fontsize="10"/>
<view type="text" id="info1" posparent="title1" posref="MR ML" x="0" y="1" hardtext="uiCP_JOB1" color="255 255 255 255" fontsize="11"/> <view type="text" id="info1" posparent="title1" posref="MR ML" x="5" y="1" hardtext="uiCP_JOB1" color="255 255 255 255" fontsize="11"/>
<ctrl type="scroll" id="scroll1" posparent="bp1" posref="MM MM" x="0" y="0" w="140" h="32" <ctrl type="scroll" id="scroll1" posparent="bp1" posref="MM MM" x="0" y="0" w="140" h="32"
vertical="false" align="L" min="0" max="3" value="UI:TEMP:JOB_POINT1" tracksize="40" vertical="false" align="L" min="0" max="3" value="UI:TEMP:JOB_POINT1" tracksize="40"
tx_topright="" tx_middle="slider_m.tga" tx_bottomleft=""/> tx_topright="" tx_middle="slider_m.tga" tx_bottomleft=""/>
@ -2335,13 +2335,13 @@
<view type="text" id="desc_title" posparent="icons_back" posref="TL BL" hardtext="uiCP_BP_Des" color="140 162 107 255" fontsize="13" x="0" y="4" /> <view type="text" id="desc_title" posparent="icons_back" posref="TL BL" hardtext="uiCP_BP_Des" color="140 162 107 255" fontsize="13" x="0" y="4" />
<!-- Pack description --> <!-- Pack description -->
<view type="text" id="pack_F" posref="TR TL" hardtext="uiCP_Job_F1" fontsize="10" x="12" y="-10" posparent="icons_back" <view type="text" id="pack_F" posref="TR TL" hardtext="uiCP_Job_F1" fontsize="10" x="12" y="-5" posparent="icons_back"
line_maxw="450" multi_line="true" multi_line_space="0"/> line_maxw="450" multi_line="true" multi_line_space="0"/>
<view type="text" id="pack_M" posref="TR TL" hardtext="uiCP_Job_M1" fontsize="10" x="12" y="-66" posparent="icons_back" <view type="text" id="pack_M" posref="TR TL" hardtext="uiCP_Job_M1" fontsize="10" x="12" y="-61" posparent="icons_back"
line_maxw="450" multi_line="true" multi_line_space="0"/> line_maxw="450" multi_line="true" multi_line_space="0"/>
<view type="text" id="pack_G" posref="TR TL" hardtext="uiCP_Job_G1" fontsize="10" x="12" y="-122" posparent="icons_back" <view type="text" id="pack_G" posref="TR TL" hardtext="uiCP_Job_G1" fontsize="10" x="12" y="-117" posparent="icons_back"
line_maxw="450" multi_line="true" multi_line_space="0"/> line_maxw="450" multi_line="true" multi_line_space="0"/>
<view type="text" id="pack_C" posref="TR TL" hardtext="uiCP_Job_C1" fontsize="10" x="12" y="-178" posparent="icons_back" <view type="text" id="pack_C" posref="TR TL" hardtext="uiCP_Job_C1" fontsize="10" x="12" y="-173" posparent="icons_back"
line_maxw="450" multi_line="true" multi_line_space="0"/> line_maxw="450" multi_line="true" multi_line_space="0"/>
@ -2397,8 +2397,8 @@
<group id="result" posparent="desc" posref="TL TL" y="0" sizeref="w" h="96" > <group id="result" posparent="desc" posref="TL TL" y="0" sizeref="w" h="96" >
<view type="text" id="title1" posref="TL TL" hardtext="uiCP_Title" color="140 162 107 255" fontsize="13" x="16" y="-12"/> <view type="text" id="title1" posref="TL TL" hardtext="uiCP_Title" color="140 162 107 255" fontsize="13" x="16" y="-10"/>
<view type="text" id="title2" posref="BR BL" hardtext="uiCP_Refugee" color="255 255 255 255" fontsize="15" x="0" posparent="title1" /> <view type="text" id="title2" posref="BR BL" hardtext="uiCP_Refugee" color="255 255 255 255" fontsize="15" y="-2" x="0" posparent="title1" />
<view type="text" id="title3" posparent="title1" posref="BL TL" hardtext="uiCP_Pack" fontsize="13" color="140 162 107 255" y="-8"/> <view type="text" id="title3" posparent="title1" posref="BL TL" hardtext="uiCP_Pack" fontsize="13" color="140 162 107 255" y="-8"/>
<view type="text" id="res" posparent="title3" posref="TR TL" hardtext="uiCP_Res_F" fontsize="13" color="255 255 255 255" x="8" multi_line="true" multi_line_space="0" /> <view type="text" id="res" posparent="title3" posref="TR TL" hardtext="uiCP_Res_F" fontsize="13" color="255 255 255 255" x="8" multi_line="true" multi_line_space="0" />
@ -2467,7 +2467,7 @@
<!-- TITLE --> <!-- TITLE -->
<group id="title" w="292" h="46" y="-6" x="-272" posref="TR TR"> <group id="title" w="292" h="46" y="-6" x="-272" posref="TR TR">
<view type="text" id="title1" posref="TM TM" global_color="false" render_layer="2" fontsize="20" shadow="true" y="-4" hardtext="uiCP_title1"/> <view type="text" id="title1" posref="TM TM" global_color="false" render_layer="2" fontsize="20" shadow="true" y="0" hardtext="uiCP_title1"/>
<view type="text" id="title2" posref="BM BM" global_color="false" render_layer="2" fontsize="20" shadow="true" y="0" hardtext="uiCP_creation"/> <view type="text" id="title2" posref="BM BM" global_color="false" render_layer="2" fontsize="20" shadow="true" y="0" hardtext="uiCP_creation"/>
</group> </group>

View file

@ -25,6 +25,8 @@
value="basic.ttf" /> --> value="basic.ttf" /> -->
<param name="font" <param name="font"
value="ryzom.ttf" /> value="ryzom.ttf" />
<param name="monospace_font"
value="ryzom_monospace.ttf" />
<param name="add_coef_font" <param name="add_coef_font"
value="0" /> value="0" />
<param name="mul_coef_anim" <param name="mul_coef_anim"

View file

@ -628,7 +628,7 @@
<!-- TITLE --> <!-- TITLE -->
<group id="title" w="292" h="46" y="-6" x="-272" posref="TR TR"> <group id="title" w="292" h="46" y="-6" x="-272" posref="TR TR">
<view type="text" id="title1" posref="TM TM" global_color="false" render_layer="2" fontsize="20" shadow="true" y="-4" hardtext="uiCP_title1"/> <view type="text" id="title1" posref="TM TM" global_color="false" render_layer="2" fontsize="20" shadow="true" y="0" hardtext="uiCP_title1"/>
<view type="text" id="title2" posref="BM BM" global_color="false" render_layer="2" fontsize="20" shadow="true" y="0" hardtext="uiCP_selection"/> <view type="text" id="title2" posref="BM BM" global_color="false" render_layer="2" fontsize="20" shadow="true" y="0" hardtext="uiCP_selection"/>
</group> </group>
@ -723,7 +723,7 @@
<group id="black" posref="BR BR" sizeref="hw" w="-16" h="-12" inherit_gc_alpha="true"/> <group id="black" posref="BR BR" sizeref="hw" w="-16" h="-12" inherit_gc_alpha="true"/>
<view type="bitmap" id="black2" posparent="black" posref="MM MM" sizeref="wh" w="-2" h="-2" inherit_gc_alpha="true" scale="true" texture="blank.tga" global_color="false"/> <view type="bitmap" id="black2" posparent="black" posref="MM MM" sizeref="wh" w="-2" h="-2" inherit_gc_alpha="true" scale="true" texture="blank.tga" global_color="false"/>
<group type="list" id="text_list" fontsize="9" posref="TL TL" posparent="black" x="2" y="-2" space="0" sizeref="hw" w="-4" h="-4" maxelements="2000"/> <group type="list" id="text_list" fontsize="9" posref="TL TL" posparent="black" x="2" y="0" space="0" sizeref="hw" w="-4" h="-4" maxelements="2000"/>
<ctrl style="skin_scroll" id="scroll_bar" /> <ctrl style="skin_scroll" id="scroll_bar" />
</group> </group>
</group> </group>
@ -778,7 +778,7 @@
<group type="menu" id="r2ed_editor_menu" <group type="menu" id="r2ed_editor_menu"
options="menu_back" options="menu_back"
text_y="-2" text_y="0"
color="255 255 255 255" color="255 255 255 255"
fontsize="16" fontsize="16"
shadow="true" shadow="true"

View file

@ -83,7 +83,7 @@
tx_normal="qh_off" tx_pushed="qh_on" tx_over="qh_off" wmin="80" wmargin="40" tx_normal="qh_off" tx_pushed="qh_on" tx_over="qh_off" wmin="80" wmargin="40"
global_color_normal="false" global_color_over="false" global_color_pushed="false" global_color_normal="false" global_color_over="false" global_color_pushed="false"
color="255 255 255 255" col_over="255 255 255 0" col_pushed="255 255 255 255" color="255 255 255 255" col_over="255 255 255 0" col_pushed="255 255 255 255"
text_y="-1" fontsize="13" shadow="true" text_y="1" fontsize="13" shadow="true"
text_color_normal="222 201 182 255" text_color_normal="222 201 182 255"
text_color_pushed="222 201 182 255" text_color_pushed="222 201 182 255"
text_color_over="255 255 255 255" text_color_over="255 255 255 255"

View file

@ -25,6 +25,8 @@
value="outgame.ttf" /> --> value="outgame.ttf" /> -->
<param name="font" <param name="font"
value="ryzom.ttf" /> value="ryzom.ttf" />
<param name="monospace_font"
value="ryzom_monospace.ttf" />
<param name="add_coef_font" <param name="add_coef_font"
value="3" /> value="3" />
<param name="mul_coef_anim" <param name="mul_coef_anim"

View file

@ -420,7 +420,7 @@
<!-- NAME OF SPELL --> <!-- NAME OF SPELL -->
<instance template="edit_box_widget" id="eb_spell_name" posref="TR BR" x="4" w="216" y="-54" h="20" child_resize="false" <instance template="edit_box_widget" id="eb_spell_name" posref="TR BR" x="4" w="216" y="-54" h="20" child_resize="false"
text_x="0" text_y="-2" text_ref="ML ML" text_x="0" text_y="0" text_ref="ML ML"
fontsize="12" multi_line="false" max_num_chars="20" fontsize="12" multi_line="false" max_num_chars="20"
enter_loose_focus="true" enter_recover_focus="false" prompt="" reset_focus_on_hide="true" onchange="phrase_change_name" /> enter_loose_focus="true" enter_recover_focus="false" prompt="" reset_focus_on_hide="true" onchange="phrase_change_name" />
<view type="text" id="text_spell_name" posparent="eb_spell_name" posref="TL BL" x="0" y="-2" color="255 255 255 255" fontsize="10" shadow="true" hardtext="uiPhraseEditName" /> <view type="text" id="text_spell_name" posparent="eb_spell_name" posref="TL BL" x="0" y="-2" color="255 255 255 255" fontsize="10" shadow="true" hardtext="uiPhraseEditName" />

Some files were not shown because too many files have changed in this diff Show more