pax_global_header00006660000000000000000000000064132272107720014515gustar00rootroot0000000000000052 comment=8c53210400a2e75145a93add6687b60c2b40a8cb mygui-3.2.2+dfsg/000077500000000000000000000000001322721077200135725ustar00rootroot00000000000000mygui-3.2.2+dfsg/.gitattributes000066400000000000000000000000131322721077200164570ustar00rootroot00000000000000* text=automygui-3.2.2+dfsg/.travis.yml000066400000000000000000000021671322721077200157110ustar00rootroot00000000000000language: cpp compiler: - gcc - clang env: - RENDER_SYSTEM=3 BUILD_DEMOS_AND_TOOLS=TRUE # Ogre3D Platform - RENDER_SYSTEM=4 BUILD_DEMOS_AND_TOOLS=FALSE # OpenGL Platform branches: only: - master before_install: - pwd - git submodule update --init --recursive - echo "yes" | sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu `lsb_release -sc` main universe restricted multiverse" - echo "yes" | sudo apt-add-repository ppa:openmw/openmw - sudo apt-get update -qq - sudo apt-get install -qq cmake libogre-1.9-dev libfreetype6-dev libois-dev graphviz libgl1-mesa-dev libglew-dev doxygen python cppcheck before_script: - mkdir build - cd build - cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMYGUI_HIGH_LEVEL_WARNINGS=TRUE -DMYGUI_RENDERSYSTEM=$RENDER_SYSTEM -DMYGUI_BUILD_DEMOS=$BUILD_DEMOS_AND_TOOLS -DMYGUI_BUILD_TOOLS=$BUILD_DEMOS_AND_TOOLS -DMYGUI_BUILD_UNITTESTS=$BUILD_DEMOS_AND_TOOLS .. script: - make -j2 after_script: - cd .. - python ./Scripts/cppcheck/cppcheck.py notifications: recipients: - psi29a+travis.ci@gmail.com - altren@gmail.com email: on_success: change on_failure: always mygui-3.2.2+dfsg/AUTHORS000066400000000000000000000002211322721077200146350ustar00rootroot00000000000000AUTHORS ======= Main developers: Albert Semenov ( my.name ) George Evmenov ( Altren ) Contributors: https://www.ohloh.net/p/MyGUI/contributors mygui-3.2.2+dfsg/CMake/000077500000000000000000000000001322721077200145525ustar00rootroot00000000000000mygui-3.2.2+dfsg/CMake/CMakeLists.txt000066400000000000000000000022221322721077200173100ustar00rootroot00000000000000############################################################# # Install useful CMake modules. # These are necessary to compile the samples from the install # directory, but can also be used for custom projects. ############################################################# if(WIN32) set(MYGUI_CMAKE_DIR "CMake") else(WIN32) set(MYGUI_CMAKE_DIR "lib/MYGUI/cmake") endif(WIN32) set(INST_FILES Packages/FindOIS.cmake Packages/FindOGRE.cmake Utils/FindPkgMacros.cmake Utils/PreprocessorUtils.cmake Utils/MyGUIConfigTargets.cmake Utils/MyGUIGetVersion.cmake Utils/MyGUIFindFrameworks.cmake Templates/VisualStudioUserFile.vcproj.user.in Templates/VisualStudio2010UserFile.vcxproj.user.in ) set(STATIC_INST_FILES Packages/FindDirectX.cmake Packages/FindDirectX11.cmake Packages/FindFreetype.cmake ) if (APPLE) set(INST_FILES ${INST_FILES} Packages/FindIOKit.cmake ) set(STATIC_INST_FILES ${STATIC_INST_FILES} Packages/FindCarbon.cmake Packages/FindCocoa.cmake ) endif () #install(FILES ${INST_FILES} DESTINATION ${MYGUI_CMAKE_DIR}) if (MYGUI_STATIC) install(FILES ${STATIC_INST_FILES} DESTINATION ${MYGUI_CMAKE_DIR}) endif ()mygui-3.2.2+dfsg/CMake/ConfigureBuild.cmake000066400000000000000000000034501322721077200204570ustar00rootroot00000000000000####################################################################### # This file takes care of configuring MyGUI to build with the settings # given in CMake. It creates the necessary config.h file and will # also prepare package files for pkg-config and CMake. ####################################################################### # should we build static libs? if (MYGUI_STATIC) set(MYGUI_LIB_TYPE STATIC) else () set(MYGUI_LIB_TYPE SHARED) endif () set(MYGUI_STATIC_LIB 0) if (MYGUI_STATIC) set(MYGUI_STATIC_LIB 1) add_definitions(-DMYGUI_STATIC) endif() if (WIN32) configure_file(${MYGUI_TEMPLATES_DIR}/updateListFiles.bat.in ${MYGUI_BINARY_DIR}/updateListFiles.bat) endif () # Create the pkg-config package files on Unix systems if (UNIX) set(MYGUI_LIB_SUFFIX "") set(MYGUI_PLUGIN_PREFIX "") set(MYGUI_PLUGIN_EXT ".so") if (MYGUI_STATIC) set(MYGUI_LIB_SUFFIX "${MYGUI_LIB_SUFFIX}Static") set(MYGUI_PLUGIN_PREFIX "lib") set(MYGUI_PLUGIN_EXT ".a") endif () string(TOLOWER "${CMAKE_BUILD_TYPE}" MYGUI_BUILD_TYPE) if (MYGUI_BUILD_TYPE STREQUAL "debug") set(MYGUI_LIB_SUFFIX "${MYGUI_LIB_SUFFIX}_d") endif () set(MYGUI_ADDITIONAL_LIBS "") set(MYGUI_CFLAGS "") set(MYGUI_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}) set(MYGUI_ADDITIONAL_LIBS "${MYGUI_ADDITIONAL_LIBS}") if (MYGUI_STATIC) configure_file(${MYGUI_TEMPLATES_DIR}/MYGUIStatic.pc.in ${MYGUI_BINARY_DIR}/pkgconfig/MYGUI${MYGUI_LIB_SUFFIX}.pc @ONLY) else () configure_file(${MYGUI_TEMPLATES_DIR}/MYGUI.pc.in ${MYGUI_BINARY_DIR}/pkgconfig/MYGUI${MYGUI_LIB_SUFFIX}.pc @ONLY) endif () install(FILES ${MYGUI_BINARY_DIR}/pkgconfig/MYGUI${MYGUI_LIB_SUFFIX}.pc DESTINATION lib/pkgconfig) # configure additional packages endif () if (MYGUI_STANDALONE_BUILD) set(CMAKE_SUPPRESS_REGENERATION true) endif() mygui-3.2.2+dfsg/CMake/Dependencies.cmake000066400000000000000000000102751322721077200201470ustar00rootroot00000000000000####################################################################### # Find all necessary and optional MYGUI dependencies ####################################################################### # MYGUI_DEPENDENCIES_DIR can be used to specify a single base # folder where the required dependencies may be found. set(MYGUI_DEPENDENCIES_DIR "Dependencies" CACHE PATH "Path to prebuilt MYGUI dependencies") include(FindPkgMacros) getenv_path(MYGUI_DEPENDENCIES_DIR) set(MYGUI_DEP_SEARCH_PATH ${MYGUI_DEPENDENCIES_DIR} ${ENV_MYGUI_DEPENDENCIES_DIR} "${MYGUI_BINARY_DIR}/Dependencies" "${MYGUI_SOURCE_DIR}/Dependencies" "${MYGUI_BINARY_DIR}/../Dependencies" "${MYGUI_SOURCE_DIR}/../Dependencies" ) # Set hardcoded path guesses for various platforms if (UNIX) set(MYGUI_DEP_SEARCH_PATH ${MYGUI_DEP_SEARCH_PATH} /usr/local) endif () # give guesses as hints to the find_package calls set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${MYGUI_DEP_SEARCH_PATH}) set(CMAKE_FRAMEWORK_PATH ${CMAKE_FRAMEWORK_PATH} ${MYGUI_DEP_SEARCH_PATH}) if (WIN32) include(MyGUIInstallDependencies) endif () ####################################################################### # Core dependencies ####################################################################### if (MYGUI_USE_FREETYPE) # Find FreeType find_package(Freetype) macro_log_feature(FREETYPE_FOUND "freetype" "Portable font engine" "http://www.freetype.org" TRUE "" "") endif() ####################################################################### # RenderSystem dependencies ####################################################################### if(MYGUI_RENDERSYSTEM EQUAL 5) # Find DirectX if(WIN32) find_package(DirectX) macro_log_feature(DirectX_FOUND "DirectX" "Support for the DirectX render system" "http://msdn.microsoft.com/en-us/directx/" TRUE "" "") endif() elseif(MYGUI_RENDERSYSTEM EQUAL 3) # Find OGRE find_package(OGRE_Old) macro_log_feature(OGRE_FOUND "ogre" "Support for the Ogre render system" "" TRUE "" "") elseif(MYGUI_RENDERSYSTEM EQUAL 4) #find_package(ZLIB) #macro_log_feature(ZLIB_FOUND "zlib" "Simple data compression library" "http://www.zlib.net" TRUE "" "") #find_package(PNG) #macro_log_feature(PNG_FOUND "PNG" "Png image codec" "http://www.libpng.org/" TRUE "" "") find_package(OpenGL) macro_log_feature(OPENGL_FOUND "opengl" "Support for the OpenGL render system" "" TRUE "" "") if(MYGUI_USE_SYSTEM_GLEW) find_package(GLEW) macro_log_feature(GLEW_FOUND "GLEW" "OpenGL Extension Wrangler Library" "" TRUE "" "") endif() elseif(MYGUI_RENDERSYSTEM EQUAL 6) # Find DirectX11 if(WIN32) find_package(DirectX11) macro_log_feature(DirectX_FOUND "DirectX11" "Support for the DirectX11 render system" "http://msdn.microsoft.com/en-us/directx/" TRUE "" "") endif() endif() ####################################################################### # Demos and tools optional dependencies ####################################################################### # Find OIS if (MYGUI_SAMPLES_INPUT EQUAL 1) find_package(OIS) macro_log_feature(OIS_FOUND "OIS" "Input library needed for the samples" "http://sourceforge.net/projects/wgois" FALSE "" "") elseif (MYGUI_SAMPLES_INPUT EQUAL 3) find_package(OIS) macro_log_feature(OIS_FOUND "OIS" "Input library needed for the samples" "http://sourceforge.net/projects/wgois" FALSE "" "") endif() ####################################################################### # Tools ####################################################################### find_package(Doxygen) macro_log_feature(DOXYGEN_FOUND "Doxygen" "Tool for building API documentation" "http://doxygen.org" FALSE "" "") ####################################################################### # Apple-specific ####################################################################### if (APPLE) find_package(Carbon) macro_log_feature(Carbon_FOUND "Carbon" "Carbon" "http://www.apple.com" TRUE "" "") find_package(Cocoa) macro_log_feature(Cocoa_FOUND "Cocoa" "Cocoa" "http://www.apple.com" TRUE "" "") find_package(IOKit) macro_log_feature(IOKit_FOUND "IOKit" "IOKit HID framework needed by the samples" "http://www.apple.com" FALSE "" "") endif(APPLE) # Display results, terminate if anything required is missing MACRO_DISPLAY_FEATURE_LOG() mygui-3.2.2+dfsg/CMake/InstallResources.cmake000066400000000000000000000104541322721077200210610ustar00rootroot00000000000000################################################################## # Generate and install the config files needed for the samples ################################################################## function(install_file FILENAME) if (WIN32) install(FILES ${MYGUI_BINARY_DIR}/bin/debug/${FILENAME} DESTINATION "bin${MYGUI_DEBUG_PATH}" CONFIGURATIONS Debug ) install(FILES ${MYGUI_BINARY_DIR}/bin/release/${FILENAME} DESTINATION "bin${MYGUI_RELEASE_PATH}" CONFIGURATIONS Release None "" ) install(FILES ${MYGUI_BINARY_DIR}/bin/release/${FILENAME} DESTINATION "bin${MYGUI_RELWDBG_PATH}" CONFIGURATIONS RelWithDebInfo ) install(FILES ${MYGUI_BINARY_DIR}/bin/release/${FILENAME} DESTINATION "bin${MYGUI_MINSIZE_PATH}" CONFIGURATIONS MinSizeRel ) else () install(FILES ${MYGUI_BINARY_DIR}/bin/${FILENAME} DESTINATION "bin" ) endif () endfunction(install_file) if (MYGUI_RENDERSYSTEM EQUAL 3) if (WIN32) option(MYGUI_OGRE_WAS_BUILT_WITH_DIRECTX "Ogre have DirectX render ssystem and we don't need to disable it" TRUE) MARK_AS_ADVANCED(MYGUI_OGRE_WAS_BUILT_WITH_DIRECTX) set(MYGUI_PLUGIN_DIR_DBG ".") set(MYGUI_PLUGIN_DIR_REL ".") if (MYGUI_OGRE_WAS_BUILT_WITH_DIRECTX) set(MYGUI_NO_PLUGIN_OGRE_DIRECTX "") else () set(MYGUI_NO_PLUGIN_OGRE_DIRECTX "#") endif () elseif (UNIX) set(MYGUI_PLUGIN_DIR_DBG ${OGRE_PLUGIN_DIR_DBG}) set(MYGUI_PLUGIN_DIR_REL ${OGRE_PLUGIN_DIR_REL}) set(MYGUI_NO_PLUGIN_OGRE_DIRECTX "#") endif() endif () # install resource files if (MYGUI_INSTALL_SAMPLES OR MYGUI_INSTALL_TOOLS) if (WIN32) set(MYGUI_MEDIA_DIR "../../Media") elseif (UNIX) set(MYGUI_MEDIA_DIR "../share/MYGUI/Media") else () set(MYGUI_MEDIA_DIR "../../Media") endif () if (WIN32) # create resources.xml configure_file(${MYGUI_TEMPLATES_DIR}/resources.xml.in ${MYGUI_BINARY_DIR}/bin/debug/resources.xml) configure_file(${MYGUI_TEMPLATES_DIR}/resources.xml.in ${MYGUI_BINARY_DIR}/bin/release/resources.xml) if (MYGUI_RENDERSYSTEM EQUAL 3) # create plugins.cfg configure_file(${MYGUI_TEMPLATES_DIR}/plugins_d.cfg.in ${MYGUI_BINARY_DIR}/bin/debug/plugins.cfg) configure_file(${MYGUI_TEMPLATES_DIR}/plugins.cfg.in ${MYGUI_BINARY_DIR}/bin/release/plugins.cfg) endif () else() # other OS only need one cfg file string(TOLOWER "${CMAKE_BUILD_TYPE}" MYGUI_BUILD_TYPE) if (MYGUI_BUILD_TYPE STREQUAL "debug" AND NOT APPLE) set(MYGUI_CFG_SUFFIX "_d") endif () # create resources.xml configure_file(${MYGUI_TEMPLATES_DIR}/resources.xml.in ${MYGUI_BINARY_DIR}/bin/resources.xml) if (MYGUI_RENDERSYSTEM EQUAL 3) # create plugins.cfg configure_file(${MYGUI_TEMPLATES_DIR}/plugins${MYGUI_CFG_SUFFIX}.cfg.in ${MYGUI_BINARY_DIR}/bin/plugins.cfg) endif () endif () install_file (resources.xml) if (MYGUI_RENDERSYSTEM EQUAL 3) install_file (plugins.cfg) endif () else () set(MYGUI_MEDIA_DIR "${MYGUI_SOURCE_DIR}/Media") if (WIN32) # create resources.xml configure_file(${MYGUI_TEMPLATES_DIR}/resources.xml.in ${MYGUI_BINARY_DIR}/bin/debug/resources.xml) configure_file(${MYGUI_TEMPLATES_DIR}/resources.xml.in ${MYGUI_BINARY_DIR}/bin/release/resources.xml) configure_file(${MYGUI_TEMPLATES_DIR}/resources.xml.in ${MYGUI_BINARY_DIR}/bin/relwithdebinfo/resources.xml) configure_file(${MYGUI_TEMPLATES_DIR}/resources.xml.in ${MYGUI_BINARY_DIR}/bin/minsizerel/resources.xml) if (MYGUI_RENDERSYSTEM EQUAL 3) # create plugins.cfg configure_file(${MYGUI_TEMPLATES_DIR}/plugins_d.cfg.in ${MYGUI_BINARY_DIR}/bin/debug/plugins.cfg) configure_file(${MYGUI_TEMPLATES_DIR}/plugins.cfg.in ${MYGUI_BINARY_DIR}/bin/release/plugins.cfg) configure_file(${MYGUI_TEMPLATES_DIR}/plugins.cfg.in ${MYGUI_BINARY_DIR}/bin/relwithdebinfo/plugins.cfg) configure_file(${MYGUI_TEMPLATES_DIR}/plugins.cfg.in ${MYGUI_BINARY_DIR}/bin/minsizerel/plugins.cfg) endif () else() # other OS only need one cfg file string(TOLOWER "${CMAKE_BUILD_TYPE}" MYGUI_BUILD_TYPE) if (MYGUI_BUILD_TYPE STREQUAL "debug" AND NOT APPLE) set(MYGUI_CFG_SUFFIX "_d") endif () # create resources.xml configure_file(${MYGUI_TEMPLATES_DIR}/resources.xml.in ${MYGUI_BINARY_DIR}/bin/resources.xml) if (MYGUI_RENDERSYSTEM EQUAL 3) # create plugins.cfg configure_file(${MYGUI_TEMPLATES_DIR}/plugins${MYGUI_CFG_SUFFIX}.cfg.in ${MYGUI_BINARY_DIR}/bin/plugins.cfg) endif () endif () endif () mygui-3.2.2+dfsg/CMake/MyGUIInstallDependencies.cmake000066400000000000000000000060001322721077200223400ustar00rootroot00000000000000##################################################### # Install dependencies on Windows ##################################################### function(install_dll_file DEBUG_FILEPATH RELEASE_FILEPATH FILENAME) if (EXISTS ${DEBUG_FILEPATH}${FILENAME}_d.dll) install(FILES ${DEBUG_FILEPATH}${FILENAME}_d.dll DESTINATION bin/debug CONFIGURATIONS Debug ) install(FILES ${RELEASE_FILEPATH}${FILENAME}.dll DESTINATION bin/release CONFIGURATIONS Release None "" ) install(FILES ${RELEASE_FILEPATH}${FILENAME}.dll DESTINATION bin/relwithdebinfo CONFIGURATIONS RelWithDebInfo ) install(FILES ${RELEASE_FILEPATH}${FILENAME}.dll DESTINATION bin/minsizerel CONFIGURATIONS MinSizeRel ) configure_file(${DEBUG_FILEPATH}${FILENAME}_d.dll ${MYGUI_BINARY_DIR}/bin/debug/${FILENAME}_d.dll COPYONLY) configure_file(${RELEASE_FILEPATH}${FILENAME}.dll ${MYGUI_BINARY_DIR}/bin/release/${FILENAME}.dll COPYONLY) configure_file(${RELEASE_FILEPATH}${FILENAME}.dll ${MYGUI_BINARY_DIR}/bin/relwithdebinfo/${FILENAME}.dll COPYONLY) configure_file(${RELEASE_FILEPATH}${FILENAME}.dll ${MYGUI_BINARY_DIR}/bin/minsizerel/${FILENAME}.dll COPYONLY) endif () endfunction(install_dll_file) if (MYGUI_DEPENDENCIES_DIR STREQUAL "") set(MYGUI_DEP_BIN_DIR ${MYGUI_SOURCE_DIR}/Dependencies/bin) else () set(MYGUI_DEP_BIN_DIR ${MYGUI_DEPENDENCIES_DIR}/bin) endif () option(MYGUI_TRY_TO_COPY_DLLS "Copy dlls needed for sample builds" TRUE) if (MYGUI_TRY_TO_COPY_DLLS) # copy the dependency DLLs to the right places if (MYGUI_SAMPLES_INPUT EQUAL 1) install_dll_file(${MYGUI_DEP_BIN_DIR}/debug/ ${MYGUI_DEP_BIN_DIR}/release/ OIS) elseif (MYGUI_SAMPLES_INPUT EQUAL 2) elseif (MYGUI_SAMPLES_INPUT EQUAL 3) install_dll_file(${MYGUI_DEP_BIN_DIR}/debug/ ${MYGUI_DEP_BIN_DIR}/release/ OIS) endif () if (MYGUI_RENDERSYSTEM EQUAL 3) if (EXISTS ${OGRE_LIB_DIR}/../bin/debug/OgreMain_d.dll) set(DEBUG_DLLS_DIR ${OGRE_LIB_DIR}/../bin/debug) set(RELEASE_DLLS_DIR ${OGRE_LIB_DIR}/../bin/release) MESSAGE(STATUS " DLL's were copied from bin") elseif (EXISTS "${OGRE_LIB_DIR}/OgreMain_d.dll") set(DEBUG_DLLS_DIR ${OGRE_LIB_DIR}) set(RELEASE_DLLS_DIR ${OGRE_LIB_DIR}) MESSAGE(STATUS " DLL's were copied from lib") elseif (EXISTS ${OGRE_SOUCE_DIR}/bin/debug/OgreMain_d.dll) set(DEBUG_DLLS_DIR ${OGRE_SOUCE_DIR}/bin/debug) set(RELEASE_DLLS_DIR ${OGRE_SOUCE_DIR}/bin/release) MESSAGE(STATUS " DLL's were copied from sdk's bin") elseif (EXISTS ${OGRE_BUILD}/bin/debug/OgreMain_d.dll) set(DEBUG_DLLS_DIR ${OGRE_BUILD}/bin/debug) set(RELEASE_DLLS_DIR ${OGRE_BUILD}/bin/release) MESSAGE(STATUS " DLL's were copied from build bin") else () set(DEBUG_DLLS_DIR "") set(RELEASE_DLLS_DIR "") MESSAGE(ERROR " compiled OGRE DLL's wasn't found") endif () install_dll_file(${DEBUG_DLLS_DIR}/ ${RELEASE_DLLS_DIR}/ OgreMain) install_dll_file(${DEBUG_DLLS_DIR}/ ${RELEASE_DLLS_DIR}/ RenderSystem_Direct3D9) install_dll_file(${DEBUG_DLLS_DIR}/ ${RELEASE_DLLS_DIR}/ RenderSystem_GL) endif () endif () mygui-3.2.2+dfsg/CMake/Packages/000077500000000000000000000000001322721077200162705ustar00rootroot00000000000000mygui-3.2.2+dfsg/CMake/Packages/FindBerkelium.cmake000066400000000000000000000032651322721077200220200ustar00rootroot00000000000000set(BERKELIUM_ROOT "" CACHE PATH "Path to Berklium sources") SET(BERKELIUM_FOUND FALSE) IF(EXISTS ${BERKELIUM_ROOT}/include AND EXISTS ${BERKELIUM_ROOT}/lib) SET(BERKELIUM_INCLUDE_DIRS ${BERKELIUM_ROOT}/include) SET(BERKELIUM_LIBRARY_DIRS ${BERKELIUM_ROOT}/lib) ELSE() IF(WIN32) IF(EXISTS ${BERKELIUM_ROOT}/win32/berkelium.lib AND EXISTS ${BERKELIUM_ROOT}/win32/berkelium.exe) SET(BERKELIUM_INCLUDE_DIRS ${BERKELIUM_ROOT}/include) SET(BERKELIUM_LIBRARY_DIRS ${BERKELIUM_ROOT}/win32) ENDIF() ENDIF() ENDIF() IF(BERKELIUM_INCLUDE_DIRS AND BERKELIUM_LIBRARY_DIRS) IF(WIN32) # Windows FIND_LIBRARY(BERKELIUM_DEBUG_LIBRARY NAMES berkelium_d PATH_SUFFIXES "" Debug PATHS ${BERKELIUM_LIBRARY_DIRS} NO_DEFAULT_PATH) FIND_LIBRARY(BERKELIUM_RELEASE_LIBRARY NAMES berkelium PATH_SUFFIXES "" Release PATHS ${BERKELIUM_LIBRARY_DIRS} NO_DEFAULT_PATH) SET(BERKELIUM_LIBRARIES) IF(BERKELIUM_DEBUG_LIBRARY AND BERKELIUM_RELEASE_LIBRARY) SET(BERKELIUM_LIBRARIES debug ${BERKELIUM_DEBUG_LIBRARY} optimized ${BERKELIUM_RELEASE_LIBRARY}) ELSEIF(BERKELIUM_DEBUG_LIBRARY) SET(BERKELIUM_LIBRARIES ${BERKELIUM_DEBUG_LIBRARY}) ELSEIF(BERKELIUM_RELEASE_LIBRARY) SET(BERKELIUM_LIBRARIES ${BERKELIUM_RELEASE_LIBRARY}) ENDIF(BERKELIUM_DEBUG_LIBRARY AND BERKELIUM_RELEASE_LIBRARY) ELSE(WIN32) # Linux etc FIND_LIBRARY(BERKELIUM_LIBRARIES NAMES berkelium PATHS ${BERKELIUM_LIBRARY_DIRS} NO_DEFAULT_PATH) ENDIF(WIN32) IF(BERKELIUM_LIBRARIES) SET(BERKELIUM_FOUND TRUE) ENDIF() ENDIF() IF(BERKELIUM_FOUND) MESSAGE(STATUS "Found Berkelium: headers at ${BERKELIUM_INCLUDE_DIRS}, libraries at ${BERKELIUM_LIBRARIES}") ENDIF(BERKELIUM_FOUND) mygui-3.2.2+dfsg/CMake/Packages/FindCarbon.cmake000066400000000000000000000022201322721077200212730ustar00rootroot00000000000000# - Try to find Carbon # Once done, this will define # # Carbon_FOUND - system has Carbon # Carbon_INCLUDE_DIRS - the Carbon include directories # Carbon_LIBRARIES - link these to use Carbon include(FindPkgMacros) findpkg_begin(Carbon) # construct search paths set(Carbon_PREFIX_PATH ${Carbon_HOME} $ENV{Carbon_HOME} ${MYGUI_HOME} $ENV{MYGUI_HOME}) create_search_paths(Carbon) # redo search if prefix path changed clear_if_changed(Carbon_PREFIX_PATH Carbon_LIBRARY_FWK Carbon_LIBRARY_REL Carbon_LIBRARY_DBG Carbon_INCLUDE_DIR ) set(Carbon_LIBRARY_NAMES Carbon) get_debug_names(Carbon_LIBRARY_NAMES) use_pkgconfig(Carbon_PKGC Carbon) findpkg_framework(Carbon) find_path(Carbon_INCLUDE_DIR NAMES Carbon.h HINTS ${Carbon_INC_SEARCH_PATH} ${Carbon_PKGC_INCLUDE_DIRS} PATH_SUFFIXES Carbon) find_library(Carbon_LIBRARY_REL NAMES ${Carbon_LIBRARY_NAMES} HINTS ${Carbon_LIB_SEARCH_PATH} ${Carbon_PKGC_LIBRARY_DIRS}) find_library(Carbon_LIBRARY_DBG NAMES ${Carbon_LIBRARY_NAMES_DBG} HINTS ${Carbon_LIB_SEARCH_PATH} ${Carbon_PKGC_LIBRARY_DIRS}) make_library_set(Carbon_LIBRARY) findpkg_finish(Carbon) add_parent_dir(Carbon_INCLUDE_DIRS Carbon_INCLUDE_DIR) mygui-3.2.2+dfsg/CMake/Packages/FindCocoa.cmake000066400000000000000000000021501322721077200211150ustar00rootroot00000000000000# - Try to find Cocoa # Once done, this will define # # Cocoa_FOUND - system has Cocoa # Cocoa_INCLUDE_DIRS - the Cocoa include directories # Cocoa_LIBRARIES - link these to use Cocoa include(FindPkgMacros) findpkg_begin(Cocoa) # construct search paths set(Cocoa_PREFIX_PATH ${Cocoa_HOME} $ENV{Cocoa_HOME} ${MYGUI_HOME} $ENV{MYGUI_HOME}) create_search_paths(Cocoa) # redo search if prefix path changed clear_if_changed(Cocoa_PREFIX_PATH Cocoa_LIBRARY_FWK Cocoa_LIBRARY_REL Cocoa_LIBRARY_DBG Cocoa_INCLUDE_DIR ) set(Cocoa_LIBRARY_NAMES Cocoa) get_debug_names(Cocoa_LIBRARY_NAMES) use_pkgconfig(Cocoa_PKGC Cocoa) findpkg_framework(Cocoa) find_path(Cocoa_INCLUDE_DIR NAMES Cocoa.h HINTS ${Cocoa_INC_SEARCH_PATH} ${Cocoa_PKGC_INCLUDE_DIRS} PATH_SUFFIXES Cocoa) find_library(Cocoa_LIBRARY_REL NAMES ${Cocoa_LIBRARY_NAMES} HINTS ${Cocoa_LIB_SEARCH_PATH} ${Cocoa_PKGC_LIBRARY_DIRS}) find_library(Cocoa_LIBRARY_DBG NAMES ${Cocoa_LIBRARY_NAMES_DBG} HINTS ${Cocoa_LIB_SEARCH_PATH} ${Cocoa_PKGC_LIBRARY_DIRS}) make_library_set(Cocoa_LIBRARY) findpkg_finish(Cocoa) add_parent_dir(Cocoa_INCLUDE_DIRS Cocoa_INCLUDE_DIR) mygui-3.2.2+dfsg/CMake/Packages/FindCppUnit.cmake000066400000000000000000000022321322721077200214540ustar00rootroot00000000000000# - Try to find CppUnit # Once done, this will define # # CppUnit_FOUND - system has CppUnit # CppUnit_INCLUDE_DIRS - the CppUnit include directories # CppUnit_LIBRARIES - link these to use CppUnit include(FindPkgMacros) findpkg_begin(CppUnit) # Get path, convert backslashes as ${ENV_${var}} getenv_path(CPPUNIT_HOME) # construct search paths set(CppUnit_PREFIX_PATH ${CPPUNIT_HOME} ${ENV_CPPUNIT_HOME}) create_search_paths(CppUnit) # redo search if prefix path changed clear_if_changed(CppUnit_PREFIX_PATH CppUnit_LIBRARY_FWK CppUnit_LIBRARY_REL CppUnit_LIBRARY_DBG CppUnit_INCLUDE_DIR ) set(CppUnit_LIBRARY_NAMES cppunit) get_debug_names(CppUnit_LIBRARY_NAMES) use_pkgconfig(CppUnit_PKGC cppunit) findpkg_framework(CppUnit) find_path(CppUnit_INCLUDE_DIR NAMES cppunit/Test.h HINTS ${CppUnit_INC_SEARCH_PATH} ${CppUnit_PKGC_INCLUDE_DIRS}) find_library(CppUnit_LIBRARY_REL NAMES ${CppUnit_LIBRARY_NAMES} HINTS ${CppUnit_LIB_SEARCH_PATH} ${CppUnit_PKGC_LIBRARY_DIRS}) find_library(CppUnit_LIBRARY_DBG NAMES ${CppUnit_LIBRARY_NAMES_DBG} HINTS ${CppUnit_LIB_SEARCH_PATH} ${CppUnit_PKGC_LIBRARY_DIRS}) make_library_set(CppUnit_LIBRARY) findpkg_finish(CppUnit) mygui-3.2.2+dfsg/CMake/Packages/FindDirectX.cmake000066400000000000000000000122171322721077200214400ustar00rootroot00000000000000# ----------------------------------------------------------------------------- # Find DirectX SDK # Define: # DirectX_FOUND # DirectX_INCLUDE_DIR # DirectX_LIBRARY if (MYGUI_STANDALONE_BUILD) SET(DirectX_INCLUDE_DIR "C:/MYGUIHACK DXSDK_DIR MYGUIBRACKETHACK/include" CACHE STRING "") SET(DirectX_LIBRARIES "d3d9.lib d3dx9.lib DxErr.lib dxguid.lib" CACHE STRING "") SET(DIRECTX_LIB_DIR "C:/MYGUIHACK DXSDK_DIR MYGUIBRACKETHACK/lib/x86" CACHE STRING "") SET(DirectX_FOUND TRUE) SET(DirectX11_INCLUDE_DIR "C:/MYGUIHACK DXSDK_DIR MYGUIBRACKETHACK/include" CACHE STRING "") SET(DirectX11_LIBRARIES "d3d11.lib d3dx11.lib DxErr.lib dxguid.lib dxgi.lib d3dcompiler.lib" CACHE STRING "") SET(DIRECTX11_LIB_DIR "C:/MYGUIHACK DXSDK_DIR MYGUIBRACKETHACK/lib/x86" CACHE STRING "") SET(DirectX11_FOUND TRUE) else() IF (NOT DIRECTX_DIR) set(DIRECTX_DIR "" CACHE PATH "Path to DirectX SDK (set it if you don't have DIrectX SDK properly installed or CMake can't find path to it)") ENDIF () if(WIN32) # The only platform it makes sense to check for DirectX SDK include(FindPkgMacros) findpkg_begin(DirectX) # Get path, convert backslashes as ${ENV_DXSDK_DIR} getenv_path(DXSDK_DIR) # construct search paths set(DirectX_PREFIX_PATH "${DIRECTX_DIR}" "${DXSDK_DIR}" "${ENV_DXSDK_DIR}" "C:/apps_x86/Microsoft DirectX SDK*" "C:/Program Files (x86)/Microsoft DirectX SDK*" "C:/apps/Microsoft DirectX SDK*" "C:/Program Files/Microsoft DirectX SDK*" "$ENV{ProgramFiles}/Microsoft DirectX SDK*" ) create_search_paths(DirectX) # redo search if prefix path changed clear_if_changed(DirectX_PREFIX_PATH DirectX_LIBRARY DirectX_INCLUDE_DIR ) find_path(DirectX_INCLUDE_DIR NAMES d3d9.h HINTS ${DirectX_INC_SEARCH_PATH}) # dlls are in DIRECTX_DIR/Developer Runtime/x64|x86 # lib files are in DIRECTX_DIR/Lib/x64|x86 if(CMAKE_CL_64) set(DirectX_LIBPATH_SUFFIX "x64") else(CMAKE_CL_64) set(DirectX_LIBPATH_SUFFIX "x86") endif(CMAKE_CL_64) find_library(DirectX_LIBRARY NAMES d3d9 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX_D3DX9_LIBRARY NAMES d3dx9 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX_DXERR9_LIBRARY NAMES dxerr HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX_DXGUID_LIBRARY NAMES dxguid HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) if(DirectX_INCLUDE_DIR) if (NOT DIRECTX_DIR) set(DIRECTX_DIR ${DirectX_INCLUDE_DIR}/.. CACHE PATH "Path to DirectX SDK (set it if you don't have DIrectX SDK properly installed or CMake can't find path to it)" FORCE) endif () endif(DirectX_INCLUDE_DIR) findpkg_finish(DirectX) set(DirectX_LIBRARIES ${DirectX_LIBRARIES} ${DirectX_D3DX9_LIBRARY} ${DirectX_DXERR9_LIBRARY} ${DirectX_DXGUID_LIBRARY} ) endif(WIN32) if(WIN32) # The only platform it makes sense to check for DirectX11 SDK include(FindPkgMacros) findpkg_begin(DirectX11) # Get path, convert backslashes as ${ENV_DXSDK_DIR} getenv_path(DXSDK_DIR) # construct search paths set(DirectX_PREFIX_PATH "${DIRECTX_DIR}" "${DXSDK_DIR}" "${ENV_DXSDK_DIR}" "C:/apps_x86/Microsoft DirectX SDK*" "C:/Program Files (x86)/Microsoft DirectX SDK*" "C:/apps/Microsoft DirectX SDK*" "C:/Program Files/Microsoft DirectX SDK*" "$ENV{ProgramFiles}/Microsoft DirectX SDK*" ) create_search_paths(DirectX) # redo search if prefix path changed clear_if_changed(DirectX_PREFIX_PATH DirectX11_LIBRARY DirectX11_INCLUDE_DIR ) find_path(DirectX11_INCLUDE_DIR NAMES d3d11.h HINTS ${DirectX_INC_SEARCH_PATH}) # dlls are in DIRECTX_DIR/Developer Runtime/x64|x86 # lib files are in DIRECTX_DIR/Lib/x64|x86 if(CMAKE_CL_64) set(DirectX_LIBPATH_SUFFIX "x64") else(CMAKE_CL_64) set(DirectX_LIBPATH_SUFFIX "x86") endif(CMAKE_CL_64) find_library(DirectX11_D3D11_LIBRARY NAMES d3d11 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX11_D3DX11_LIBRARY NAMES d3dx11 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX11_DXGUID_LIBRARY NAMES dxguid HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX11_DXGI_LIBRARY NAMES dxgi HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX11_DXERR_LIBRARY NAMES dxerr HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX11_COMPILER_LIBRARY NAMES d3dcompiler HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) if(DirectX11_INCLUDE_DIR) if (NOT DIRECTX_DIR) set(DIRECTX_DIR ${DirectX11_INCLUDE_DIR}/.. CACHE PATH "Path to DirectX SDK (set it if you don't have DIrectX SDK properly installed or CMake can't find path to it)" FORCE) endif () endif(DirectX11_INCLUDE_DIR) findpkg_finish(DirectX11) set(DirectX11_LIBRARIES ${DirectX11_LIBRARIES} ${DirectX11_D3D11_LIBRARY} ${DirectX11_D3DX11_LIBRARY} ${DirectX11_DXGI_LIBRARY} ${DirectX11_DXGUID_LIBRARY} ${DirectX11_DXERR_LIBRARY} ${DirectX11_COMPILER_LIBRARY} ) endif(WIN32) endif ()mygui-3.2.2+dfsg/CMake/Packages/FindDirectX11.cmake000066400000000000000000000032101322721077200215730ustar00rootroot00000000000000# ----------------------------------------------------------------------------- # Find DirectX11 SDK # Define: # DirectX11_FOUND # DirectX_INCLUDE_DIR # DirectX_LIBRARY if (MYGUI_STANDALONE_BUILD) SET(DirectX11_LIBRARIES "d3d11.lib d3dx11.lib DxErr.lib dxguid.lib dxgi.lib d3dcompiler.lib" CACHE STRING "") SET(DirectX11_FOUND TRUE) else() if(WIN32) # The only platform it makes sense to check for DirectX11 SDK include(FindPkgMacros) include(FindDirectX) findpkg_begin(DirectX11) if(CMAKE_CL_64) set(DirectX_LIBPATH_SUFFIX "x64") else(CMAKE_CL_64) set(DirectX_LIBPATH_SUFFIX "x86") endif(CMAKE_CL_64) find_library(DirectX11_D3D11_LIBRARY NAMES d3d11 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX11_D3DX11_LIBRARY NAMES d3dx11 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX11_DXGUID_LIBRARY NAMES dxguid HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX11_DXGI_LIBRARY NAMES dxgi HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX11_DXERR_LIBRARY NAMES dxerr HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX11_COMPILER_LIBRARY NAMES d3dcompiler HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) findpkg_finish(DirectX11) set(DirectX11_LIBRARIES ${DirectX11_LIBRARIES} ${DirectX11_D3D11_LIBRARY} ${DirectX11_D3DX11_LIBRARY} ${DirectX11_DXGI_LIBRARY} ${DirectX11_DXGUID_LIBRARY} ${DirectX11_DXERR_LIBRARY} ${DirectX11_COMPILER_LIBRARY} ) endif(WIN32) endif () mygui-3.2.2+dfsg/CMake/Packages/FindFreetype.cmake000066400000000000000000000040371322721077200216620ustar00rootroot00000000000000# - Try to find FreeType # Once done, this will define # # FREETYPE_FOUND - system has FreeType # FREETYPE_INCLUDE_DIRS - the FreeType include directories # FREETYPE_LIBRARIES - link these to use FreeType include(FindPkgMacros) findpkg_begin(FREETYPE) # Get path, convert backslashes as ${ENV_${var}} getenv_path(FREETYPE_HOME) # construct search paths set(FREETYPE_PREFIX_PATH ${FREETYPE_HOME} ${ENV_FREETYPE_HOME}) create_search_paths(FREETYPE) # redo search if prefix path changed clear_if_changed(FREETYPE_PREFIX_PATH FREETYPE_LIBRARY_FWK FREETYPE_LIBRARY_REL FREETYPE_LIBRARY_DBG FREETYPE_INCLUDE_DIR ) set(FREETYPE_LIBRARY_NAMES freetype253 freetype252 freetype251 freetype2501 freetype250 freetype2412 freetype2411 freetype2410 freetype249 freetype248 freetype246 freetype2311 freetype239 freetype238 freetype235 freetype219 freetype) get_debug_names(FREETYPE_LIBRARY_NAMES) use_pkgconfig(FREETYPE_PKGC freetype2) # prefer static library over framework set(CMAKE_FIND_FRAMEWORK "LAST") findpkg_framework(FREETYPE) message(STATUS "CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}") find_path(FREETYPE_INCLUDE_DIR NAMES freetype.h freetype/freetype.h HINTS ${FREETYPE_INC_SEARCH_PATH} ${FREETYPE_PKGC_INCLUDE_DIRS} PATH_SUFFIXES freetype2) find_path(FREETYPE_FT2BUILD_INCLUDE_DIR NAMES ft2build.h HINTS ${FREETYPE_INC_SEARCH_PATH} ${FREETYPE_PKGC_INCLUDE_DIRS} PATH_SUFFIXES freetype2) find_library(FREETYPE_LIBRARY_REL NAMES ${FREETYPE_LIBRARY_NAMES} HINTS ${FREETYPE_LIB_SEARCH_PATH} ${FREETYPE_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" release relwithdebinfo minsizerel) find_library(FREETYPE_LIBRARY_DBG NAMES ${FREETYPE_LIBRARY_NAMES_DBG} HINTS ${FREETYPE_LIB_SEARCH_PATH} ${FREETYPE_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" debug) make_library_set(FREETYPE_LIBRARY) findpkg_finish(FREETYPE) mark_as_advanced(FREETYPE_FT2BUILD_INCLUDE_DIR) if (NOT FREETYPE_FT2BUILD_INCLUDE_DIR STREQUAL FREETYPE_INCLUDE_DIR) set(FREETYPE_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIRS} ${FREETYPE_FT2BUILD_INCLUDE_DIR}) endif () # Reset framework finding set(CMAKE_FIND_FRAMEWORK "FIRST") mygui-3.2.2+dfsg/CMake/Packages/FindIOKit.cmake000066400000000000000000000021521322721077200210520ustar00rootroot00000000000000# - Try to find IOKit # Once done, this will define # # IOKit_FOUND - system has IOKit # IOKit_INCLUDE_DIRS - the IOKit include directories # IOKit_LIBRARIES - link these to use IOKit include(FindPkgMacros) findpkg_begin(IOKit) # construct search paths set(IOKit_PREFIX_PATH ${IOKit_HOME} $ENV{IOKit_HOME} ${MYGUI_HOME} $ENV{MYGUI_HOME}) create_search_paths(IOKit) # redo search if prefix path changed clear_if_changed(IOKit_PREFIX_PATH IOKit_LIBRARY_FWK IOKit_LIBRARY_REL IOKit_LIBRARY_DBG IOKit_INCLUDE_DIR ) set(IOKit_LIBRARY_NAMES IOKit) get_debug_names(IOKit_LIBRARY_NAMES) use_pkgconfig(IOKit_PKGC IOKit) findpkg_framework(IOKit) find_path(IOKit_INCLUDE_DIR NAMES IOKitLib.h HINTS ${IOKit_INC_SEARCH_PATH} ${IOKit_PKGC_INCLUDE_DIRS} PATH_SUFFIXES IOKit) find_library(IOKit_LIBRARY_REL NAMES ${IOKit_LIBRARY_NAMES} HINTS ${IOKit_LIB_SEARCH_PATH} ${IOKit_PKGC_LIBRARY_DIRS}) find_library(IOKit_LIBRARY_DBG NAMES ${IOKit_LIBRARY_NAMES_DBG} HINTS ${IOKit_LIB_SEARCH_PATH} ${IOKit_PKGC_LIBRARY_DIRS}) make_library_set(IOKit_LIBRARY) findpkg_finish(IOKit) add_parent_dir(IOKit_INCLUDE_DIRS IOKit_INCLUDE_DIR) mygui-3.2.2+dfsg/CMake/Packages/FindOGRE_Old.cmake000066400000000000000000000123451322721077200214320ustar00rootroot00000000000000# Find OGRE includes and library # # This module defines # OGRE_INCLUDE_DIR # OGRE_LIBRARIES, the libraries to link against to use OGRE. # OGRE_LIB_DIR, the location of the libraries # OGRE_FOUND, If false, do not try to use OGRE include(FindPkgMacros) # Try to find framework first on Mac OS X if (APPLE) find_framework(OGRE) endif () if (NOT OGRE_FOUND) # Then try everything else if (MYGUI_STANDALONE_BUILD) CMAKE_POLICY(PUSH) SET(OGRE_INCLUDE_DIR "C:/MYGUIHACK OGRE_HOME MYGUIBRACKETHACK/include" "C:/MYGUIHACK OGRE_SRC MYGUIBRACKETHACK/OgreMain/include" "C:/MYGUIHACK OGRE_HOME MYGUIBRACKETHACK/include/OGRE" "C:/MYGUIHACK OGRE_HOME MYGUIBRACKETHACK/boost_1_42" CACHE STRING "") SET(OGRE_LIBRARIES "debug;OgreMain_d;optimized;OgreMain" CACHE STRING "") SET(OGRE_LIB_DIR "C:/MYGUIHACK OGRE_HOME MYGUIBRACKETHACK/lib" "C:/MYGUIHACK OGRE_SRC MYGUIBRACKETHACK/lib" "C:/MYGUIHACK OGRE_HOME MYGUIBRACKETHACK/boost_1_42/lib" CACHE STRING "") SET(OGRE_FOUND TRUE) CMAKE_POLICY(POP) else() if(WIN32 OR APPLE) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${OGRE_SOURCE_DIR}/CMake ${OGRE_SOURCE_DIR}/CMake/Packages) else() set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} /usr/lib/OGRE/cmake/ /usr/local/lib/OGRE/cmake /usr/share/OGRE/cmake/modules /usr/local/share/OGRE/cmake/modules) endif() IF (NOT OGRE_SOURCE_DIR) set(OGRE_SOURCE_DIR "" CACHE PATH "Path to Ogre sources (set it if you don't have OGRE_HOME or OGRE_SRC environment variables)") ENDIF () if (NOT OGRE_BUILD) set(OGRE_BUILD ${OGRE_SOURCE_DIR} CACHE PATH "Path to Ogre build directory (same as OGRE_SOURCE_DIR by default)") endif () if (EXISTS ${OGRE_SOURCE_DIR}/CMake) MESSAGE(STATUS "Original FindOGRE.cmake found in OGRE_SOURCE_DIR, trying to use it") set (OGRE_HOME ${OGRE_SOURCE_DIR}) FIND_PACKAGE(OGRE) else() FIND_PACKAGE(OGRE) endif() if (OGRE_FOUND) MESSAGE(STATUS "Ogre was found with it's own CMake script") set(BOOST_ROOT ${BOOST_ROOT} CACHE PATH "Path to Boost (required if Ogre was built with boost)") FIND_PACKAGE(Boost) if (Boost_FOUND) set (OGRE_INCLUDE_DIR ${OGRE_INCLUDE_DIR} ${Boost_INCLUDE_DIR}) set (OGRE_LIB_DIR ${OGRE_LIB_DIR} ${Boost_LIBRARY_DIRS} ${BOOST_LIBRARYDIR}) else() # trying to get boost from OGRE_SOURCE_DIR set (OGRE_INCLUDE_DIR ${OGRE_INCLUDE_DIR} ${OGRE_SOURCE_DIR}/boost) set (OGRE_LIB_DIR ${OGRE_LIB_DIR} ${OGRE_SOURCE_DIR}/boost/lib) endif() #add_definitions("-DBOOST_ALL_NO_LIB") return() endif () # now trying to find it by our script CMAKE_POLICY(PUSH) IF (OGRE_LIBRARIES AND OGRE_INCLUDE_DIR) SET(OGRE_FIND_QUIETLY TRUE) # Already in cache, be silent ENDIF (OGRE_LIBRARIES AND OGRE_INCLUDE_DIR) IF (WIN32) #Windows MESSAGE(STATUS "Looking for OGRE") SET(OGRESDK $ENV{OGRE_HOME}) SET(OGRESOURCE $ENV{OGRE_SRC}) IF (OGRE_SOURCE_DIR) MESSAGE(STATUS "Using OGRE built from source (from specified path)") SET(OGRE_INCLUDE_DIR ${OGRE_SOURCE_DIR}/OgreMain/include ${OGRE_SOURCE_DIR}/include) SET(OGRE_LIB_DIR ${OGRE_SOURCE_DIR}/lib) ELSEIF (OGRESDK) MESSAGE(STATUS "Using OGRE SDK") STRING(REGEX REPLACE "[\\]" "/" OGRESDK "${OGRESDK}") SET(OGRE_INCLUDE_DIR ${OGRESDK}/include/OGRE ${OGRESDK}/include) SET(OGRE_LIB_DIR ${OGRESDK}/lib) IF (NOT OGRE_SOURCE_DIR) set(OGRE_SOURCE_DIR $ENV{OGRE_HOME} CACHE PATH "Path to Ogre sources (set it if you don't have OGRE_HOME or OGRE_SRC environment variables)") ENDIF () ELSEIF (OGRESOURCE) MESSAGE(STATUS "Using OGRE built from source") SET(OGRE_INCLUDE_DIR $ENV{OGRE_SRC}/OgreMain/include ${OGRE_SOURCE_DIR}/include) SET(OGRE_LIB_DIR $ENV{OGRE_SRC}/lib) IF (NOT OGRE_SOURCE_DIR) set(OGRE_SOURCE_DIR $ENV{OGRE_SRC} CACHE PATH "Path to Ogre sources (set it if you don't have OGRE_HOME or OGRE_SRC environment variables)") ENDIF () ENDIF () IF (OGRESDK OR OGRESOURCE OR OGRE_SOURCE_DIR) SET(OGRE_LIBRARIES debug OgreMain_d optimized OgreMain) SET(OGRE_INCLUDE_DIR ${OGRE_INCLUDE_DIR} CACHE PATH "") SET(OGRE_LIBRARIES ${OGRE_LIBRARIES} CACHE STRING "") SET(OGRE_LIB_DIR ${OGRE_LIB_DIR} CACHE PATH "") ENDIF () ELSE (WIN32) #Unix IF (OGRE_SOURCE_DIR) MESSAGE(STATUS "Using OGRE built from source (from specified path)") SET(OGRE_INCLUDE_DIR ${OGRE_SOURCE_DIR}/OgreMain/include) SET(OGRE_LIB_DIR ${OGRE_SOURCE_DIR}/lib) ELSE () CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR) FIND_PACKAGE(PkgConfig) PKG_SEARCH_MODULE(OGRE OGRE) SET(OGRE_INCLUDE_DIR ${OGRE_INCLUDE_DIRS}) SET(OGRE_LIB_DIR ${OGRE_LIBDIR}) ENDIF () SET(OGRE_INCLUDE_DIR ${OGRE_INCLUDE_DIR} CACHE PATH "") SET(OGRE_LIBRARIES ${OGRE_LIBRARIES} CACHE STRING "") SET(OGRE_LIB_DIR ${OGRE_LIB_DIR} CACHE PATH "") ENDIF (WIN32) IF (OGRE_INCLUDE_DIR AND OGRE_LIBRARIES) SET(OGRE_FOUND TRUE) ENDIF (OGRE_INCLUDE_DIR AND OGRE_LIBRARIES) IF (OGRE_FOUND) IF (NOT OGRE_FIND_QUIETLY) MESSAGE(STATUS " libraries : ${OGRE_LIBRARIES} from ${OGRE_LIB_DIR}") MESSAGE(STATUS " includes : ${OGRE_INCLUDE_DIR}") ENDIF (NOT OGRE_FIND_QUIETLY) ELSE (OGRE_FOUND) IF (OGRE_FIND_REQUIRED) MESSAGE(FATAL_ERROR "Could not find OGRE") ENDIF (OGRE_FIND_REQUIRED) ENDIF (OGRE_FOUND) CMAKE_POLICY(POP) endif() endif() mygui-3.2.2+dfsg/CMake/Packages/FindOIS.cmake000066400000000000000000000024371322721077200205330ustar00rootroot00000000000000# - Try to find OIS # Once done, this will define # # OIS_FOUND - system has OIS # OIS_INCLUDE_DIRS - the OIS include directories # OIS_LIBRARIES - link these to use OIS include(FindPkgMacros) findpkg_begin(OIS) # Get path, convert backslashes as ${ENV_${var}} getenv_path(OIS_HOME) getenv_path(MYGUI_HOME) getenv_path(MYGUI_SOURCE) # construct search paths set(OIS_PREFIX_PATH ${OIS_HOME} ${ENV_OIS_HOME} ${MYGUI_SOURCE}/Dependencies ${ENV_MYGUI_SOURCE}/Dependencies ${MYGUI_HOME} ${ENV_MYGUI_HOME}) create_search_paths(OIS) # redo search if prefix path changed clear_if_changed(OIS_PREFIX_PATH OIS_LIBRARY_FWK OIS_LIBRARY_REL OIS_LIBRARY_DBG OIS_INCLUDE_DIR ) set(OIS_LIBRARY_NAMES OIS) get_debug_names(OIS_LIBRARY_NAMES) use_pkgconfig(OIS_PKGC OIS) findpkg_framework(OIS) find_path(OIS_INCLUDE_DIR NAMES OIS.h HINTS ${OIS_INC_SEARCH_PATH} ${OIS_PKGC_INCLUDE_DIRS} PATH_SUFFIXES OIS) find_library(OIS_LIBRARY_REL NAMES ${OIS_LIBRARY_NAMES} HINTS ${OIS_LIB_SEARCH_PATH} ${OIS_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" release relwithdebinfo minsizerel) find_library(OIS_LIBRARY_DBG NAMES ${OIS_LIBRARY_NAMES_DBG} HINTS ${OIS_LIB_SEARCH_PATH} ${OIS_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" debug) make_library_set(OIS_LIBRARY) findpkg_finish(OIS) add_parent_dir(OIS_INCLUDE_DIRS OIS_INCLUDE_DIR) mygui-3.2.2+dfsg/CMake/Packaging.cmake000066400000000000000000000040221322721077200174360ustar00rootroot00000000000000option(MYGUI_CREATE_PACKAGE "Create package." FALSE) if (MYGUI_CREATE_PACKAGE) set(CPACK_PACKAGE_VERSION ${MYGUI_VERSION}) set(CPACK_PACKAGE_VERSION_MAJOR ${MYGUI_VERSION_MAJOR}) set(CPACK_PACKAGE_VERSION_MINOR ${MYGUI_VERSION_MINOR}) set(CPACK_PACKAGE_VERSION_PATCH ${MYGUI_VERSION_PATCH}) set(CPACK_INSTALL_CMAKE_PROJECTS "${MYGUI_BINARY_DIR}" "MYGUI" "ALL" "/") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyGUI - fast, flexible and simple GUI") set(CPACK_PACKAGE_INSTALL_DIRECTORY "MYGUI") set(CPACK_PACKAGE_NAME "MYGUI") set(CPACK_PACKAGE_VENDOR "") set(CPACK_RESOURCE_FILE_LICENSE "${MYGUI_SOURCE_DIR}/COPYING.LESSER") set(CPACK_PACKAGE_CONTACT "MYGUI Team ") if (WIN32 AND NOT UNIX) set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "WriteRegStr \\\${WriteEnvStr_RegKey} \\\"MYGUI_HOME\\\" $INSTDIR") # There is a bug in NSIS that does not handle full unix paths properly. Make # sure there is at least one set of four (4) backlasshes. SET(CPACK_PACKAGE_ICON "${MYGUI_SOURCE_DIR}/Media/Common/Sources\\\\MyGUI_Logo.bmp") SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin/Debug\\\\LayoutEditor.exe") SET(CPACK_NSIS_MUI_ICON "Common/Base\\\\MyGUI.ico") SET(CPACK_NSIS_DISPLAY_NAME "MyGUI") SET(CPACK_NSIS_HELP_LINK "http://my-gui.sourceforge.net/") # SET(CPACK_NSIS_MENU_LINKS # "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-gui.html" "cmake-gui Help" # "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake.html" "CMake Help" # "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-properties.html" # "CMake Properties and Variables Help" # "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/ctest.html" "CTest Help" # "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-modules.html" "CMake Modules Help" # "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-commands.html" "CMake Commands Help" # "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cpack.html" "CPack Help" # "http://MyGUI.info" "MyGUI Web Site" # ) endif () include(CPack) endif () mygui-3.2.2+dfsg/CMake/Templates/000077500000000000000000000000001322721077200165105ustar00rootroot00000000000000mygui-3.2.2+dfsg/CMake/Templates/MYGUI.pc.in000066400000000000000000000005221322721077200203320ustar00rootroot00000000000000prefix=@MYGUI_PREFIX_PATH@ exec_prefix=${prefix} libdir=${prefix}/lib includedir=${prefix}/include Name: MyGUI Description: Fast, flexible and simple GUI Version: @MYGUI_VERSION@ URL: http://mygui.info Libs: -L${libdir} -lMyGUIEngine@MYGUI_LIB_SUFFIX@ @MYGUI_ADDITIONAL_LIBS@ Cflags: -I${includedir} -I${includedir}/MYGUI @MYGUI_CFLAGS@ mygui-3.2.2+dfsg/CMake/Templates/MYGUIConfig.cmake.in000066400000000000000000000012641322721077200221420ustar00rootroot00000000000000# Find MYGUI includes and library # # This module defines # MYGUI_INCLUDE_DIRS # MYGUI_LIBRARIES, the libraries to link against to use MYGUI. # MYGUI_LIBRARY_DIRS, the location of the libraries # MYGUI_FOUND, If false, do not try to use MYGUI # include(FindPackageMessage) set(MYGUI_PREFIX_DIR "@CMAKE_INSTALL_PREFIX@") get_filename_component(MYGUI_LIBRARY_DIRS "${MYGUI_PREFIX_DIR}/lib" ABSOLUTE) get_filename_component(MYGUI_INCLUDE_DIRS "${MYGUI_PREFIX_DIR}/include/MYGUI" ABSOLUTE) set(MYGUI_LIBRARIES "MyGUIEngine") message(STATUS "Found MYGUI") message(STATUS " libraries : '${MYGUI_LIBRARIES}' from ${MYGUI_LIBRARY_DIRS}") message(STATUS " includes : ${MYGUI_INCLUDE_DIRS}") mygui-3.2.2+dfsg/CMake/Templates/MYGUIConfigVersion.cmake.in000066400000000000000000000016571322721077200235160ustar00rootroot00000000000000# MYGUI CMake package file # - check if package version satisfies requested version set(PACKAGE_VERSION @MYGUI_VERSION@) set(PACKAGE_VERSION_MAJOR @MYGUI_VERSION_MAJOR@) set(PACKAGE_VERSION_MINOR @MYGUI_VERSION_MINOR@) set(PACKAGE_VERSION_EXACT FALSE) set(PACKAGE_VERSION_COMPATIBLE FALSE) if(${PACKAGE_VERSION} VERSION_EQUAL ${PACKAGE_FIND_VERSION}) set(PACKAGE_VERSION_EXACT TRUE) set(PACKAGE_VERSION_COMPATIBLE TRUE) elseif(${PACKAGE_VERSION} VERSION_GREATER ${PACKAGE_FIND_VERSION}) # compatibility is only guaranteed if major and minor version numbers match if (PACKAGE_FIND_VERSION_MAJOR EQUAL ${PACKAGE_VERSION_MAJOR} AND PACKAGE_FIND_VERSION_MINOR EQUAL ${PACKAGE_VERSION_MINOR}) set(PACKAGE_VERSION_COMPATIBLE TRUE) endif (PACKAGE_FIND_VERSION_MAJOR EQUAL ${PACKAGE_VERSION_MAJOR} AND PACKAGE_FIND_VERSION_MINOR EQUAL ${PACKAGE_VERSION_MINOR}) endif(${PACKAGE_VERSION} VERSION_EQUAL ${PACKAGE_FIND_VERSION}) mygui-3.2.2+dfsg/CMake/Templates/MYGUIStatic.pc.in000066400000000000000000000005631322721077200215070ustar00rootroot00000000000000prefix=@MYGUI_PREFIX_PATH@ exec_prefix=${prefix} libdir=${prefix}/lib includedir=${prefix}/include Name: MyGUI (static lib) Description: Fast, flexible and simple GUI Version: @MYGUI_VERSION@ URL: http://mygui.info Requires: freetype2 Libs: -L${libdir} -lMyGUIEngine@MYGUI_LIB_SUFFIX@ @MYGUI_ADDITIONAL_LIBS@ Cflags: -I${includedir} -I${includedir}/MYGUI @MYGUI_CFLAGS@ mygui-3.2.2+dfsg/CMake/Templates/VisualStudio2010UserFile.vcxproj.user.in000066400000000000000000000022321322721077200261030ustar00rootroot00000000000000 $(OutDir) WindowsLocalDebugger $(OutDir) WindowsLocalDebugger $(OutDir) WindowsLocalDebugger $(OutDir) WindowsLocalDebugger mygui-3.2.2+dfsg/CMake/Templates/VisualStudioUserFile.vcproj.user.in000066400000000000000000000030421322721077200254100ustar00rootroot00000000000000 mygui-3.2.2+dfsg/CMake/Templates/buildsettings.h.in000066400000000000000000000002141322721077200221430ustar00rootroot00000000000000#ifndef __Custom_Config_H_ #define __Custom_Config_H_ // CMake auto-generated configuration options #cmakedefine MYGUI_STATIC_LIB #endif mygui-3.2.2+dfsg/CMake/Templates/html.cfg.in000066400000000000000000000217631322721077200205530ustar00rootroot00000000000000# Doxyfile 1.5.3 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = MYGUI PROJECT_NUMBER = ${MYGUI_VERSION} OUTPUT_DIRECTORY = ${MYGUI_BINARY_DIR}/api/ CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class " \ "The $name widget " \ "The $name file " \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = YES INLINE_INHERITED_MEMB = YES FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 4 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO DISTRIBUTE_GROUP_DOC = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = NO SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = NO GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES SHOW_DIRECTORIES = YES FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text " WARN_LOGFILE = ${MYGUI_BINARY_DIR}/doxygen_warnings.log #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ${MYGUI_SOURCE_DIR}/MyGUIEngine \ ${MYGUI_SOURCE_DIR}/Docs/src \ main_page.txt INPUT_ENCODING = UTF-8 FILE_PATTERNS = MyGUI_*.h RECURSIVE = YES EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = *UTF* EXCLUDE_SYMBOLS = EXAMPLE_PATH = EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES REFERENCES_LINK_SOURCE = YES USE_HTAGS = NO VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 3 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = header.html HTML_FOOTER = footer.html HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = YES HTML_DYNAMIC_SECTIONS = NO CHM_FILE = OgreAPIReference.chm HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = YES DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4 EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = YES USE_PDFLATEX = YES LATEX_BATCHMODE = YES LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES MSCGEN_PATH = HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = NO GROUP_GRAPHS = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = NO INCLUDED_BY_GRAPH = NO CALL_GRAPH = NO CALLER_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = gif DOT_PATH = DOTFILE_DIRS = DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 4 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = YES GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO mygui-3.2.2+dfsg/CMake/Templates/plugins.cfg.in000066400000000000000000000002731322721077200212610ustar00rootroot00000000000000# Defines plugins to load # Define plugin folder PluginFolder=@MYGUI_PLUGIN_DIR_REL@ # Define plugins @MYGUI_NO_PLUGIN_OGRE_DIRECTX@Plugin=RenderSystem_Direct3D9 Plugin=RenderSystem_GL mygui-3.2.2+dfsg/CMake/Templates/plugins_d.cfg.in000066400000000000000000000002771322721077200215700ustar00rootroot00000000000000# Defines plugins to load # Define plugin folder PluginFolder=@MYGUI_PLUGIN_DIR_DBG@ # Define plugins @MYGUI_NO_PLUGIN_OGRE_DIRECTX@Plugin=RenderSystem_Direct3D9_d Plugin=RenderSystem_GL_d mygui-3.2.2+dfsg/CMake/Templates/resources.xml.in000066400000000000000000000002231322721077200216460ustar00rootroot00000000000000 @MYGUI_MEDIA_DIR@ @MYGUI_MEDIA_DIR@/MyGUI_Media mygui-3.2.2+dfsg/CMake/Templates/updateListFiles.bat.in000066400000000000000000000001471322721077200227100ustar00rootroot00000000000000chdir @MYGUI_SOURCE_DIR@/Scripts @MYGUI_SOURCE_DIR@/Scripts/ConvertVcxprojToList.exe @MYGUI_BINARY_DIR@mygui-3.2.2+dfsg/CMake/Utils/000077500000000000000000000000001322721077200156525ustar00rootroot00000000000000mygui-3.2.2+dfsg/CMake/Utils/FindPkgMacros.cmake000066400000000000000000000117241322721077200213500ustar00rootroot00000000000000################################################################## # Provides some common functionality for the FindPackage modules ################################################################## # Begin processing of package macro(findpkg_begin PREFIX) if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS "Looking for ${PREFIX}...") endif () endmacro(findpkg_begin) # Display a status message unless FIND_QUIETLY is set macro(pkg_message PREFIX) if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS ${ARGN}) endif () endmacro(pkg_message) # Get environment variable, define it as ENV_$var and make sure backslashes are converted to forward slashes macro(getenv_path VAR) set(ENV_${VAR} $ENV{${VAR}}) # replace won't work if var is blank if (ENV_${VAR}) string( REGEX REPLACE "\\\\" "/" ENV_${VAR} ${ENV_${VAR}} ) endif () endmacro(getenv_path) # Construct search paths for includes and libraries from a PREFIX_PATH macro(create_search_paths PREFIX) foreach(dir ${${PREFIX}_PREFIX_PATH}) set(${PREFIX}_INC_SEARCH_PATH ${${PREFIX}_INC_SEARCH_PATH} ${dir}/include ${dir}/include/${PREFIX} ${dir}/Headers) set(${PREFIX}_LIB_SEARCH_PATH ${${PREFIX}_LIB_SEARCH_PATH} ${dir}/lib ${dir}/lib/${PREFIX} ${dir}/Libs) endforeach(dir) set(${PREFIX}_FRAMEWORK_SEARCH_PATH ${${PREFIX}_PREFIX_PATH}) endmacro(create_search_paths) # clear cache variables if a certain variable changed macro(clear_if_changed TESTVAR) # test against internal check variable if (NOT "${${TESTVAR}}" STREQUAL "${${TESTVAR}_INT_CHECK}") message(STATUS "${TESTVAR} changed.") foreach(var ${ARGN}) set(${var} "NOTFOUND" CACHE STRING "x" FORCE) endforeach(var) endif () set(${TESTVAR}_INT_CHECK ${${TESTVAR}} CACHE INTERNAL "x" FORCE) endmacro(clear_if_changed) # Try to get some hints from pkg-config, if available macro(use_pkgconfig PREFIX PKGNAME) find_package(PkgConfig) if (PKG_CONFIG_FOUND) pkg_check_modules(${PREFIX} ${PKGNAME}) endif () endmacro (use_pkgconfig) # Couple a set of release AND debug libraries (or frameworks) macro(make_library_set PREFIX) if (${PREFIX}_FWK) set(${PREFIX} ${${PREFIX}_FWK}) elseif (${PREFIX}_REL AND ${PREFIX}_DBG) set(${PREFIX} optimized ${${PREFIX}_REL} debug ${${PREFIX}_DBG}) elseif (${PREFIX}_REL) set(${PREFIX} ${${PREFIX}_REL}) elseif (${PREFIX}_DBG) set(${PREFIX} ${${PREFIX}_DBG}) endif () endmacro(make_library_set) # Generate debug names from given release names macro(get_debug_names PREFIX) foreach(i ${${PREFIX}}) set(${PREFIX}_DBG ${${PREFIX}_DBG} ${i}d ${i}D ${i}_d ${i}_D) endforeach(i) endmacro(get_debug_names) # Add the parent dir from DIR to VAR macro(add_parent_dir VAR DIR) get_filename_component(${DIR}_TEMP "${${DIR}}/.." ABSOLUTE) set(${VAR} ${${VAR}} ${${DIR}_TEMP}) endmacro(add_parent_dir) # Do the final processing for the package find. macro(findpkg_finish PREFIX) # skip if already processed during this run if (NOT ${PREFIX}_FOUND) if (${PREFIX}_INCLUDE_DIR AND ${PREFIX}_LIBRARY) set(${PREFIX}_FOUND TRUE) set(${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIR}) set(${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARY}) if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS "Found ${PREFIX}: ${${PREFIX}_LIBRARIES}") endif () else () if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS "Could not locate ${PREFIX}") endif () if (${PREFIX}_FIND_REQUIRED) message(FATAL_ERROR "Required library ${PREFIX} not found! Install the library (including dev packages) and try again. If the library is already installed, set the missing variables manually in cmake.") endif () endif () mark_as_advanced(${PREFIX}_INCLUDE_DIR ${PREFIX}_LIBRARY ${PREFIX}_LIBRARY_REL ${PREFIX}_LIBRARY_DBG ${PREFIX}_LIBRARY_FWK) endif () endmacro(findpkg_finish) # Simplified framework finder MACRO (find_framework fwk) find_library(${fwk}_LIBRARY ${fwk}) if (${fwk}_LIBRARY) set(${fwk}_FOUND TRUE) set(${fwk}_INCLUDE "${${fwk}_LIBRARY}/Headers") endif (${fwk}_LIBRARY) # Compatibility stuff set(${fwk}_INCLUDE_DIR ${${fwk}_INCLUDE}) set(${fwk}_INCLUDE_DIRS ${${fwk}_INCLUDE}) set(${fwk}_LIBRARIES ${${fwk}_LIBRARY}) ENDMACRO (find_framework) # Slightly customised framework finder MACRO(findpkg_framework fwk) IF(APPLE) SET(${fwk}_FRAMEWORK_PATH ${${fwk}_FRAMEWORK_SEARCH_PATH} ${CMAKE_FRAMEWORK_PATH} ~/Library/Frameworks /Library/Frameworks /System/Library/Frameworks /Network/Library/Frameworks ) FOREACH(dir ${${fwk}_FRAMEWORK_PATH}) SET(fwkpath ${dir}/${fwk}.framework) IF(EXISTS ${fwkpath}) SET(${fwk}_FRAMEWORK_INCLUDES ${${fwk}_FRAMEWORK_INCLUDES} ${fwkpath}/Headers ${fwkpath}/PrivateHeaders) if (NOT ${fwk}_LIBRARY_FWK) SET(${fwk}_LIBRARY_FWK "-framework ${fwk}" CACHE STRING "${fwk} library") endif () ENDIF(EXISTS ${fwkpath}) ENDFOREACH(dir) ENDIF(APPLE) ENDMACRO(findpkg_framework) mygui-3.2.2+dfsg/CMake/Utils/MacroLogFeature.cmake000066400000000000000000000121761322721077200217020ustar00rootroot00000000000000# This file defines the Feature Logging macros. # # MACRO_LOG_FEATURE(VAR FEATURE DESCRIPTION URL [REQUIRED [MIN_VERSION [COMMENTS]]]) # Logs the information so that it can be displayed at the end # of the configure run # VAR : TRUE or FALSE, indicating whether the feature is supported # FEATURE: name of the feature, e.g. "libjpeg" # DESCRIPTION: description what this feature provides # URL: home page # REQUIRED: TRUE or FALSE, indicating whether the featue is required # MIN_VERSION: minimum version number. empty string if unneeded # COMMENTS: More info you may want to provide. empty string if unnecessary # # MACRO_DISPLAY_FEATURE_LOG() # Call this to display the collected results. # Exits CMake with a FATAL error message if a required feature is missing # # Example: # # INCLUDE(MacroLogFeature) # # FIND_PACKAGE(JPEG) # MACRO_LOG_FEATURE(JPEG_FOUND "libjpeg" "Support JPEG images" "http://www.ijg.org" TRUE "3.2a" "") # ... # MACRO_DISPLAY_FEATURE_LOG() # Copyright (c) 2006, Alexander Neundorf, # Copyright (c) 2006, Allen Winter, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. IF (NOT _macroLogFeatureAlreadyIncluded) SET(_file ${CMAKE_BINARY_DIR}/MissingRequirements.txt) IF (EXISTS ${_file}) FILE(REMOVE ${_file}) ENDIF (EXISTS ${_file}) SET(_file ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) IF (EXISTS ${_file}) FILE(REMOVE ${_file}) ENDIF (EXISTS ${_file}) SET(_file ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) IF (EXISTS ${_file}) FILE(REMOVE ${_file}) ENDIF (EXISTS ${_file}) SET(_macroLogFeatureAlreadyIncluded TRUE) ENDIF (NOT _macroLogFeatureAlreadyIncluded) MACRO(MACRO_LOG_FEATURE _var _package _description _url ) # _required _minvers _comments) SET(_required "${ARGV4}") SET(_minvers "${ARGV5}") SET(_comments "${ARGV6}") IF (${_var}) SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) ELSE (${_var}) IF (${_required} MATCHES "[Tt][Rr][Uu][Ee]") SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/MissingRequirements.txt) ELSE (${_required} MATCHES "[Tt][Rr][Uu][Ee]") SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) ENDIF (${_required} MATCHES "[Tt][Rr][Uu][Ee]") ENDIF (${_var}) SET(_logtext "+ ${_package}") IF (NOT ${_var}) IF (${_minvers} MATCHES ".*") SET(_logtext "${_logtext}, ${_minvers}") ENDIF (${_minvers} MATCHES ".*") SET(_logtext "${_logtext}: ${_description} <${_url}>") IF (${_comments} MATCHES ".*") SET(_logtext "${_logtext}\n${_comments}") ENDIF (${_comments} MATCHES ".*") # SET(_logtext "${_logtext}\n") #double-space missing features? ENDIF (NOT ${_var}) FILE(APPEND "${_LOGFILENAME}" "${_logtext}\n") ENDMACRO(MACRO_LOG_FEATURE) MACRO(MACRO_DISPLAY_FEATURE_LOG) SET(_file ${CMAKE_BINARY_DIR}/MissingRequirements.txt) IF (EXISTS ${_file}) FILE(READ ${_file} _requirements) MESSAGE(FATAL_ERROR "\n-----------------------------------------------------------------------------\n-- The following REQUIRED packages could NOT be located on your system.\n-- Please install them before continuing this software installation.\n-- If you are in Windows, try passing -DMYGUI_DEPENDENCIES_DIR=\n-- Also check that you buildind with RenderSystem that you need or set another with -DMYGUI_RENDERSYSTEM=<3, 4, 5, 6 for OGRE, OpenGL, Direct3D_9 or Direct3D_11>\n-----------------------------------------------------------------------------\n${_requirements}-----------------------------------------------------------------------------") FILE(REMOVE ${_file}) MESSAGE(FATAL_ERROR "Exiting: Missing Requirements") ENDIF (EXISTS ${_file}) SET(_summary "\n") SET(_elist 0) SET(_file ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) IF (EXISTS ${_file}) SET(_elist 1) FILE(READ ${_file} _enabled) FILE(REMOVE ${_file}) SET(_summary "${_summary}-----------------------------------------------------------------------------\n-- The following external packages were located on your system.\n-- This installation will have the extra features provided by these packages.\n${_enabled}") ENDIF (EXISTS ${_file}) SET(_dlist 0) SET(_file ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) IF (EXISTS ${_file}) SET(_dlist 1) FILE(READ ${_file} _disabled) FILE(REMOVE ${_file}) SET(_summary "${_summary}-----------------------------------------------------------------------------\n-- The following OPTIONAL packages could NOT be located on your system.\n-- Consider installing them to enable more features from this software.\n${_disabled}") ELSE (EXISTS ${_file}) IF (${_elist}) SET(_summary "${_summary}Congratulations! All external packages have been found.\n") ENDIF (${_elist}) ENDIF (EXISTS ${_file}) IF (${_elist} OR ${_dlist}) SET(_summary "${_summary}-----------------------------------------------------------------------------\n") ENDIF (${_elist} OR ${_dlist}) MESSAGE(STATUS "${_summary}") ENDMACRO(MACRO_DISPLAY_FEATURE_LOG) mygui-3.2.2+dfsg/CMake/Utils/MyGUIConfigTargets.cmake000066400000000000000000000362421322721077200222750ustar00rootroot00000000000000# Configure settings and install targets # FIXME: Copypasted from Ogre and need lots of changes if (WIN32) set(MYGUI_RELEASE_PATH "/Release") set(MYGUI_RELWDBG_PATH "/RelWithDebInfo") set(MYGUI_MINSIZE_PATH "/MinSizeRel") set(MYGUI_DEBUG_PATH "/Debug") set(MYGUI_LIB_RELEASE_PATH "/Release") set(MYGUI_LIB_RELWDBG_PATH "/RelWithDebInfo") set(MYGUI_LIB_MINSIZE_PATH "/MinSizeRel") set(MYGUI_LIB_DEBUG_PATH "/Debug") set(MYGUI_PLUGIN_PATH "/opt") elseif (UNIX) set(MYGUI_RELEASE_PATH "") set(MYGUI_RELWDBG_PATH "") set(MYGUI_MINSIZE_PATH "") set(MYGUI_DEBUG_PATH "/debug") set(MYGUI_LIB_RELEASE_PATH "") set(MYGUI_LIB_RELWDBG_PATH "") set(MYGUI_LIB_MINSIZE_PATH "") set(MYGUI_LIB_DEBUG_PATH "") set(MYGUI_PLUGIN_PATH "/MYGUI") endif () if (APPLE) set(MYGUI_FRAMEWORK_PATH /Library/Frameworks) endif () # create vcproj.user file for Visual Studio to set debug working directory function(mygui_create_vcproj_userfile TARGETNAME) if (MSVC) # for VisualStudioUserFile.vcproj.user.in if(CMAKE_CL_64) set(MYGUI_WIN_BUILD_CONFIGURATION "x64") else() set(MYGUI_WIN_BUILD_CONFIGURATION "Win32") endif() #FIXME if (${CMAKE_GENERATOR} STREQUAL "Visual Studio 10" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 10 Win64" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 11" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 11 Win64" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 12" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 12 Win64" ) configure_file( ${MYGUI_TEMPLATES_DIR}/VisualStudio2010UserFile.vcxproj.user.in ${CMAKE_CURRENT_BINARY_DIR}/${TARGETNAME}.vcxproj.user @ONLY ) else () configure_file( ${MYGUI_TEMPLATES_DIR}/VisualStudioUserFile.vcproj.user.in ${CMAKE_CURRENT_BINARY_DIR}/${TARGETNAME}.vcproj.user @ONLY ) endif () endif () endfunction(mygui_create_vcproj_userfile) # install targets according to current build type function(mygui_install_target TARGETNAME SUFFIX) install(TARGETS ${TARGETNAME} RUNTIME DESTINATION "bin${MYGUI_RELEASE_PATH}" CONFIGURATIONS Release None "" LIBRARY DESTINATION "lib${MYGUI_LIB_RELEASE_PATH}${SUFFIX}" CONFIGURATIONS Release None "" ARCHIVE DESTINATION "lib${MYGUI_LIB_RELEASE_PATH}${SUFFIX}" CONFIGURATIONS Release None "" FRAMEWORK DESTINATION "${MYGUI_FRAMEWORK_PATH}" CONFIGURATIONS Release None "" ) install(TARGETS ${TARGETNAME} RUNTIME DESTINATION "bin${MYGUI_RELWDBG_PATH}" CONFIGURATIONS RelWithDebInfo LIBRARY DESTINATION "lib${MYGUI_LIB_RELWDBG_PATH}${SUFFIX}" CONFIGURATIONS RelWithDebInfo ARCHIVE DESTINATION "lib${MYGUI_LIB_RELWDBG_PATH}${SUFFIX}" CONFIGURATIONS RelWithDebInfo FRAMEWORK DESTINATION "${MYGUI_FRAMEWORK_PATH}" CONFIGURATIONS RelWithDebInfo ) install(TARGETS ${TARGETNAME} RUNTIME DESTINATION "bin${MYGUI_MINSIZE_PATH}" CONFIGURATIONS MinSizeRel LIBRARY DESTINATION "lib${MYGUI_LIB_MINSIZE_PATH}${SUFFIX}" CONFIGURATIONS MinSizeRel ARCHIVE DESTINATION "lib${MYGUI_LIB_MINSIZE_PATH}${SUFFIX}" CONFIGURATIONS MinSizeRel FRAMEWORK DESTINATION "${MYGUI_FRAMEWORK_PATH}" CONFIGURATIONS MinSizeRel ) install(TARGETS ${TARGETNAME} RUNTIME DESTINATION "bin${MYGUI_DEBUG_PATH}" CONFIGURATIONS Debug LIBRARY DESTINATION "lib${MYGUI_LIB_DEBUG_PATH}${SUFFIX}" CONFIGURATIONS Debug ARCHIVE DESTINATION "lib${MYGUI_LIB_DEBUG_PATH}${SUFFIX}" CONFIGURATIONS Debug FRAMEWORK DESTINATION "${MYGUI_FRAMEWORK_PATH}" CONFIGURATIONS Debug ) endfunction(mygui_install_target) # setup common target settings function(mygui_config_common TARGETNAME) set_target_properties(${TARGETNAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${MYGUI_BINARY_DIR}/lib LIBRARY_OUTPUT_DIRECTORY ${MYGUI_BINARY_DIR}/lib RUNTIME_OUTPUT_DIRECTORY ${MYGUI_BINARY_DIR}/bin ) mygui_create_vcproj_userfile(${TARGETNAME}) endfunction(mygui_config_common) #setup Demo builds function(mygui_app PROJECTNAME SOLUTIONFOLDER) include_directories( . ${MYGUI_SOURCE_DIR}/Common ${MYGUI_SOURCE_DIR}/MyGUIEngine/include ) # define the sources include(${PROJECTNAME}.list) # Set up dependencies if(MYGUI_RENDERSYSTEM EQUAL 1) include_directories(../../Common/Base/Dummy) add_definitions("-DMYGUI_DUMMY_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/Dummy/DummyPlatform/include ) elseif(MYGUI_RENDERSYSTEM EQUAL 3) include_directories(../../Common/Base/Ogre) add_definitions("-DMYGUI_OGRE_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/Ogre/OgrePlatform/include ${OGRE_INCLUDE_DIR} ) link_directories(${OGRE_LIB_DIR}) elseif(MYGUI_RENDERSYSTEM EQUAL 4) include_directories(../../Common/Base/OpenGL) add_definitions("-DMYGUI_OPENGL_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/OpenGL/OpenGLPlatform/include ${OPENGL_INCLUDE_DIR} ) link_directories(${OPENGL_LIB_DIR}) elseif(MYGUI_RENDERSYSTEM EQUAL 5) include_directories(../../Common/Base/DirectX) add_definitions("-DMYGUI_DIRECTX_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/DirectX/DirectXPlatform/include ${DirectX_INCLUDE_DIR} ) link_directories(${DIRECTX_LIB_DIR}) elseif(MYGUI_RENDERSYSTEM EQUAL 6) include_directories(../../Common/Base/DirectX11) add_definitions("-DMYGUI_DIRECTX11_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/DirectX11/DirectX11Platform/include ${DirectX_INCLUDE_DIR} ) link_directories(${DIRECTX_LIB_DIR}) endif() if(MYGUI_SAMPLES_INPUT EQUAL 1) add_definitions("-DMYGUI_SAMPLES_INPUT_OIS") include_directories(../../Common/Input/OIS) include_directories(${OIS_INCLUDE_DIRS}) elseif(MYGUI_SAMPLES_INPUT EQUAL 2) add_definitions("-DMYGUI_SAMPLES_INPUT_WIN32") include_directories(../../Common/Input/Win32) elseif(MYGUI_SAMPLES_INPUT EQUAL 3) add_definitions("-DMYGUI_SAMPLES_INPUT_WIN32_OIS") include_directories(../../Common/Input/Win32_OIS) include_directories(${OIS_INCLUDE_DIRS}) endif() # setup demo target if (${SOLUTIONFOLDER} STREQUAL "Wrappers") add_library(${PROJECTNAME} ${MYGUI_LIB_TYPE} ${HEADER_FILES} ${SOURCE_FILES}) else () # determine specific executable type if (APPLE) set(MYGUI_EXEC_TYPE MACOSX_BUNDLE) elseif (WIN32) set(MYGUI_EXEC_TYPE WIN32) endif () add_executable(${PROJECTNAME} ${MYGUI_EXEC_TYPE} ${HEADER_FILES} ${SOURCE_FILES}) endif () set_target_properties(${PROJECTNAME} PROPERTIES FOLDER ${SOLUTIONFOLDER}) add_dependencies(${PROJECTNAME} MyGUIEngine Common) mygui_config_sample(${PROJECTNAME}) # link Common, Platform and MyGUIEngine target_link_libraries(${PROJECTNAME} Common ) if(MYGUI_RENDERSYSTEM EQUAL 5) add_dependencies(${PROJECTNAME} MyGUI.DirectXPlatform) target_link_libraries(${PROJECTNAME} MyGUI.DirectXPlatform) elseif(MYGUI_RENDERSYSTEM EQUAL 3) add_dependencies(${PROJECTNAME} MyGUI.OgrePlatform) target_link_libraries(${PROJECTNAME} MyGUI.OgrePlatform) elseif(MYGUI_RENDERSYSTEM EQUAL 4) add_dependencies(${PROJECTNAME} MyGUI.OpenGLPlatform) target_link_libraries(${PROJECTNAME} MyGUI.OpenGLPlatform) target_link_libraries(${PROJECTNAME} gdiplus) endif() target_link_libraries(${PROJECTNAME} MyGUIEngine ) if (MYGUI_GENERATE_LIST_FILES_FROM_VSPROJECT) add_custom_command(TARGET ${PROJECTNAME} POST_BUILD COMMAND ${MYGUI_BINARY_DIR}/updateListFiles.bat COMMENT "Generating *.list files") endif () if (APPLE) find_library(CF_LIBRARY CoreFoundation) find_library(IOKIT_LIBRARY IOKit) target_link_libraries(${PROJECTNAME} ${CF_LIBRARY}) target_link_libraries(${PROJECTNAME} ${IOKIT_LIBRARY}) endif () endfunction(mygui_app) #setup Tools dll builds function(mygui_dll PROJECTNAME SOLUTIONFOLDER) include_directories( . ${MYGUI_SOURCE_DIR}/Common ${MYGUI_SOURCE_DIR}/MyGUIEngine/include ) # define the sources include(${PROJECTNAME}.list) # Set up dependencies if(MYGUI_RENDERSYSTEM EQUAL 1) include_directories(../../Common/Base/Dummy) add_definitions("-DMYGUI_DUMMY_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/Dummy/DummyPlatform/include ) elseif(MYGUI_RENDERSYSTEM EQUAL 3) include_directories(../../Common/Base/Ogre) add_definitions("-DMYGUI_OGRE_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/Ogre/OgrePlatform/include ${OGRE_INCLUDE_DIR} ) link_directories(${OGRE_LIB_DIR}) elseif(MYGUI_RENDERSYSTEM EQUAL 4) include_directories(../../Common/Base/OpenGL) add_definitions("-DMYGUI_OPENGL_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/OpenGL/OpenGLPlatform/include ${OPENGL_INCLUDE_DIR} ) link_directories(${OPENGL_LIB_DIR}) elseif(MYGUI_RENDERSYSTEM EQUAL 5) include_directories(../../Common/Base/DirectX) add_definitions("-DMYGUI_DIRECTX_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/DirectX/DirectXPlatform/include ${DirectX_INCLUDE_DIR} ) link_directories(${DIRECTX_LIB_DIR}) elseif(MYGUI_RENDERSYSTEM EQUAL 6) include_directories(../../Common/Base/DirectX11) add_definitions("-DMYGUI_DIRECTX11_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/DirectX11/DirectX11Platform/include ${DirectX_INCLUDE_DIR} ) link_directories(${DIRECTX_LIB_DIR}) endif() add_definitions("-D_USRDLL -DMYGUI_BUILD_DLL") add_library(${PROJECTNAME} ${MYGUI_LIB_TYPE} ${HEADER_FILES} ${SOURCE_FILES}) set_target_properties(${PROJECTNAME} PROPERTIES FOLDER ${SOLUTIONFOLDER}) add_dependencies(${PROJECTNAME} MyGUIEngine) target_link_libraries(${PROJECTNAME} MyGUIEngine) mygui_config_lib(${PROJECTNAME}) add_dependencies(${PROJECTNAME} MyGUIEngine Common) mygui_config_sample(${PROJECTNAME}) target_link_libraries(${PROJECTNAME} Common ) if(MYGUI_RENDERSYSTEM EQUAL 5) add_dependencies(${PROJECTNAME} MyGUI.DirectXPlatform) target_link_libraries(${PROJECTNAME} MyGUI.DirectXPlatform) elseif(MYGUI_RENDERSYSTEM EQUAL 3) add_dependencies(${PROJECTNAME} MyGUI.OgrePlatform) target_link_libraries(${PROJECTNAME} MyGUI.OgrePlatform) elseif(MYGUI_RENDERSYSTEM EQUAL 4) add_dependencies(${PROJECTNAME} MyGUI.OpenGLPlatform) target_link_libraries(${PROJECTNAME} MyGUI.OpenGLPlatform) target_link_libraries(${PROJECTNAME} gdiplus) endif() target_link_libraries(${PROJECTNAME} MyGUIEngine ) if (MYGUI_GENERATE_LIST_FILES_FROM_VSPROJECT) add_custom_command(TARGET ${PROJECTNAME} POST_BUILD COMMAND ${MYGUI_BINARY_DIR}/updateListFiles.bat COMMENT "Generating *.list files") endif () if (APPLE) find_library(CF_LIBRARY CoreFoundation) find_library(IOKIT_LIBRARY IOKit) target_link_libraries(${PROJECTNAME} ${CF_LIBRARY}) target_link_libraries(${PROJECTNAME} ${IOKIT_LIBRARY}) endif () endfunction(mygui_dll) function(mygui_demo PROJECTNAME) mygui_app(${PROJECTNAME} Demos) if (MYGUI_INSTALL_SAMPLES) mygui_install_app(${PROJECTNAME}) endif () endfunction(mygui_demo) function(mygui_tool PROJECTNAME) mygui_app(${PROJECTNAME} Tools) if (MYGUI_INSTALL_TOOLS) mygui_install_app(${PROJECTNAME}) endif () include_directories(${MYGUI_SOURCE_DIR}/Tools/EditorFramework) include(PrecompiledHeader) # specify a precompiled header to use use_precompiled_header(${PROJECTNAME} "../../Common/Precompiled.h" "../../Common/Precompiled.cpp" ) target_link_libraries(${PROJECTNAME} EditorFramework ) endfunction(mygui_tool) function(mygui_unit_test PROJECTNAME) mygui_app(${PROJECTNAME} UnitTest) endfunction(mygui_unit_test) function(mygui_tool_dll PROJECTNAME) mygui_dll(${PROJECTNAME} Tools) if (MYGUI_INSTALL_TOOLS) mygui_install_app(${PROJECTNAME}) endif () include(PrecompiledHeader) # specify a precompiled header to use use_precompiled_header(${PROJECTNAME} "../../Common/Precompiled.h" "../../Common/Precompiled.cpp" ) endfunction(mygui_tool_dll) function(mygui_install_app PROJECTNAME) if (MYGUI_INSTALL_PDB) # install debug pdb files install(FILES ${MYGUI_BINARY_DIR}/bin${MYGUI_DEBUG_PATH}/${PROJECTNAME}.pdb DESTINATION bin${MYGUI_DEBUG_PATH} CONFIGURATIONS Debug ) install(FILES ${MYGUI_BINARY_DIR}/bin${MYGUI_RELWDBG_PATH}/${PROJECTNAME}.pdb DESTINATION bin${MYGUI_RELWDBG_PATH} CONFIGURATIONS RelWithDebInfo ) endif () mygui_install_target(${PROJECTNAME} "") endfunction(mygui_install_app) #setup Plugin builds function(mygui_plugin PROJECTNAME) include_directories(.) # define the sources include(${PROJECTNAME}.list) add_definitions("-D_USRDLL -DMYGUI_BUILD_DLL") add_library(${PROJECTNAME} ${MYGUI_LIB_TYPE} ${HEADER_FILES} ${SOURCE_FILES}) set_target_properties(${PROJECTNAME} PROPERTIES FOLDER "Plugins") add_dependencies(${PROJECTNAME} MyGUIEngine) target_link_libraries(${PROJECTNAME} MyGUIEngine) mygui_config_lib(${PROJECTNAME}) # Plugins are loaded at runtime and not linked at buildtime, so they should go to the same # output directory as the executables, so the plugin loader can find them there. set_target_properties(${PROJECTNAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) # Remove default library prefix (e.g. "lib" on Linux), as the plugin loader doesn't know about it set_target_properties(${PROJECTNAME} PROPERTIES PREFIX "") install(FILES ${HEADER_FILES} DESTINATION include/MYGUI ) endfunction(mygui_plugin) # setup library build function(mygui_config_lib PROJECTNAME) mygui_config_common(${PROJECTNAME}) if (MYGUI_STATIC) # add static prefix, if compiling static version set_target_properties(${PROJECTNAME} PROPERTIES OUTPUT_NAME ${PROJECTNAME}Static) else (MYGUI_STATIC) if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel") # add GCC visibility flags to shared library build set_target_properties(${PROJECTNAME} PROPERTIES COMPILE_FLAGS "${MYGUI_GCC_VISIBILITY_FLAGS}") if (APPLE) # deal with Mac OS X's framework system set_target_properties(${PROJECTNAME} PROPERTIES FRAMEWORK TRUE) set_target_properties(${PROJECTNAME} PROPERTIES PUBLIC_HEADER "${${PROJECTNAME}_HEADERS}") set_target_properties(${PROJECTNAME} PROPERTIES OUTPUT_NAME ${PROJECTNAME}) set_target_properties(${PROJECTNAME} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE) set_target_properties(${PROJECTNAME} PROPERTIES INSTALL_NAME_DIR "@executable_path/../Frameworks") endif (APPLE) endif () endif (MYGUI_STATIC) mygui_install_target(${PROJECTNAME} "") if (MYGUI_INSTALL_PDB) # install debug pdb files if (MYGUI_STATIC) install(FILES ${MYGUI_BINARY_DIR}/lib${MYGUI_LIB_DEBUG_PATH}/${PROJECTNAME}Static_d.pdb DESTINATION lib${MYGUI_LIB_DEBUG_PATH} CONFIGURATIONS Debug ) install(FILES ${MYGUI_BINARY_DIR}/lib${MYGUI_LIB_RELWDBG_PATH}/${PROJECTNAME}Static.pdb DESTINATION lib${MYGUI_LIB_RELWDBG_PATH} CONFIGURATIONS RelWithDebInfo ) else () install(FILES ${MYGUI_BINARY_DIR}/bin${MYGUI_DEBUG_PATH}/${PROJECTNAME}_d.pdb DESTINATION bin${MYGUI_DEBUG_PATH} CONFIGURATIONS Debug ) install(FILES ${MYGUI_BINARY_DIR}/bin${MYGUI_RELWDBG_PATH}/${PROJECTNAME}.pdb DESTINATION bin${MYGUI_RELWDBG_PATH} CONFIGURATIONS RelWithDebInfo ) endif () endif () endfunction(mygui_config_lib) # setup demo build function(mygui_config_sample PROJECTNAME) mygui_config_common(${PROJECTNAME}) # set install RPATH for Unix systems if (UNIX AND MYGUI_FULL_RPATH) set_property(TARGET ${PROJECTNAME} APPEND PROPERTY INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib) set_property(TARGET ${PROJECTNAME} PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE) endif () endfunction(mygui_config_sample) mygui-3.2.2+dfsg/CMake/Utils/MyGUIFindFrameworks.cmake000066400000000000000000000015501322721077200224510ustar00rootroot00000000000000# - helper module to find OSX frameworks # Adapted from standard CMake version, but added dependencies # Standard finder does not look in any variable locations such as # CMAKE_FRAMEWORK_PATH (not sure why not) IF(NOT MYGUI_FIND_FRAMEWORKS_INCLUDED) SET(MYGUI_FIND_FRAMEWORKS_INCLUDED 1) MACRO(MYGUI_FIND_FRAMEWORKS fwk) IF(APPLE) SET(${fwk}_FRAMEWORKS) SET(MYGUI_FRAMEWORK_PATH ${MYGUI_DEPENDENCIES_DIR} ~/Library/Frameworks /Library/Frameworks /System/Library/Frameworks /Network/Library/Frameworks ) FOREACH(dir ${MYGUI_FRAMEWORK_PATH}) SET(fwkpath ${dir}/${fwk}.framework) IF(EXISTS ${fwkpath}) SET(${fwk}_FRAMEWORKS ${${fwk}_FRAMEWORKS} ${fwkpath}) ENDIF(EXISTS ${fwkpath}) ENDFOREACH(dir) ENDIF(APPLE) ENDMACRO(MYGUI_FIND_FRAMEWORKS) ENDIF(NOT MYGUI_FIND_FRAMEWORKS_INCLUDED) mygui-3.2.2+dfsg/CMake/Utils/MyGUIGetVersion.cmake000066400000000000000000000011601322721077200216120ustar00rootroot00000000000000include(PreprocessorUtils) macro(mygui_get_version HEADER) file(READ ${HEADER} TEMP_VAR_CONTENTS) get_preprocessor_entry(TEMP_VAR_CONTENTS MYGUI_VERSION_MAJOR MYGUI_VERSION_MAJOR) get_preprocessor_entry(TEMP_VAR_CONTENTS MYGUI_VERSION_MINOR MYGUI_VERSION_MINOR) get_preprocessor_entry(TEMP_VAR_CONTENTS MYGUI_VERSION_PATCH MYGUI_VERSION_PATCH) get_preprocessor_entry(TEMP_VAR_CONTENTS MYGUI_VERSION_NAME MYGUI_VERSION_NAME) get_preprocessor_entry(TEMP_VAR_CONTENTS MYGUI_VERSION_SUFFIX MYGUI_VERSION_SUFFIX) set(MYGUI_VERSION "${MYGUI_VERSION_MAJOR}.${MYGUI_VERSION_MINOR}.${MYGUI_VERSION_PATCH}") endmacro() mygui-3.2.2+dfsg/CMake/Utils/PrecompiledHeader.cmake000066400000000000000000000050071322721077200222320ustar00rootroot00000000000000#------------------------------------------------------------------- # This file is part of the CMake build system for OGRE # (Object-oriented Graphics Rendering Engine) # For the latest info, see http://www.ogre3d.org/ # # The contents of this file are placed in the public domain. Feel # free to make use of it in any way you like. #------------------------------------------------------------------- ################################################################## # Support macro to use a precompiled header # Usage: # use_precompiled_header(TARGET HEADER_FILE SRC_FILE) ################################################################## macro(use_precompiled_header TARGET HEADER_FILE SRC_FILE) get_filename_component(HEADER ${HEADER_FILE} NAME) if (MSVC) add_definitions(/Yu"${HEADER}") set_source_files_properties(${SRC_FILE} PROPERTIES COMPILE_FLAGS /Yc"${HEADER}" ) elseif (CMAKE_COMPILER_IS_GNUCXX) # disabled because it seems to increase compile time ## this is some serious hack... we definitely need native ## support in CMake for this! ## we will generate the precompiled header via a workaround ## first give the header a new name with the proper extension #set(PRECOMP_HEADER ${CMAKE_CURRENT_BINARY_DIR}/hacked/${HEADER}.gch) #configure_file(${HEADER_FILE} ${PRECOMP_HEADER} COPYONLY) ## retrieve some info about the target's build settings #get_target_property(${TARGET} PRECOMP_TYPE TYPE) #if (PRECOMP_TYPE STREQUAL "SHARED_LIBRARY") # set(PRECOMP_LIBTYPE "SHARED") #else () # set(PRECOMP_LIBTYPE "STATIC") #endif () #get_target_property(${TARGET} PRECOMP_DEFINITIONS COMPILE_DEFINITIONS) #get_target_property(${TARGET} PRECOMP_FLAGS COMPILE_FLAGS) # ## add a new target which compiles the header #add_library(__precomp_header ${PRECOMP_LIBTYPE} ${PRECOMP_HEADER}) #add_dependencies(${TARGET} __precomp_header) #set_target_properties(__precomp_header PROPERTIES # COMPILE_DEFINITIONS ${PRECOMP_DEFINITIONS} # COMPILE_FLAGS ${PRECOMP_FLAGS} # HAS_CXX TRUE #) #set_source_files_properties(${PRECOMP_HEADER} PROPERTIES # HEADER_FILE_ONLY FALSE # KEEP_EXTENSION TRUE # COMPILE_FLAGS "-x c++-header" # LANGUAGE CXX #) # ## finally, we need to ensure that gcc can find the precompiled header ## this is another dirty hack #include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/__precomp_header.dir/hacked") endif () endmacro(use_precompiled_header) mygui-3.2.2+dfsg/CMake/Utils/PreprocessorUtils.cmake000066400000000000000000000022431322721077200223640ustar00rootroot00000000000000macro(get_preprocessor_entry CONTENTS KEYWORD VARIABLE) string(REGEX MATCH "# *define +${KEYWORD} +((\"([^\n]*)\")|([^ \n]*))" PREPROC_TEMP_VAR ${${CONTENTS}} ) if (CMAKE_MATCH_3) set(${VARIABLE} ${CMAKE_MATCH_3}) else () set(${VARIABLE} ${CMAKE_MATCH_4}) endif () endmacro() macro(has_preprocessor_entry CONTENTS KEYWORD VARIABLE) string(REGEX MATCH "\n *# *define +(${KEYWORD})" PREPROC_TEMP_VAR ${${CONTENTS}} ) if (CMAKE_MATCH_1) set(${VARIABLE} TRUE) else () set(${VARIABLE} FALSE) endif () endmacro() macro(replace_preprocessor_entry VARIABLE KEYWORD NEW_VALUE) string(REGEX REPLACE "(// *)?# *define +${KEYWORD} +[^ \n]*" "#define ${KEYWORD} ${NEW_VALUE}" ${VARIABLE}_TEMP ${${VARIABLE}} ) set(${VARIABLE} ${${VARIABLE}_TEMP}) endmacro() macro(set_preprocessor_entry VARIABLE KEYWORD ENABLE) if (${ENABLE}) set(TMP_REPLACE_STR "#define ${KEYWORD}") else () set(TMP_REPLACE_STR "// #define ${KEYWORD}") endif () string(REGEX REPLACE "(// *)?# *define +${KEYWORD} *\n" ${TMP_REPLACE_STR} ${VARIABLE}_TEMP ${${VARIABLE}} ) set(${VARIABLE} ${${VARIABLE}_TEMP}) endmacro() mygui-3.2.2+dfsg/CMakeLists.txt000066400000000000000000000252561322721077200163440ustar00rootroot00000000000000###################################################################### # MYGUI BUILD SYSTEM # Welcome to the CMake build system for MYGUI. # This is the main file where we prepare the general build environment # and provide build configuration options. ###################################################################### cmake_minimum_required(VERSION 2.6) set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE) cmake_policy(SET CMP0003 NEW) project(MYGUI) # Include necessary submodules set(CMAKE_MODULE_PATH "${MYGUI_SOURCE_DIR}/CMake" "${MYGUI_SOURCE_DIR}/CMake/Utils" "${MYGUI_SOURCE_DIR}/CMake/Packages" ) include(CMakeDependentOption) include(MacroLogFeature) include(MyGUIConfigTargets) include(PreprocessorUtils) set(MYGUI_TEMPLATES_DIR "${MYGUI_SOURCE_DIR}/CMake/Templates") set(MYGUI_WORK_DIR ${MYGUI_BINARY_DIR}) ##################################################################### # Set up the basic build environment ##################################################################### if (CMAKE_BUILD_TYPE STREQUAL "") # CMake defaults to leaving CMAKE_BUILD_TYPE empty. This screws up # differentiation between debug and release builds. set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: None (CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE) endif () # determine MyGUI version numbers include(MyGUIGetVersion) mygui_get_version(${MYGUI_SOURCE_DIR}/MyGUIEngine/include/MyGUI_Prerequest.h) message(STATUS "Configuring MYGUI ${MYGUI_VERSION}") if (NOT APPLE) # Create debug libraries with _d postfix set(CMAKE_DEBUG_POSTFIX "_d") endif () if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel") # Test for GCC visibility include(CheckCXXCompilerFlag) check_cxx_compiler_flag(-fvisibility=hidden MYGUI_GCC_VISIBILITY) if (MYGUI_GCC_VISIBILITY) # determine gcc version execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE MYGUI_GCC_VERSION) message(STATUS "Detected g++ ${MYGUI_GCC_VERSION}") message(STATUS "Enabling GCC visibility flags") set(MYGUI_GCC_VISIBILITY_FLAGS "-DMYGUI_GCC_VISIBILITY -fvisibility=hidden") # check if we can safely add -fvisibility-inlines-hidden string(TOLOWER "${CMAKE_BUILD_TYPE}" MYGUI_BUILD_TYPE) if (MYGUI_BUILD_TYPE STREQUAL "debug") if(MYGUI_GCC_VERSION VERSION_LESS "4.2") message(STATUS "Skipping -fvisibility-inlines-hidden due to possible bug in g++ < 4.2") else() # double if because of bug in CMake 2.6 set(MYGUI_GCC_VISIBILITY_FLAGS "${MYGUI_GCC_VISIBILITY_FLAGS} -fvisibility-inlines-hidden") endif() else () set(MYGUI_GCC_VISIBILITY_FLAGS "${MYGUI_GCC_VISIBILITY_FLAGS} -fvisibility-inlines-hidden") endif () endif (MYGUI_GCC_VISIBILITY) # Fix x64 issues on Linux if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" AND NOT APPLE) add_definitions(-fPIC) endif() endif () # determine system endianess include(TestBigEndian) test_big_endian(MYGUI_TEST_BIG_ENDIAN) # Add MyGUIEngine include path # definitions for samples set(MYGUI_LIBRARIES MyGUIEngine) # Specify build paths set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${MYGUI_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${MYGUI_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${MYGUI_BINARY_DIR}/bin) if (WIN32 OR APPLE) if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) if (UNIX) # On Mac OS X and Linux, standard behavior is to install to /usr/local/lib set(CMAKE_INSTALL_PREFIX "/usr/local") elseif (WIN32) # On Windows, we don't want to install in default system location, install is really for the SDK, so call it that SET(CMAKE_INSTALL_PREFIX "${MYGUI_BINARY_DIR}/sdk" CACHE PATH "MYGUI install prefix" FORCE ) endif () endif (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) endif(WIN32 OR APPLE) ###################################################################### # Provide user options to customise the build process ###################################################################### # Customise what to build option(MYGUI_STATIC "Static build" FALSE) option(MYGUI_USE_FREETYPE "Use freetype for font rendering" TRUE) option(MYGUI_DONT_USE_OBSOLETE "Remove obsole functions from build" FALSE) set(MYGUI_RENDERSYSTEM 3 CACHE STRING "Specify the Render System. Possible values: 1 - Dummy 2 - Export (latter) 3 - Ogre 4 - OpenGL 5 - Direct3D 9 6 - Direct3D 11" ) if(MYGUI_RENDERSYSTEM EQUAL 4) option(MYGUI_USE_SYSTEM_GLEW "Use system OpenGL Extension Wrangler Library (GLEW)" FALSE) endif() option(MYGUI_BUILD_DEMOS "Build MyGUI demos" TRUE) option(MYGUI_BUILD_PLUGINS "Build MyGUI plugins" TRUE) option(MYGUI_BUILD_TOOLS "Build the tools" TRUE) option(MYGUI_BUILD_UNITTESTS "Build the unit tests" FALSE) option(MYGUI_BUILD_TEST_APP "Build TestApp" FALSE) option(MYGUI_BUILD_WRAPPER "Build the wrapper" FALSE) option(MYGUI_INSTALL_SAMPLES "Install MyGUI demos." FALSE) option(MYGUI_INSTALL_TOOLS "Install MyGUI tools." FALSE) option(MYGUI_INSTALL_DOCS "Install documentation." FALSE) option(MYGUI_INSTALL_MEDIA "Install media files." FALSE) option(MYGUI_INSTALL_SAMPLES_SOURCE "Install samples source files." FALSE) cmake_dependent_option(MYGUI_INSTALL_PDB "Install debug pdb files" FALSE "MSVC" FALSE) option(MYGUI_FULL_RPATH "Build executables with the full required RPATH to run from their install location." FALSE) option(MYGUI_STANDALONE_BUILD "Generate build files that do not reference CMake (should be used only from Scripts/prepareRelease.py)" FALSE) MARK_AS_ADVANCED(MYGUI_STANDALONE_BUILD) option(MYGUI_GENERATE_LIST_FILES_FROM_VSPROJECT "Generate .list files from visual studio project files" FALSE) if (WIN32) set(MYGUI_SAMPLES_INPUT 2 CACHE STRING "Specify the Input Manager for samples. Possible values: 1 - OIS 2 - Win32 3 - Win32 (Mouse) + OIS (Keyboard)" ) else() set(MYGUI_SAMPLES_INPUT 1) endif() if (MSVC) option(MYGUI_USE_PROJECT_FOLDERS "Use Visual Studio solution folders for projects." FALSE) endif () # Used to not annoy users with high level warnings (should be TRUE for developers) option(MYGUI_HIGH_LEVEL_WARNINGS "Use high level compiler warnings. Developers should enable this." FALSE) if (MSVC) option(MYGUI_CHECK_MEMORY_LEAKS "Check memory leaks. Developers should enable this." FALSE) endif () if (MYGUI_USE_PROJECT_FOLDERS) SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON) endif () # Global defines if (MYGUI_CHECK_MEMORY_LEAKS) add_definitions(-DMYGUI_CHECK_MEMORY_LEAKS) endif () if (MYGUI_DONT_USE_OBSOLETE) add_definitions(-DMYGUI_DONT_USE_OBSOLETE) endif () # End of Global defines # Set compiler specific build flags if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel") if (NOT MYGUI_HIGH_LEVEL_WARNINGS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") else () if (MYGUI_RENDERSYSTEM EQUAL 3) # to avoid warnings from OGRE set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${OGRE_INCLUDE_DIR}") endif () if (MYGUI_SAMPLES_INPUT EQUAL 1 OR MYGUI_SAMPLES_INPUT EQUAL 3) # to avoid warnings from OIS set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${OIS_INCLUDE_DIR}") endif () if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything") # might be useful set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option -Wno-sign-conversion -Wno-conversion -Wno-c++11-extensions -Wno-documentation -Wno-old-style-cast") # not useful set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-float-equal -Wno-padded -Wno-padded -Wno-weak-vtables -Wno-duplicate-enum -Wno-exit-time-destructors -Wno-unused-parameter -Wno-global-constructors") else () # very interesting option, but way too many warnings #add_definitions(-Weffc++) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -Wall -Winit-self -Woverloaded-virtual -Wcast-qual -Wwrite-strings -Wextra -Wno-unused-parameter") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic") if (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wctor-dtor-privacy") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-show-option") endif () # MyGUI_UString.h ignored from warnings because of this set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshadow") endif () endif () endif () if (MSVC) add_definitions("-D_CRT_SECURE_NO_WARNINGS") # Use the highest warning level for visual studio. if (MYGUI_HIGH_LEVEL_WARNINGS) SET(WARNING_LEVEL "/W4") # disable: warning C4100: '***' : unreferenced formal parameter add_definitions(/wd4100) # disable: warning C4127: conditional expression is constant add_definitions(/wd4127) # disable: warning C4512: '***' : assignment operator could not be generated add_definitions(/wd4512) else () SET(WARNING_LEVEL "/W3") endif () if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]") STRING(REGEX REPLACE "/W[0-4]" "${WARNING_LEVEL}" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") else () SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_LEVEL}") endif () endif () if (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") # Otherwise, boost complains that there is no threading support. SET(CMAKE_CXX_FLAGS "-pthread ${CMAKE_CXX_FLAGS}") endif () # Find dependencies include(Dependencies) cmake_dependent_option(MYGUI_BUILD_DOCS "Generate documentation" TRUE "DOXYGEN_FOUND" FALSE) # global configs include_directories( ${MYGUI_SOURCE_DIR}/MyGUIEngine/include ) ################################################################### # configure global build settings based on selected build options ################################################################### include(ConfigureBuild) ################################################################## # Now setup targets ################################################################## # install resource files include(InstallResources) # Setup MyGUIEngine project add_subdirectory(MyGUIEngine) # Setup Platforms add_subdirectory(Platforms) if (MYGUI_BUILD_DEMOS OR MYGUI_BUILD_TOOLS OR MYGUI_BUILD_UNITTESTS OR MYGUI_BUILD_TEST_APP) add_subdirectory(Common) endif () # Setup Plugins if (MYGUI_BUILD_PLUGINS) add_subdirectory(Plugins) endif () if (MYGUI_BUILD_DEMOS) add_subdirectory(Demos) endif () # Setup command-line tools if (MYGUI_BUILD_TOOLS) add_subdirectory(Tools) endif () # Setup tests if (MYGUI_BUILD_UNITTESTS OR MYGUI_BUILD_TEST_APP) add_subdirectory(UnitTests) endif () # Setup wrapers if (MYGUI_BUILD_WRAPPER) add_subdirectory(Wrappers) endif () # Install documentation if (MYGUI_BUILD_DOCS) add_subdirectory(Docs) endif () # Install media files if (MYGUI_INSTALL_MEDIA) add_subdirectory(Media) endif () # Install CMake modules add_subdirectory(CMake) # Provide CPack packaging target include(Packaging) mygui-3.2.2+dfsg/COPYING.MIT000066400000000000000000000021611322721077200152550ustar00rootroot00000000000000Unless otherwise indicated, Source Code is licensed under MIT license. Copyright (c) 2007-2013 MyGUI Developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. mygui-3.2.2+dfsg/ChangeLog.txt000066400000000000000000000375551322721077200162010ustar00rootroot00000000000000---------------------------------------------------------------- ------------------------- Version 3.2.2 ------------------------ ---------------------------------------------------------------- -- Core -- - Fixed eventChangeMouseFocus and eventChangeKeyFocus not being triggered in certain cases. -- Widgets -- - ComboBox: Fixed mouse events incorrectly going to the widget below the ComboBox when clicking on an item. - ScrollBar: Added button repeat support, ScrollBar buttons will trigger repeatedly so long as the mouse is held down. -- Platforms -- - OpenGLPlatform: Added option to use system GLEW library. - OgrePlatform: Improved performance of OgreDataManager::isDataExist. - OgrePlatform: Fixed build failure regarding boost libraries used by Ogre not being found. -- Resources -- - ResourceManualFont: Added API to create a ResourceManualFont in code rather than from XML. -- Tools -- - Fixed broken file dialog directory listing on Linux and make sure files are sorted. ---------------------------------------------------------------- ------------------------- Version 3.2.1 ------------------------ ---------------------------------------------------------------- -- Core -- - Added events to clipboard manager: eventClipboardRequested, eventClipboardChanged. - Added API access to child LayerNodes. - Added pointer to ControllerItem in all controller events. - Key focus will be reset when the key focus widget is hidden. - Fixed incorrectly detecting double click when clicking on different widgets. - Fixed a memory leak when creating or changing widgets in several cases. - Fixed a lot of warnings from cppcheck. - Other minor fixes. - Remove possibility to compile without std::typeinfo (no longer needed for android, MYGUI_RTTI_DISABLE_TYPE_INFO option removed). - Remove -msse from compiler flags. -- Widgets -- - Added Depth property for child widgets, that can be used for rendering order. - Added eventChangeCoord event. - Fixed Enabled property not being inherited from parent widgets. - ListBox: Added eventNotifyItem for key or mouse press on item widgets. - ListBox: Added getWidgetByIndex public API to allow item widget access from outside. - EditBox: Fixed several keyboard shortcuts (such as copy & paste) not working when key and text events are injected separately by the user. - ImageBox: Added getImageSize method. - ScrollBar: Added WheelPage property for mouse wheel scroll step. -- SubWidgets -- - PolygonalSkin: Added stroke support for drawing dashed lines (can be seen in UnitTest_Spline). - RotatingSkin: Added properties to skin XML. -- Resources -- - ResourceTrueTypeFont: Added Distance parameter for margin between glyphs in generated font texture. - ResourceImageSet, ResourceTrueTypeFont: Added public API to allow creating in code rather than from XML. - ResourceManualFont: Added support to set glyph size separately rather than deriving it from image coordinates. -- Skins -- - Added Dark skin (used by default in Tools). - Added Black skin. - Minor updates to other skins. -- Tools -- - Significant improvements to LayoutEditor, FontEditor, ImageEditor and SkinEditor. -- Demos -- - Minor updates to several demos. -- UnitTests -- - Added DataInfoTest. -- Platforms -- - Added Dummy platform. - Various fixes for DirectX11 platform. - Slightly refactored OpenGL platform. - Added DataMemoryStream class. -- Other -- - Updated C# wrapper. - Switched from LGPL to MIT license. - Documentation improvements. ---------------------------------------------------------------- ------------------------- Version 3.2.0 ------------------------ ---------------------------------------------------------------- -- Core -- - MyGUI can be compiled without std::typeinfo. - Fixed an alignment bug on non-screen layers (for example on the RTT layer). - Fixed bug with widgets on same layer changing their draw order. -- Widgets -- - DDContainer: Added a resetDrag method that stops a drag operation programmatically. - TextBox: Added optional text shadow. - EditBox: Fixed incorrect text display when the text area was lower than the font height. - EditBox: Reset Redo changes when text was changed. - Canvas: Fixed incorrect destruction. - ProgressBar: Fixed a problem that caused the progress value to be displayed incorrectly after the widget was resized. --SubWidgets-- - RotatingSkin: Fixed incorrect display due to swapped UV coordinates. -- Resources -- - ResourceTrueTypeFont: * Decreased texture memory usage (typically by 50% or more). * Improved startup and runtime performance. * Added support for Windows FON/FNT bitmap fonts and for embedded SBIT bitmaps in TrueType fonts. * Added support for enhanced glyph metrics, typographically correct line spacing, and overlapping glyphs; e.g., "fj". * Implemented the ability to specify the code point used as a substitute for missing code points (now defaults to the "Not Defined" glyph instead of "Space"). * Implemented subpixel positioning. * Added useful default values for several properties. * Deprecated several properties that are no longer useful. * Fixed problems that made it impossible to use whitespace characters other than "Space" and "Tab". * Fixed several crashes and memory leaks. * Replaced an assertion with a log message when a font cannot be loaded. - ResourceManualFont: * Added support for enhanced glyph metrics and overlapping glyphs; e.g., "fj". * Implemented the ability to specify the code point used as a substitute for missing code points. -- Wraps -- - BaseLayout works properly when it's completely empty. -- Plugins -- - Updated the BerkeliumWidget plugin. -- Tools -- - Various fixes in LayoutEditor. - FontViewer: * Added support for all of the new features in ResourceTrueTypeFont and ResourceManualFont. * Added support for additional font types: *.ttc, *.otf, *.pfa, *.fon, and *.fnt. * Redesigned the user interface. * Implemented automatic generation of the output filenames when saving. * Fixed several crashes and memory leaks. -- Platforms -- - Keep solid mode when Ogre is in wireframe. - Fixed a few bugs in the OpenGL platform (buffers not cleaned up). - New DirectX11 platform prototype. ---------------------------------------------------------------- ------------------------- Version 3.2.0 RC1 -------------------- ---------------------------------------------------------------- -- Core -- - Skin properties were simplified for more convenient creation in the editor. - All widgets events is now multidelegates. - Support of right mouse button drag. - If MyGUI is built from svn revision log file also contain svn revision (in addition to version). - Fixed bug with texture creation for fonts. - Other minor additions and bug-fixes. -- Managers -- - LanguageManager now replace tags recursively. - Fixed bug in LanguageManager when missing language was selected. -- Resources -- - Add Layout resource, layouts loaded and parsed only once at first use. - All resource files now have "MyGUI_" prefix to avoid naming conflicts. -- Widgets -- - VScroll and HScroll replaced with single ScrollBar class. - Edit renamed into EditBox. - List renamed into ListBox. - MenuCtrl renamed into MenuControl. - MultiList renamed into MultiListBox. - Progress renamed into ProgressBar. - StaticImage renamed into ImageBox. - StaticText renamed into TextBox. - Tab renamed into TabControl. - New Window property Moveable. - Message moved from Core to Common. - MultiListBox now support different modes of columns resizing. - Button properties StateCheck and ButtonPressed replaced with single property StateSelected. - ListBox and ComboBox now support ToolTip. - Menu items can be checked now, tick icon appears. - Property AlignVert renamed into VerticalAlignment. - Hidden widget lose input and focus. - Active elements visualisation in list now properly respond to changes in the list. - All text related properties was moved from Widget to TextBox. --SubWidgets-- - All widgets now have Colour property that colours whole widget. - RawRect subwidget was removed. - Implemented PolygonalSkin sub widget for lines and splines drawing. -- Tools -- - SkinEditor added. - All skins created in SkinEditor. - LayoutEditor now support projects creation. - Possibility to create MultiListBox columns in LayoutEditor. - Possibility to create PopupMenu\MenuBar in LayoutEditor. - Colour selection window added in LayoutEditor. - Show skin preview in LayoutEditor. - Scaling support in LayoutEditor. - Possibility to change widget's type in LayoutEditor. - Possibility to add custom properties in LayoutEditor. - Removed check for unique name in LayoutEditor (not required any more). - FontViewer now same generated font in two formats: as ttf + xml that use freetype in runtime for texture generation and as manual font (texture and glyphs description) -- Platforms -- - BasisManager for OpenGL and DirectX now properly display Win32 window content without bugs with offset. - Fixed memory leak in OpenGL's and DirectX's DataManager. - Possibility to save texture in OpenGL. - Fix typo in names vertext -> vertex. -- Plugins -- - Awesomium plugin removed (not LGPL anymore). -- UnitTests -- - New UnitTest for PolygonalSkin. - New UnitTest for RotatingSkin. -- CMake -- - New MYGUI_CHECK_MEMORY_LEAKS option for memory leaks detection in debug mode (MSVC only). - New MYGUI_USE_PROJECT_FOLDERS option for project folders inside generated solution (MSVC only). - UnitTest and Demos options were renames. - Win32 input used by default in demos/tools under windows instead of OIS (OIS input still used in other platforms). ---------------------------------------------------------------- ------------------------- Version 3.0.1 ------------------------ ---------------------------------------------------------------- -- License -- - in LGPL added exclusion for static linking for possibility to use MyGUI in apps for iPhone - all Media except some files created not by MyGUI dev tean is licensed under MIT now -- Core -- - Refactoring to reduce the possbility of bugs (based on info from static analyzers). -- Renders -- - Support of textures created inside Ogre (wrapping of existing texture) -- Widget -- - added getCaptionWidget to Window: retun pointer to Window caption for text control (fonts and it's size) - RenderBoxScene fixed - fixed bug with Disabled widgets that was rendered as not disabled -- Managers -- - added log message if skin used for widget wasn't found. -- Utility -- - fixed loading on non-existing textures for widgets picking -- Wraps -- - New option to generate wrappers with CMake -- Plugins -- - optional AwesomiumPlugin and HikariPlugin option added to CMake config -- Resources -- - fixed bug with incorrect font rendering on some old videocards : TrueType font now rendered into R8G8B8A8 on videocards that doesn't support L8A8 (OgreRender) ---------------------------------------------------------------- ------------------------- Version 3.0.0 ------------------------ ---------------------------------------------------------------- -- Core -- - rendering separated from core -- Widgets -- - removed widget RenderBox - moved into Common as wrapper - new widget ListCtrl - base widget for lists with OwnDraw, horizontal scroll and lines with different height support - new widget ListBox - list implementation with horizontal scroll (based on ListCtrl) -- Managers -- - new FactoryManager - manager creates instances of objects that implements IObject (resources, widgets, controllers, etc.) - new DataManager - possibility to create your own type or data source -- Controllers -- - controllers support deserialization, possibility to create through XML -- Resources -- - new resource type ImageSetPointer for creating cursors based on ImageSet with animation support - new resource type ManualPointer for creating cursors based on texture - new resource type TrueTypeFont for creating true type fonts - new resource type ManualFont for creating fonts based on texture - new resource type Skin for skin description --SubWidgets-- - new SubWidget RotateSkin with rotating geometry support -- Tools -- - improved LayoutEditor, controllers support -- Demos -- - Demo_Pointers - demonstration of cursor contexts and W32 cursors - Demo_RenderBox - demonstration of RenderBox usage (camera view inside widget, model view inside widget) -- Plugins -- - Plugin_AwesomiumWidget - sample plugin implementation for Awesomium (html inside widget) - Plugin_HikariWidget - sample plugin implementation for Hikari (Flash inside widget) -- UnitTests -- - UnitTest_Layers - sample of using GUI inside 3D scene - UnitTest_RTTLayers - sample of rendering Layer into texture - UnitTest_TextureAnimation - sample of RTT node, for caching or for animating whole window - UnitTest_TreeControl - sample implementation of tree control (author : Pavel Turin) ---------------------------------------------------------------- ------------------------- Version 2.2.3 ------------------------ ---------------------------------------------------------------- -- SubWidgets -- - subwidget EditText was reimplemented * word wrap support in edit mode * cursor and text selecting with ManualFont -- Widget -- - fixed problem with inherited Disabled and Visible conditions ---------------------------------------------------------------- ------------------------- Version 2.2.2 ------------------------ ---------------------------------------------------------------- -- Core -- - widget hierarchy changed - style added: * Child - child widget, cropped by parent widget borders, no overlapping (used by default for child widgets) * Popup - popup widget, have parent widget, but not cropped on its borders * Overlapped - child widget, cropped by parent widget borders, can overlap (used by default for root widgets) - support of detaching and attaching of widgets, possibility to change skin or style in runtime - added fast RTTI -- Widgets -- - new widget DDContainer - base class for all widgets that have drag'n'drop - new widget MenuCtrl - base class for all menus (such as MenuBar or PopupMenu) - new widget MenuBar - new widget ScrllView - Widgets tool-tip support - StaticImage animation support -- Managers -- - new ResourceManager - allows to load user resources (for example ResourceImageSet) - new LanguageManager - allows to replace tags in layouts with strings loaded from language files, manual creating and replacing tags - PointerManager - support animated pointers - FontManager - support of loading custom fonts from texture -- Controllers -- - ControllerPosition improved, Jump move mode added -- Resources -- - new resource type ResourceImageSet - used for group of images, with animation, loads through XML --SubWidgets-- - new subwidget RawRect for direct access to quad vertices - new subwidget TileRect for tiling -- Others -- - all widgets-containers have Any (like boost::any) for storing user info about item (for example ComboBox items, Menu items) - configuration files versions in XML - two new themes for skin -- Wrappers -- - BaseLayout - base class for layout wrapper - BaseItemBox - base class for ItemBox wrapper - added PanelView - made using wrappers -- Tools -- - LayoutEditor - external resources support, several interface improvements - added ImageSetViewer for ResourceImageSet viewing -- Demos -- - Demo_Colour - colour selection control, RawRect subwidget and colouring in text - Demo_Console - simple console implementation for changing some widget properties - Demo_Controllers - ControllerFadeAlpha and ControllerPosition examples - Demo_Font - true-type font generation with possibility to save into MyGUI font configuration file - Demo_Gui - demonstration of using different widgets and styles (something like Ogre Demo_Gui) - Demo_ItemBox - ItemBox, BaseItemBox wrapper, ToolTip, external user resource loaded through XML - Demo_PanelView - PanelView control implementation - Demo_Picking - widget with mouse picking creation - Demo_PluginStrangeButton - plugin an user widget - Demo_ScrollView - ScrollView examples - Demo_Themes - new MyGUI themes for skin - Demo_StaticImage - simple ImageSet viewer implementation mygui-3.2.2+dfsg/ChangeLog_rus.txt000066400000000000000000000647751322721077200170760ustar00rootroot00000000000000---------------------------------------------------------------- ------------------------- Version 3.2.2 ------------------------ ---------------------------------------------------------------- -- Core -- - Исправлено не срабатывание событий eventChangeMouseFocus и eventChangeKeyFocus в некоторых случаях. -- Widgets -- - ComboBox: Исправлено дублирования нажатия мыши на виджет под ComboBox при нажатии на элемент из списка. - ScrollBar: Добавлена поддержка повтора нажатия кнопки, она будет срабатывать до тех пор, пока клавиша мыши нажата. -- Platforms -- - OpenGLPlatform: Добавлена возможность использовать библиотеку GLEW, установленную в системе. - OgrePlatform: Улучшена производительность OgreDataManager::isDataExist. - OgrePlatform: Исправлены ошибки сборки, связанные с невозможностью наити библиотеки boost, необходимые для Ogre. -- Resources -- - ResourceManualFont: Добавлен API для создания ResourceManualFont из кода, а не только из XML. -- Tools -- - Исправлен список директорий в файловом диалоге утилит в Linux, а так же файлы отсортированы. ---------------------------------------------------------------- ------------------------- Version 3.2.1 ------------------------ ---------------------------------------------------------------- -- Core -- - Добавлены события в ClipboardManager: eventClipboardRequested, eventClipboardChanged. - Добавлен API доступ к дочерним LayerNode. - Добавлен указатель на ControllerItem во всех событиях контроллеров. - Фокус клавиатуры сбрасывается при скрытии виджета. - Исправлено некорректное срабатывание double click при нажатии на разные виджеты. - Исправлена утечка памяти при создании или изменении текстуры виджета в некоторых случаях. - Исправлено много предупреждений от cppcheck. - Убрана поддержка сборки без std::typeinfo (больше не нужно для android, опция MYGUI_RTTI_DISABLE_TYPE_INFO убрана). - Убран -msse флаг компиляции. -- Widgets -- - Добавлено свойство "Depth" для дочерних виджетов, определяющее порядок отрисовки. - Добавлено событие eventChangeCoord. - Исправлено наследование свойства enabled. - ListBox: Добавлено событие eventNotifyItem для обработки событий клавиатуры и мыши на элементах списка. - ListBox: Добавлен метод getWidgetByIndex для получения элемента списка. - EditBox: Исправлена работа горячих клавиш (например copy & paste) в случае, если события нажатия клавиши и ввода символа передаются по отдельности. - ImageBox: Добавлен метод getImageSize. - ScrollBar: Добавлено свойство WheelPage для задания шага при прокрутке мышью. -- SubWidgets -- - PolygonalSkin: Добавлен stroke для рисования пунктирных линий (пример использования в UnitTest_Spline). - RotatingSkin: Теперь доступны в XML скина. -- Resources -- - ResourceTrueTypeFont: Добавлен параметр Distance для задания отступов между глифами в сгенерированной текстуре. - ResourceImageSet, ResourceTrueTypeFont: Добавлены методы для создания ресурсов не только через XML. - ResourceManualFont: Добавлена возможность задать размеры, не совпадающие с текстурными размерами. -- Skins -- - Добавлен Dark скин (используется по умолчанию во всех утилитах). - Добавлен Black скин. - Небольшие обновления в остальных скинах. -- Tools -- - Существенно улучшены LayoutEditor, FontEditor, ImageEditor and SkinEditor. -- Demos -- - Небольшие изменения и исправления. -- UnitTests -- - Добавлен DataInfoTest. -- Platforms -- - Добавлена Dummy платформа. - Различнве исправления в DirectX11 платформе. - Рефакторинг OpenGL платформы. - Добавлен DataMemoryStream класс. -- Other -- - Обновлен C# wrapper. - Лицензия изменена с LGPL на MIT. - Различные улучшения и дополнения документации. ---------------------------------------------------------------- ------------------------- Версия 3.2.0 ------------------------- ---------------------------------------------------------------- -- Core -- - Поддержка работы без std::typeinfo. - Исправлена неправильная работа выравнивания окон на внеэкранных слоях (например на RTT слое). - Исправлена ошибка с изменением порядка отрисовки виджетов на одном слое. -- Widgets -- - DDContainer: добавлен метод resetDrag для сброса состояния перетаскивания. - TextBox: Добавлены опциональные тени для текста. - EditBox: исправлено неправильное отображение при высоте виджета меньшем чем высота шрифта. - EditBox: добавлен сброс Redo при изменении текста пользователем. - Canvas: исправлено некорректное удаление. - ProgressBar: исправлена ошибка с некорректным отображением после растягивания. --SubWidgets-- - RotatingSkin: Исправлен саб виджет (неправильные UV координаты). -- Resources -- - ResourceTrueTypeFont: * Уменьшено использование памяти для текстуры (обычно на 50% или больше). * Улучшена скорость создания и работы со шрифтами. * Добавлена поддержка Windows FON/FNT растровых шрифтов и встроенных SBIT растровых в TrueType шрифтах. * Доавлена поддержка расширенных метрик символов, типографически корректный межстрочный интервал и перекрывающиеся символы; например "fj". * Реализована возможность выбрать символ используемый для отсутствующих символов (по умолчанию используется символ из шрифта (обычно квадратик) вместо пробела). * Реализовано непопиксельное позиционирование. * Добавлены удобные значение по умолчанию для различный свойств. * Некоторые старые свойста оставлены, но являются устаревшими. * Исправлена проблема с использованием whitespace символов, отличных от символа пробела и табуляции. * Исправлены некоторые утечки и падения. * Если шрифт не может быть загружен, то вместо Assert'а ошибка просто логируется. - ResourceManualFont: * Доавлена поддержка расширенных метрик символов и перекрывающихся символов; например "fj". * Доавлена возможность выбрать символ используемый для отсутствующих символов. -- Wraps -- - BaseLayout корректно работает без макетов и\или виджетов -- Plugins -- - Обновлен плагин BerkeliumWidget -- Tools -- - Исправлены различные баги и неточностей в LayoutEditor - FontViewer * Добавлена поддержка нового функционала ResourceTrueTypeFont and ResourceManualFont. * Добавлена поддержка типов шрифтов: *.ttc, *.otf, *.pfa, *.fon, and *.fnt. * Изменен интерфейс. * Реализована автоматическая генерация имен файлов при сохранении. * Исправлены некоторые утечки и падения. -- Platforms -- - GUI c Ogre не становится wireframe после установки wireframe режима отрисовки - Исправлена платформа OpenGL (Очистка буферов) - Добавлена тестовая платформа DirectX 11 ---------------------------------------------------------------- ------------------------- Версия 3.2.0 RC1 --------------------- ---------------------------------------------------------------- -- Core -- - Упрощены свойства скинов для более удобного создания в редакторе. - Все события у виджетов теперь мультиделегаты. - Поддержка драг правой кнопкой мыши. - В лог, помимо версии, теперь пишется ревизия (если собирать версии из svn). - В шрифтах теперь проверяется текстура при создании. - Другие незначительные дополнения и багфиксы. -- Managers -- - LanguageManager теперь заменяет теги рекурсивно. - Исправлен баг в LanguageManager с выбором несуществующего языка. -- Resources -- - Добавлен ресурс леаутов, лейауты грузятся и парсятся только при первой загрузке, а последующие - из памяти. - Все ресурсы core имеют приставку "MyGUI_" для предотвращения конфликтов имен. -- Widgets -- - VScroll и HScroll заменены на один класс ScrollBar. - Edit переименован в EditBox. - List переименован в ListBox. - MenuCtrl переименован в MenuControl. - MultiList переименован в MultiListBox. - Progress переименован в ProgressBar. - StaticImage переименован в ImageBox. - StaticText переименован в TextBox. - Tab переименован в TabControl. - В Window добавлено свойство Moveable. - Message перенесен из коре в Common. - MultiListBox поддерживает различные режимы автоматического ресайза колонок. - В Button вместо свойств StateCheck и ButtonPressed одно свойство StateSelected. - ListBox и ComboBox поддерживают ToolTip. - Пункт меню теперь можно отмечать. будет появляться галочка. - Свойство AlignVert переименовано VerticalAlignment. - При скрытии виджет теряет ввод и активность. - Отображение активных элементов в списке теперь правильно реагируют на изменения в списке (удаление\добавление). - Свойства связанные с текстом перенесенны из Widget в TextBox. --SubWidgets-- - Удален сабвиджет RawRect, т.к. у Widget появилось свойсво Colour. - Добавлен сабвиджет FilterNoneSkin который не сглаживает текстуру при растягивании (Ogre). - Добавлен сабвиджет PolygonalSkin для рисования линий. -- Tools -- - Добавлен SkinEditor. - Все скины полностью созданы в SkinEditor. - В LayoutEditor добавленна поддержка создания проектов. - В LayoutEditor теперь можно создавать колонки в MultiListBox. - В LayoutEditor теперь можно создавать PopupMenu\MenuBar. - В LayoutEditor добавлено окно выбора цвета. - В LayoutEditor выравнивание по сетке относительно отца. - В LayoutEditor показывается препросмотр скина. - В LayoutEditor поддерживается масштаб. - В LayoutEditor возможно изменять тип Widget. - В LayoutEditor есть возможность создавать свои уникальные свойства и с ними работать. - LayoutEditor не проверяется уникальность имени Widget. - FontViewer теперь сохраняет сгенереный шрифт в двух форматах. Как описание для генерации и как ручной шрифт без использрвания TrueType (текстура + описание глифов). -- Platforms -- - В OpenGL и DirectX BasisManager теперь правильно отображает содержимое W32 окна. - В OpenGL и DirectX исправлена утечка в DataManager. - В OpenGL добавлено сохранение текстуры. - Исправлена опечатка vertext -> vertex. -- Plugins -- - Удален Awesomium plugin (он теперь не LGPL). -- UnitTests -- - Добавлен UnitTest для PolygonalSkin. - Добавлен UnitTest для RotatingSkin. -- CMake -- - Добавлена опция MYGUI_CHECK_MEMORY_LEAKS для обнаружения утечек памяти. - Добавлена опция MYGUI_USE_PROJECT_FOLDERS для разбиения проектов студии по папкам в решении. - Переименованы настройки для UnitTest и Demos. - Теперь W32 ввод указан по умолчанию (ранее был OIS). ---------------------------------------------------------------- ------------------------- Версия 3.0.1 ------------------------- ---------------------------------------------------------------- -- License -- - в LGPL добавлено исключение для статической линковки открывающее возможность использования MyGUI в закрытых приложениях без нарушения лицензии (например на iPhone) - все содержимое Media за исключением нескольких файлов, созданных не командой разработчиков MyGUI теперь имеет MIT лицензию -- Core -- - рефакторинг кода для уменьшения вероятности возникновения ошибок (выявленные статическими анализаторами) -- Renders -- - добавлена поддержка внешне созданных текстур в Ogre рендере (оборачивание существующих текстур) -- Widgets -- - в Window добавлен метод getCaptionWidget для доступа к заголовку и управления его текстовым отображением (Шрифт и его размер) - исправлен RenderBoxScene врапер - исправлен баг с отображением Disabled, когда выджеты отображались как не Disabled -- Managers -- - Добавлено сообщение в лог, если скин не был найден. -- Utility -- - Исправлена загрузка несуществующих текстур для пикинга виджетов -- Wraps -- - Добавлена настройка для генерации враперов в CMake -- Plugins -- - AwesomiumPlugin и HikariPlugin вынесены в отдельную настройку CMake -- Resources -- - исправлен баг с некорректным отображением шрифтов на старых видеокартах : TrueType шрифт генерит текстуру R8G8B8A8 на машинах, которые не поддерживают L8A8 (OgreRender). ---------------------------------------------------------------- ------------------------- Версия 3.0.0 ------------------------- ---------------------------------------------------------------- -- Core -- - рендер система отделена от ядра -- Widgets -- - удален виджет RenderBox - и вынесен в Common как врапер - добавлен виджет ListCtrl - базовый виджет для списков с поддержкой OwnDraw, горизонтального скрола и произвольной высоты каждой строки - добавлен виджет ListBox - реализация списка с горизонтальным скролом на ListCtrl -- Managers -- - добавлен менеджер FactoryManager - менеджер создает все экземпляры объектов реализующих IObject (ресурсы, виджеты, контроллеры и т.д.) - добавлен менеджер DataManager - появилась возможность создания своего типа или источника данных -- Controllers -- - контроллеры поддерживают десерелизацию, возможно создание через XML -- Resources -- - добавлен тип ресурса ImageSetPointer для создания курсоров на основе ресурса ImageSet с поддержкой анимации - добавлен тип ресурса ManualPointer для создания курсоров на основе текстуры - добавлен тип ресурса TrueTypeFont для создания векторных шрифтов true type - добавлен тип ресурса ManualFont для создания шрифтов на основе текстуры - добавлен тип ресурса Skin для описания скина --SubWidgets-- - добавлен сабвиджет RotateSkin с поддержкой вращения геометрии -- Tools -- - Расширен LayoutEditor, поддержка контроллеров -- Demos -- - Demo_Pointers - демонстрация контекстов курсоров и поддержки W32 курсоров - Demo_RenderBox - демонстрация использования RenderBox врапера -- Plugins -- - Plugin_AwesomiumWidget - демонстрация реализации плагина на основе Awesomium (html внутри виджета) - Plugin_HikariWidget - демонстрация реализации плагина на основе Hikari (Flash внутри виджета) -- UnitTests -- - UnitTest_Layers - демонстрация использование GUI в 3D сцене - UnitTest_RTTLayers - демонстрация рендера леера в текстуру - UnitTest_TextureAnimation - демонстрация RTT нода, для кеширования или анимации целого окна - UnitTest_TreeControl - демонстрация реализации древовидного списка (автор : Pavel Turin) ---------------------------------------------------------------- ------------------------- Версия 2.2.3 ------------------------- ---------------------------------------------------------------- -- SubWidgets -- - полностью переделан саб виджет текста EditText * поддержка разбиения на слова при редактировании * поддержка курсора и выделения для ручного шрифта ManualFont -- Widget -- - исправлена проблема с наследуемым состоянием Disabled и Visible ---------------------------------------------------------------- ------------------------- Версия 2.2.2 ------------------------- ---------------------------------------------------------------- -- Core -- - преобразована иерархия виджетов, добавлены стили * Child - дочернее окно, обрезается по границам окна и не перекрывается (по умолчанию у дочерних) * Popup - всплывающее окно, имеет родителя, но не обрезается по нему, а свободно перемещается * Overlapped - дочернее окно, обрезается по границам родителя (если он есть), и может перекрываться (у рутовых по умолчанию) - поддержка отсоединение и присоединение виджетов, смена скинов и смена стилей на лету - введена быстрая система RTTI идентификация типа во время выполнения. Теперь типы виджетов можно безопасно проверять -- Widgets -- - добавлен виджет DDContainer - базовый класс для всех виджетов имеющих дроп - добавлен виджет MenuCtrl - базовый класс для всех меню - добавлен виджет MenuBar - добавлен виджет ScrllView - Widget имеет поддержку тултипов - StaticImage поддерживает анимацию -- Managers -- - добавлен менеджер ResourceManager - позволяет загружать пользовательские ресурсы, для примера ImageSet - добавлен менеджер LanguageManager - позволяет автоматически заменять теги в загружаемых лейаутах по загруженным словаря, а так же ручная вставка и замена тегов - менеджер PointerManager - поддерживает анимированные курсоры - менеджер FontManager - поддерживает загрузку кастомных шрифтов из текстуры -- Controllers -- - расширенны контроллеры движения - добавился Jump -- Resources -- - добавлен тип ресурса ImageSet позволяет создавать группы картинок, с поддержкой анимации, загружается через XML --SubWidgets-- - добавлен сабвиджет RawRect для прямого доступа к вершинам квада - добавлен сабвиджет TileRect для поддержки тайлинга квада -- Others -- - все виджеты контейнеры имеют Any для хранения пользовательской информации об айтеме - добавлено указание версии для XML - добавлены две темы для скинов -- Wraps -- - BaseLayout - базовая обертка, для загружаемых лейаутов - BaseItemBox - обертка, для удобного и быстрого использования ItemBox а - Добавлен контрол PanelView - полностью сделан на обертках -- Tools -- - Расширен LayoutEditor, поддержка внешних ресурсов, для удобной интеграции с внешними проектами - добавлен ImageSetViewer для просмотра ресурсов типа ResourceImageSet - наборы картинок с поддержкой анимации -- Demos -- - Demo_Colour - демонстрация контрола управления цветом, RowRect сабвиджета и управление цветом текста в EditBox - Demo_Console - демонстрация контрола консоль для управления виджетом - Demo_Controllers - демонстрация контроллеров движения и альфы, для управления виджетами - Demo_Font - демонстрация генерирования шрифта TrueType с возможностью сохранитьв формате MyGUI для быстрой интеграции шрифта - Demo_Gui - демонстрация совместного использования виджетов разных стилей и типов - Demo_ItemBox - демонстрация возможностей ItemBox, обертки BaseItemBox а так же ToolTip и внешний пользовательский ресурс, загружаемый через XML - Demo_PanelView - демонстрация контрола на основе обертки - Demo_Picking - демонстрация фокуса мыши по произвольному контуру - Demo_PluginStrangeButton – демонстрация использования внешних плагинов и внешних виджетов - Demo_ScrollView - демонстрация прокручиваемого поля - Demo_Themes - демонстрация различных тем - Demo_StaticImage - демонстрация простейшего вьювера ImageSet mygui-3.2.2+dfsg/Common/000077500000000000000000000000001322721077200150225ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Base/000077500000000000000000000000001322721077200156745ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Base/BaseDemoManager.h000066400000000000000000000043071322721077200210230ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 07/2012 */ #ifndef _95cb35b3_a2e5_471f_93df_56cc381a7449_ #define _95cb35b3_a2e5_471f_93df_56cc381a7449_ #include "BaseManager.h" #include "StatisticInfo.h" #include "InputFocusInfo.h" namespace base { class BaseDemoManager : public BaseManager { public: BaseDemoManager() : mInfo(nullptr), mFocusInfo(nullptr) { } virtual ~BaseDemoManager() { } diagnostic::StatisticInfo* getStatisticInfo() { return mInfo; } diagnostic::InputFocusInfo* getFocusInput() { return mFocusInfo; } virtual void injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text) { BaseManager::injectKeyPress(_key, _text); if (MyGUI::Gui::getInstancePtr() == nullptr) return; if (_key == MyGUI::KeyCode::F11) { bool visible = mInfo->getVisible(); mInfo->setVisible(!visible); } else if (_key == MyGUI::KeyCode::F12) { bool visible = mFocusInfo->getFocusVisible(); mFocusInfo->setFocusVisible(!visible); } } virtual void createScene() { loadPointerResources(); } protected: virtual void createGui() { BaseManager::createGui(); mInfo = new diagnostic::StatisticInfo(); mFocusInfo = new diagnostic::InputFocusInfo(); MyGUI::Gui::getInstance().eventFrameStart += MyGUI::newDelegate(this, &BaseDemoManager::notifyFrameStartUpdateStatistic); } virtual void destroyGui() { MyGUI::Gui::getInstance().eventFrameStart -= MyGUI::newDelegate(this, &BaseDemoManager::notifyFrameStartUpdateStatistic); if (mInfo) { delete mInfo; mInfo = nullptr; } if (mFocusInfo) { delete mFocusInfo; mFocusInfo = nullptr; } BaseManager::destroyGui(); } private: void notifyFrameStartUpdateStatistic(float _time) { if (mInfo != nullptr) { static float time = 0; time += _time; if (time > 1) { time -= 1; MyGUI::MapString statistic = getStatistic(); for (MyGUI::MapString::const_iterator info = statistic.begin(); info != statistic.end(); info ++) mInfo->change((*info).first, (*info).second); mInfo->update(); } } } private: diagnostic::StatisticInfo* mInfo; diagnostic::InputFocusInfo* mFocusInfo; }; } #endif mygui-3.2.2+dfsg/Common/Base/BaseResource.rc000066400000000000000000000001001322721077200205730ustar00rootroot00000000000000// Icon 1001 ICON "MyGUI.ico" mygui-3.2.2+dfsg/Common/Base/DirectX/000077500000000000000000000000001322721077200172365ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Base/DirectX/BaseManager.cpp000066400000000000000000000236211322721077200221130ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 05/2009 */ #include "Precompiled.h" #include #include "BaseManager.h" #include #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 # include # include #endif // имя класса окна const char* WND_CLASS_NAME = "MyGUI_Demo_window"; LRESULT CALLBACK DXWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: { SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)((LPCREATESTRUCT)lParam)->lpCreateParams); break; } case WM_SIZE: { if (wParam != SIZE_MINIMIZED) { base::BaseManager* baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWLP_USERDATA); if (baseManager) baseManager->_windowResized(); } break; } case WM_CLOSE: { base::BaseManager* baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWLP_USERDATA); if (baseManager) baseManager->quit(); } case WM_DESTROY: { PostQuitMessage(0); break; } default: { return DefWindowProc(hWnd, uMsg, wParam, lParam); } } return 0; } namespace base { D3DPRESENT_PARAMETERS mD3dpp; BaseManager::BaseManager() : mGUI(nullptr), mPlatform(nullptr), hWnd(0), mD3d(nullptr), mDevice(nullptr), hInstance(nullptr), mExit(false), mResourceFileName("MyGUI_Core.xml"), mIsDeviceLost(false) { } BaseManager::~BaseManager() { } void BaseManager::_windowResized() { RECT rect = { 0, 0, 0, 0 }; GetClientRect(hWnd, &rect); int width = rect.right - rect.left; int height = rect.bottom - rect.top; resizeRender(width, height); if (mPlatform) mPlatform->getRenderManagerPtr()->setViewSize(width, height); setInputViewSize(width, height); } bool BaseManager::create(int _width, int _height) { const unsigned int width = _width; const unsigned int height = _height; bool windowed = true; // регистрируем класс окна WNDCLASS wc = { 0, (WNDPROC)DXWndProc, 0, 0, GetModuleHandle(NULL), LoadIcon(NULL, MAKEINTRESOURCE(1001)), LoadCursor(NULL, IDC_ARROW), (HBRUSH)GetStockObject(BLACK_BRUSH), NULL, TEXT(WND_CLASS_NAME), }; RegisterClass(&wc); // создаем главное окно hWnd = CreateWindow(wc.lpszClassName, TEXT("Direct3D9 Render Window"), WS_POPUP, 0, 0, 0, 0, GetDesktopWindow(), NULL, wc.hInstance, this); if (!hWnd) { //OutException("fatal error!", "failed create window"); return false; } #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 char buf[MAX_PATH]; ::GetModuleFileNameA(0, (LPCH)&buf, MAX_PATH); HINSTANCE instance = ::GetModuleHandleA(buf); HICON hIconSmall = static_cast(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 32, 32, LR_DEFAULTSIZE)); HICON hIconBig = static_cast(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 256, 256, LR_DEFAULTSIZE)); if (hIconSmall) ::SendMessageA(hWnd, WM_SETICON, 0, (LPARAM)hIconSmall); if (hIconBig) ::SendMessageA(hWnd, WM_SETICON, 1, (LPARAM)hIconBig); #endif hInstance = wc.hInstance; windowAdjustSettings(hWnd, width, height, !windowed); createRender(width, height, windowed); createGui(); createInput((size_t)hWnd); createPointerManager((size_t)hWnd); createScene(); _windowResized(); return true; } void BaseManager::run() { MSG msg; while (true) { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } if (mExit) break; else if (msg.message == WM_QUIT) break; captureInput(); drawOneFrame(); if (GetActiveWindow() != hWnd) ::Sleep(50); } } void BaseManager::destroy() { destroyScene(); destroyPointerManager(); destroyInput(); destroyGui(); destroyRender(); if (hWnd) { DestroyWindow(hWnd); hWnd = 0; } UnregisterClass(WND_CLASS_NAME, hInstance); } void BaseManager::setupResources() { MyGUI::xml::Document doc; if (!doc.open(std::string("resources.xml"))) doc.getLastError(); MyGUI::xml::ElementPtr root = doc.getRoot(); if (root == nullptr || root->getName() != "Paths") return; MyGUI::xml::ElementEnumerator node = root->getElementEnumerator(); while (node.next()) { if (node->getName() == "Path") { if (node->findAttribute("root") != "") { bool root = MyGUI::utility::parseBool(node->findAttribute("root")); if (root) mRootMedia = node->getContent(); } addResourceLocation(node->getContent(), false); } } addResourceLocation(getRootMedia() + "/Common/Base"); } void BaseManager::createGui() { mPlatform = new MyGUI::DirectXPlatform(); mPlatform->initialise(mDevice); setupResources(); mGUI = new MyGUI::Gui(); mGUI->initialise(mResourceFileName); } void BaseManager::destroyGui() { if (mGUI) { mGUI->shutdown(); delete mGUI; mGUI = nullptr; } if (mPlatform) { mPlatform->shutdown(); delete mPlatform; mPlatform = nullptr; } } size_t BaseManager::getWindowHandle() { return (size_t)hWnd; } void BaseManager::setWindowCaption(const std::wstring& _text) { SetWindowTextW(hWnd, _text.c_str()); } void BaseManager::prepare() { } void BaseManager::addResourceLocation(const std::string& _name, bool _recursive) { mPlatform->getDataManagerPtr()->addResourceLocation(_name, _recursive); } void BaseManager::windowAdjustSettings(HWND hWnd, int width, int height, bool fullScreen) { // стиль окна HWND hwndAfter = 0; unsigned long style = 0; unsigned long style_ex = 0; RECT rc = { 0, 0, width, height }; if (fullScreen) { style = WS_POPUP | WS_VISIBLE; style_ex = GetWindowLongPtr(hWnd, GWL_EXSTYLE) | (WS_EX_TOPMOST); hwndAfter = HWND_TOPMOST; } else { style = WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU | WS_THICKFRAME; style_ex = GetWindowLongPtr(hWnd, GWL_EXSTYLE) & (~WS_EX_TOPMOST); hwndAfter = HWND_NOTOPMOST; AdjustWindowRect(&rc, style, false); } SetWindowLongPtr(hWnd, GWL_STYLE, style); SetWindowLongPtr(hWnd, GWL_EXSTYLE, style_ex); int desk_width = GetSystemMetrics(SM_CXSCREEN); int desk_height = GetSystemMetrics(SM_CYSCREEN); int w = rc.right - rc.left; int h = rc.bottom - rc.top; int x = fullScreen ? 0 : (desk_width - w) / 2; int y = fullScreen ? 0 : (desk_height - h) / 2; SetWindowPos(hWnd, hwndAfter, x, y, w, h, SWP_FRAMECHANGED | SWP_SHOWWINDOW); } void BaseManager::injectMouseMove(int _absx, int _absy, int _absz) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMouseMove(_absx, _absy, _absz); } void BaseManager::injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMousePress(_absx, _absy, _id); } void BaseManager::injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMouseRelease(_absx, _absy, _id); } void BaseManager::injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text) { if (!mGUI) return; if (_key == MyGUI::KeyCode::Escape) { mExit = true; return; } MyGUI::InputManager::getInstance().injectKeyPress(_key, _text); } void BaseManager::injectKeyRelease(MyGUI::KeyCode _key) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectKeyRelease(_key); } void BaseManager::resizeRender(int _width, int _height) { if (mDevice != nullptr) { if (mPlatform != nullptr) mPlatform->getRenderManagerPtr()->deviceLost(); mD3dpp.BackBufferWidth = _width; mD3dpp.BackBufferHeight = _height; HRESULT hr = mDevice->Reset(&mD3dpp); if (hr == D3DERR_INVALIDCALL) { MessageBox( NULL, "Call to Reset() failed with D3DERR_INVALIDCALL! ", "ERROR", MB_OK | MB_ICONEXCLAMATION ); } if (mPlatform != nullptr) mPlatform->getRenderManagerPtr()->deviceRestore(); } } bool BaseManager::createRender(int _width, int _height, bool _windowed) { // инициализация direct3d mD3d = Direct3DCreate9(D3D_SDK_VERSION); D3DDISPLAYMODE d3ddm; mD3d->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm); memset(&mD3dpp, 0, sizeof(mD3dpp)); mD3dpp.AutoDepthStencilFormat = D3DFMT_D16; mD3dpp.EnableAutoDepthStencil = TRUE; mD3dpp.BackBufferCount = 1; mD3dpp.BackBufferFormat = d3ddm.Format; mD3dpp.BackBufferWidth = _width; mD3dpp.BackBufferHeight = _height; mD3dpp.hDeviceWindow = hWnd; mD3dpp.SwapEffect = D3DSWAPEFFECT_FLIP; mD3dpp.Windowed = _windowed; if (FAILED(mD3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &mD3dpp, &mDevice))) { //OutException("fatal error!", "failed create d3d9 mDevice"); return false; } return true; } bool mIsDeviceLost = false; void BaseManager::drawOneFrame() { if (mIsDeviceLost == true) { Sleep( 100 ); HRESULT hr; if (FAILED(hr = mDevice->TestCooperativeLevel())) { if (hr == D3DERR_DEVICELOST) return; if (hr == D3DERR_DEVICENOTRESET) { if (mPlatform != nullptr) mPlatform->getRenderManagerPtr()->deviceLost(); hr = mDevice->Reset( &mD3dpp ); if (FAILED(hr)) return; if (mPlatform != nullptr) mPlatform->getRenderManagerPtr()->deviceRestore(); } return; } mIsDeviceLost = false; } if (SUCCEEDED(mDevice->BeginScene())) { mDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x001589FF, 1.0f, 0); mPlatform->getRenderManagerPtr()->drawOneFrame(); mDevice->EndScene(); } if (mDevice->Present(NULL, NULL, 0, NULL) == D3DERR_DEVICELOST) mIsDeviceLost = true; } void BaseManager::destroyRender() { if (mDevice) { mDevice->Release(); mDevice = 0; } if (mD3d) { mD3d->Release(); mD3d = 0; } } void BaseManager::quit() { mExit = true; } const std::string& BaseManager::getRootMedia() { return mRootMedia; } void BaseManager::setResourceFilename(const std::string& _flename) { mResourceFileName = _flename; } } // namespace base mygui-3.2.2+dfsg/Common/Base/DirectX/BaseManager.h000066400000000000000000000044351322721077200215620ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 08/2008 */ #ifndef BASE_MANAGER_H_ #define BASE_MANAGER_H_ #include #include "InputManager.h" #include "PointerManager.h" namespace MyGUI { class DirectXPlatform; } struct IDirect3D9; struct IDirect3DDevice9; struct HWND__; typedef HWND__* HWND; struct HINSTANCE__; typedef HINSTANCE__* HINSTANCE; namespace base { class BaseManager : public input::InputManager, public input::PointerManager { public: BaseManager(); virtual ~BaseManager(); virtual void prepare(); // инициализация коммандной строки bool create(int _width = 1024, int _height = 768); // создаем начальную точки каркаса приложения void destroy(); // очищаем все параметры каркаса приложения void run(); void quit(); void setWindowCaption(const std::wstring& _text); void makeScreenShot() { } const std::string& getRootMedia(); void setResourceFilename(const std::string& _flename); void addResourceLocation(const std::string& _name, bool _recursive = false); size_t getWindowHandle(); MyGUI::MapString getStatistic() { return MyGUI::MapString(); } /*internal:*/ void _windowResized(); protected: virtual void createScene() { } virtual void destroyScene() { } virtual void setupResources(); virtual void injectMouseMove(int _absx, int _absy, int _absz); virtual void injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id); virtual void injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id); virtual void injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text); virtual void injectKeyRelease(MyGUI::KeyCode _key); virtual void createGui(); virtual void destroyGui(); private: void windowAdjustSettings(HWND hWnd, int width, int height, bool fullScreen); void resizeRender(int _width, int _height); bool createRender(int _width, int _height, bool _windowed); void drawOneFrame(); void destroyRender(); private: MyGUI::Gui* mGUI; MyGUI::DirectXPlatform* mPlatform; HWND hWnd; IDirect3D9* mD3d; IDirect3DDevice9* mDevice; HINSTANCE hInstance; bool mExit; std::string mRootMedia; std::string mResourceFileName; bool mIsDeviceLost; }; } // namespace base #endif // BASE_MANAGER_H_ mygui-3.2.2+dfsg/Common/Base/DirectX11/000077500000000000000000000000001322721077200174005ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Base/DirectX11/BaseManager.cpp000066400000000000000000000255731322721077200222650ustar00rootroot00000000000000/*! @file @author Ustinov Igor aka Igor', DadyaIgor @date 09/2011 */ #include "Precompiled.h" #include #include #include "BaseManager.h" #include #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 # include # include #endif // имя класса окна const char* WND_CLASS_NAME = "MyGUI_Demo_window"; LRESULT CALLBACK DXWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: { SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)((LPCREATESTRUCT)lParam)->lpCreateParams); break; } case WM_SIZE: { if (wParam != SIZE_MINIMIZED) { base::BaseManager* baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWLP_USERDATA); if (baseManager) baseManager->_windowResized(); } break; } case WM_CLOSE: { base::BaseManager* baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWLP_USERDATA); if (baseManager) baseManager->quit(); } case WM_DESTROY: { PostQuitMessage(0); break; } default: { return DefWindowProc(hWnd, uMsg, wParam, lParam); } } return 0; } namespace base { BaseManager::BaseManager() : mGUI(nullptr), mPlatform(nullptr), hWnd(0), mDeviceContext(nullptr), mDevice(nullptr), mSwapChain(nullptr), mRenderTarget(nullptr), hInstance(nullptr), mExit(false), mResourceFileName("MyGUI_Core.xml") { } BaseManager::~BaseManager() { } void BaseManager::_windowResized() { RECT rect = { 0, 0, 0, 0 }; GetClientRect(hWnd, &rect); int width = rect.right - rect.left; int height = rect.bottom - rect.top; resizeRender(width, height); if (mPlatform) mPlatform->getRenderManagerPtr()->setViewSize(width, height); setInputViewSize(width, height); } bool BaseManager::create(int _width, int _height) { const unsigned int width = _width; const unsigned int height = _height; bool windowed = true; // регистрируем класс окна WNDCLASS wc = { 0, (WNDPROC)DXWndProc, 0, 0, GetModuleHandle(NULL), LoadIcon(NULL, MAKEINTRESOURCE(1001)), LoadCursor(NULL, IDC_ARROW), (HBRUSH)GetStockObject(BLACK_BRUSH), NULL, TEXT(WND_CLASS_NAME), }; RegisterClass(&wc); // создаем главное окно hWnd = CreateWindow(wc.lpszClassName, TEXT("Direct3D11 Render Window"), WS_POPUP, 0, 0, 0, 0, GetDesktopWindow(), NULL, wc.hInstance, this); if (!hWnd) { //OutException("fatal error!", "failed create window"); return false; } #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 char buf[MAX_PATH]; ::GetModuleFileNameA(0, (LPCH)&buf, MAX_PATH); HINSTANCE instance = ::GetModuleHandleA(buf); HICON hIconSmall = static_cast(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 32, 32, LR_DEFAULTSIZE)); HICON hIconBig = static_cast(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 256, 256, LR_DEFAULTSIZE)); if (hIconSmall) ::SendMessageA(hWnd, WM_SETICON, 0, (LPARAM)hIconSmall); if (hIconBig) ::SendMessageA(hWnd, WM_SETICON, 1, (LPARAM)hIconBig); #endif hInstance = wc.hInstance; windowAdjustSettings(hWnd, width, height, !windowed); createRender(width, height, windowed); createGui(); createInput((size_t)hWnd); createPointerManager((size_t)hWnd); createScene(); _windowResized(); return true; } void BaseManager::run() { MSG msg; while (true) { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } if (mExit) break; else if (msg.message == WM_QUIT) break; captureInput(); drawOneFrame(); if (GetActiveWindow() != hWnd) ::Sleep(50); } } void BaseManager::destroy() { destroyScene(); destroyPointerManager(); destroyInput(); destroyGui(); destroyRender(); if (hWnd) { DestroyWindow(hWnd); hWnd = 0; } UnregisterClass(WND_CLASS_NAME, hInstance); } void BaseManager::setupResources() { MyGUI::xml::Document doc; if (!doc.open(std::string("resources.xml"))) doc.getLastError(); MyGUI::xml::ElementPtr root = doc.getRoot(); if (root == nullptr || root->getName() != "Paths") return; MyGUI::xml::ElementEnumerator node = root->getElementEnumerator(); while (node.next()) { if (node->getName() == "Path") { if (node->findAttribute("root") != "") { bool root = MyGUI::utility::parseBool(node->findAttribute("root")); if (root) mRootMedia = node->getContent(); } addResourceLocation(node->getContent(), false); } } addResourceLocation(getRootMedia() + "/Common/Base"); } void BaseManager::createGui() { mPlatform = new MyGUI::DirectX11Platform(); mPlatform->initialise(mDevice); setupResources(); mGUI = new MyGUI::Gui(); mGUI->initialise(mResourceFileName); } void BaseManager::destroyGui() { if (mGUI) { mGUI->shutdown(); delete mGUI; mGUI = nullptr; } if (mPlatform) { mPlatform->shutdown(); delete mPlatform; mPlatform = nullptr; } } size_t BaseManager::getWindowHandle() { return (size_t)hWnd; } void BaseManager::setWindowCaption(const std::wstring& _text) { SetWindowTextW(hWnd, _text.c_str()); } void BaseManager::prepare() { } void BaseManager::addResourceLocation(const std::string& _name, bool _recursive) { mPlatform->getDataManagerPtr()->addResourceLocation(_name, _recursive); } void BaseManager::windowAdjustSettings(HWND hWnd, int width, int height, bool fullScreen) { // стиль окна HWND hwndAfter = 0; unsigned long style = 0; unsigned long style_ex = 0; RECT rc = { 0, 0, width, height }; if (fullScreen) { style = WS_POPUP | WS_VISIBLE; style_ex = GetWindowLongPtr(hWnd, GWL_EXSTYLE) | (WS_EX_TOPMOST); hwndAfter = HWND_TOPMOST; } else { style = WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU | WS_THICKFRAME; style_ex = GetWindowLongPtr(hWnd, GWL_EXSTYLE) & (~WS_EX_TOPMOST); hwndAfter = HWND_NOTOPMOST; AdjustWindowRect(&rc, style, false); } SetWindowLongPtr(hWnd, GWL_STYLE, style); SetWindowLongPtr(hWnd, GWL_EXSTYLE, style_ex); int desk_width = GetSystemMetrics(SM_CXSCREEN); int desk_height = GetSystemMetrics(SM_CYSCREEN); int w = rc.right - rc.left; int h = rc.bottom - rc.top; int x = fullScreen ? 0 : (desk_width - w) / 2; int y = fullScreen ? 0 : (desk_height - h) / 2; SetWindowPos(hWnd, hwndAfter, x, y, w, h, SWP_FRAMECHANGED | SWP_SHOWWINDOW); } void BaseManager::injectMouseMove(int _absx, int _absy, int _absz) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMouseMove(_absx, _absy, _absz); } void BaseManager::injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMousePress(_absx, _absy, _id); } void BaseManager::injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMouseRelease(_absx, _absy, _id); } void BaseManager::injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text) { if (!mGUI) return; if (_key == MyGUI::KeyCode::Escape) { mExit = true; return; } MyGUI::InputManager::getInstance().injectKeyPress(_key, _text); } void BaseManager::injectKeyRelease(MyGUI::KeyCode _key) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectKeyRelease(_key); } void BaseManager::resizeRender(int _width, int _height) { if (mDevice != nullptr) { // Ресайзимся mSwapChain->ResizeBuffers(1, _width, _height, DXGI_FORMAT_R8G8B8A8_UNORM, 0); // Устанавливаем новый вьюпорт D3D11_VIEWPORT vp; vp.Width = (float)_width; vp.Height = (float)_height; vp.MinDepth = 0.0f; vp.MaxDepth = 1.0f; vp.TopLeftX = 0.0f; vp.TopLeftY = 0.0f; mDeviceContext->RSSetViewports( 1, &vp ); // Устанавливаем новый view size mPlatform->getRenderManagerPtr()->setViewSize(_width, _height); } } bool BaseManager::createRender(int _width, int _height, bool _windowed) { D3D_FEATURE_LEVEL featureLevels[] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_10_0, D3D_FEATURE_LEVEL_9_3, D3D_FEATURE_LEVEL_9_2, D3D_FEATURE_LEVEL_9_1 }; static const int numFeatureLevels = 6; D3D_FEATURE_LEVEL selectedFeatureLevel = D3D_FEATURE_LEVEL_11_0; // Заполнение swap chain desc DXGI_SWAP_CHAIN_DESC swapChainDesc; ZeroMemory( &swapChainDesc, sizeof(swapChainDesc) ); swapChainDesc.BufferCount = 1; swapChainDesc.BufferDesc.Width = _width; swapChainDesc.BufferDesc.Height = _height; swapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; swapChainDesc.BufferDesc.RefreshRate.Numerator = 60; swapChainDesc.BufferDesc.RefreshRate.Denominator = 1; swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; swapChainDesc.OutputWindow = hWnd; swapChainDesc.SampleDesc.Count = 1; swapChainDesc.SampleDesc.Quality = 0; swapChainDesc.Windowed = _windowed; HRESULT hr = S_OK; // Пытаемся создать девайс if ( FAILED (hr = D3D11CreateDeviceAndSwapChain( NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, 0, featureLevels, numFeatureLevels, D3D11_SDK_VERSION, &swapChainDesc, &mSwapChain, &mDevice, &selectedFeatureLevel, &mDeviceContext ))) { return false; } ID3D11Texture2D* backBuffer; // Достаём back buffer из swap chain hr = mSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ), ( LPVOID* )&backBuffer ); // Создаём render target для back buffer mDevice->CreateRenderTargetView( backBuffer, NULL, &mRenderTarget ); // Устанавливаем back buffer rt текущим mDeviceContext->OMSetRenderTargets( 1, &mRenderTarget, NULL ); // Устанавливаем вьюпорт D3D11_VIEWPORT vp; vp.Width = (float)_width; vp.Height = (float)_height; vp.MinDepth = 0.0f; vp.MaxDepth = 1.0f; vp.TopLeftX = 0.0f; vp.TopLeftY = 0.0f; mDeviceContext->RSSetViewports( 1, &vp ); return true; } void BaseManager::drawOneFrame() { const float clearColor[] = { 0.0f, 0.0f, 0.0f, 1.0f }; // Чистим back buffer mDeviceContext->ClearRenderTargetView(mRenderTarget, clearColor); // Рисуем gui mPlatform->getRenderManagerPtr()->drawOneFrame(); // отправляем на экран mSwapChain->Present(0, 0); } void BaseManager::destroyRender() { if (mRenderTarget) { mRenderTarget->Release(); mRenderTarget = nullptr; } if (mSwapChain) { mSwapChain->Release(); mSwapChain = nullptr; } if (mDeviceContext) { mDeviceContext->Release(); mDeviceContext = nullptr; } if (mDevice) { mDevice->Release(); mDevice = nullptr; } } void BaseManager::quit() { mExit = true; } const std::string& BaseManager::getRootMedia() { return mRootMedia; } void BaseManager::setResourceFilename(const std::string& _flename) { mResourceFileName = _flename; } } // namespace base mygui-3.2.2+dfsg/Common/Base/DirectX11/BaseManager.h000066400000000000000000000046621322721077200217260ustar00rootroot00000000000000/*! @file @author Ustinov Igor aka Igor', DadyaIgor @date 09/2011 */ #ifndef BASE_MANAGER_H_ #define BASE_MANAGER_H_ #include #include "InputManager.h" #include "PointerManager.h" namespace MyGUI { class DirectX11Platform; } struct ID3D11Device; struct ID3D11DeviceContext; struct ID3D11RenderTargetView; struct IDXGISwapChain; struct HWND__; typedef HWND__* HWND; struct HINSTANCE__; typedef HINSTANCE__* HINSTANCE; namespace base { class BaseManager : public input::InputManager, public input::PointerManager { public: BaseManager(); virtual ~BaseManager(); virtual void prepare(); // инициализация коммандной строки bool create(int _width = 1024, int _height = 768); // создаем начальную точки каркаса приложения void destroy(); // очищаем все параметры каркаса приложения void run(); void quit(); void setWindowCaption(const std::wstring& _text); void makeScreenShot() { } const std::string& getRootMedia(); void setResourceFilename(const std::string& _flename); void addResourceLocation(const std::string& _name, bool _recursive = false); size_t getWindowHandle(); MyGUI::MapString getStatistic() { return MyGUI::MapString(); } /*internal:*/ void _windowResized(); protected: virtual void createScene() { } virtual void destroyScene() { } virtual void setupResources(); virtual void injectMouseMove(int _absx, int _absy, int _absz); virtual void injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id); virtual void injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id); virtual void injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text); virtual void injectKeyRelease(MyGUI::KeyCode _key); virtual void createGui(); virtual void destroyGui(); private: void windowAdjustSettings(HWND hWnd, int width, int height, bool fullScreen); void resizeRender(int _width, int _height); bool createRender(int _width, int _height, bool _windowed); void drawOneFrame(); void destroyRender(); private: MyGUI::Gui* mGUI; MyGUI::DirectX11Platform* mPlatform; HWND hWnd; ID3D11Device* mDevice; ID3D11DeviceContext* mDeviceContext; IDXGISwapChain* mSwapChain; ID3D11RenderTargetView* mRenderTarget; HINSTANCE hInstance; bool mExit; std::string mRootMedia; std::string mResourceFileName; }; } // namespace base #endif // BASE_MANAGER_H_ mygui-3.2.2+dfsg/Common/Base/Dummy/000077500000000000000000000000001322721077200167675ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Base/Dummy/BaseManager.cpp000066400000000000000000000126651322721077200216520ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 05/2009 */ #include "Precompiled.h" #include "BaseManager.h" #include #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 # include # include #endif const char* WND_CLASS_NAME = "MyGUIBaseManagerWndClass"; LRESULT CALLBACK DXWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: { SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)((LPCREATESTRUCT)lParam)->lpCreateParams); break; } case WM_SIZE: { if (wParam != SIZE_MINIMIZED) { base::BaseManager* baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWLP_USERDATA); if (baseManager) baseManager->_windowResized(); } break; } case WM_CLOSE: { base::BaseManager* baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWLP_USERDATA); if (baseManager) baseManager->quit(); } case WM_DESTROY: { PostQuitMessage(0); break; } default: { return DefWindowProc(hWnd, uMsg, wParam, lParam); } } return 0; } namespace base { BaseManager::BaseManager() : mGUI(nullptr), mPlatform(nullptr), hWnd(0), hInstance(nullptr), mExit(false) { } BaseManager::~BaseManager() { } void BaseManager::_windowResized() { RECT rect = { 0, 0, 0, 0 }; GetClientRect(hWnd, &rect); int width = rect.right - rect.left; int height = rect.bottom - rect.top; if (mPlatform) mPlatform->getRenderManagerPtr()->setViewSize(width, height); setInputViewSize(width, height); } bool BaseManager::create(int _width, int _height) { const unsigned int width = _width; const unsigned int height = _height; // регистрируем класс окна WNDCLASS wc = { 0, (WNDPROC)DXWndProc, 0, 0, GetModuleHandle(NULL), LoadIcon(NULL, MAKEINTRESOURCE(1001)), LoadCursor(NULL, IDC_ARROW), (HBRUSH)GetStockObject(BLACK_BRUSH), NULL, TEXT(WND_CLASS_NAME), }; RegisterClass(&wc); // создаем главное окно hWnd = CreateWindow(wc.lpszClassName, TEXT("Dummy Render Window"), WS_OVERLAPPED | WS_SYSMENU, (GetSystemMetrics(SM_CXSCREEN) - width) / 2, (GetSystemMetrics(SM_CYSCREEN) - height) / 2, width, height, GetDesktopWindow(), NULL, wc.hInstance, this); if (!hWnd) { return false; } ShowWindow(hWnd, SW_NORMAL); #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 char buf[MAX_PATH]; ::GetModuleFileNameA(0, (LPCH)&buf, MAX_PATH); HINSTANCE instance = ::GetModuleHandleA(buf); HICON hIconSmall = static_cast(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 32, 32, LR_DEFAULTSIZE)); HICON hIconBig = static_cast(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 256, 256, LR_DEFAULTSIZE)); if (hIconSmall) ::SendMessageA(hWnd, WM_SETICON, 0, (LPARAM)hIconSmall); if (hIconBig) ::SendMessageA(hWnd, WM_SETICON, 1, (LPARAM)hIconBig); #endif hInstance = wc.hInstance; createGui(); createInput((size_t)hWnd); createPointerManager((size_t)hWnd); createScene(); _windowResized(); return true; } void BaseManager::run() { MSG msg; while (true) { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } if (mExit) break; else if (msg.message == WM_QUIT) break; captureInput(); if (GetActiveWindow() != hWnd) ::Sleep(50); } } void BaseManager::destroy() { destroyScene(); destroyPointerManager(); destroyInput(); destroyGui(); if (hWnd) { DestroyWindow(hWnd); hWnd = 0; } UnregisterClass(WND_CLASS_NAME, hInstance); } void BaseManager::setupResources() { } void BaseManager::createGui() { mPlatform = new MyGUI::DummyPlatform(); mPlatform->initialise(); setupResources(); mGUI = new MyGUI::Gui(); mGUI->initialise(""); } void BaseManager::destroyGui() { if (mGUI) { mGUI->shutdown(); delete mGUI; mGUI = nullptr; } if (mPlatform) { mPlatform->shutdown(); delete mPlatform; mPlatform = nullptr; } } size_t BaseManager::getWindowHandle() { return (size_t)hWnd; } void BaseManager::setWindowCaption(const std::wstring& _text) { SetWindowTextW(hWnd, _text.c_str()); } void BaseManager::prepare() { } void BaseManager::addResourceLocation(const std::string& _name, bool _recursive) { } void BaseManager::injectMouseMove(int _absx, int _absy, int _absz) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMouseMove(_absx, _absy, _absz); } void BaseManager::injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMousePress(_absx, _absy, _id); } void BaseManager::injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMouseRelease(_absx, _absy, _id); } void BaseManager::injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text) { if (!mGUI) return; if (_key == MyGUI::KeyCode::Escape) { mExit = true; return; } MyGUI::InputManager::getInstance().injectKeyPress(_key, _text); } void BaseManager::injectKeyRelease(MyGUI::KeyCode _key) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectKeyRelease(_key); } void BaseManager::quit() { mExit = true; } const std::string& BaseManager::getRootMedia() { static std::string result; return result; } void BaseManager::setResourceFilename(const std::string& _flename) { } } // namespace base mygui-3.2.2+dfsg/Common/Base/Dummy/BaseManager.h000066400000000000000000000034301322721077200213050ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 08/2008 */ #ifndef BASE_MANAGER_H_ #define BASE_MANAGER_H_ #include #include "InputManager.h" #include "PointerManager.h" namespace MyGUI { class DummyPlatform; } namespace base { class BaseManager : public input::InputManager, public input::PointerManager { public: BaseManager(); virtual ~BaseManager(); virtual void prepare(); // инициализация коммандной строки bool create(int _width = 1024, int _height = 768); // создаем начальную точки каркаса приложения void destroy(); // очищаем все параметры каркаса приложения void run(); void quit(); void setWindowCaption(const std::wstring& _text); void makeScreenShot() { } const std::string& getRootMedia(); void setResourceFilename(const std::string& _flename); void addResourceLocation(const std::string& _name, bool _recursive = false); MyGUI::MapString getStatistic() { return MyGUI::MapString(); } size_t getWindowHandle(); /*internal:*/ void _windowResized(); protected: virtual void createScene() { } virtual void destroyScene() { } virtual void setupResources(); virtual void injectMouseMove(int _absx, int _absy, int _absz); virtual void injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id); virtual void injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id); virtual void injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text); virtual void injectKeyRelease(MyGUI::KeyCode _key); virtual void createGui(); virtual void destroyGui(); private: MyGUI::Gui* mGUI; MyGUI::DummyPlatform* mPlatform; HWND hWnd; HINSTANCE hInstance; bool mExit; }; } // namespace base #endif // BASE_MANAGER_H_ mygui-3.2.2+dfsg/Common/Base/InputFocusInfo.h000066400000000000000000000106411322721077200207620ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 10/2009 @module */ #ifndef INPUT_FOCUS_INFO_H_ #define INPUT_FOCUS_INFO_H_ #include namespace diagnostic { class InputFocusInfo { public: InputFocusInfo() : mFocusVisible(false), mMouseHelper(nullptr), mKeyHelper(nullptr), mWidgetMouseFocus(nullptr), mWidgetKeyFocus(nullptr), mOldMouseFocus(nullptr), mOldKeyFocus(nullptr) { MyGUI::InputManager::getInstance().eventChangeMouseFocus += MyGUI::newDelegate(this, &InputFocusInfo::notifyChangeMouseFocus); MyGUI::InputManager::getInstance().eventChangeKeyFocus += MyGUI::newDelegate(this, &InputFocusInfo::notifyChangeKeyFocus); MyGUI::Gui::getInstance().eventFrameStart += MyGUI::newDelegate(this, &InputFocusInfo::notifyFrameStart); } ~InputFocusInfo() { MyGUI::InputManager::getInstance().eventChangeMouseFocus -= MyGUI::newDelegate(this, &InputFocusInfo::notifyChangeMouseFocus); MyGUI::InputManager::getInstance().eventChangeKeyFocus -= MyGUI::newDelegate(this, &InputFocusInfo::notifyChangeKeyFocus); MyGUI::Gui::getInstance().eventFrameStart -= MyGUI::newDelegate(this, &InputFocusInfo::notifyFrameStart); if (mKeyHelper != nullptr) MyGUI::Gui::getInstance().destroyWidget(mKeyHelper); if (mMouseHelper != nullptr) MyGUI::Gui::getInstance().destroyWidget(mMouseHelper); } bool getFocusVisible() const { return mFocusVisible; } void setFocusVisible(bool _value) { mFocusVisible = _value; if (!mFocusVisible) { if (mMouseHelper) mMouseHelper->setVisible(false); if (mKeyHelper) mKeyHelper->setVisible(false); } } private: void notifyChangeMouseFocus(MyGUI::Widget* _widget) { if (mFocusVisible) { mWidgetMouseFocus = _widget; updateFocusWidgetHelpers(); } } void notifyChangeKeyFocus(MyGUI::Widget* _widget) { if (mFocusVisible) { mWidgetKeyFocus = _widget; updateFocusWidgetHelpers(); } } void notifyFrameStart(float _time) { if (mFocusVisible) updateFocusWidgetHelpers(false); } void updateFocusWidgetHelpers(bool _updateinfo = true) { const std::string layer = "Statistic"; const std::string skin_mouse = "RectGreen"; const std::string skin_key = "RectBlue"; if ((mWidgetMouseFocus != mOldMouseFocus) || ((mWidgetMouseFocus != nullptr) && (mMouseHelper != nullptr) && mWidgetMouseFocus->getAbsoluteCoord() != mMouseHelper->getAbsoluteCoord())) { mOldMouseFocus = mWidgetMouseFocus; if (mMouseHelper == nullptr) { if (!MyGUI::LayerManager::getInstance().isExist(layer)) return; if (!MyGUI::SkinManager::getInstance().isExist(skin_mouse)) return; mMouseHelper = MyGUI::Gui::getInstance().createWidget(skin_mouse, MyGUI::IntCoord(), MyGUI::Align::Default, layer); mMouseHelper->setNeedMouseFocus(false); } if (mWidgetMouseFocus) { //if (_updateinfo) // MyGUI::MYGUI_OUT("mouse focus : ", mWidgetMouseFocus->getName()); mMouseHelper->setCoord(mWidgetMouseFocus->getAbsoluteCoord()); mMouseHelper->setVisible(true); } else { //if (_updateinfo) // MyGUI::MYGUI_OUT("mouse focus : nullptr"); mMouseHelper->setVisible(false); } } if ((mWidgetKeyFocus != mOldKeyFocus) || ((mWidgetKeyFocus != nullptr) && (mKeyHelper != nullptr) && mWidgetKeyFocus->getAbsoluteCoord() != mKeyHelper->getAbsoluteCoord())) { mOldKeyFocus = mWidgetKeyFocus; if (mKeyHelper == nullptr) { if (!MyGUI::LayerManager::getInstance().isExist(layer)) return; if (!MyGUI::SkinManager::getInstance().isExist(skin_key)) return; mKeyHelper = MyGUI::Gui::getInstance().createWidget(skin_key, MyGUI::IntCoord(), MyGUI::Align::Default, layer); mKeyHelper->setNeedMouseFocus(false); } if (mWidgetKeyFocus) { //if (_updateinfo) // MyGUI::MYGUI_OUT("key focus : ", mWidgetKeyFocus->getName()); mKeyHelper->setCoord(mWidgetKeyFocus->getAbsoluteCoord()); mKeyHelper->setVisible(true); } else { //if (_updateinfo) // MyGUI::MYGUI_OUT("key focus : nullptr"); mKeyHelper->setVisible(false); } } } private: bool mFocusVisible; MyGUI::Widget* mMouseHelper; MyGUI::Widget* mKeyHelper; MyGUI::Widget* mWidgetMouseFocus; MyGUI::Widget* mWidgetKeyFocus; MyGUI::Widget* mOldMouseFocus; MyGUI::Widget* mOldKeyFocus; }; } // namespace diagnostic #endif // INPUT_FOCUS_INFO_H_ mygui-3.2.2+dfsg/Common/Base/Main.h000066400000000000000000000023631322721077200167350ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 08/2008 @module */ #ifndef BASEMAIN_H_ #define BASEMAIN_H_ #include "Precompiled.h" #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 #define WIN32_LEAN_AND_MEAN #include #endif #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 # ifdef MYGUI_CHECK_MEMORY_LEAKS # define MYGUI_APP(cls) INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT argc) { _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); return startApp(); } # else # define MYGUI_APP(cls) INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT argc) { return startApp(); } # endif #else # define MYGUI_APP(cls) int main(int argc, char **argv) { return startApp(); } #endif template int startApp() { try { AppClass* app = new AppClass(); app->prepare(); if (app->create()) { app->run(); app->destroy(); } delete app; app = 0; } catch (MyGUI::Exception& _e) { #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 MessageBoxA( NULL, _e.getFullDescription().c_str(), "An exception has occured", MB_OK | MB_ICONERROR | MB_TASKMODAL); #else std::cerr << "An exception has occured" << " : " << _e.getFullDescription().c_str(); #endif throw; } return 0; } #endif mygui-3.2.2+dfsg/Common/Base/MyGUI.ico000066400000000000000000000617131322721077200173320ustar00rootroot00000000000000 5V00 %  3E U hc_PNG  IHDR\rfIDATxxՕǿI#C BT"ʠ*(T<(}.n6inIQ47b$!`CBH7/$yϹ}ߙyasϽL{9          ]|N@4c>Tu$i}Т3Q1F~ګX a/`>`NjĦ|d5(maA=xB sx2 `D ҧ/@-^8?iXN0Lz]O- 8Jħ b N?LKn0N1฿-A`$+@F-s;oLX$~>Ȋ Y1X4@ LdO |f=ǁѣ8Eݜ!(X:7/‹@e8gWpt;~*[zI^Zq‹bb'KN^y](,B7y 'ORӲ!b@*_V߁\:tLj(RMWrEH  Ξf^5!IDGQ8*BR08C%أṮoyK t/yΈZ<> RD`^4@,p?̕y}G!`p ,G}N>3.M+b8Gj R_n8iЏsn3 J:Jj|4Cf#x+ +Mz0ij;Bp@($9롾&[|$fJɅ @?Lo$e "cLAi1 #}&@'j,nƙRM9yrt`%`j{ZلNAR>yGZ`%=pmNHPn4q) y:nŀspz̰3p?NmH9VMabK Q΄(xi K-Q]fpR R3$6q] Jq0KH~A",q~>P IA zی_r_#Lp(_9N\<6㼏~v24l ReҔ뿜A,3';Dp3&?̙*>@I(lX&Pg*a_EpLqU;BZ(R@4P7!ÀA=goٸߢe.uH}V\5nijwWKܛ򥗥B4Zkuy2Ih6}^*{Å.G$?O@_#bW@ )%92EVCyw{(6%H$9H3"@*|W=KױEeWREià4B g`4ޫ^?@ ztUEAp:|_.SAiȟ4  8~ꚯ)31t E@9aMX敪\)u)G6QDTC0( avH''`_,=,Y+-=/@GI @yrό.]sTv_OE)tPP\_>1LTAi=y&kHKH/<>,G8j.&uQ0Rq6t)3o2qy$@"0<<&ˋN@''Ʋ;7:>-q H\;" )+_俰A\}ZUm1WyN/kMPϞ<.{eU'{Uٓ봡-|)rxP:*NJ{tgf xA0|dů]]ҥ%I a[#0-@f_ &KO-u@ =UDzKX%>2]m?ɏi3cNf322H`n p肐ek)ͅ1*u`nu  Rh'UD$gC xd*`s<#Hi,^N2V 0W9n(?/-RUJ}!+;SrJcTd o3䢈xIbhWpVHEqEg ?͛FF]!@ ybA_S i_:'3 p7BP@2 />dRqo'a2 '>Փ+y8q*"a%dABbd󫐝5@O7! mE'Oǭ+7NA*/ "hT9y Z}cEUHN8Y Y(u9XTre5 <&Qq"@:P\97{ b8ԥ&$l u} 3ɃQ}P|?`"X:{H<( ϐ$Ġ~ f|J@@1 -SCOw3UĸP8SpCש"<#{)=A4?P`(r@` z z|(?:4PE'z-nY7sC3UĄvUa(w4R jTCWT: (E0q1t5QD(#gA2 JIi@;/кs#UDR7$$0=!s1!;BN'dd'$ߟ_<!XQv*"?hozdn2N G j%0ɾ1YD04F))xb%b8I;%a_%W) T@B!@|̚b 6 `dD\!][6f}0JI)@B5t5aTULRTܳ WXba"PhH.pm~.~GNwp RQT"AxY_wv~}fLɃ d+}EUZ EH= NX$Kq|\zj-}U.EW|EK_"v z}dOEKMi s;*cm,Yke@Y2M]!5CL?H)Ͼ-8\^XW^0>sd+uǓT-8HA%8_#*IWeϯ[?q`ANg##=Ge!tC׈mjۂDL0x!fU\(.IS:ic1^=Α.!$:=s>Cl@i|(vx &W+t}]2"+;Ak86{I*Pk="B҂&] ?`O)6@2& b S:mi'JsA}k8;:ݾ]ygYBT,@QY SKX}BH_= g]3hEwtLQRq J*¼Wj}V0 bȞ9A24xMlم ]2lEEbdI -[X= Ƃf gMc0ZgȲ&O) # Ӡpx-YGF1rL͟8$4b+cqyçuS894Rj`\4 ҭ8eLñѲJdڊ!_`? [x€P[7:^*`w R[U٪A/;jwd;:(HMڦB?F0B;B+3UMVx]-} -} jT˕_M?FD@ w8{xZzlGk?omm?F Rb6}@^H0DC*H6Rk%llb<܇sbQrPR>gD hT߁6f^ K$g]?I>B,^p=e.q+f>,F x7)2޳X82=O~\z6?(0OC,Nb^ҳpKda*]+D<{3"P8.P$*;*y)UDl%(s;+n $m|ĕW.0%:0f^9 x683p]b:v?gA*L\_k0 +V@u/ԩd'[E@nܷGK'翥nk@d7[u.G~X HԹw+jFP,ж(pdd1T&"y931`e85tC@EU@ ?LM SrRE7OE^pm|DTnƦU\>ۡ|~^ nwtfw[g:(n0=ݗ Ցc py }G9(W9bqBL軬1P`""pad`{xqM03(Ft6:ү5XRdqr[" 4*/N]zN? R,|6 T1WD^p\CPB+xoe pIKG9- Q(?%XdXOξ(/ ?s>-Pk@TpRLaADR@9uFloCJ+ ]M|gwcwcwcwcwcwcxdo6,wcwcwcwcwcwcwcE9 PBzewcwcwcwcwc|gy8.(x:0wcwcwcwcwcwcwcH!6s`wcwcwcwcwcxdm[FB7yewcwcwcwcwcwcH!t bQwcwcwcwcwcwcxd}TF|hwcwcwcwcwcH!RDwcwcwcwcwcwcwcAZJyewcwcwcwcH!k4+wcwcwcwcwcwcwca/%VGzfwcwcwc20wcwcwcwcwcwcwcz;1 ?5jxdwcuYxdwcwcwcwcwcwcx:0 Fn[wcK@gUxdwcwcwcwcwcx:0k5+11OAzfwcwcwcwcwcy;1+!x9/|gwcwcwcwcwc`.%% u7.|gwcwcwcwcwcH!2J"J"2Fm|m?(  +// s[Gs. L%:(7eT].&y7 \L}=21ZKI{i2*wcXI`-&M@wcwctawcwcwc}=29PBwcwctawcwcwcwcwcwcwcfU  +#% iWwcwcwcwcv;1v;1wcwcwcwcwc`/'o/.o\wcwcwcgU! ÓI3OAQCwcwcwco\.K({A6wcwcwco\.G{X+$_NcRgUSD! ? !  mygui-3.2.2+dfsg/Common/Base/Ogre/000077500000000000000000000000001322721077200165705ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Base/Ogre/BaseManager.cpp000066400000000000000000000301231322721077200214400ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 08/2008 */ #include "Precompiled.h" #include "BaseManager.h" #include #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 # include #elif MYGUI_PLATFORM == MYGUI_PLATFORM_LINUX # include # include # include #endif namespace base { #if MYGUI_PLATFORM == MYGUI_PLATFORM_APPLE #include // This function will locate the path to our application on OS X, // unlike windows you can not rely on the curent working directory // for locating your configuration files and resources. std::string macBundlePath() { char path[1024]; CFBundleRef mainBundle = CFBundleGetMainBundle(); assert(mainBundle); CFURLRef mainBundleURL = CFBundleCopyBundleURL(mainBundle); assert(mainBundleURL); CFStringRef cfStringRef = CFURLCopyFileSystemPath( mainBundleURL, kCFURLPOSIXPathStyle); assert(cfStringRef); CFStringGetCString(cfStringRef, path, 1024, kCFStringEncodingASCII); CFRelease(mainBundleURL); CFRelease(cfStringRef); return std::string(path); } #endif BaseManager::BaseManager() : mGUI(nullptr), mPlatform(nullptr), mRoot(nullptr), mCamera(nullptr), mSceneManager(nullptr), mWindow(nullptr), mExit(false), mPluginCfgName("plugins.cfg"), mResourceXMLName("resources.xml"), mResourceFileName("MyGUI_Core.xml") { #if MYGUI_PLATFORM == MYGUI_PLATFORM_APPLE mResourcePath = macBundlePath() + "/Contents/Resources/"; #else mResourcePath = ""; #endif } BaseManager::~BaseManager() { } bool BaseManager::create(int _width, int _height) { Ogre::String pluginsPath; #ifndef OGRE_STATIC_LIB pluginsPath = mResourcePath + mPluginCfgName; #endif mRoot = new Ogre::Root(pluginsPath, mResourcePath + "ogre.cfg", mResourcePath + "Ogre.log"); setupResources(); // попробуем завестись на дефолтных if (!mRoot->restoreConfig()) { // ничего не получилось, покажем диалог if (!mRoot->showConfigDialog()) return false; } mWindow = mRoot->initialise(true); // вытаскиваем дискриптор окна size_t handle = getWindowHandle(); #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 char buf[MAX_PATH]; ::GetModuleFileNameA(0, (LPCH)&buf, MAX_PATH); HINSTANCE instance = ::GetModuleHandleA(buf); HICON hIconSmall = static_cast(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 32, 32, LR_DEFAULTSIZE)); HICON hIconBig = static_cast(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 256, 256, LR_DEFAULTSIZE)); if (hIconSmall) ::SendMessageA((HWND)handle, WM_SETICON, 0, (LPARAM)hIconSmall); if (hIconBig) ::SendMessageA((HWND)handle, WM_SETICON, 1, (LPARAM)hIconBig); #endif mSceneManager = mRoot->createSceneManager(Ogre::ST_GENERIC, "BaseSceneManager"); mCamera = mSceneManager->createCamera("BaseCamera"); mCamera->setNearClipDistance(5); mCamera->setPosition(400, 400, 400); mCamera->lookAt(0, 150, 0); // Create one viewport, entire window Ogre::Viewport* vp = mWindow->addViewport(mCamera); // Alter the camera aspect ratio to match the viewport mCamera->setAspectRatio((float)vp->getActualWidth() / (float)vp->getActualHeight()); // Set default mipmap level (NB some APIs ignore this) Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5); mSceneManager->setAmbientLight(Ogre::ColourValue::White); Ogre::Light* light = mSceneManager->createLight("MainLight"); light->setType(Ogre::Light::LT_DIRECTIONAL); Ogre::Vector3 vec(-0.3f, -0.3f, -0.3f); vec.normalise(); light->setDirection(vec); // Load resources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); mRoot->addFrameListener(this); Ogre::WindowEventUtilities::addWindowEventListener(mWindow, this); createGui(); createInput(handle); createPointerManager(handle); createScene(); windowResized(mWindow); return true; } void BaseManager::run() { // инициализируем все рендер таргеты mRoot->getRenderSystem()->_initRenderTargets(); // крутимся бесконечно while (true) { Ogre::WindowEventUtilities::messagePump(); if (mWindow->isActive() == false) { mWindow->setActive(true); #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 ::Sleep(50); #endif } if (!mRoot->renderOneFrame()) break; // выставляем слип, чтобы другие потоки не стопорились #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 ::Sleep(0); #endif }; } void BaseManager::destroy() { destroyScene(); destroyPointerManager(); destroyInput(); destroyGui(); // очищаем сцену if (mSceneManager) { mSceneManager->clearScene(); mSceneManager->destroyAllCameras(); mSceneManager = nullptr; mCamera = nullptr; } if (mWindow) { mWindow->destroy(); mWindow = nullptr; } if (mRoot) { Ogre::RenderWindow* window = mRoot->getAutoCreatedWindow(); if (window) window->removeAllViewports(); delete mRoot; mRoot = nullptr; } } void BaseManager::createGui() { mPlatform = new MyGUI::OgrePlatform(); mPlatform->initialise(mWindow, mSceneManager, Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME); mGUI = new MyGUI::Gui(); mGUI->initialise(mResourceFileName); } void BaseManager::destroyGui() { if (mGUI) { mGUI->shutdown(); delete mGUI; mGUI = nullptr; } if (mPlatform) { mPlatform->shutdown(); delete mPlatform; mPlatform = nullptr; } } void BaseManager::setupResources() { MyGUI::xml::Document doc; if (!doc.open(mResourceXMLName)) doc.getLastError(); MyGUI::xml::ElementPtr root = doc.getRoot(); if (root == nullptr || root->getName() != "Paths") return; MyGUI::xml::ElementEnumerator node = root->getElementEnumerator(); while (node.next()) { if (node->getName() == "Path") { if (node->findAttribute("root") != "") { bool rootAttr = MyGUI::utility::parseBool(node->findAttribute("root")); if (rootAttr) mRootMedia = node->getContent(); } addResourceLocation(node->getContent()); } } addResourceLocation(getRootMedia() + "/Common/Base"); } bool BaseManager::frameStarted(const Ogre::FrameEvent& evt) { if (mExit) return false; if (!mGUI) return true; captureInput(); return true; } bool BaseManager::frameEnded(const Ogre::FrameEvent& evt) { return true; } void BaseManager::windowResized(Ogre::RenderWindow* _rw) { int width = (int)_rw->getWidth(); int height = (int)_rw->getHeight(); // при удалении окна может вызываться этот метод if (mCamera) { mCamera->setAspectRatio((float)width / (float)height); setInputViewSize(width, height); } } void BaseManager::windowClosed(Ogre::RenderWindow* _rw) { mExit = true; destroyInput(); } size_t BaseManager::getWindowHandle() { size_t handle = 0; mWindow->getCustomAttribute("WINDOW", &handle); return handle; } void BaseManager::setWindowCaption(const std::wstring& _text) { #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 ::SetWindowTextW((HWND)getWindowHandle(), _text.c_str()); #elif MYGUI_PLATFORM == MYGUI_PLATFORM_LINUX Display* xDisplay = nullptr; unsigned long windowHandle = 0; mWindow->getCustomAttribute("XDISPLAY", &xDisplay); mWindow->getCustomAttribute("WINDOW", &windowHandle); Window win = (Window)windowHandle; XTextProperty windowName; windowName.value = (unsigned char *)(MyGUI::UString(_text).asUTF8_c_str()); windowName.encoding = XA_STRING; windowName.format = 8; windowName.nitems = strlen((char *)(windowName.value)); XSetWMName(xDisplay, win, &windowName); #endif } void BaseManager::prepare() { } void BaseManager::addResourceLocation(const std::string& _name, const std::string& _group, const std::string& _type, bool _recursive) { #if MYGUI_PLATFORM == MYGUI_PLATFORM_APPLE // OS X does not set the working directory relative to the app, In order to make things portable on OS X we need to provide the loading with it's own bundle path location Ogre::ResourceGroupManager::getSingleton().addResourceLocation(Ogre::String(macBundlePath() + "/" + _name), _type, _group, _recursive); #else Ogre::ResourceGroupManager::getSingleton().addResourceLocation(_name, _type, _group, _recursive); #endif } void BaseManager::addResourceLocation(const std::string& _name, bool _recursive) { addResourceLocation(_name, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, "FileSystem", false); } void BaseManager::injectMouseMove(int _absx, int _absy, int _absz) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMouseMove(_absx, _absy, _absz); } void BaseManager::injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMousePress(_absx, _absy, _id); } void BaseManager::injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMouseRelease(_absx, _absy, _id); } void BaseManager::injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text) { if (!mGUI) return; if (_key == MyGUI::KeyCode::Escape) { mExit = true; return; } else if (_key == MyGUI::KeyCode::SysRq) { makeScreenShot(); return; } // change polygon mode // TODO: polygon mode require changes in platform else if (_key == MyGUI::KeyCode::F5) { getCamera()->setPolygonMode(Ogre::PM_SOLID); } else if (_key == MyGUI::KeyCode::F6) { getCamera()->setPolygonMode(Ogre::PM_WIREFRAME); } else if (_key == MyGUI::KeyCode::F7) { getCamera()->setPolygonMode(Ogre::PM_POINTS); } #if OGRE_VERSION >= MYGUI_DEFINE_VERSION(1, 7, 0) && OGRE_NO_VIEWPORT_ORIENTATIONMODE == 0 else if (_key == MyGUI::KeyCode::F1) { mWindow->getViewport(0)->setOrientationMode(Ogre::OR_DEGREE_0, false); mPlatform->getRenderManagerPtr()->setRenderWindow(mWindow); } else if (_key == MyGUI::KeyCode::F2) { mWindow->getViewport(0)->setOrientationMode(Ogre::OR_DEGREE_90, false); mPlatform->getRenderManagerPtr()->setRenderWindow(mWindow); } else if (_key == MyGUI::KeyCode::F3) { mWindow->getViewport(0)->setOrientationMode(Ogre::OR_DEGREE_180, false); mPlatform->getRenderManagerPtr()->setRenderWindow(mWindow); } else if (_key == MyGUI::KeyCode::F4) { mWindow->getViewport(0)->setOrientationMode(Ogre::OR_DEGREE_270, false); mPlatform->getRenderManagerPtr()->setRenderWindow(mWindow); } #endif MyGUI::InputManager::getInstance().injectKeyPress(_key, _text); } void BaseManager::injectKeyRelease(MyGUI::KeyCode _key) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectKeyRelease(_key); } void BaseManager::quit() { mExit = true; } const std::string& BaseManager::getRootMedia() { return mRootMedia; } void BaseManager::setResourceFilename(const std::string& _flename) { mResourceFileName = _flename; } Ogre::SceneManager* BaseManager::getSceneManager() { return mSceneManager; } Ogre::Camera* BaseManager::getCamera() { return mCamera; } void BaseManager::makeScreenShot() { std::ifstream stream; std::string file; do { stream.close(); static size_t num = 0; const size_t max_shot = 100; if (num == max_shot) { MYGUI_LOG(Info, "The limit of screenshots is exceeded : " << max_shot); return; } file = MyGUI::utility::toString("screenshot_", ++num, ".png"); stream.open(file.c_str()); } while (stream.is_open()); mWindow->writeContentsToFile(file); } MyGUI::MapString BaseManager::getStatistic() { MyGUI::MapString result; try { const Ogre::RenderTarget::FrameStats& stats = mWindow->getStatistics(); result["FPS"] = MyGUI::utility::toString(stats.lastFPS); result["triangle"] = MyGUI::utility::toString(stats.triangleCount); result["batch"] = MyGUI::utility::toString(stats.batchCount); result["batch gui"] = MyGUI::utility::toString(MyGUI::OgreRenderManager::getInstance().getBatchCount()); } catch (...) { MYGUI_LOG(Warning, "Error get statistics"); } return result; } } // namespace base mygui-3.2.2+dfsg/Common/Base/Ogre/BaseManager.h000066400000000000000000000044001322721077200211040ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 08/2008 */ #ifndef BASE_MANAGER_H_ #define BASE_MANAGER_H_ #include #include #include "InputManager.h" #include "PointerManager.h" #include "MyGUI_LastHeader.h" namespace MyGUI { class OgrePlatform; } namespace base { class BaseManager : public input::InputManager, public input::PointerManager, public Ogre::FrameListener, public Ogre::WindowEventListener { public: BaseManager(); virtual ~BaseManager(); virtual void prepare(); bool create(int _width = 1024, int _height = 768); void destroy(); void run(); void quit(); void setWindowCaption(const std::wstring& _text); void makeScreenShot(); const std::string& getRootMedia(); void setResourceFilename(const std::string& _flename); void addResourceLocation(const std::string& _name, bool _recursive = false); size_t getWindowHandle(); MyGUI::MapString getStatistic(); /*internal:*/ Ogre::SceneManager* getSceneManager(); Ogre::Camera* getCamera(); protected: virtual void createScene() { } virtual void destroyScene() { } virtual void setupResources(); virtual void injectMouseMove(int _absx, int _absy, int _absz); virtual void injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id); virtual void injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id); virtual void injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text); virtual void injectKeyRelease(MyGUI::KeyCode _key); virtual void createGui(); virtual void destroyGui(); private: virtual bool frameStarted(const Ogre::FrameEvent& _evt); virtual bool frameEnded(const Ogre::FrameEvent& _evt); virtual void windowResized(Ogre::RenderWindow* _rw); virtual void windowClosed(Ogre::RenderWindow* _rw); void addResourceLocation(const std::string& _name, const std::string& _group, const std::string& _type, bool _recursive); private: MyGUI::Gui* mGUI; MyGUI::OgrePlatform* mPlatform; Ogre::Root* mRoot; Ogre::Camera* mCamera; Ogre::SceneManager* mSceneManager; Ogre::RenderWindow* mWindow; bool mExit; Ogre::String mResourcePath; std::string mPluginCfgName; std::string mResourceXMLName; std::string mResourceFileName; std::string mRootMedia; }; } // namespace base #endif // BASE_MANAGER_H_ mygui-3.2.2+dfsg/Common/Base/OpenGL/000077500000000000000000000000001322721077200170205ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Base/OpenGL/BaseManager.cpp000066400000000000000000000316251322721077200217000ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 05/2009 */ #include "Precompiled.h" #include #ifdef MYGUI_CHECK_MEMORY_LEAKS # undef new # undef delete #endif #include #include "BaseManager.h" #include //for image loader #include #ifdef __MINGW32__ using namespace Gdiplus; #endif // имя класса окна const char* WND_CLASS_NAME = "MyGUI_Demo_window"; LRESULT CALLBACK DXWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: { SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)((LPCREATESTRUCT)lParam)->lpCreateParams); break; } case WM_MOVE: case WM_SIZE: { base::BaseManager* baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWLP_USERDATA); if (baseManager) baseManager->_windowResized(); break; } case WM_CLOSE: { base::BaseManager* baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWLP_USERDATA); if (baseManager) baseManager->quit(); } case WM_DESTROY: { PostQuitMessage(0); break; } default: { return DefWindowProc(hWnd, uMsg, wParam, lParam); } } return 0; } namespace base { ULONG_PTR gdiplusToken; BaseManager::BaseManager() : mGUI(nullptr), mPlatform(nullptr), hWnd(0), hDC(0), hRC(0), mExit(false), mResourceFileName("MyGUI_Core.xml") { Gdiplus::GdiplusStartupInput gdiplusStartupInput; Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); } BaseManager::~BaseManager() { Gdiplus::GdiplusShutdown(gdiplusToken); } void BaseManager::_windowResized() { RECT rect = { 0, 0, 0, 0 }; GetClientRect(hWnd, &rect); int width = rect.right - rect.left; int height = rect.bottom - rect.top; resizeRender(width, height); if (mPlatform) mPlatform->getRenderManagerPtr()->setViewSize(width, height); setInputViewSize(width, height); } bool BaseManager::create(int _width, int _height) { const unsigned int width = _width; const unsigned int height = _height; bool windowed = true; // регистрируем класс окна WNDCLASS wc = { 0, (WNDPROC)DXWndProc, 0, 0, GetModuleHandle(NULL), LoadIcon(NULL, MAKEINTRESOURCE(1001)), LoadCursor(NULL, IDC_ARROW), (HBRUSH)GetStockObject(BLACK_BRUSH), NULL, TEXT(WND_CLASS_NAME), }; RegisterClass(&wc); // создаем главное окно hWnd = CreateWindow(wc.lpszClassName, TEXT("OpenGL Render Window"), WS_POPUP, 0, 0, 0, 0, GetDesktopWindow(), NULL, wc.hInstance, this); if (!hWnd) { //OutException("fatal error!", "failed create window"); return false; } #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 char buf[MAX_PATH]; ::GetModuleFileNameA(0, (LPCH)&buf, MAX_PATH); HINSTANCE instance = ::GetModuleHandleA(buf); HICON hIconSmall = static_cast(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 32, 32, LR_DEFAULTSIZE)); HICON hIconBig = static_cast(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 256, 256, LR_DEFAULTSIZE)); if (hIconSmall) ::SendMessageA(hWnd, WM_SETICON, 0, (LPARAM)hIconSmall); if (hIconBig) ::SendMessageA(hWnd, WM_SETICON, 1, (LPARAM)hIconBig); #endif hInstance = wc.hInstance; windowAdjustSettings(hWnd, width, height, !windowed); if (!createRender(width, height, windowed)) { return false; } createGui(); createInput((size_t)hWnd); createPointerManager((size_t)hWnd); createScene(); _windowResized(); return true; } void BaseManager::run() { MSG msg; while (true) { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } if (mExit) break; else if (msg.message == WM_QUIT) break; captureInput(); drawOneFrame(); if (GetActiveWindow() != hWnd) ::Sleep(50); } } void BaseManager::destroy() { destroyScene(); destroyPointerManager(); destroyInput(); destroyGui(); destroyRender(); if (hWnd) { DestroyWindow(hWnd); hWnd = 0; } UnregisterClass(WND_CLASS_NAME, hInstance); } void BaseManager::setupResources() { MyGUI::xml::Document doc; if (!doc.open(std::string("resources.xml"))) doc.getLastError(); MyGUI::xml::ElementPtr root = doc.getRoot(); if (root == nullptr || root->getName() != "Paths") return; MyGUI::xml::ElementEnumerator node = root->getElementEnumerator(); while (node.next()) { if (node->getName() == "Path") { if (node->findAttribute("root") != "") { bool root = MyGUI::utility::parseBool(node->findAttribute("root")); if (root) mRootMedia = node->getContent(); } addResourceLocation(node->getContent(), false); } } addResourceLocation(getRootMedia() + "/Common/Base"); } void BaseManager::createGui() { mPlatform = new MyGUI::OpenGLPlatform(); mPlatform->initialise(this); setupResources(); mGUI = new MyGUI::Gui(); mGUI->initialise(mResourceFileName); } void BaseManager::destroyGui() { if (mGUI) { mGUI->shutdown(); delete mGUI; mGUI = nullptr; } if (mPlatform) { mPlatform->shutdown(); delete mPlatform; mPlatform = nullptr; } } size_t BaseManager::getWindowHandle() { return (size_t)hWnd; } void BaseManager::setWindowCaption(const std::wstring& _text) { SetWindowTextW(hWnd, _text.c_str()); } void BaseManager::prepare() { } void BaseManager::addResourceLocation(const std::string& _name, bool _recursive) { mPlatform->getDataManagerPtr()->addResourceLocation(_name, _recursive); } void BaseManager::windowAdjustSettings(HWND hWnd, int width, int height, bool fullScreen) { // стиль окна HWND hwndAfter = 0; unsigned long style = 0; unsigned long style_ex = 0; RECT rc = { 0, 0, width, height }; if (fullScreen) { style = WS_POPUP | WS_VISIBLE; style_ex = GetWindowLongPtr(hWnd, GWL_EXSTYLE) | (WS_EX_TOPMOST); hwndAfter = HWND_TOPMOST; } else { style = WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU | WS_THICKFRAME; style_ex = GetWindowLongPtr(hWnd, GWL_EXSTYLE) & (~WS_EX_TOPMOST); hwndAfter = HWND_NOTOPMOST; AdjustWindowRect(&rc, style, false); } SetWindowLongPtr(hWnd, GWL_STYLE, style); SetWindowLongPtr(hWnd, GWL_EXSTYLE, style_ex); int desk_width = GetSystemMetrics(SM_CXSCREEN); int desk_height = GetSystemMetrics(SM_CYSCREEN); int w = rc.right - rc.left; int h = rc.bottom - rc.top; int x = fullScreen ? 0 : (desk_width - w) / 2; int y = fullScreen ? 0 : (desk_height - h) / 2; SetWindowPos(hWnd, hwndAfter, x, y, w, h, SWP_FRAMECHANGED | SWP_SHOWWINDOW); } void BaseManager::injectMouseMove(int _absx, int _absy, int _absz) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMouseMove(_absx, _absy, _absz); } void BaseManager::injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMousePress(_absx, _absy, _id); } void BaseManager::injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectMouseRelease(_absx, _absy, _id); } void BaseManager::injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text) { if (!mGUI) return; if (_key == MyGUI::KeyCode::Escape) { mExit = true; return; } MyGUI::InputManager::getInstance().injectKeyPress(_key, _text); } void BaseManager::injectKeyRelease(MyGUI::KeyCode _key) { if (!mGUI) return; MyGUI::InputManager::getInstance().injectKeyRelease(_key); } void BaseManager::resizeRender(int _width, int _height) { if (_height == 0) _height = 1; glViewport(0, 0, _width, _height); } bool BaseManager::createRender(int _width, int _height, bool _windowed) { BYTE bits = 16; static PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | // Format Must Support Window PFD_SUPPORT_OPENGL | // Format Must Support OpenGL PFD_DOUBLEBUFFER, // Must Support Double Buffering PFD_TYPE_RGBA, // Request An RGBA Format bits, // Select Our Color Depth 0, 0, 0, 0, 0, 0, // Color Bits Ignored 0, // No Alpha Buffer 0, // Shift Bit Ignored 0, // No Accumulation Buffer 0, 0, 0, 0, // Accumulation Bits Ignored 16, // 16Bit Z-Buffer (Depth Buffer) 0, // No Stencil Buffer 0, // No Auxiliary Buffer PFD_MAIN_PLANE, // Main Drawing Layer 0, // Reserved 0, 0, 0 // Layer Masks Ignored }; GLuint pixel_format; hDC = GetDC(hWnd); if (!hDC) { return false; } pixel_format = ChoosePixelFormat(hDC, &pfd); if (!pixel_format) { return false; } if (!SetPixelFormat(hDC, pixel_format, &pfd)) { return false; } hRC = wglCreateContext(hDC); if (!hRC) { return false; } if (!wglMakeCurrent(hDC, hRC)) { return false; } glShadeModel(GL_SMOOTH); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); return true; } void BaseManager::drawOneFrame() { // First we clear the screen and depth buffer glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Then we reset the modelview matrix glLoadIdentity(); if (mPlatform) mPlatform->getRenderManagerPtr()->drawOneFrame(); SwapBuffers(hDC); } void BaseManager::destroyRender() { if (hRC) { if (!wglMakeCurrent(NULL, NULL)) { } if (!wglDeleteContext(hRC)) { } hRC = 0; } if (hDC && !ReleaseDC(hWnd, hDC)) { hDC = 0; } } void convertRawData(Gdiplus::BitmapData* _out_data, void* _result, size_t _size, MyGUI::PixelFormat _format) { size_t num = 0; if (_format == MyGUI::PixelFormat::L8) { num = 1; } if (_format == MyGUI::PixelFormat::L8A8) { num = 2; } if (_format == MyGUI::PixelFormat::R8G8B8) { num = 3; } else if (_format == MyGUI::PixelFormat::R8G8B8A8) { num = 4; } else { return; } unsigned char* ptr_source = (unsigned char*)_out_data->Scan0; unsigned char* ptr_dest = (unsigned char*)_result; size_t stride_source = _out_data->Stride; size_t stride_dest = _out_data->Width * num; if (stride_dest == stride_source) { memcpy(_result, _out_data->Scan0, _size); } else { for (unsigned int y = 0; y < _out_data->Height; ++y) { memcpy(ptr_dest, ptr_source, stride_dest); ptr_dest += stride_dest; ptr_source += stride_source; } } } void* BaseManager::loadImage(int& _width, int& _height, MyGUI::PixelFormat& _format, const std::string& _filename) { std::string fullname = MyGUI::OpenGLDataManager::getInstance().getDataPath(_filename); void* result = 0; Gdiplus::Bitmap* image = Gdiplus::Bitmap::FromFile(MyGUI::UString(fullname).asWStr_c_str()); if (image) { _width = image->GetWidth(); _height = image->GetHeight(); Gdiplus::PixelFormat format = image->GetPixelFormat(); if (format == PixelFormat24bppRGB) _format = MyGUI::PixelFormat::R8G8B8; else if (format == PixelFormat32bppARGB) _format = MyGUI::PixelFormat::R8G8B8A8; else _format = MyGUI::PixelFormat::Unknow; if (_format != MyGUI::PixelFormat::Unknow) { Gdiplus::Rect rect(0, 0, _width, _height); Gdiplus::BitmapData out_data; image->LockBits(&rect, Gdiplus::ImageLockModeRead, format, &out_data); size_t size = out_data.Height * out_data.Stride; result = new unsigned char[size]; convertRawData(&out_data, result, size, _format); image->UnlockBits(&out_data); } delete image; } return result; } void BaseManager::saveImage(int _width, int _height, MyGUI::PixelFormat _format, void* _texture, const std::string& _filename) { Gdiplus::PixelFormat format; int bpp; if (_format == MyGUI::PixelFormat::R8G8B8A8) { bpp = 4; format = PixelFormat32bppARGB; } else if (_format == MyGUI::PixelFormat::R8G8B8) { bpp = 3; format = PixelFormat24bppRGB; } else if (_format == MyGUI::PixelFormat::L8A8) { bpp = 2; format = PixelFormat16bppGrayScale; } else { MYGUI_LOG(Error, "Unsuitable texture format for saving."); return; } UINT num, size; Gdiplus::GetImageEncodersSize(&num, &size); Gdiplus::ImageCodecInfo* imageCodecInfo = (Gdiplus::ImageCodecInfo*)malloc(size); GetImageEncoders(num, size, imageCodecInfo); CLSID* pngClsid = NULL; for (UINT j = 0; j < num; ++j) { if (wcscmp(imageCodecInfo[j].MimeType, L"image/png") == 0) { pngClsid = &imageCodecInfo[j].Clsid; break; } } if (pngClsid == NULL) { MYGUI_LOG(Error, "png codec not found"); return; } Gdiplus::Bitmap image(_width, _height, bpp * _width, format, (BYTE*)_texture); HRESULT res = image.Save(MyGUI::UString(_filename).asWStr_c_str(), pngClsid, NULL); if (res != S_OK) MYGUI_LOG(Error, "Texture saving error. result = " << res); } void BaseManager::quit() { mExit = true; } const std::string& BaseManager::getRootMedia() { return mRootMedia; } void BaseManager::setResourceFilename(const std::string& _flename) { mResourceFileName = _flename; } } // namespace base mygui-3.2.2+dfsg/Common/Base/OpenGL/BaseManager.h000066400000000000000000000043501322721077200213400ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 08/2008 */ #ifndef BASE_MANAGER_H_ #define BASE_MANAGER_H_ #include #include #include "InputManager.h" #include "PointerManager.h" #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 # include # include #endif namespace base { class BaseManager : public input::InputManager, public input::PointerManager, public MyGUI::OpenGLImageLoader { public: BaseManager(); virtual ~BaseManager(); virtual void prepare(); bool create(int _width = 1024, int _height = 768); void destroy(); void run(); void quit(); void setWindowCaption(const std::wstring& _text); void makeScreenShot() { } const std::string& getRootMedia(); void setResourceFilename(const std::string& _flename); void addResourceLocation(const std::string& _name, bool _recursive = false); size_t getWindowHandle(); MyGUI::MapString getStatistic() { return MyGUI::MapString(); } /*internal:*/ void _windowResized(); virtual void* loadImage(int& _width, int& _height, MyGUI::PixelFormat& _format, const std::string& _filename); virtual void saveImage(int _width, int _height, MyGUI::PixelFormat _format, void* _texture, const std::string& _filename); protected: virtual void createScene() { } virtual void destroyScene() { } virtual void setupResources(); virtual void injectMouseMove(int _absx, int _absy, int _absz); virtual void injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id); virtual void injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id); virtual void injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text); virtual void injectKeyRelease(MyGUI::KeyCode _key); virtual void createGui(); virtual void destroyGui(); private: void windowAdjustSettings(HWND hWnd, int width, int height, bool fullScreen); void resizeRender(int _width, int _height); bool createRender(int _width, int _height, bool _windowed); void drawOneFrame(); void destroyRender(); private: MyGUI::Gui* mGUI; MyGUI::OpenGLPlatform* mPlatform; HWND hWnd; HDC hDC; HGLRC hRC; HINSTANCE hInstance; bool mExit; std::string mRootMedia; std::string mResourceFileName; }; } // namespace base #endif // BASE_MANAGER_H_ mygui-3.2.2+dfsg/Common/Base/StatisticInfo.h000066400000000000000000000055211322721077200206330ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 08/2008 @module */ #ifndef STATISTIC_INFO_H_ #define STATISTIC_INFO_H_ #include namespace diagnostic { class StatisticInfo { public: StatisticInfo() : mInfo(nullptr), mOffset(20, 20) { const std::string layer = "Statistic"; if (!MyGUI::LayerManager::getInstance().isExist(layer)) return; mInfo = MyGUI::Gui::getInstance().createWidget("TextBox", MyGUI::IntCoord(), MyGUI::Align::Default, layer); mInfo->setTextColour(MyGUI::Colour::White); mInfo->setTextShadow(true); } ~StatisticInfo() { if (mInfo != nullptr) { MyGUI::Gui::getInstance().destroyChildWidget(mInfo); mInfo = nullptr; } } template void change(const std::string& _key, const T& _value) { for (MyGUI::VectorStringPairs::iterator iter = mParams.begin(); iter != mParams.end(); ++iter) { if (iter->first == _key) { iter->second = MyGUI::utility::toString(_value); return; } } mParams.push_back(std::make_pair(_key, MyGUI::utility::toString(_value))); } void remove(const std::string& _key) { for (MyGUI::VectorStringPairs::iterator iter = mParams.begin(); iter != mParams.end(); ++iter) { if (iter->first == _key) { mParams.erase(iter); return; } } } void update() { if (mInfo != nullptr) { std::ostringstream stream; for (MyGUI::VectorStringPairs::iterator iter = mParams.begin(); iter != mParams.end(); ++iter) { if (iter != mParams.begin()) stream << "\n"; stream << iter->first << " : " << iter->second; } mInfo->setCaption(stream.str()); MyGUI::ISubWidgetText* text = mInfo->getSubWidgetText(); if (text != nullptr) { const MyGUI::IntSize& size = text->getTextSize() + mInfo->getSize() - text->getSize(); const MyGUI::IntSize& size_view = MyGUI::RenderManager::getInstance().getViewSize(); MyGUI::IntCoord coord(size_view.width - size.width - mOffset.left, size_view.height - size.height - mOffset.top, size.width, size.height); if (coord != mInfo->getCoord()) mInfo->setCoord(coord); } } } void clear() { mParams.clear(); } void clear(const std::string& _key) { for (MyGUI::VectorStringPairs::iterator iter = mParams.begin(); iter != mParams.end(); ++iter) { if (iter->first == _key) { mParams.erase(iter); return; } } } void setVisible(bool _value) { if (mInfo != nullptr) mInfo->setVisible(_value); } bool getVisible() { if (mInfo != nullptr) return mInfo->getVisible(); return false; } void setOffset(const MyGUI::IntPoint& _value) { mOffset = _value; } private: MyGUI::TextBox* mInfo; MyGUI::VectorStringPairs mParams; MyGUI::IntPoint mOffset; }; } // namespace diagnostic #endif // STATISTIC_INFO_H_ mygui-3.2.2+dfsg/Common/BaseLayout/000077500000000000000000000000001322721077200170725ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/BaseLayout/Attribute.h000066400000000000000000000071211322721077200212070ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 10/2009 @module */ #ifndef ATTRIBUTE_H_ #define ATTRIBUTE_H_ namespace attribute { // класс обертка для удаления данных из статического вектора template struct DataHolder { ~DataHolder() { for (typename Type::iterator item = data.begin(); item != data.end(); ++item) delete (*item).first; } Type data; }; // интерфейс для обертки поля template struct Field { virtual ~Field() { } virtual bool set(OwnerType* _target, typename SetterType::BaseValueType* _value) = 0; virtual const std::string& getFieldTypeName() = 0; }; // шаблон для обертки поля template struct FieldHolder : public Field { FieldHolder(FieldType* OwnerType::* offset) : m_offset(offset) { } FieldType* OwnerType::* const m_offset; virtual bool set(OwnerType* _target, typename SetterType::BaseValueType* _value) { _target->*m_offset = SetterType::template convert(_value); return _target->*m_offset != 0; } virtual const std::string& getFieldTypeName() { return FieldType::getClassTypeName(); } }; // шаблон для атрибута поля template struct AttributeField { typedef std::pair*, ValueType> BindPair; typedef std::vector VectorBindPair; template AttributeField(FieldType* OwnerType::* _offset, const ValueType& _value) { getData().push_back(BindPair(new FieldHolder(_offset), _value)); } static VectorBindPair& getData() { static DataHolder data; return data.data; } }; // макрос для инстансирования атрибута поля #define DECLARE_ATTRIBUTE_FIELD(_name, _type, _setter) \ template \ struct _name : public attribute::AttributeField \ { \ template \ _name(FieldType* OwnerType::* _offset, const ValueType& _value) : \ AttributeField(_offset, _value) { } \ } // макрос для инстансирования экземпляра атрибута #define ATTRIBUTE_FIELD(_attribute, _class, _field, _value) \ struct _attribute##_##_field \ { \ _attribute##_##_field() \ { \ static attribute::_attribute<_class> bind(&_class::_field, _value); \ } \ } _attribute##_##_field // шаблон для атрибута класса template struct ClassAttribute { ClassAttribute(const ValueType& _value) { getData() = _value; } static ValueType& getData() { static ValueType data; return data; } }; // макрос для инстансирования атрибута класса #define DECLARE_ATTRIBUTE_CLASS(_name, _type) \ template \ struct _name : public attribute::ClassAttribute<_name, ValueType> \ { \ _name(const ValueType& _value) : \ ClassAttribute<_name, ValueType>(_value) { } \ } // макрос для инстансирования экземпляра класса #define ATTRIBUTE_CLASS(_attribute, _class, _value) \ class _class; \ static attribute::_attribute<_class> _attribute##_##_class(_value) } #endif // ATTRIBUTE_H_ mygui-3.2.2+dfsg/Common/BaseLayout/BaseLayout.h000066400000000000000000000162231322721077200213170ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 07/2008 @module */ #ifndef BASE_LAYOUT_H_ #define BASE_LAYOUT_H_ #include #include "WrapsAttribute.h" namespace wraps { class BaseLayout { protected: BaseLayout() : mMainWidget(nullptr) { } BaseLayout(const std::string& _layout, MyGUI::Widget* _parent = nullptr) : mMainWidget(nullptr) { initialise(_layout, _parent); } template void assignWidget(T * & _widget, const std::string& _name, bool _throw = true, bool _createFakeWidgets = true) { _widget = nullptr; for (MyGUI::VectorWidgetPtr::iterator iter = mListWindowRoot.begin(); iter != mListWindowRoot.end(); ++iter) { MyGUI::Widget* find = (*iter)->findWidget(mPrefix + _name); if (nullptr != find) { T* cast = find->castType(false); if (nullptr != cast) { _widget = cast; } else { MYGUI_LOG(Warning, "Widget with name '" << _name << "' have wrong type ('" << find->getTypeName() << "instead of '" << T::getClassTypeName() << "'). [" << mLayoutName << "]"); MYGUI_ASSERT( ! _throw, "Can't assign widget with name '" << _name << "'. [" << mLayoutName << "]"); if (_createFakeWidgets) _widget = _createFakeWidget(mMainWidget); } return; } } MYGUI_LOG(Warning, "Widget with name '" << _name << "' not found. [" << mLayoutName << "]"); MYGUI_ASSERT( ! _throw, "Can't assign widget with name '" << _name << "'. [" << mLayoutName << "]"); if (_createFakeWidgets) _widget = _createFakeWidget(mMainWidget); } template void assignBase(T * & _widget, const std::string& _name, bool _throw = true, bool _createFakeWidgets = true) { _widget = nullptr; for (MyGUI::VectorWidgetPtr::iterator iter = mListWindowRoot.begin(); iter != mListWindowRoot.end(); ++iter) { MyGUI::Widget* find = (*iter)->findWidget(mPrefix + _name); if (nullptr != find) { _widget = new T(find); mListBase.push_back(_widget); return; } } MYGUI_LOG(Warning, "Widget with name '" << _name << "' not found. [" << mLayoutName << "]"); MYGUI_ASSERT( ! _throw, "Can't assign base widget with name '" << _name << "'. [" << mLayoutName << "]"); if (_createFakeWidgets) { _widget = new T(_createFakeWidget(mMainWidget)); mListBase.push_back(_widget); } } void initialise(const std::string& _layout, MyGUI::Widget* _parent = nullptr, bool _throw = true, bool _createFakeWidgets = true) { const std::string MAIN_WINDOW1 = "_Main"; const std::string MAIN_WINDOW2 = "Root"; mLayoutName = _layout; // оборачиваем if (mLayoutName.empty()) { mMainWidget = _parent; if (mMainWidget != nullptr) { mListWindowRoot.push_back(mMainWidget); mPrefix = FindParentPrefix(mMainWidget); } } // загружаем лейаут на виджет else { mPrefix = MyGUI::utility::toString(this, "_"); mListWindowRoot = MyGUI::LayoutManager::getInstance().loadLayout(mLayoutName, mPrefix, _parent); const std::string mainName1 = mPrefix + MAIN_WINDOW1; const std::string mainName2 = mPrefix + MAIN_WINDOW2; for (MyGUI::VectorWidgetPtr::iterator iter = mListWindowRoot.begin(); iter != mListWindowRoot.end(); ++iter) { if ((*iter)->getName() == mainName1 || (*iter)->getName() == mainName2) { mMainWidget = (*iter); snapToParent(mMainWidget); break; } } if (mMainWidget == nullptr) { MYGUI_LOG(Warning, "Root widget with name '" << MAIN_WINDOW1 << "' or '" << MAIN_WINDOW2 << "' not found. [" << mLayoutName << "]"); MYGUI_ASSERT(!_throw, "No root widget. ['" << mLayoutName << "]"); if (_createFakeWidgets) mMainWidget = _createFakeWidget(_parent); } mMainWidget->setUserString("BaseLayoutPrefix", mPrefix); } } void shutdown() { // удаляем все классы for (VectorBasePtr::reverse_iterator iter = mListBase.rbegin(); iter != mListBase.rend(); ++iter) delete (*iter); mListBase.clear(); // удаляем все рутовые виджеты if (!mLayoutName.empty()) MyGUI::LayoutManager::getInstance().unloadLayout(mListWindowRoot); mListWindowRoot.clear(); } template void initialiseByAttributes(Type* _owner, MyGUI::Widget* _parent = nullptr, bool _throw = true, bool _createFakeWidgets = true) { initialise(attribute::AttributeLayout::getData(), _parent, _throw, _createFakeWidgets); typename attribute::AttributeFieldWidgetName::VectorBindPair& data = attribute::AttributeFieldWidgetName::getData(); for (typename attribute::AttributeFieldWidgetName::VectorBindPair::iterator item = data.begin(); item != data.end(); ++item) { MyGUI::Widget* value = nullptr; assignWidget(value, item->second, _throw, false); bool result = item->first->set(_owner, value); if (!result && _createFakeWidgets) { value = _createFakeWidgetT(item->first->getFieldTypeName(), mMainWidget); item->first->set(_owner, value); } } } private: std::string FindParentPrefix(MyGUI::Widget* _parent) { std::string prefix = _parent->getUserString("BaseLayoutPrefix"); if (!prefix.empty()) return prefix; if (_parent->getParent() != nullptr) return FindParentPrefix(_parent->getParent()); return ""; } void snapToParent(MyGUI::Widget* _child) { if (_child->isUserString("SnapTo")) { MyGUI::Align align = MyGUI::Align::parse(_child->getUserString("SnapTo")); MyGUI::IntCoord coord = _child->getCoord(); MyGUI::IntSize size = _child->getParentSize(); if (align.isHStretch()) { coord.left = 0; coord.width = size.width; } else if (align.isLeft()) { coord.left = 0; } else if (align.isRight()) { coord.left = size.width - coord.width; } else { coord.left = (size.width - coord.width) / 2; } if (align.isVStretch()) { coord.top = 0; coord.height = size.height; } else if (align.isTop()) { coord.top = 0; } else if (align.isBottom()) { coord.top = size.height - coord.height; } else { coord.top = (size.height - coord.height) / 2; } _child->setCoord(coord); } } template T* _createFakeWidget(MyGUI::Widget* _parent) { return static_cast(_createFakeWidgetT(T::getClassTypeName(), _parent)); } MyGUI::Widget* _createFakeWidgetT(const std::string& _typeName, MyGUI::Widget* _parent) { if (_parent) return _parent->createWidgetT(_typeName, MyGUI::SkinManager::getInstance().getDefaultSkin(), MyGUI::IntCoord(), MyGUI::Align::Default); return MyGUI::Gui::getInstance().createWidgetT(_typeName, MyGUI::SkinManager::getInstance().getDefaultSkin(), MyGUI::IntCoord(), MyGUI::Align::Default, ""); } public: virtual ~BaseLayout() { shutdown(); } protected: MyGUI::Widget* mMainWidget; private: std::string mPrefix; std::string mLayoutName; MyGUI::VectorWidgetPtr mListWindowRoot; typedef std::vector VectorBasePtr; VectorBasePtr mListBase; }; } // namespace wraps #endif // BASE_LAYOUT_H_ mygui-3.2.2+dfsg/Common/BaseLayout/WrapsAttribute.h000066400000000000000000000017001322721077200222210ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 10/2009 @module */ #ifndef WRAPS_ATTRIBUTE_H_ #define WRAPS_ATTRIBUTE_H_ #include #include "Attribute.h" namespace attribute { struct FieldSetterWidget { typedef MyGUI::Widget BaseValueType; template static Type* convert(BaseValueType* _value) { return _value == 0 ? 0 : _value->castType(false); } }; DECLARE_ATTRIBUTE_FIELD(AttributeFieldWidgetName, std::string, FieldSetterWidget); #define ATTRIBUTE_FIELD_WIDGET_NAME(_class, _field, _value) \ ATTRIBUTE_FIELD(AttributeFieldWidgetName, _class, _field, _value) DECLARE_ATTRIBUTE_CLASS(AttributeSize, MyGUI::IntSize); #define ATTRIBUTE_CLASS_SIZE(_class, _value) \ ATTRIBUTE_CLASS(AttributeSize, _class, _value) DECLARE_ATTRIBUTE_CLASS(AttributeLayout, std::string); #define ATTRIBUTE_CLASS_LAYOUT(_class, _value) \ ATTRIBUTE_CLASS(AttributeLayout, _class, _value) } #endif // WRAPS_ATTRIBUTE_H_ mygui-3.2.2+dfsg/Common/CMakeLists.txt000066400000000000000000000100541322721077200175620ustar00rootroot00000000000000function(mygui_add_base_manager_source PLATFORM) include_directories(Base/${PLATFORM}) set (HEADER_FILES ${HEADER_FILES} Base/${PLATFORM}/BaseManager.h PARENT_SCOPE) set (SOURCE_FILES ${SOURCE_FILES} Base/${PLATFORM}/BaseManager.cpp PARENT_SCOPE) SOURCE_GROUP("Base" FILES Base/${PLATFORM}/BaseManager.h Base/${PLATFORM}/BaseManager.cpp ) endfunction(mygui_add_base_manager_source) function(mygui_add_input_source PLATFORM) include_directories(Input/${PLATFORM}) set (HEADER_FILES ${HEADER_FILES} Input/${PLATFORM}/InputManager.h Input/${PLATFORM}/PointerManager.h PARENT_SCOPE) set (SOURCE_FILES ${SOURCE_FILES} Input/${PLATFORM}/InputManager.cpp Input/${PLATFORM}/PointerManager.cpp PARENT_SCOPE) SOURCE_GROUP("Base" FILES Input/${PLATFORM}/InputManager.h Input/${PLATFORM}/InputManager.cpp Input/${PLATFORM}/PointerManager.h Input/${PLATFORM}/PointerManager.cpp ) endfunction(mygui_add_input_source) set (PROJECTNAME Common) include_directories( . ${MYGUI_SOURCE_DIR}/Common ${MYGUI_SOURCE_DIR}/MyGUIEngine/include ) set (HEADER_FILES "") set (SOURCE_FILES "") if(MYGUI_RENDERSYSTEM EQUAL 1) mygui_add_base_manager_source(Dummy) add_definitions("-DMYGUI_DUMMY_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/Dummy/DummyPlatform/include ) link_directories(${DUMMY_LIB_DIR}) elseif(MYGUI_RENDERSYSTEM EQUAL 3) mygui_add_base_manager_source(Ogre) add_definitions("-DMYGUI_OGRE_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/Ogre/OgrePlatform/include ${OGRE_INCLUDE_DIR} ) link_directories(${OGRE_LIB_DIR}) elseif(MYGUI_RENDERSYSTEM EQUAL 4) mygui_add_base_manager_source(OpenGL) add_definitions("-DMYGUI_OPENGL_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/OpenGL/OpenGLPlatform/include ${OPENGL_INCLUDE_DIR} ) link_directories(${OPENGL_LIB_DIR}) elseif(MYGUI_RENDERSYSTEM EQUAL 5) mygui_add_base_manager_source(DirectX) add_definitions("-DMYGUI_DIRECTX_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/DirectX/DirectXPlatform/include ${DirectX_INCLUDE_DIR} ) link_directories(${DIRECTX_LIB_DIR}) elseif(MYGUI_RENDERSYSTEM EQUAL 6) mygui_add_base_manager_source(DirectX11) add_definitions("-DMYGUI_DIRECTX11_PLATFORM") include_directories( ${MYGUI_SOURCE_DIR}/Platforms/DirectX11/DirectX11Platform/include ${DirectX_INCLUDE_DIR} ) link_directories(${DIRECTX_LIB_DIR}) endif() if(MYGUI_SAMPLES_INPUT EQUAL 1) include_directories(${OIS_INCLUDE_DIRS}) mygui_add_input_source(OIS) elseif(MYGUI_SAMPLES_INPUT EQUAL 2) mygui_add_input_source(Win32) elseif(MYGUI_SAMPLES_INPUT EQUAL 3) include_directories(${OIS_INCLUDE_DIRS}) mygui_add_input_source(Win32_OIS) endif() add_library(${PROJECTNAME} ${HEADER_FILES} ${SOURCE_FILES}) if(MYGUI_RENDERSYSTEM EQUAL 1) add_dependencies(${PROJECTNAME} MyGUI.DummyPlatform) target_link_libraries(${PROJECTNAME} MyGUI.DummyPlatform) elseif(MYGUI_RENDERSYSTEM EQUAL 3) add_dependencies(${PROJECTNAME} MyGUI.OgrePlatform) target_link_libraries(${PROJECTNAME} MyGUI.OgrePlatform) elseif(MYGUI_RENDERSYSTEM EQUAL 4) add_dependencies(${PROJECTNAME} MyGUI.OpenGLPlatform) target_link_libraries(${PROJECTNAME} MyGUI.OpenGLPlatform) elseif(MYGUI_RENDERSYSTEM EQUAL 5) add_dependencies(${PROJECTNAME} MyGUI.DirectXPlatform) target_link_libraries(${PROJECTNAME} MyGUI.DirectXPlatform) elseif(MYGUI_RENDERSYSTEM EQUAL 6) add_dependencies(${PROJECTNAME} MyGUI.DirectX11Platform) target_link_libraries(${PROJECTNAME} MyGUI.DirectX11Platform) endif() add_dependencies(${PROJECTNAME} MyGUIEngine) if(MYGUI_SAMPLES_INPUT EQUAL 1) add_definitions("-DMYGUI_SAMPLES_INPUT_OIS") link_directories(${OIS_LIB_DIR}) target_link_libraries(${PROJECTNAME} ${OIS_LIBRARIES}) elseif(MYGUI_SAMPLES_INPUT EQUAL 2) add_definitions("-DMYGUI_SAMPLES_INPUT_WIN32") elseif(MYGUI_SAMPLES_INPUT EQUAL 3) add_definitions("-DMYGUI_SAMPLES_INPUT_WIN32_OIS") link_directories(${OIS_LIB_DIR}) target_link_libraries(${PROJECTNAME} ${OIS_LIBRARIES}) endif() if(NOT WIN32) find_package(X11) target_link_libraries(${PROJECTNAME} X11) include_directories(${X11_INCLUDE_DIR}) endif() mygui-3.2.2+dfsg/Common/FileSystemInfo/000077500000000000000000000000001322721077200177225ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/FileSystemInfo/FileSystemInfo.h000066400000000000000000000123201322721077200227710ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 09/2009 @module */ #ifndef FILE_SYSTEM_INFO_H_ #define FILE_SYSTEM_INFO_H_ #include #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 #include #include #else #include #include #include #include #include #endif #include #include #include namespace common { struct FileInfo { FileInfo(const std::wstring& _name, bool _folder) : name(_name), folder(_folder) { } std::wstring name; bool folder; }; typedef std::vector VectorFileInfo; inline std::wstring toLower(const std::wstring& _input) { std::wstring result; result.resize(_input.size()); static std::locale sLocale(""); for (unsigned int i=0; i<_input.size(); ++i) result[i] = std::tolower(_input[i], sLocale); return result; } inline bool sortFiles(const common::FileInfo& left, const common::FileInfo& right) { if (left.folder < right.folder) return true; if (left.folder > right.folder) return false; return toLower(left.name) < toLower(right.name); } inline bool isAbsolutePath(const wchar_t* path) { #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 if (IsCharAlphaW(path[0]) && path[1] == ':') return true; #endif return path[0] == '/' || path[0] == '\\'; } inline bool endWith(const std::wstring& _source, const std::wstring& _value) { size_t count = _value.size(); if (_source.size() < count) return false; size_t offset = _source.size() - count; for (size_t index = 0; index < count; ++ index) { if (_source[index + offset] != _value[index]) return false; } return true; } inline std::wstring concatenatePath(const std::wstring& _base, const std::wstring& _name) { if (_base.empty() || isAbsolutePath(_name.c_str())) { return _name; } else { if (endWith(_base, L"\\") || endWith(_base, L"/")) return _base + _name; #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 return _base + L'\\' + _name; #else return _base + L'/' + _name; #endif } } inline bool isReservedDir (const wchar_t* _fn) { // if "." return (_fn [0] == '.' && _fn [1] == 0); } inline bool isParentDir (const wchar_t* _fn) { // if ".." return (_fn [0] == '.' && _fn [1] == '.' && _fn [2] == 0); } inline void getSystemFileList(VectorFileInfo& _result, const std::wstring& _folder, const std::wstring& _mask, bool _sorted = true) { #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 //FIXME add optional parameter? bool ms_IgnoreHidden = true; intptr_t lHandle; int res; struct _wfinddata_t tagData; // pattern can contain a directory name, separate it from mask size_t pos = _mask.find_last_of(L"/\\"); std::wstring directory; if (pos != _mask.npos) directory = _mask.substr (0, pos); std::wstring full_mask = concatenatePath(_folder, _mask); lHandle = _wfindfirst(full_mask.c_str(), &tagData); res = 0; while (lHandle != -1 && res != -1) { if (( !ms_IgnoreHidden || (tagData.attrib & _A_HIDDEN) == 0 ) && !isReservedDir(tagData.name)) { _result.push_back(FileInfo(concatenatePath(directory, tagData.name), (tagData.attrib & _A_SUBDIR) != 0)); } res = _wfindnext( lHandle, &tagData ); } // Close if we found any files if (lHandle != -1) _findclose(lHandle); #else DIR* dir = opendir(MyGUI::UString(_folder).asUTF8_c_str()); struct dirent* dp; if (dir == NULL) { /* opendir() failed */ } rewinddir (dir); while ((dp = readdir (dir)) != NULL) { if (!isReservedDir(MyGUI::UString(dp->d_name).asWStr_c_str())) { struct stat fInfo; std::string path = MyGUI::UString(_folder).asUTF8() + "/" + dp->d_name; if (stat(path.c_str(), &fInfo) == -1)perror("stat"); _result.push_back(FileInfo(MyGUI::UString(dp->d_name).asWStr(), (S_ISDIR(fInfo.st_mode)))); } } closedir(dir); #endif if (_sorted) { std::sort(_result.begin(), _result.end(), sortFiles); } } inline std::wstring getSystemCurrentFolder() { #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 wchar_t buff[MAX_PATH+1]; ::GetCurrentDirectoryW(MAX_PATH, buff); return buff; #else # ifndef PATH_MAX # define PATH_MAX 256 # endif char buff[PATH_MAX+1]; return getcwd(buff, PATH_MAX) ? MyGUI::UString(buff).asWStr() : std::wstring(); #endif } typedef std::vector VectorWString; inline void scanFolder(VectorWString& _result, const std::wstring& _folder, bool _recursive, const std::wstring& _mask, bool _fullpath) { std::wstring folder = _folder; if (!folder.empty() && *folder.rbegin() != '/' && *folder.rbegin() != '\\') folder += L"/"; VectorFileInfo result; getSystemFileList(result, folder, _mask); for (VectorFileInfo::const_iterator item = result.begin(); item != result.end(); ++item) { if (item->folder) continue; if (_fullpath) _result.push_back(folder + item->name); else _result.push_back(item->name); } if (_recursive) { getSystemFileList(result, folder, L"*"); for (VectorFileInfo::const_iterator item = result.begin(); item != result.end(); ++item) { if (!item->folder || item->name == L".." || item->name == L".") continue; scanFolder(_result, folder + item->name, _recursive, _mask, _fullpath); } } } } #endif // FILE_SYSTEM_INFO_H_ mygui-3.2.2+dfsg/Common/Input/000077500000000000000000000000001322721077200161215ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Input/InputConverter.h000066400000000000000000000670031322721077200212670ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 02/2010 @module */ #ifndef INPUT_CONVERTER_H_ #define INPUT_CONVERTER_H_ #include #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 #include #ifdef max #undef max #endif #ifdef min #undef min #endif #endif //#define INPUT_KEY_NAME #ifdef INPUT_KEY_NAME #include #include #endif namespace input { // Windows virtual keys enum VirtualKey { VLK_LBUTTON = 0x01, VLK_RBUTTON = 0x02, VLK_CANCEL = 0x03, VLK_MBUTTON = 0x04, /* NOT contiguous with L & RBUTTON */ VLK_XBUTTON1 = 0x05, /* NOT contiguous with L & RBUTTON */ VLK_XBUTTON2 = 0x06, /* NOT contiguous with L & RBUTTON */ /* 0x07 : unassigned */ VLK_BACK = 0x08, VLK_TAB = 0x09, /* 0x0A - 0x0B : reserved */ VLK_CLEAR = 0x0C, VLK_RETURN = 0x0D, VLK_SHIFT = 0x10, VLK_CONTROL = 0x11, VLK_MENU = 0x12, VLK_PAUSE = 0x13, VLK_CAPITAL = 0x14, VLK_KANA = 0x15, VLK_HANGEUL = 0x15, /* old name - should be here for compatibility */ VLK_HANGUL = 0x15, VLK_JUNJA = 0x17, VLK_FINAL = 0x18, VLK_HANJA = 0x19, VLK_KANJI = 0x19, VLK_ESCAPE = 0x1B, VLK_CONVERT = 0x1C, VLK_NONCONVERT = 0x1D, VLK_ACCEPT = 0x1E, VLK_MODECHANGE = 0x1F, VLK_SPACE = 0x20, VLK_PRIOR = 0x21, VLK_NEXT = 0x22, VLK_END = 0x23, VLK_HOME = 0x24, VLK_LEFT = 0x25, VLK_UP = 0x26, VLK_RIGHT = 0x27, VLK_DOWN = 0x28, VLK_SELECT = 0x29, VLK_PRINT = 0x2A, VLK_EXECUTE = 0x2B, VLK_SNAPSHOT = 0x2C, VLK_INSERT = 0x2D, VLK_DELETE = 0x2E, VLK_HELP = 0x2F, /* VLK_0 - VLK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) 0x40 : unassigned VLK_A - VLK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) */ VLK_0 = 0x30, VLK_1 = 0x31, VLK_2 = 0x32, VLK_3 = 0x33, VLK_4 = 0x34, VLK_5 = 0x35, VLK_6 = 0x36, VLK_7 = 0x37, VLK_8 = 0x38, VLK_9 = 0x39, VLK_A = 0x41, VLK_B = 0x42, VLK_C = 0x43, VLK_D = 0x44, VLK_E = 0x45, VLK_F = 0x46, VLK_G = 0x47, VLK_H = 0x48, VLK_I = 0x49, VLK_J = 0x4A, VLK_K = 0x4B, VLK_L = 0x4C, VLK_M = 0x4D, VLK_N = 0x4E, VLK_O = 0x4F, VLK_P = 0x50, VLK_Q = 0x51, VLK_R = 0x52, VLK_S = 0x53, VLK_T = 0x54, VLK_U = 0x55, VLK_V = 0x56, VLK_W = 0x57, VLK_X = 0x58, VLK_Y = 0x59, VLK_Z = 0x5A, VLK_LWIN = 0x5B, VLK_RWIN = 0x5C, VLK_APPS = 0x5D, /* 0x5E : reserved */ VLK_SLEEP = 0x5F, VLK_NUMPAD0 = 0x60, VLK_NUMPAD1 = 0x61, VLK_NUMPAD2 = 0x62, VLK_NUMPAD3 = 0x63, VLK_NUMPAD4 = 0x64, VLK_NUMPAD5 = 0x65, VLK_NUMPAD6 = 0x66, VLK_NUMPAD7 = 0x67, VLK_NUMPAD8 = 0x68, VLK_NUMPAD9 = 0x69, VLK_MULTIPLY = 0x6A, VLK_ADD = 0x6B, VLK_SEPARATOR = 0x6C, VLK_SUBTRACT = 0x6D, VLK_DECIMAL = 0x6E, VLK_DIVIDE = 0x6F, VLK_F1 = 0x70, VLK_F2 = 0x71, VLK_F3 = 0x72, VLK_F4 = 0x73, VLK_F5 = 0x74, VLK_F6 = 0x75, VLK_F7 = 0x76, VLK_F8 = 0x77, VLK_F9 = 0x78, VLK_F10 = 0x79, VLK_F11 = 0x7A, VLK_F12 = 0x7B, VLK_F13 = 0x7C, VLK_F14 = 0x7D, VLK_F15 = 0x7E, VLK_F16 = 0x7F, VLK_F17 = 0x80, VLK_F18 = 0x81, VLK_F19 = 0x82, VLK_F20 = 0x83, VLK_F21 = 0x84, VLK_F22 = 0x85, VLK_F23 = 0x86, VLK_F24 = 0x87, /* 0x88 - 0x8F : unassigned */ VLK_NUMLOCK = 0x90, VLK_SCROLL = 0x91, /* NEC PC-9800 kbd definitions */ VLK_OEM_NEC_EQUAL = 0x92, // '=' key on numpad /* Fujitsu/OASYS kbd definitions */ VLK_OEM_FJ_JISHO = 0x92, // 'Dictionary' key VLK_OEM_FJ_MASSHOU = 0x93, // 'Unregister word' key VLK_OEM_FJ_TOUROKU = 0x94, // 'Register word' key VLK_OEM_FJ_LOYA = 0x95, // 'Left OYAYUBI' key VLK_OEM_FJ_ROYA = 0x96, // 'Right OYAYUBI' key /* 0x97 - 0x9F : unassigned */ /* VLK_L* & VLK_R* - left and right Alt, Ctrl and Shift virtual keys. Used only as parameters to GetAsyncKeyState() and GetKeyState(). No other API or message will distinguish left and right keys in this way. */ VLK_LSHIFT = 0xA0, VLK_RSHIFT = 0xA1, VLK_LCONTROL = 0xA2, VLK_RCONTROL = 0xA3, VLK_LMENU = 0xA4, VLK_RMENU = 0xA5, VLK_BROWSER_BACK = 0xA6, VLK_BROWSER_FORWARD = 0xA7, VLK_BROWSER_REFRESH = 0xA8, VLK_BROWSER_STOP = 0xA9, VLK_BROWSER_SEARCH = 0xAA, VLK_BROWSER_FAVORITES = 0xAB, VLK_BROWSER_HOME = 0xAC, VLK_VOLUME_MUTE = 0xAD, VLK_VOLUME_DOWN = 0xAE, VLK_VOLUME_UP = 0xAF, VLK_MEDIA_NEXT_TRACK = 0xB0, VLK_MEDIA_PREV_TRACK = 0xB1, VLK_MEDIA_STOP = 0xB2, VLK_MEDIA_PLAY_PAUSE = 0xB3, VLK_LAUNCH_MAIL = 0xB4, VLK_LAUNCH_MEDIA_SELECT = 0xB5, VLK_LAUNCH_APP1 = 0xB6, VLK_LAUNCH_APP2 = 0xB7, /* 0xB8 - 0xB9 : reserved */ VLK_OEM_1 = 0xBA, // ';:' for US VLK_OEM_PLUS = 0xBB, // '+' any country VLK_OEM_COMMA = 0xBC, // ',' any country VLK_OEM_MINUS = 0xBD, // '-' any country VLK_OEM_PERIOD = 0xBE, // '.' any country VLK_OEM_2 = 0xBF, // '/?' for US VLK_OEM_3 = 0xC0, // '`~' for US /* 0xC1 - 0xD7 : reserved */ /* 0xD8 - 0xDA : unassigned */ VLK_OEM_4 = 0xDB, // '[{' for US VLK_OEM_5 = 0xDC, // '\|' for US VLK_OEM_6 = 0xDD, // ']}' for US VLK_OEM_7 = 0xDE, // ''"' for US VLK_OEM_8 = 0xDF, /* 0xE0 : reserved */ /* Various extended or enhanced keyboards */ VLK_OEM_AX = 0xE1, // 'AX' key on Japanese AX kbd VLK_OEM_102 = 0xE2, // "<>" or "\|" on RT 102-key kbd. VLK_ICO_HELP = 0xE3, // Help key on ICO VLK_ICO_00 = 0xE4, // 00 key on ICO VLK_PROCESSKEY = 0xE5, VLK_ICO_CLEAR = 0xE6, VLK_PACKET = 0xE7, /* 0xE8 : unassigned */ /* Nokia/Ericsson definitions */ VLK_OEM_RESET = 0xE9, VLK_OEM_JUMP = 0xEA, VLK_OEM_PA1 = 0xEB, VLK_OEM_PA2 = 0xEC, VLK_OEM_PA3 = 0xED, VLK_OEM_WSCTRL = 0xEE, VLK_OEM_CUSEL = 0xEF, VLK_OEM_ATTN = 0xF0, VLK_OEM_FINISH = 0xF1, VLK_OEM_COPY = 0xF2, VLK_OEM_AUTO = 0xF3, VLK_OEM_ENLW = 0xF4, VLK_OEM_BACKTAB = 0xF5, VLK_ATTN = 0xF6, VLK_CRSEL = 0xF7, VLK_EXSEL = 0xF8, VLK_EREOF = 0xF9, VLK_PLAY = 0xFA, VLK_ZOOM = 0xFB, VLK_NONAME = 0xFC, VLK_PA1 = 0xFD, VLK_OEM_CLEAR = 0xFE, VLK_MAX }; // Keyboard scan codes - OIS, DirectInput enum ScanCode { SC_UNASSIGNED = 0x00, SC_ESCAPE = 0x01, SC_1 = 0x02, SC_2 = 0x03, SC_3 = 0x04, SC_4 = 0x05, SC_5 = 0x06, SC_6 = 0x07, SC_7 = 0x08, SC_8 = 0x09, SC_9 = 0x0A, SC_0 = 0x0B, SC_MINUS = 0x0C, // - on main keyboard SC_EQUALS = 0x0D, SC_BACK = 0x0E, // backspace SC_TAB = 0x0F, SC_Q = 0x10, SC_W = 0x11, SC_E = 0x12, SC_R = 0x13, SC_T = 0x14, SC_Y = 0x15, SC_U = 0x16, SC_I = 0x17, SC_O = 0x18, SC_P = 0x19, SC_LBRACKET = 0x1A, SC_RBRACKET = 0x1B, SC_RETURN = 0x1C, // Enter on main keyboard SC_LCONTROL = 0x1D, SC_A = 0x1E, SC_S = 0x1F, SC_D = 0x20, SC_F = 0x21, SC_G = 0x22, SC_H = 0x23, SC_J = 0x24, SC_K = 0x25, SC_L = 0x26, SC_SEMICOLON = 0x27, SC_APOSTROPHE = 0x28, SC_GRAVE = 0x29, // accent SC_LSHIFT = 0x2A, SC_BACKSLASH = 0x2B, SC_Z = 0x2C, SC_X = 0x2D, SC_C = 0x2E, SC_V = 0x2F, SC_B = 0x30, SC_N = 0x31, SC_M = 0x32, SC_COMMA = 0x33, SC_PERIOD = 0x34, // . on main keyboard SC_SLASH = 0x35, // / on main keyboard SC_RSHIFT = 0x36, SC_MULTIPLY = 0x37, // * on numeric keypad SC_LMENU = 0x38, // left Alt SC_SPACE = 0x39, SC_CAPITAL = 0x3A, SC_F1 = 0x3B, SC_F2 = 0x3C, SC_F3 = 0x3D, SC_F4 = 0x3E, SC_F5 = 0x3F, SC_F6 = 0x40, SC_F7 = 0x41, SC_F8 = 0x42, SC_F9 = 0x43, SC_F10 = 0x44, SC_NUMLOCK = 0x45, SC_SCROLL = 0x46, // Scroll Lock SC_NUMPAD7 = 0x47, SC_NUMPAD8 = 0x48, SC_NUMPAD9 = 0x49, SC_SUBTRACT = 0x4A, // - on numeric keypad SC_NUMPAD4 = 0x4B, SC_NUMPAD5 = 0x4C, SC_NUMPAD6 = 0x4D, SC_ADD = 0x4E, // + on numeric keypad SC_NUMPAD1 = 0x4F, SC_NUMPAD2 = 0x50, SC_NUMPAD3 = 0x51, SC_NUMPAD0 = 0x52, SC_DECIMAL = 0x53, // . on numeric keypad SC_OEM_102 = 0x56, // < > | on UK/Germany keyboards SC_F11 = 0x57, SC_F12 = 0x58, SC_F13 = 0x64, // (NEC PC98) SC_F14 = 0x65, // (NEC PC98) SC_F15 = 0x66, // (NEC PC98) SC_KANA = 0x70, // (Japanese keyboard) SC_ABNT_C1 = 0x73, // / ? on Portugese (Brazilian) keyboards SC_CONVERT = 0x79, // (Japanese keyboard) SC_NOCONVERT = 0x7B, // (Japanese keyboard) SC_YEN = 0x7D, // (Japanese keyboard) SC_ABNT_C2 = 0x7E, // Numpad . on Portugese (Brazilian) keyboards SC_NUMPADEQUALS = 0x8D, // = on numeric keypad (NEC PC98) SC_PREVTRACK = 0x90, // Previous Track (SC_CIRCUMFLEX on Japanese keyboard) SC_AT = 0x91, // (NEC PC98) SC_COLON = 0x92, // (NEC PC98) SC_UNDERLINE = 0x93, // (NEC PC98) SC_KANJI = 0x94, // (Japanese keyboard) SC_STOP = 0x95, // (NEC PC98) SC_AX = 0x96, // (Japan AX) SC_UNLABELED = 0x97, // (J3100) SC_NEXTTRACK = 0x99, // Next Track SC_NUMPADENTER = 0x9C, // Enter on numeric keypad SC_RCONTROL = 0x9D, SC_MUTE = 0xA0, // Mute SC_CALCULATOR = 0xA1, // Calculator SC_PLAYPAUSE = 0xA2, // Play / Pause SC_MEDIASTOP = 0xA4, // Media Stop SC_VOLUMEDOWN = 0xAE, // Volume - SC_VOLUMEUP = 0xB0, // Volume + SC_WEBHOME = 0xB2, // Web home SC_NUMPADCOMMA = 0xB3, // , on numeric keypad (NEC PC98) SC_DIVIDE = 0xB5, // / on numeric keypad SC_SYSRQ = 0xB7, SC_RMENU = 0xB8, // right Alt SC_PAUSE = 0xC5, // Pause SC_HOME = 0xC7, // Home on arrow keypad SC_UP = 0xC8, // UpArrow on arrow keypad SC_PGUP = 0xC9, // PgUp on arrow keypad SC_LEFT = 0xCB, // LeftArrow on arrow keypad SC_RIGHT = 0xCD, // RightArrow on arrow keypad SC_END = 0xCF, // End on arrow keypad SC_DOWN = 0xD0, // DownArrow on arrow keypad SC_PGDOWN = 0xD1, // PgDn on arrow keypad SC_INSERT = 0xD2, // Insert on arrow keypad SC_DELETE = 0xD3, // Delete on arrow keypad SC_LWIN = 0xDB, // Left Windows key SC_RWIN = 0xDC, // Right Windows key SC_APPS = 0xDD, // AppMenu key SC_POWER = 0xDE, // System Power SC_SLEEP = 0xDF, // System Sleep SC_WAKE = 0xE3, // System Wake SC_WEBSEARCH = 0xE5, // Web Search SC_WEBFAVORITES = 0xE6, // Web Favorites SC_WEBREFRESH = 0xE7, // Web Refresh SC_WEBSTOP = 0xE8, // Web Stop SC_WEBFORWARD = 0xE9, // Web Forward SC_WEBBACK = 0xEA, // Web Back SC_MYCOMPUTER = 0xEB, // My Computer SC_MAIL = 0xEC, // Mail SC_MEDIASELECT = 0xED, // Media Select SC_MAX }; class Table { public: Table() { #ifdef INPUT_KEY_NAME mVirtualKeyToName.resize(VLK_MAX); #define DECLARE_VIRTUAL_KEY(_key) mVirtualKeyToName[_key] = #_key; DECLARE_VIRTUAL_KEY(VLK_LBUTTON) DECLARE_VIRTUAL_KEY(VLK_RBUTTON) DECLARE_VIRTUAL_KEY(VLK_CANCEL) DECLARE_VIRTUAL_KEY(VLK_MBUTTON) DECLARE_VIRTUAL_KEY(VLK_XBUTTON1) DECLARE_VIRTUAL_KEY(VLK_XBUTTON2) DECLARE_VIRTUAL_KEY(VLK_BACK) DECLARE_VIRTUAL_KEY(VLK_TAB) DECLARE_VIRTUAL_KEY(VLK_CLEAR) DECLARE_VIRTUAL_KEY(VLK_RETURN) DECLARE_VIRTUAL_KEY(VLK_SHIFT) DECLARE_VIRTUAL_KEY(VLK_CONTROL) DECLARE_VIRTUAL_KEY(VLK_MENU) DECLARE_VIRTUAL_KEY(VLK_PAUSE) DECLARE_VIRTUAL_KEY(VLK_CAPITAL) DECLARE_VIRTUAL_KEY(VLK_KANA) DECLARE_VIRTUAL_KEY(VLK_HANGEUL) DECLARE_VIRTUAL_KEY(VLK_HANGUL) DECLARE_VIRTUAL_KEY(VLK_JUNJA) DECLARE_VIRTUAL_KEY(VLK_FINAL) DECLARE_VIRTUAL_KEY(VLK_HANJA) DECLARE_VIRTUAL_KEY(VLK_KANJI) DECLARE_VIRTUAL_KEY(VLK_ESCAPE) DECLARE_VIRTUAL_KEY(VLK_CONVERT) DECLARE_VIRTUAL_KEY(VLK_NONCONVERT) DECLARE_VIRTUAL_KEY(VLK_ACCEPT) DECLARE_VIRTUAL_KEY(VLK_MODECHANGE) DECLARE_VIRTUAL_KEY(VLK_SPACE) DECLARE_VIRTUAL_KEY(VLK_PRIOR) DECLARE_VIRTUAL_KEY(VLK_NEXT) DECLARE_VIRTUAL_KEY(VLK_END) DECLARE_VIRTUAL_KEY(VLK_HOME) DECLARE_VIRTUAL_KEY(VLK_LEFT) DECLARE_VIRTUAL_KEY(VLK_UP) DECLARE_VIRTUAL_KEY(VLK_RIGHT) DECLARE_VIRTUAL_KEY(VLK_DOWN) DECLARE_VIRTUAL_KEY(VLK_SELECT) DECLARE_VIRTUAL_KEY(VLK_PRINT) DECLARE_VIRTUAL_KEY(VLK_EXECUTE) DECLARE_VIRTUAL_KEY(VLK_SNAPSHOT) DECLARE_VIRTUAL_KEY(VLK_INSERT) DECLARE_VIRTUAL_KEY(VLK_DELETE) DECLARE_VIRTUAL_KEY(VLK_HELP) DECLARE_VIRTUAL_KEY(VLK_0) DECLARE_VIRTUAL_KEY(VLK_1) DECLARE_VIRTUAL_KEY(VLK_2) DECLARE_VIRTUAL_KEY(VLK_3) DECLARE_VIRTUAL_KEY(VLK_4) DECLARE_VIRTUAL_KEY(VLK_5) DECLARE_VIRTUAL_KEY(VLK_6) DECLARE_VIRTUAL_KEY(VLK_7) DECLARE_VIRTUAL_KEY(VLK_8) DECLARE_VIRTUAL_KEY(VLK_9) DECLARE_VIRTUAL_KEY(VLK_A) DECLARE_VIRTUAL_KEY(VLK_B) DECLARE_VIRTUAL_KEY(VLK_C) DECLARE_VIRTUAL_KEY(VLK_D) DECLARE_VIRTUAL_KEY(VLK_E) DECLARE_VIRTUAL_KEY(VLK_F) DECLARE_VIRTUAL_KEY(VLK_G) DECLARE_VIRTUAL_KEY(VLK_H) DECLARE_VIRTUAL_KEY(VLK_I) DECLARE_VIRTUAL_KEY(VLK_J) DECLARE_VIRTUAL_KEY(VLK_K) DECLARE_VIRTUAL_KEY(VLK_L) DECLARE_VIRTUAL_KEY(VLK_M) DECLARE_VIRTUAL_KEY(VLK_N) DECLARE_VIRTUAL_KEY(VLK_O) DECLARE_VIRTUAL_KEY(VLK_P) DECLARE_VIRTUAL_KEY(VLK_Q) DECLARE_VIRTUAL_KEY(VLK_R) DECLARE_VIRTUAL_KEY(VLK_S) DECLARE_VIRTUAL_KEY(VLK_T) DECLARE_VIRTUAL_KEY(VLK_U) DECLARE_VIRTUAL_KEY(VLK_V) DECLARE_VIRTUAL_KEY(VLK_W) DECLARE_VIRTUAL_KEY(VLK_X) DECLARE_VIRTUAL_KEY(VLK_Y) DECLARE_VIRTUAL_KEY(VLK_Z) DECLARE_VIRTUAL_KEY(VLK_LWIN) DECLARE_VIRTUAL_KEY(VLK_RWIN) DECLARE_VIRTUAL_KEY(VLK_APPS) DECLARE_VIRTUAL_KEY(VLK_SLEEP) DECLARE_VIRTUAL_KEY(VLK_NUMPAD0) DECLARE_VIRTUAL_KEY(VLK_NUMPAD1) DECLARE_VIRTUAL_KEY(VLK_NUMPAD2) DECLARE_VIRTUAL_KEY(VLK_NUMPAD3) DECLARE_VIRTUAL_KEY(VLK_NUMPAD4) DECLARE_VIRTUAL_KEY(VLK_NUMPAD5) DECLARE_VIRTUAL_KEY(VLK_NUMPAD6) DECLARE_VIRTUAL_KEY(VLK_NUMPAD7) DECLARE_VIRTUAL_KEY(VLK_NUMPAD8) DECLARE_VIRTUAL_KEY(VLK_NUMPAD9) DECLARE_VIRTUAL_KEY(VLK_MULTIPLY) DECLARE_VIRTUAL_KEY(VLK_ADD) DECLARE_VIRTUAL_KEY(VLK_SEPARATOR) DECLARE_VIRTUAL_KEY(VLK_SUBTRACT) DECLARE_VIRTUAL_KEY(VLK_DECIMAL) DECLARE_VIRTUAL_KEY(VLK_DIVIDE) DECLARE_VIRTUAL_KEY(VLK_F1) DECLARE_VIRTUAL_KEY(VLK_F2) DECLARE_VIRTUAL_KEY(VLK_F3) DECLARE_VIRTUAL_KEY(VLK_F4) DECLARE_VIRTUAL_KEY(VLK_F5) DECLARE_VIRTUAL_KEY(VLK_F6) DECLARE_VIRTUAL_KEY(VLK_F7) DECLARE_VIRTUAL_KEY(VLK_F8) DECLARE_VIRTUAL_KEY(VLK_F9) DECLARE_VIRTUAL_KEY(VLK_F10) DECLARE_VIRTUAL_KEY(VLK_F11) DECLARE_VIRTUAL_KEY(VLK_F12) DECLARE_VIRTUAL_KEY(VLK_F13) DECLARE_VIRTUAL_KEY(VLK_F14) DECLARE_VIRTUAL_KEY(VLK_F15) DECLARE_VIRTUAL_KEY(VLK_F16) DECLARE_VIRTUAL_KEY(VLK_F17) DECLARE_VIRTUAL_KEY(VLK_F18) DECLARE_VIRTUAL_KEY(VLK_F19) DECLARE_VIRTUAL_KEY(VLK_F20) DECLARE_VIRTUAL_KEY(VLK_F21) DECLARE_VIRTUAL_KEY(VLK_F22) DECLARE_VIRTUAL_KEY(VLK_F23) DECLARE_VIRTUAL_KEY(VLK_F24) DECLARE_VIRTUAL_KEY(VLK_NUMLOCK) DECLARE_VIRTUAL_KEY(VLK_SCROLL) DECLARE_VIRTUAL_KEY(VLK_OEM_NEC_EQUAL) DECLARE_VIRTUAL_KEY(VLK_OEM_FJ_JISHO) DECLARE_VIRTUAL_KEY(VLK_OEM_FJ_MASSHOU) DECLARE_VIRTUAL_KEY(VLK_OEM_FJ_TOUROKU) DECLARE_VIRTUAL_KEY(VLK_OEM_FJ_LOYA) DECLARE_VIRTUAL_KEY(VLK_OEM_FJ_ROYA) DECLARE_VIRTUAL_KEY(VLK_LSHIFT) DECLARE_VIRTUAL_KEY(VLK_RSHIFT) DECLARE_VIRTUAL_KEY(VLK_LCONTROL) DECLARE_VIRTUAL_KEY(VLK_RCONTROL) DECLARE_VIRTUAL_KEY(VLK_LMENU) DECLARE_VIRTUAL_KEY(VLK_RMENU) DECLARE_VIRTUAL_KEY(VLK_BROWSER_BACK) DECLARE_VIRTUAL_KEY(VLK_BROWSER_FORWARD) DECLARE_VIRTUAL_KEY(VLK_BROWSER_REFRESH) DECLARE_VIRTUAL_KEY(VLK_BROWSER_STOP) DECLARE_VIRTUAL_KEY(VLK_BROWSER_SEARCH) DECLARE_VIRTUAL_KEY(VLK_BROWSER_FAVORITES) DECLARE_VIRTUAL_KEY(VLK_BROWSER_HOME) DECLARE_VIRTUAL_KEY(VLK_VOLUME_MUTE) DECLARE_VIRTUAL_KEY(VLK_VOLUME_DOWN) DECLARE_VIRTUAL_KEY(VLK_VOLUME_UP) DECLARE_VIRTUAL_KEY(VLK_MEDIA_NEXT_TRACK) DECLARE_VIRTUAL_KEY(VLK_MEDIA_PREV_TRACK) DECLARE_VIRTUAL_KEY(VLK_MEDIA_STOP) DECLARE_VIRTUAL_KEY(VLK_MEDIA_PLAY_PAUSE) DECLARE_VIRTUAL_KEY(VLK_LAUNCH_MAIL) DECLARE_VIRTUAL_KEY(VLK_LAUNCH_MEDIA_SELECT) DECLARE_VIRTUAL_KEY(VLK_LAUNCH_APP1) DECLARE_VIRTUAL_KEY(VLK_LAUNCH_APP2) DECLARE_VIRTUAL_KEY(VLK_OEM_1) DECLARE_VIRTUAL_KEY(VLK_OEM_PLUS) DECLARE_VIRTUAL_KEY(VLK_OEM_COMMA) DECLARE_VIRTUAL_KEY(VLK_OEM_MINUS) DECLARE_VIRTUAL_KEY(VLK_OEM_PERIOD) DECLARE_VIRTUAL_KEY(VLK_OEM_2) DECLARE_VIRTUAL_KEY(VLK_OEM_3) DECLARE_VIRTUAL_KEY(VLK_OEM_4) DECLARE_VIRTUAL_KEY(VLK_OEM_5) DECLARE_VIRTUAL_KEY(VLK_OEM_6) DECLARE_VIRTUAL_KEY(VLK_OEM_7) DECLARE_VIRTUAL_KEY(VLK_OEM_8) DECLARE_VIRTUAL_KEY(VLK_OEM_AX) DECLARE_VIRTUAL_KEY(VLK_OEM_102) DECLARE_VIRTUAL_KEY(VLK_ICO_HELP) DECLARE_VIRTUAL_KEY(VLK_ICO_00) DECLARE_VIRTUAL_KEY(VLK_PROCESSKEY) DECLARE_VIRTUAL_KEY(VLK_ICO_CLEAR) DECLARE_VIRTUAL_KEY(VLK_PACKET) DECLARE_VIRTUAL_KEY(VLK_OEM_RESET) DECLARE_VIRTUAL_KEY(VLK_OEM_JUMP) DECLARE_VIRTUAL_KEY(VLK_OEM_PA1) DECLARE_VIRTUAL_KEY(VLK_OEM_PA2) DECLARE_VIRTUAL_KEY(VLK_OEM_PA3) DECLARE_VIRTUAL_KEY(VLK_OEM_WSCTRL) DECLARE_VIRTUAL_KEY(VLK_OEM_CUSEL) DECLARE_VIRTUAL_KEY(VLK_OEM_ATTN) DECLARE_VIRTUAL_KEY(VLK_OEM_FINISH) DECLARE_VIRTUAL_KEY(VLK_OEM_COPY) DECLARE_VIRTUAL_KEY(VLK_OEM_AUTO) DECLARE_VIRTUAL_KEY(VLK_OEM_ENLW) DECLARE_VIRTUAL_KEY(VLK_OEM_BACKTAB) DECLARE_VIRTUAL_KEY(VLK_ATTN) DECLARE_VIRTUAL_KEY(VLK_CRSEL) DECLARE_VIRTUAL_KEY(VLK_EXSEL) DECLARE_VIRTUAL_KEY(VLK_EREOF) DECLARE_VIRTUAL_KEY(VLK_PLAY) DECLARE_VIRTUAL_KEY(VLK_ZOOM) DECLARE_VIRTUAL_KEY(VLK_NONAME) DECLARE_VIRTUAL_KEY(VLK_PA1) DECLARE_VIRTUAL_KEY(VLK_OEM_CLEAR) #undef DECLARE_VIRTUAL_KEY mScanCodeToName.resize(SC_MAX); #define DECLARE_SCAN_CODE(_code) mScanCodeToName[_code] = #_code; DECLARE_SCAN_CODE(SC_ESCAPE) DECLARE_SCAN_CODE(SC_1) DECLARE_SCAN_CODE(SC_2) DECLARE_SCAN_CODE(SC_3) DECLARE_SCAN_CODE(SC_4) DECLARE_SCAN_CODE(SC_5) DECLARE_SCAN_CODE(SC_6) DECLARE_SCAN_CODE(SC_7) DECLARE_SCAN_CODE(SC_8) DECLARE_SCAN_CODE(SC_9) DECLARE_SCAN_CODE(SC_0) DECLARE_SCAN_CODE(SC_MINUS) DECLARE_SCAN_CODE(SC_EQUALS) DECLARE_SCAN_CODE(SC_BACK) DECLARE_SCAN_CODE(SC_TAB) DECLARE_SCAN_CODE(SC_Q) DECLARE_SCAN_CODE(SC_W) DECLARE_SCAN_CODE(SC_E) DECLARE_SCAN_CODE(SC_R) DECLARE_SCAN_CODE(SC_T) DECLARE_SCAN_CODE(SC_Y) DECLARE_SCAN_CODE(SC_U) DECLARE_SCAN_CODE(SC_I) DECLARE_SCAN_CODE(SC_O) DECLARE_SCAN_CODE(SC_P) DECLARE_SCAN_CODE(SC_LBRACKET) DECLARE_SCAN_CODE(SC_RBRACKET) DECLARE_SCAN_CODE(SC_RETURN) DECLARE_SCAN_CODE(SC_LCONTROL) DECLARE_SCAN_CODE(SC_A) DECLARE_SCAN_CODE(SC_S) DECLARE_SCAN_CODE(SC_D) DECLARE_SCAN_CODE(SC_F) DECLARE_SCAN_CODE(SC_G) DECLARE_SCAN_CODE(SC_H) DECLARE_SCAN_CODE(SC_J) DECLARE_SCAN_CODE(SC_K) DECLARE_SCAN_CODE(SC_L) DECLARE_SCAN_CODE(SC_SEMICOLON) DECLARE_SCAN_CODE(SC_APOSTROPHE) DECLARE_SCAN_CODE(SC_GRAVE) DECLARE_SCAN_CODE(SC_LSHIFT) DECLARE_SCAN_CODE(SC_BACKSLASH) DECLARE_SCAN_CODE(SC_Z) DECLARE_SCAN_CODE(SC_X) DECLARE_SCAN_CODE(SC_C) DECLARE_SCAN_CODE(SC_V) DECLARE_SCAN_CODE(SC_B) DECLARE_SCAN_CODE(SC_N) DECLARE_SCAN_CODE(SC_M) DECLARE_SCAN_CODE(SC_COMMA) DECLARE_SCAN_CODE(SC_PERIOD) DECLARE_SCAN_CODE(SC_SLASH) DECLARE_SCAN_CODE(SC_RSHIFT) DECLARE_SCAN_CODE(SC_MULTIPLY) DECLARE_SCAN_CODE(SC_LMENU) DECLARE_SCAN_CODE(SC_SPACE) DECLARE_SCAN_CODE(SC_CAPITAL) DECLARE_SCAN_CODE(SC_F1) DECLARE_SCAN_CODE(SC_F2) DECLARE_SCAN_CODE(SC_F3) DECLARE_SCAN_CODE(SC_F4) DECLARE_SCAN_CODE(SC_F5) DECLARE_SCAN_CODE(SC_F6) DECLARE_SCAN_CODE(SC_F7) DECLARE_SCAN_CODE(SC_F8) DECLARE_SCAN_CODE(SC_F9) DECLARE_SCAN_CODE(SC_F10) DECLARE_SCAN_CODE(SC_NUMLOCK) DECLARE_SCAN_CODE(SC_SCROLL) DECLARE_SCAN_CODE(SC_NUMPAD7) DECLARE_SCAN_CODE(SC_NUMPAD8) DECLARE_SCAN_CODE(SC_NUMPAD9) DECLARE_SCAN_CODE(SC_SUBTRACT) DECLARE_SCAN_CODE(SC_NUMPAD4) DECLARE_SCAN_CODE(SC_NUMPAD5) DECLARE_SCAN_CODE(SC_NUMPAD6) DECLARE_SCAN_CODE(SC_ADD) DECLARE_SCAN_CODE(SC_NUMPAD1) DECLARE_SCAN_CODE(SC_NUMPAD2) DECLARE_SCAN_CODE(SC_NUMPAD3) DECLARE_SCAN_CODE(SC_NUMPAD0) DECLARE_SCAN_CODE(SC_DECIMAL) DECLARE_SCAN_CODE(SC_OEM_102) DECLARE_SCAN_CODE(SC_F11) DECLARE_SCAN_CODE(SC_F12) DECLARE_SCAN_CODE(SC_F13) DECLARE_SCAN_CODE(SC_F14) DECLARE_SCAN_CODE(SC_F15) DECLARE_SCAN_CODE(SC_KANA) DECLARE_SCAN_CODE(SC_ABNT_C1) DECLARE_SCAN_CODE(SC_CONVERT) DECLARE_SCAN_CODE(SC_NOCONVERT) DECLARE_SCAN_CODE(SC_YEN) DECLARE_SCAN_CODE(SC_ABNT_C2) DECLARE_SCAN_CODE(SC_NUMPADEQUALS) DECLARE_SCAN_CODE(SC_PREVTRACK) DECLARE_SCAN_CODE(SC_AT) DECLARE_SCAN_CODE(SC_COLON) DECLARE_SCAN_CODE(SC_UNDERLINE) DECLARE_SCAN_CODE(SC_KANJI) DECLARE_SCAN_CODE(SC_STOP) DECLARE_SCAN_CODE(SC_AX) DECLARE_SCAN_CODE(SC_UNLABELED) DECLARE_SCAN_CODE(SC_NEXTTRACK) DECLARE_SCAN_CODE(SC_NUMPADENTER) DECLARE_SCAN_CODE(SC_RCONTROL) DECLARE_SCAN_CODE(SC_MUTE) DECLARE_SCAN_CODE(SC_CALCULATOR) DECLARE_SCAN_CODE(SC_PLAYPAUSE) DECLARE_SCAN_CODE(SC_MEDIASTOP) DECLARE_SCAN_CODE(SC_VOLUMEDOWN) DECLARE_SCAN_CODE(SC_VOLUMEUP) DECLARE_SCAN_CODE(SC_WEBHOME) DECLARE_SCAN_CODE(SC_NUMPADCOMMA) DECLARE_SCAN_CODE(SC_DIVIDE) DECLARE_SCAN_CODE(SC_SYSRQ) DECLARE_SCAN_CODE(SC_RMENU) DECLARE_SCAN_CODE(SC_PAUSE) DECLARE_SCAN_CODE(SC_HOME) DECLARE_SCAN_CODE(SC_UP) DECLARE_SCAN_CODE(SC_PGUP) DECLARE_SCAN_CODE(SC_LEFT) DECLARE_SCAN_CODE(SC_RIGHT) DECLARE_SCAN_CODE(SC_END) DECLARE_SCAN_CODE(SC_DOWN) DECLARE_SCAN_CODE(SC_PGDOWN) DECLARE_SCAN_CODE(SC_INSERT) DECLARE_SCAN_CODE(SC_DELETE) DECLARE_SCAN_CODE(SC_LWIN) DECLARE_SCAN_CODE(SC_RWIN) DECLARE_SCAN_CODE(SC_APPS) DECLARE_SCAN_CODE(SC_POWER) DECLARE_SCAN_CODE(SC_SLEEP) DECLARE_SCAN_CODE(SC_WAKE) DECLARE_SCAN_CODE(SC_WEBSEARCH) DECLARE_SCAN_CODE(SC_WEBFAVORITES) DECLARE_SCAN_CODE(SC_WEBREFRESH) DECLARE_SCAN_CODE(SC_WEBSTOP) DECLARE_SCAN_CODE(SC_WEBFORWARD) DECLARE_SCAN_CODE(SC_WEBBACK) DECLARE_SCAN_CODE(SC_MYCOMPUTER) DECLARE_SCAN_CODE(SC_MAIL) DECLARE_SCAN_CODE(SC_MEDIASELECT) #undef DECLARE_SCAN_CODE #endif memset(mVirtualKeyToScanCode, 0, VLK_MAX); memset(mScanCodeToVirtualKey, 0, SC_MAX); #define ADD_MAP(_keyName) \ mVirtualKeyToScanCode[VLK_##_keyName] = SC_##_keyName; \ mScanCodeToVirtualKey[SC_##_keyName] = VLK_##_keyName; #define ADD_MAP2(_virtualKey, _scanCode) \ mVirtualKeyToScanCode[VLK_##_virtualKey] = SC_##_scanCode; \ mScanCodeToVirtualKey[SC_##_scanCode] = VLK_##_virtualKey; ADD_MAP(0) ADD_MAP(1) ADD_MAP(2) ADD_MAP(3) ADD_MAP(4) ADD_MAP(5) ADD_MAP(6) ADD_MAP(7) ADD_MAP(8) ADD_MAP(9) ADD_MAP(A) ADD_MAP(B) ADD_MAP(C) ADD_MAP(D) ADD_MAP(E) ADD_MAP(F) ADD_MAP(G) ADD_MAP(H) ADD_MAP(I) ADD_MAP(J) ADD_MAP(K) ADD_MAP(L) ADD_MAP(M) ADD_MAP(N) ADD_MAP(O) ADD_MAP(P) ADD_MAP(Q) ADD_MAP(R) ADD_MAP(S) ADD_MAP(T) ADD_MAP(U) ADD_MAP(V) ADD_MAP(W) ADD_MAP(X) ADD_MAP(Y) ADD_MAP(Z) ADD_MAP(F1) ADD_MAP(F2) ADD_MAP(F3) ADD_MAP(F4) ADD_MAP(F5) ADD_MAP(F6) ADD_MAP(F7) ADD_MAP(F8) ADD_MAP(F9) ADD_MAP(F10) ADD_MAP(F11) ADD_MAP(F12) ADD_MAP(F13) ADD_MAP(F14) ADD_MAP(F15) ADD_MAP(NUMPAD0) ADD_MAP(NUMPAD1) ADD_MAP(NUMPAD2) ADD_MAP(NUMPAD3) ADD_MAP(NUMPAD4) ADD_MAP(NUMPAD5) ADD_MAP(NUMPAD6) ADD_MAP(NUMPAD7) ADD_MAP(NUMPAD8) ADD_MAP(NUMPAD9) ADD_MAP(ESCAPE) ADD_MAP(TAB) ADD_MAP(RETURN) ADD_MAP(SPACE) ADD_MAP(BACK) ADD_MAP2(SCROLL, SCROLL) ADD_MAP2(PAUSE, PAUSE) ADD_MAP2(OEM_3, GRAVE) ADD_MAP2(OEM_MINUS, MINUS) ADD_MAP2(OEM_PLUS, EQUALS) ADD_MAP2(OEM_5, BACKSLASH) ADD_MAP2(OEM_4, LBRACKET) ADD_MAP2(OEM_6, RBRACKET) ADD_MAP2(CAPITAL, CAPITAL) ADD_MAP2(OEM_1, SEMICOLON) ADD_MAP2(OEM_7, APOSTROPHE) ADD_MAP2(SHIFT, LSHIFT) ADD_MAP2(OEM_COMMA, COMMA) ADD_MAP2(OEM_PERIOD, PERIOD) ADD_MAP2(OEM_2, SLASH) ADD_MAP2(CONTROL, LCONTROL) ADD_MAP2(LWIN, LWIN) ADD_MAP2(RWIN, RWIN) ADD_MAP2(APPS, APPS) ADD_MAP2(MENU, LMENU) ADD_MAP2(LEFT, LEFT) ADD_MAP2(RIGHT, RIGHT) ADD_MAP2(UP, UP) ADD_MAP2(DOWN, DOWN) ADD_MAP2(INSERT, INSERT) ADD_MAP2(DELETE, DELETE) ADD_MAP2(HOME, HOME) ADD_MAP2(END, END) ADD_MAP2(PRIOR, PGUP) ADD_MAP2(NEXT, PGDOWN) ADD_MAP2(SNAPSHOT, SYSRQ) ADD_MAP2(NUMLOCK, NUMLOCK) ADD_MAP2(DIVIDE, DIVIDE) ADD_MAP2(MULTIPLY, MULTIPLY) ADD_MAP2(SUBTRACT, SUBTRACT) ADD_MAP2(ADD, ADD) ADD_MAP2(DECIMAL, DECIMAL) ADD_MAP(NUMPAD0) ADD_MAP(NUMPAD1) ADD_MAP(NUMPAD2) ADD_MAP(NUMPAD3) ADD_MAP(NUMPAD4) ADD_MAP(NUMPAD5) ADD_MAP(NUMPAD6) ADD_MAP(NUMPAD7) ADD_MAP(NUMPAD8) ADD_MAP(NUMPAD9) #undef ADD_MAP #undef ADD_MAP2 } int VirtualKeyToScanCode(WPARAM _virtualKey) const { if (_virtualKey < VLK_MAX) return (int)mVirtualKeyToScanCode[_virtualKey]; return 0; } int ScanCodeToVirtualKey(int _scanCode) const { if (_scanCode < SC_MAX) return (int)mScanCodeToVirtualKey[_scanCode]; return 0; } #ifdef INPUT_KEY_NAME const std::string VirtualKeyToName(WPARAM _virtualKey) const { if (_virtualKey < VLK_MAX) return mVirtualKeyToName[_virtualKey]; return ""; } const std::string ScanCodeToName(int _scanCode) const { if (_scanCode < SC_MAX) return mScanCodeToName[_scanCode]; return ""; } #endif private: unsigned char mVirtualKeyToScanCode[VLK_MAX]; unsigned char mScanCodeToVirtualKey[SC_MAX]; #ifdef INPUT_KEY_NAME std::vector mVirtualKeyToName; std::vector mScanCodeToName; #endif }; const Table& getTable() { static Table table; return table; } int VirtualKeyToScanCode(WPARAM _virtualKey) { const Table& table = getTable(); return table.VirtualKeyToScanCode(_virtualKey); } int ScanCodeToVirtualKey(int _scanCode) { const Table& table = getTable(); return table.ScanCodeToVirtualKey(_scanCode); } #ifdef INPUT_KEY_NAME std::string VirtualKeyToName(WPARAM _virtualKey) { const Table& table = getTable(); return table.VirtualKeyToName(_virtualKey); } std::string ScanCodeToName(int _scanCode) { const Table& table = getTable(); return table.ScanCodeToName(_scanCode); } #endif #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 int VirtualKeyToText(WPARAM _virtualKey) { static WCHAR deadKey = 0; BYTE keyState[256]; HKL layout = GetKeyboardLayout(0); if (GetKeyboardState(keyState) == 0) return 0; WCHAR buff[3] = { 0, 0, 0 }; int ascii = ToUnicodeEx((UINT)_virtualKey, 0, keyState, buff, 3, 0, layout); if (ascii == 1 && deadKey != '\0' ) { // A dead key is stored and we have just converted a character key // Combine the two into a single character WCHAR wcBuff[3] = { buff[0], deadKey, '\0' }; WCHAR out[3]; deadKey = '\0'; if (FoldStringW(MAP_PRECOMPOSED, (LPWSTR)wcBuff, 3, (LPWSTR)out, 3)) return out[0]; } else if (ascii == 1) { // We have a single character deadKey = '\0'; return buff[0]; } else if (ascii == 2) { // Convert a non-combining diacritical mark into a combining diacritical mark // Combining versions range from 0x300 to 0x36F; only 5 (for French) have been mapped below // http://www.fileformat.info/info/unicode/block/combining_diacritical_marks/images.htm switch (buff[0]) { case 0x5E: // Circumflex accent: в deadKey = 0x302; break; case 0x60: // Grave accent: а deadKey = 0x300; break; case 0xA8: // Diaeresis: ь deadKey = 0x308; break; case 0xB4: // Acute accent: й deadKey = 0x301; break; case 0xB8: // Cedilla: з deadKey = 0x327; break; default: deadKey = buff[0]; break; } } return 0; } int ScanCodeToText(int _scanCode) { HKL layout = GetKeyboardLayout(0); unsigned int vk = MapVirtualKeyEx((UINT)_scanCode, 3 /*MAPVK_VSC_TO_VK_EX*/, layout); if (vk == 0) return 0; return VirtualKeyToText(vk); } #endif } #endif // INPUT_CONVERTER_H_ mygui-3.2.2+dfsg/Common/Input/OIS/000077500000000000000000000000001322721077200165535ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Input/OIS/InputManager.cpp000066400000000000000000000134051322721077200216540ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 09/2009 */ #include "Precompiled.h" #include "InputManager.h" #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 #include #endif namespace input { #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 MyGUI::Char translateWin32Text(MyGUI::KeyCode kc) { static WCHAR deadKey = 0; BYTE keyState[256]; HKL layout = GetKeyboardLayout(0); if ( GetKeyboardState(keyState) == 0 ) return 0; int code = *((int*)&kc); unsigned int vk = MapVirtualKeyEx((UINT)code, 3, layout); if ( vk == 0 ) return 0; WCHAR buff[3] = { 0, 0, 0 }; int ascii = ToUnicodeEx(vk, (UINT)code, keyState, buff, 3, 0, layout); if (ascii == 1 && deadKey != '\0' ) { // A dead key is stored and we have just converted a character key // Combine the two into a single character WCHAR wcBuff[3] = { buff[0], deadKey, '\0' }; WCHAR out[3]; deadKey = '\0'; if (FoldStringW(MAP_PRECOMPOSED, (LPWSTR)wcBuff, 3, (LPWSTR)out, 3)) return out[0]; } else if (ascii == 1) { // We have a single character deadKey = '\0'; return buff[0]; } else if (ascii == 2) { // Convert a non-combining diacritical mark into a combining diacritical mark // Combining versions range from 0x300 to 0x36F; only 5 (for French) have been mapped below // http://www.fileformat.info/info/unicode/block/combining_diacritical_marks/images.htm switch (buff[0]) { case 0x5E: // Circumflex accent: deadKey = 0x302; break; case 0x60: // Grave accent: deadKey = 0x300; break; case 0xA8: // Diaeresis: deadKey = 0x308; break; case 0xB4: // Acute accent: deadKey = 0x301; break; case 0xB8: // Cedilla: deadKey = 0x327; break; default: deadKey = buff[0]; break; } } return 0; } #endif InputManager::InputManager() : mInputManager(0), mKeyboard(0), mMouse(0), mCursorX(0), mCursorY(0) { } InputManager::~InputManager() { } void InputManager::createInput(size_t _handle) { std::ostringstream windowHndStr; windowHndStr << _handle; OIS::ParamList pl; pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str())); #if defined OIS_WIN32_PLATFORM pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_FOREGROUND" ))); pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_NONEXCLUSIVE"))); pl.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_FOREGROUND"))); pl.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_NONEXCLUSIVE"))); #elif defined OIS_LINUX_PLATFORM pl.insert(std::make_pair(std::string("x11_mouse_grab"), std::string("false"))); pl.insert(std::make_pair(std::string("x11_mouse_hide"), std::string("false"))); pl.insert(std::make_pair(std::string("x11_keyboard_grab"), std::string("false"))); pl.insert(std::make_pair(std::string("XAutoRepeatOn"), std::string("true"))); #endif mInputManager = OIS::InputManager::createInputSystem(pl); mKeyboard = static_cast(mInputManager->createInputObject( OIS::OISKeyboard, true )); mKeyboard->setEventCallback(this); mMouse = static_cast(mInputManager->createInputObject( OIS::OISMouse, true )); mMouse->setEventCallback(this); } void InputManager::destroyInput() { if (mInputManager) { if (mMouse) { mInputManager->destroyInputObject( mMouse ); mMouse = nullptr; } if (mKeyboard) { mInputManager->destroyInputObject( mKeyboard ); mKeyboard = nullptr; } OIS::InputManager::destroyInputSystem(mInputManager); mInputManager = nullptr; } } bool InputManager::mouseMoved(const OIS::MouseEvent& _arg) { mCursorX = _arg.state.X.abs; mCursorY = _arg.state.Y.abs; checkPosition(); injectMouseMove(mCursorX, mCursorY, _arg.state.Z.abs); return true; } bool InputManager::mousePressed(const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { injectMousePress(mCursorX, mCursorY, MyGUI::MouseButton::Enum(_id)); return true; } bool InputManager::mouseReleased(const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { injectMouseRelease(mCursorX, mCursorY, MyGUI::MouseButton::Enum(_id)); return true; } bool InputManager::keyPressed(const OIS::KeyEvent& _arg) { MyGUI::Char text = (MyGUI::Char)_arg.text; MyGUI::KeyCode key = MyGUI::KeyCode::Enum(_arg.key); int scan_code = key.getValue(); if (scan_code > 70 && scan_code < 84) { static MyGUI::Char nums[13] = { 55, 56, 57, 45, 52, 53, 54, 43, 49, 50, 51, 48, 46 }; text = nums[scan_code-71]; } else if (key == MyGUI::KeyCode::Divide) { text = '/'; } else { #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 text = translateWin32Text(key); #endif } injectKeyPress(key, text); return true; } bool InputManager::keyReleased(const OIS::KeyEvent& _arg) { injectKeyRelease(MyGUI::KeyCode::Enum(_arg.key)); return true; } void InputManager::captureInput() { if (mMouse) mMouse->capture(); mKeyboard->capture(); } void InputManager::setInputViewSize(int _width, int _height) { if (mMouse) { const OIS::MouseState& ms = mMouse->getMouseState(); ms.width = _width; ms.height = _height; checkPosition(); } } void InputManager::setMousePosition(int _x, int _y) { //const OIS::MouseState &ms = mMouse->getMouseState(); mCursorX = _x; mCursorY = _y; checkPosition(); } void InputManager::checkPosition() { const OIS::MouseState& ms = mMouse->getMouseState(); if (mCursorX < 0) mCursorX = 0; else if (mCursorX >= ms.width) mCursorX = ms.width - 1; if (mCursorY < 0) mCursorY = 0; else if (mCursorY >= ms.height) mCursorY = ms.height - 1; } void InputManager::updateCursorPosition() { const OIS::MouseState& ms = mMouse->getMouseState(); injectMouseMove(mCursorX, mCursorY, ms.Z.abs); } } // namespace input mygui-3.2.2+dfsg/Common/Input/OIS/InputManager.h000066400000000000000000000026131322721077200213200ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 09/2009 */ #ifndef INPUT_MANAGER_H_ #define INPUT_MANAGER_H_ #include #include namespace input { class InputManager : public OIS::MouseListener, public OIS::KeyListener { public: InputManager(); virtual ~InputManager(); void createInput(size_t _handle); void destroyInput(); void captureInput(); void setInputViewSize(int _width, int _height); virtual void injectMouseMove(int _absx, int _absy, int _absz) { } virtual void injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id) { } virtual void injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id) { } virtual void injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text) { } virtual void injectKeyRelease(MyGUI::KeyCode _key) { } void setMousePosition(int _x, int _y); void updateCursorPosition(); private: virtual bool mouseMoved(const OIS::MouseEvent& _arg); virtual bool mousePressed(const OIS::MouseEvent& _arg, OIS::MouseButtonID _id); virtual bool mouseReleased(const OIS::MouseEvent& _arg, OIS::MouseButtonID _id); virtual bool keyPressed(const OIS::KeyEvent& _arg); virtual bool keyReleased(const OIS::KeyEvent& _arg); void checkPosition(); private: OIS::InputManager* mInputManager; OIS::Keyboard* mKeyboard; OIS::Mouse* mMouse; int mCursorX; int mCursorY; }; } // namespace input #endif // INPUT_MANAGER_H_ mygui-3.2.2+dfsg/Common/Input/OIS/PointerManager.cpp000066400000000000000000000012351322721077200221730ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 1/2009 */ #include "Precompiled.h" #include "PointerManager.h" #include namespace input { PointerManager::PointerManager() { } PointerManager::~PointerManager() { } void PointerManager::createPointerManager(size_t _handle) { } void PointerManager::destroyPointerManager() { } void PointerManager::setPointerVisible(bool _value) { MyGUI::PointerManager::getInstance().setVisible(_value); } void PointerManager::setPointerName(const std::string& _name) { MyGUI::PointerManager::getInstance().setPointer(_name); } void PointerManager::loadPointerResources() { } } // namespace input mygui-3.2.2+dfsg/Common/Input/OIS/PointerManager.h000066400000000000000000000007241322721077200216420ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 11/2009 */ #ifndef POINTER_MANAGER_H_ #define POINTER_MANAGER_H_ namespace input { class PointerManager { public: PointerManager(); virtual ~PointerManager(); void createPointerManager(size_t _handle); void destroyPointerManager(); void setPointerVisible(bool _value); void setPointerName(const std::string& _name); void loadPointerResources(); }; } // namespace input #endif // POINTER_MANAGER_H_ mygui-3.2.2+dfsg/Common/Input/Win32/000077500000000000000000000000001322721077200170235ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Input/Win32/InputManager.cpp000066400000000000000000000166051322721077200221310ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 09/2009 */ #include "Precompiled.h" #include "InputManager.h" #include "../InputConverter.h" #ifdef INPUT_KEY_NAME #include #endif namespace input { // указатель на менеджер, куда транслируються сообщения InputManager* InputManager::msInputManager = 0; // старая процедура, которую мы заменили LRESULT InputManager::msOldWindowProc = NULL; bool InputManager::msSkipMove = false; // наша процедура для фильтрации сообщений LRESULT CALLBACK InputManager::windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // если колесо не определенно #ifndef WM_MOUSEWHEEL #define WM_MOUSEWHEEL 0x020A #define __WM_REALMOUSELAST WM_MOUSEWHEEL #else #define __WM_REALMOUSELAST WM_MOUSELAST #endif // WM_MOUSEWHEEL // для взятия знаковых значений #define GET_HIWORD(param) ((short)HIWORD(param)) #define GET_LOWORD(param) ((short)LOWORD(param)) // на нас кидают файлы if (WM_DROPFILES == uMsg) { HDROP hDrop = (HDROP)wParam; wchar_t buff[MAX_PATH] = { 0 }; UINT fcount = DragQueryFileW(hDrop, 0xFFFFFFFF, NULL, 0); for (UINT index = 0; index < fcount; ++index) { DragQueryFileW(hDrop, index, buff, MAX_PATH); msInputManager->onFileDrop(buff); } DragFinish(hDrop); return 0; } // нас пытаются закрыть else if (WM_CLOSE == uMsg) { if (!msInputManager->onWinodwClose((size_t)hWnd)) return 0; } else if ((uMsg >= WM_MOUSEFIRST) && (uMsg <= __WM_REALMOUSELAST)) { static int old_x = 0; static int old_y = 0; static int old_z = 0; static bool left_button = false; static bool right_button = false; switch (uMsg) { case WM_MOUSEMOVE: { int x = GET_LOWORD(lParam); int y = GET_HIWORD(lParam); if (x < 0) x = 0; else if (x > msInputManager->mWidth) x = msInputManager->mWidth; if (y < 0) y = 0; else if (y > msInputManager->mHeight) y = msInputManager->mHeight; old_x = x; old_y = y; if (msSkipMove) msSkipMove = false; else msInputManager->mouseMove(old_x, old_y, old_z); } break; case WM_MOUSEWHEEL: old_z += GET_HIWORD(wParam); msInputManager->mouseMove(old_x, old_y, old_z); break; case WM_LBUTTONDOWN: left_button = true; if (!right_button) ::SetCapture(hWnd); msInputManager->mousePress(old_x, old_y, MyGUI::MouseButton::Left); break; case WM_LBUTTONDBLCLK: left_button = true; if (!right_button) ::SetCapture(hWnd); msInputManager->mousePress(old_x, old_y, MyGUI::MouseButton::Left); break; case WM_RBUTTONDOWN: right_button = true; if (!left_button) ::SetCapture(hWnd); msInputManager->mousePress(old_x, old_y, MyGUI::MouseButton::Right); break; case WM_RBUTTONDBLCLK: right_button = true; if (!left_button) ::SetCapture(hWnd); msInputManager->mousePress(old_x, old_y, MyGUI::MouseButton::Right); break; case WM_MBUTTONDOWN: msInputManager->mousePress(old_x, old_y, MyGUI::MouseButton::Middle); break; case WM_LBUTTONUP: msInputManager->mouseRelease(old_x, old_y, MyGUI::MouseButton::Left); left_button = false; if (!right_button) ::SetCapture(0); break; case WM_RBUTTONUP: right_button = false; if (!left_button) ::SetCapture(0); msInputManager->mouseRelease(old_x, old_y, MyGUI::MouseButton::Right); break; case WM_MBUTTONUP: msInputManager->mouseRelease(old_x, old_y, MyGUI::MouseButton::Middle); break; } } else if (WM_KEYDOWN == uMsg) { bool repeat = (lParam & (1 >> 30)) != 0; if (!repeat) { int scan_code = VirtualKeyToScanCode(wParam); int text = VirtualKeyToText(wParam); msInputManager->injectKeyPress(MyGUI::KeyCode::Enum(scan_code), (MyGUI::Char)text); #ifdef INPUT_KEY_NAME MyGUI::MYGUI_OUT("VirtKey : ", VirtualKeyToName(wParam), " to ScanCode : ", ScanCodeToName(scan_code)); #endif } } else if (WM_IME_CHAR == uMsg) { int text = 0; #ifdef _UNICODE text = wParam; #else char mbstr[3]; BYTE hiByte = static_cast(wParam >> 8); BYTE loByte = wParam & 0x000000FF; if (hiByte == 0) { mbstr[0] = loByte; mbstr[1] = '\0'; } else { mbstr[0] = hiByte; mbstr[1] = loByte; mbstr[2] = '\0'; } wchar_t wstr[2]; /*int num = */MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, mbstr, -1, wstr, sizeof(wstr)/sizeof(wstr[0])); text = wstr[0]; #endif // _UNICODE msInputManager->injectKeyPress(MyGUI::KeyCode::None, (MyGUI::Char)text); } else if (WM_KEYUP == uMsg) { int scan_code = VirtualKeyToScanCode(wParam); MyGUI::KeyCode code = MyGUI::KeyCode::Enum(scan_code); // принтскрин приходит только отжатие if (code == MyGUI::KeyCode::SysRq) msInputManager->injectKeyPress(code, (MyGUI::Char)0); msInputManager->injectKeyRelease(code); } // вызываем полюбому return CallWindowProc((WNDPROC)msOldWindowProc, hWnd, uMsg, wParam, lParam); } InputManager::InputManager() : mHwnd(0), mWidth(0), mHeight(0), mMouseX(0), mMouseY(0), mMouseZ(0), mMouseMove(false) { assert(!msInputManager); msInputManager = this; } InputManager::~InputManager() { assert(msInputManager); msInputManager = 0; } void InputManager::createInput(size_t _handle) { mHwnd = (HWND)_handle; // подсовываем нашу функцию калбеков if (!msOldWindowProc) { msOldWindowProc = GetWindowLongPtr(mHwnd, GWLP_WNDPROC); SetWindowLongPtr(mHwnd, GWLP_WNDPROC, (LONG_PTR)windowProc); } // устанавливаем поддержку дропа файлов LONG_PTR style = GetWindowLongPtr(mHwnd, GWL_EXSTYLE); SetWindowLongPtr(mHwnd, GWL_EXSTYLE, style | WS_EX_ACCEPTFILES); MyGUI::Gui::getInstance().eventFrameStart += MyGUI::newDelegate(this, &InputManager::frameEvent); } void InputManager::destroyInput() { MyGUI::Gui::getInstance().eventFrameStart -= MyGUI::newDelegate(this, &InputManager::frameEvent); // если мы подменили процедуру, то вернем на место if (msOldWindowProc) { SetWindowLongPtr((HWND)mHwnd, GWLP_WNDPROC, (LONG_PTR)msOldWindowProc); msOldWindowProc = 0; } } void InputManager::captureInput() { } void InputManager::setInputViewSize(int _width, int _height) { mWidth = _width; mHeight = _height; } void InputManager::setMousePosition(int _x, int _y) { POINT point = { _x, _y }; ::ClientToScreen(mHwnd, &point); msSkipMove = true; ::SetCursorPos(point.x, point.y); } void InputManager::updateCursorPosition() { } void InputManager::frameEvent(float _time) { computeMouseMove(); } void InputManager::computeMouseMove() { if (mMouseMove) { injectMouseMove(mMouseX, mMouseY, mMouseZ); mMouseMove = false; } } void InputManager::mouseMove(int _absx, int _absy, int _absz) { mMouseX = _absx; mMouseY = _absy; mMouseZ = _absz; mMouseMove = true; } void InputManager::mousePress(int _absx, int _absy, MyGUI::MouseButton _id) { computeMouseMove(); injectMousePress(_absx, _absy, _id); } void InputManager::mouseRelease(int _absx, int _absy, MyGUI::MouseButton _id) { computeMouseMove(); injectMouseRelease(_absx, _absy, _id); } } // namespace input mygui-3.2.2+dfsg/Common/Input/Win32/InputManager.h000066400000000000000000000030241322721077200215650ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 09/2009 */ #ifndef INPUT_MANAGER_H_ #define INPUT_MANAGER_H_ #include #include namespace input { class InputManager { public: InputManager(); virtual ~InputManager(); void createInput(size_t _handle); void destroyInput(); void captureInput(); void setInputViewSize(int _width, int _height); virtual void injectMouseMove(int _absx, int _absy, int _absz) { } virtual void injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id) { } virtual void injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id) { } virtual void injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text) { } virtual void injectKeyRelease(MyGUI::KeyCode _key) { } virtual void onFileDrop(const std::wstring& _filename) { } virtual bool onWinodwClose(size_t _handle) { return true; } void setMousePosition(int _x, int _y); void updateCursorPosition(); private: static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void frameEvent(float _time); void computeMouseMove(); void mouseMove(int _absx, int _absy, int _absz); void mousePress(int _absx, int _absy, MyGUI::MouseButton _id); void mouseRelease(int _absx, int _absy, MyGUI::MouseButton _id); private: static InputManager* msInputManager; HWND mHwnd; static LRESULT msOldWindowProc; int mWidth; int mHeight; static bool msSkipMove; int mMouseX; int mMouseY; int mMouseZ; bool mMouseMove; }; } // namespace input #endif // INPUT_MANAGER_H_ mygui-3.2.2+dfsg/Common/Input/Win32/PointerManager.cpp000066400000000000000000000056551322721077200224550ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 1/2009 */ #include "Precompiled.h" #include "PointerManager.h" #include #include "ResourceW32Pointer.cpp" namespace input { PointerManager::PointerManager() : mHwnd(0), mManagerPointer(true) { } PointerManager::~PointerManager() { } void PointerManager::createPointerManager(size_t _handle) { mHwnd = _handle; MyGUI::PointerManager& manager = MyGUI::PointerManager::getInstance(); manager.setVisible(false); manager.eventChangeMousePointer += MyGUI::newDelegate(this, &PointerManager::notifyChangeMousePointer); std::string resourceCategory = MyGUI::ResourceManager::getInstance().getCategoryName(); MyGUI::FactoryManager::getInstance().registerFactory(resourceCategory); } void PointerManager::destroyPointerManager() { std::string resourceCategory = MyGUI::ResourceManager::getInstance().getCategoryName(); MyGUI::FactoryManager::getInstance().unregisterFactory(resourceCategory); MyGUI::PointerManager& manager = MyGUI::PointerManager::getInstance(); manager.eventChangeMousePointer -= MyGUI::newDelegate(this, &PointerManager::notifyChangeMousePointer); } void PointerManager::setPointerVisible(bool _value) { ShowCursor(_value); } void PointerManager::notifyChangeMousePointer(const std::string& _name) { if (mManagerPointer) { setPointer(_name); } } void PointerManager::setPointerHandle(size_t _id) { SetClassLongPtr((HWND)mHwnd, GCLP_HCURSOR, (LONG_PTR)_id); if ((GetCapture() == (HWND)mHwnd) || isMouseInClient()) { ::SetCursor((HCURSOR)_id); } } bool PointerManager::isMouseInClient() { POINT point = { 0, 0 }; ClientToScreen((HWND)mHwnd, &point); // x и y всегда 0 RECT client_rect = { 0, 0, 0, 0 }; GetClientRect((HWND)mHwnd, &client_rect); POINT cursor_point = { 0, 0 }; GetCursorPos(&cursor_point); bool hor = cursor_point.x >= point.x && cursor_point.x < (point.x + client_rect.right); bool ver = cursor_point.y >= point.y && cursor_point.y < (point.y + client_rect.bottom); return hor && ver; } void PointerManager::setPointerName(const std::string& _name) { mManagerPointer = false; setPointer(_name); } void PointerManager::setPointer(const std::string& _name) { MapPointer::iterator iter = mMapGuiPointer.find(_name); if (iter != mMapGuiPointer.end()) { setPointerHandle(iter->second); } else { MyGUI::IResource* resource_generic = MyGUI::ResourceManager::getInstance().getByName(_name, false); if (resource_generic != nullptr) { ResourceW32Pointer* resource = resource_generic->castType(false); if (resource != nullptr) { mMapGuiPointer[_name] = resource->getPointerHandle(); setPointerHandle(resource->getPointerHandle()); } } } } void PointerManager::loadPointerResources() { MyGUI::ResourceManager::getInstance().load("PointersW32.xml"); } } // namespace input mygui-3.2.2+dfsg/Common/Input/Win32/PointerManager.h000066400000000000000000000014531322721077200221120ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 11/2009 */ #ifndef POINTER_MANAGER_H_ #define POINTER_MANAGER_H_ #include "ResourceW32Pointer.h" namespace input { class PointerManager { public: PointerManager(); virtual ~PointerManager(); void createPointerManager(size_t _handle); void destroyPointerManager(); void setPointerVisible(bool _value); void setPointerName(const std::string& _name); void loadPointerResources(); private: void notifyChangeMousePointer(const std::string& _name); void setPointerHandle(size_t _id); bool isMouseInClient(); void setPointer(const std::string& _name); private: typedef std::map MapPointer; MapPointer mMapGuiPointer; size_t mHwnd; bool mManagerPointer; }; } // namespace input #endif // POINTER_MANAGER_H_ mygui-3.2.2+dfsg/Common/Input/Win32/ResourceW32Pointer.cpp000066400000000000000000000044071322721077200231600ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 11/2009 @module */ #include "ResourceW32Pointer.h" #include namespace input { ResourceW32Pointer::ResourceW32Pointer() : mHandle(0) { } void ResourceW32Pointer::deserialization(MyGUI::xml::ElementPtr _node, MyGUI::Version _version) { Base::deserialization(_node, _version); MyGUI::xml::ElementEnumerator info = _node->getElementEnumerator(); while (info.next()) { if (info->getName() == "Property") { const std::string& key = info->findAttribute("key"); if (key == "SourceFile") { std::string path = MyGUI::DataManager::getInstance().getDataPath(info->getContent()); mHandle = (size_t)LoadCursorFromFileA(path.c_str()); } else if (key == "SourceSystem") { std::string value = info->getContent(); if (value == "IDC_ARROW") mHandle = (size_t)::LoadCursor(NULL, IDC_ARROW); else if (value == "IDC_IBEAM") mHandle = (size_t)::LoadCursor(NULL, IDC_IBEAM); else if (value == "IDC_WAIT") mHandle = (size_t)::LoadCursor(NULL, IDC_WAIT); else if (value == "IDC_CROSS") mHandle = (size_t)::LoadCursor(NULL, IDC_CROSS); else if (value == "IDC_UPARROW") mHandle = (size_t)::LoadCursor(NULL, IDC_UPARROW); else if (value == "IDC_SIZE") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZE); else if (value == "IDC_ICON") mHandle = (size_t)::LoadCursor(NULL, IDC_ICON); else if (value == "IDC_SIZENWSE") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZENWSE); else if (value == "IDC_SIZENESW") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZENESW); else if (value == "IDC_SIZEWE") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZEWE); else if (value == "IDC_SIZENS") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZENS); else if (value == "IDC_SIZEALL") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZEALL); else if (value == "IDC_NO") mHandle = (size_t)::LoadCursor(NULL, IDC_NO); else if (value == "IDC_HAND") mHandle = (size_t)::LoadCursor(NULL, IDC_HAND); else if (value == "IDC_APPSTARTING") mHandle = (size_t)::LoadCursor(NULL, IDC_APPSTARTING); else if (value == "IDC_HELP") mHandle = (size_t)::LoadCursor(NULL, IDC_HELP); } } } } } mygui-3.2.2+dfsg/Common/Input/Win32/ResourceW32Pointer.h000066400000000000000000000011231322721077200226150ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 11/2009 @module */ #ifndef RESOURCE_W32_POINTER_H_ #define RESOURCE_W32_POINTER_H_ #include "MyGUI_Prerequest.h" #include "MyGUI_IResource.h" namespace input { class ResourceW32Pointer : public MyGUI::IResource { MYGUI_RTTI_DERIVED( ResourceW32Pointer ); public: ResourceW32Pointer(); virtual ~ResourceW32Pointer() { } virtual void deserialization(MyGUI::xml::ElementPtr _node, MyGUI::Version _version); size_t getPointerHandle() { return mHandle; } private: size_t mHandle; }; } #endif // RESOURCE_W32_POINTER_H_ mygui-3.2.2+dfsg/Common/Input/Win32_OIS/000077500000000000000000000000001322721077200175355ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/Input/Win32_OIS/InputManager.cpp000066400000000000000000000160251322721077200226370ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 09/2009 @module */ #include "Precompiled.h" #include "InputManager.h" #include "../InputConverter.h" namespace input { // , InputManager* InputManager::msInputManager = 0; // , LRESULT InputManager::msOldWindowProc = NULL; bool InputManager::msSkipMove = false; // LRESULT CALLBACK InputManager::windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // #ifndef WM_MOUSEWHEEL #define WM_MOUSEWHEEL 0x020A #define __WM_REALMOUSELAST WM_MOUSEWHEEL #else #define __WM_REALMOUSELAST WM_MOUSELAST #endif // WM_MOUSEWHEEL // #define GET_HIWORD(param) ((short)HIWORD(param)) #define GET_LOWORD(param) ((short)LOWORD(param)) // if (WM_DROPFILES == uMsg) { HDROP hDrop = (HDROP)wParam; wchar_t buff[MAX_PATH] = { 0 }; UINT fcount = DragQueryFileW(hDrop, 0xFFFFFFFF, NULL, 0); for (UINT index = 0; index < fcount; ++index) { DragQueryFileW(hDrop, index, buff, MAX_PATH); msInputManager->onFileDrop(buff); } DragFinish(hDrop); return 0; } // else if (WM_CLOSE == uMsg) { if (!msInputManager->onWinodwClose((size_t)hWnd)) return 0; } else if ((uMsg >= WM_MOUSEFIRST) && (uMsg <= __WM_REALMOUSELAST)) { static int old_x = 0; static int old_y = 0; static int old_z = 0; static bool left_button = false; static bool right_button = false; switch (uMsg) { case WM_MOUSEMOVE: { int x = GET_LOWORD(lParam); int y = GET_HIWORD(lParam); if (x < 0) x = 0; else if (x > msInputManager->mWidth) x = msInputManager->mWidth; if (y < 0) y = 0; else if (y > msInputManager->mHeight) y = msInputManager->mHeight; old_x = x; old_y = y; if (msSkipMove) msSkipMove = false; else msInputManager->mouseMove(old_x, old_y, old_z); } break; case WM_MOUSEWHEEL: old_z += GET_HIWORD(wParam); msInputManager->mouseMove(old_x, old_y, old_z); break; case WM_LBUTTONDOWN: left_button = true; if (!right_button) ::SetCapture(hWnd); msInputManager->mousePress(old_x, old_y, MyGUI::MouseButton::Left); break; case WM_LBUTTONDBLCLK: left_button = true; if (!right_button) ::SetCapture(hWnd); msInputManager->mousePress(old_x, old_y, MyGUI::MouseButton::Left); break; case WM_RBUTTONDOWN: right_button = true; if (!left_button) ::SetCapture(hWnd); msInputManager->mousePress(old_x, old_y, MyGUI::MouseButton::Right); break; case WM_RBUTTONDBLCLK: right_button = true; if (!left_button) ::SetCapture(hWnd); msInputManager->mousePress(old_x, old_y, MyGUI::MouseButton::Right); break; case WM_MBUTTONDOWN: msInputManager->mousePress(old_x, old_y, MyGUI::MouseButton::Middle); break; case WM_LBUTTONUP: msInputManager->mouseRelease(old_x, old_y, MyGUI::MouseButton::Left); left_button = false; if (!right_button) ::SetCapture(0); break; case WM_RBUTTONUP: right_button = false; if (!left_button) ::SetCapture(0); msInputManager->mouseRelease(old_x, old_y, MyGUI::MouseButton::Right); break; case WM_MBUTTONUP: msInputManager->mouseRelease(old_x, old_y, MyGUI::MouseButton::Middle); break; } } // return CallWindowProc((WNDPROC)msOldWindowProc, hWnd, uMsg, wParam, lParam); } InputManager::InputManager() : mInputManager(0), mKeyboard(0), mHwnd(0), mWidth(0), mHeight(0), mMouseX(0), mMouseY(0), mMouseZ(0), mMouseMove(false) { assert(!msInputManager); msInputManager = this; } InputManager::~InputManager() { assert(msInputManager); msInputManager = 0; } void InputManager::createInput(size_t _handle) { mHwnd = (HWND)_handle; // if (!msOldWindowProc) { msOldWindowProc = GetWindowLongPtr(mHwnd, GWLP_WNDPROC); SetWindowLongPtr(mHwnd, GWLP_WNDPROC, (LONG_PTR)windowProc); } // LONG_PTR style = GetWindowLongPtr(mHwnd, GWL_EXSTYLE); SetWindowLongPtr(mHwnd, GWL_EXSTYLE, style | WS_EX_ACCEPTFILES); std::ostringstream windowHndStr; windowHndStr << _handle; OIS::ParamList pl; pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str())); mInputManager = OIS::InputManager::createInputSystem(pl); mKeyboard = static_cast(mInputManager->createInputObject( OIS::OISKeyboard, true )); mKeyboard->setEventCallback(this); MyGUI::Gui::getInstance().eventFrameStart += MyGUI::newDelegate(this, &InputManager::frameEvent); } void InputManager::destroyInput() { MyGUI::Gui::getInstance().eventFrameStart -= MyGUI::newDelegate(this, &InputManager::frameEvent); // , if (msOldWindowProc) { SetWindowLongPtr((HWND)mHwnd, GWLP_WNDPROC, (LONG_PTR)msOldWindowProc); msOldWindowProc = 0; } if (mInputManager) { if (mKeyboard) { mInputManager->destroyInputObject( mKeyboard ); mKeyboard = nullptr; } OIS::InputManager::destroyInputSystem(mInputManager); mInputManager = nullptr; } } void InputManager::captureInput() { mKeyboard->capture(); } void InputManager::setInputViewSize(int _width, int _height) { mWidth = _width; mHeight = _height; } void InputManager::setMousePosition(int _x, int _y) { POINT point = { _x, _y }; ::ClientToScreen(mHwnd, &point); msSkipMove = true; ::SetCursorPos(point.x, point.y); } void InputManager::updateCursorPosition() { } bool InputManager::keyPressed(const OIS::KeyEvent& _arg) { MyGUI::Char text = (MyGUI::Char)_arg.text; MyGUI::KeyCode key = MyGUI::KeyCode::Enum(_arg.key); int scan_code = key.getValue(); if (scan_code > 70 && scan_code < 84) { static MyGUI::Char nums[13] = { 55, 56, 57, 45, 52, 53, 54, 43, 49, 50, 51, 48, 46 }; text = nums[scan_code-71]; } else if (key == MyGUI::KeyCode::Divide) { text = '/'; } else { #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 text = (MyGUI::Char)ScanCodeToText((int)key.getValue()); #endif } injectKeyPress(key, text); return true; } bool InputManager::keyReleased(const OIS::KeyEvent& _arg) { injectKeyRelease(MyGUI::KeyCode::Enum(_arg.key)); return true; } void InputManager::frameEvent(float _time) { computeMouseMove(); } void InputManager::computeMouseMove() { if (mMouseMove) { injectMouseMove(mMouseX, mMouseY, mMouseZ); mMouseMove = false; } } void InputManager::mouseMove(int _absx, int _absy, int _absz) { mMouseX = _absx; mMouseY = _absy; mMouseZ = _absz; mMouseMove = true; } void InputManager::mousePress(int _absx, int _absy, MyGUI::MouseButton _id) { computeMouseMove(); injectMousePress(_absx, _absy, _id); } void InputManager::mouseRelease(int _absx, int _absy, MyGUI::MouseButton _id) { computeMouseMove(); injectMouseRelease(_absx, _absy, _id); } } // namespace input mygui-3.2.2+dfsg/Common/Input/Win32_OIS/InputManager.h000066400000000000000000000033711322721077200223040ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 09/2009 @module */ #ifndef INPUT_MANAGER_H_ #define INPUT_MANAGER_H_ #include #include #include namespace input { class InputManager : public OIS::KeyListener { public: InputManager(); virtual ~InputManager(); void createInput(size_t _handle); void destroyInput(); void captureInput(); void setInputViewSize(int _width, int _height); virtual void injectMouseMove(int _absx, int _absy, int _absz) { } virtual void injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id) { } virtual void injectMouseRelease(int _absx, int _absy, MyGUI::MouseButton _id) { } virtual void injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text) { } virtual void injectKeyRelease(MyGUI::KeyCode _key) { } virtual void onFileDrop(const std::wstring& _filename) { } virtual bool onWinodwClose(size_t _handle) { return true; } void setMousePosition(int _x, int _y); void updateCursorPosition(); private: static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); virtual bool keyPressed(const OIS::KeyEvent& _arg); virtual bool keyReleased(const OIS::KeyEvent& _arg); void frameEvent(float _time); void computeMouseMove(); void mouseMove(int _absx, int _absy, int _absz); void mousePress(int _absx, int _absy, MyGUI::MouseButton _id); void mouseRelease(int _absx, int _absy, MyGUI::MouseButton _id); private: static InputManager* msInputManager; HWND mHwnd; static LRESULT msOldWindowProc; int mWidth; int mHeight; static bool msSkipMove; int mMouseX; int mMouseY; int mMouseZ; bool mMouseMove; OIS::InputManager* mInputManager; OIS::Keyboard* mKeyboard; }; } // namespace input #endif // INPUT_MANAGER_H_ mygui-3.2.2+dfsg/Common/Input/Win32_OIS/PointerManager.cpp000066400000000000000000000056571322721077200231710ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 1/2009 @module */ #include "Precompiled.h" #include "PointerManager.h" #include #include "ResourceW32Pointer.cpp" namespace input { PointerManager::PointerManager() : mHwnd(0), mManagerPointer(true) { } PointerManager::~PointerManager() { } void PointerManager::createPointerManager(size_t _handle) { mHwnd = _handle; MyGUI::PointerManager& manager = MyGUI::PointerManager::getInstance(); manager.setVisible(false); manager.eventChangeMousePointer += MyGUI::newDelegate(this, &PointerManager::notifyChangeMousePointer); std::string resourceCategory = MyGUI::ResourceManager::getInstance().getCategoryName(); MyGUI::FactoryManager::getInstance().registerFactory(resourceCategory); } void PointerManager::destroyPointerManager() { std::string resourceCategory = MyGUI::ResourceManager::getInstance().getCategoryName(); MyGUI::FactoryManager::getInstance().unregisterFactory(resourceCategory); MyGUI::PointerManager& manager = MyGUI::PointerManager::getInstance(); manager.eventChangeMousePointer -= MyGUI::newDelegate(this, &PointerManager::notifyChangeMousePointer); } void PointerManager::setPointerVisible(bool _value) { ShowCursor(_value); } void PointerManager::notifyChangeMousePointer(const std::string& _name) { if (mManagerPointer) { setPointer(_name); } } void PointerManager::setPointerHandle(size_t _id) { SetClassLongPtr((HWND)mHwnd, GCLP_HCURSOR, (LONG_PTR)_id); if ((GetCapture() == (HWND)mHwnd) || isMouseInClient()) { ::SetCursor((HCURSOR)_id); } } bool PointerManager::isMouseInClient() { POINT point = { 0, 0 }; ClientToScreen((HWND)mHwnd, &point); // x y 0 RECT client_rect = { 0, 0, 0, 0 }; GetClientRect((HWND)mHwnd, &client_rect); POINT cursor_point = { 0, 0 }; GetCursorPos(&cursor_point); bool hor = cursor_point.x >= point.x && cursor_point.x < (point.x + client_rect.right); bool ver = cursor_point.y >= point.y && cursor_point.y < (point.y + client_rect.bottom); return hor && ver; } void PointerManager::setPointerName(const std::string& _name) { mManagerPointer = false; setPointer(_name); } void PointerManager::setPointer(const std::string& _name) { MapPointer::iterator iter = mMapGuiPointer.find(_name); if (iter != mMapGuiPointer.end()) { setPointerHandle(iter->second); } else { MyGUI::IResource* resource_generic = MyGUI::ResourceManager::getInstance().getByName(_name, false); if (resource_generic != nullptr) { ResourceW32Pointer* resource = resource_generic->castType(false); if (resource != nullptr) { mMapGuiPointer[_name] = resource->getPointerHandle(); setPointerHandle(resource->getPointerHandle()); } } } } void PointerManager::loadPointerResources() { MyGUI::ResourceManager::getInstance().load("PointersW32.xml"); } } // namespace input mygui-3.2.2+dfsg/Common/Input/Win32_OIS/PointerManager.h000066400000000000000000000014641322721077200226260ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 11/2009 @module */ #ifndef POINTER_MANAGER_H_ #define POINTER_MANAGER_H_ #include "ResourceW32Pointer.h" namespace input { class PointerManager { public: PointerManager(); virtual ~PointerManager(); void createPointerManager(size_t _handle); void destroyPointerManager(); void setPointerVisible(bool _value); void setPointerName(const std::string& _name); void loadPointerResources(); private: void notifyChangeMousePointer(const std::string& _name); void setPointerHandle(size_t _id); bool isMouseInClient(); void setPointer(const std::string& _name); private: typedef std::map MapPointer; MapPointer mMapGuiPointer; size_t mHwnd; bool mManagerPointer; }; } // namespace input #endif // POINTER_MANAGER_H_ mygui-3.2.2+dfsg/Common/Input/Win32_OIS/ResourceW32Pointer.cpp000066400000000000000000000044071322721077200236720ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 11/2009 @module */ #include "ResourceW32Pointer.h" #include namespace input { ResourceW32Pointer::ResourceW32Pointer() : mHandle(0) { } void ResourceW32Pointer::deserialization(MyGUI::xml::ElementPtr _node, MyGUI::Version _version) { Base::deserialization(_node, _version); MyGUI::xml::ElementEnumerator info = _node->getElementEnumerator(); while (info.next()) { if (info->getName() == "Property") { const std::string& key = info->findAttribute("key"); if (key == "SourceFile") { std::string path = MyGUI::DataManager::getInstance().getDataPath(info->getContent()); mHandle = (size_t)LoadCursorFromFileA(path.c_str()); } else if (key == "SourceSystem") { std::string value = info->getContent(); if (value == "IDC_ARROW") mHandle = (size_t)::LoadCursor(NULL, IDC_ARROW); else if (value == "IDC_IBEAM") mHandle = (size_t)::LoadCursor(NULL, IDC_IBEAM); else if (value == "IDC_WAIT") mHandle = (size_t)::LoadCursor(NULL, IDC_WAIT); else if (value == "IDC_CROSS") mHandle = (size_t)::LoadCursor(NULL, IDC_CROSS); else if (value == "IDC_UPARROW") mHandle = (size_t)::LoadCursor(NULL, IDC_UPARROW); else if (value == "IDC_SIZE") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZE); else if (value == "IDC_ICON") mHandle = (size_t)::LoadCursor(NULL, IDC_ICON); else if (value == "IDC_SIZENWSE") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZENWSE); else if (value == "IDC_SIZENESW") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZENESW); else if (value == "IDC_SIZEWE") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZEWE); else if (value == "IDC_SIZENS") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZENS); else if (value == "IDC_SIZEALL") mHandle = (size_t)::LoadCursor(NULL, IDC_SIZEALL); else if (value == "IDC_NO") mHandle = (size_t)::LoadCursor(NULL, IDC_NO); else if (value == "IDC_HAND") mHandle = (size_t)::LoadCursor(NULL, IDC_HAND); else if (value == "IDC_APPSTARTING") mHandle = (size_t)::LoadCursor(NULL, IDC_APPSTARTING); else if (value == "IDC_HELP") mHandle = (size_t)::LoadCursor(NULL, IDC_HELP); } } } } } mygui-3.2.2+dfsg/Common/Input/Win32_OIS/ResourceW32Pointer.h000066400000000000000000000011231322721077200233270ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 11/2009 @module */ #ifndef RESOURCE_W32_POINTER_H_ #define RESOURCE_W32_POINTER_H_ #include "MyGUI_Prerequest.h" #include "MyGUI_IResource.h" namespace input { class ResourceW32Pointer : public MyGUI::IResource { MYGUI_RTTI_DERIVED( ResourceW32Pointer ); public: ResourceW32Pointer(); virtual ~ResourceW32Pointer() { } virtual void deserialization(MyGUI::xml::ElementPtr _node, MyGUI::Version _version); size_t getPointerHandle() { return mHandle; } private: size_t mHandle; }; } #endif // RESOURCE_W32_POINTER_H_ mygui-3.2.2+dfsg/Common/ItemBox/000077500000000000000000000000001322721077200163715ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/ItemBox/BaseCellView.h000066400000000000000000000007341322721077200210530ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 07/2008 @module */ #ifndef BASE_CELL_VIEW_H_ #define BASE_CELL_VIEW_H_ #include #include "BaseLayout/BaseLayout.h" namespace wraps { template class BaseCellView : public BaseLayout { public: typedef DataType Type; protected: BaseCellView(const std::string& _layout, MyGUI::Widget* _parent) : BaseLayout(_layout, _parent) { } }; } // namespace wraps #endif // BASE_CELL_VIEW_H_ mygui-3.2.2+dfsg/Common/ItemBox/BaseItemBox.h000066400000000000000000000117621322721077200207130ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 07/2008 @module */ #ifndef BASE_ITEM_BOX_H_ #define BASE_ITEM_BOX_H_ #include #include "BaseLayout/BaseLayout.h" #include "ItemDropInfo.h" namespace wraps { template class BaseItemBox : public BaseLayout { public: typedef typename CellType::Type DataType; public: BaseItemBox(MyGUI::Widget* _parent) : BaseLayout("", _parent) { mBoxItems = mMainWidget->castType(); mBoxItems->setUserData(static_cast(this)); mBoxItems->requestCreateWidgetItem = MyGUI::newDelegate(this, &BaseItemBox::requestCreateWidgetItem); mBoxItems->requestCoordItem = MyGUI::newDelegate(this, &BaseItemBox::requestCoordWidgetItem); mBoxItems->requestDrawItem = MyGUI::newDelegate(this, &BaseItemBox::requestUpdateWidgetItem); mBoxItems->eventStartDrag += MyGUI::newDelegate(this, &BaseItemBox::notifyStartDrop); mBoxItems->eventRequestDrop += MyGUI::newDelegate(this, &BaseItemBox::notifyRequestDrop); mBoxItems->eventDropResult += MyGUI::newDelegate(this, &BaseItemBox::notifyEndDrop); mBoxItems->eventChangeDDState += MyGUI::newDelegate(this, &BaseItemBox::notifyDropState); mBoxItems->eventNotifyItem += MyGUI::newDelegate(this, &BaseItemBox::notifyNotifyItem); mBoxItems->eventToolTip += MyGUI::newDelegate(this, &BaseItemBox::notifyToolTip); } virtual ~BaseItemBox() { mBoxItems->requestCreateWidgetItem = nullptr; mBoxItems->requestCoordItem = nullptr; mBoxItems->requestDrawItem = nullptr; mBoxItems->eventStartDrag -= MyGUI::newDelegate(this, &BaseItemBox::notifyStartDrop); mBoxItems->eventRequestDrop -= MyGUI::newDelegate(this, &BaseItemBox::notifyRequestDrop); mBoxItems->eventDropResult -= MyGUI::newDelegate(this, &BaseItemBox::notifyEndDrop); mBoxItems->eventChangeDDState -= MyGUI::newDelegate(this, &BaseItemBox::notifyDropState); mBoxItems->eventNotifyItem -= MyGUI::newDelegate(this, &BaseItemBox::notifyNotifyItem); mBoxItems->eventToolTip -= MyGUI::newDelegate(this, &BaseItemBox::notifyToolTip); for (typename VectorCellView::iterator iter = mListCellView.begin(); iter != mListCellView.end(); ++iter) { delete *iter; } mListCellView.clear(); } void addItem(DataType _data) { mBoxItems->addItem(_data); } void removeItem(size_t _index) { mBoxItems->removeItemAt(_index); } void removeAllItems() { mBoxItems->removeAllItems(); } void setItemData(size_t _index, DataType _data) { mBoxItems->setItemDataAt(_index, _data); } template ValueType* getItemDataAt(size_t _index, bool _throw = true) { return mBoxItems->getItemDataAt(_index, _throw); } private: void requestCreateWidgetItem(MyGUI::ItemBox* _sender, MyGUI::Widget* _item) { CellType* cell = new CellType(_item); _item->setUserData(cell); mListCellView.push_back(cell); } void requestCoordWidgetItem(MyGUI::ItemBox* _sender, MyGUI::IntCoord& _coord, bool _drop) { CellType::getCellDimension(_sender, _coord, _drop); } void requestUpdateWidgetItem(MyGUI::ItemBox* _sender, MyGUI::Widget* _item, const MyGUI::IBDrawItemInfo& _data) { CellType* cell = *_item->getUserData(); cell->update(_data, *mBoxItems->getItemDataAt(_data.index)); } void notifyStartDrop(MyGUI::DDContainer* _sender, const MyGUI::DDItemInfo& _info, bool& _result) { eventStartDrag(this, DDItemInfo(_info), _result); } void notifyRequestDrop(MyGUI::DDContainer* _sender, const MyGUI::DDItemInfo& _info, bool& _result) { eventRequestDrop(this, DDItemInfo(_info), _result); } void notifyEndDrop(MyGUI::DDContainer* _sender, const MyGUI::DDItemInfo& _info, bool _result) { eventDropResult(this, DDItemInfo(_info), _result); } void notifyDropState(MyGUI::DDContainer* _sender, MyGUI::DDItemState _state) { eventChangeDDState(this, _state); } void notifyNotifyItem(MyGUI::ItemBox* _sender, const MyGUI::IBNotifyItemData& _info) { eventNotifyItem(this, _info); } void notifyToolTip(MyGUI::Widget* _sender, const MyGUI::ToolTipInfo& _info) { if (_info.index == MyGUI::ITEM_NONE) eventToolTip(this, _info, DataType()); else eventToolTip(this, _info, *mBoxItems->getItemDataAt(_info.index)); } public: MyGUI::delegates::CDelegate3 eventStartDrag; MyGUI::delegates::CDelegate3 eventRequestDrop; MyGUI::delegates::CDelegate3 eventDropResult; MyGUI::delegates::CDelegate2 eventChangeDDState; MyGUI::delegates::CDelegate2 eventNotifyItem; MyGUI::delegates::CDelegate3 eventToolTip; MyGUI::ItemBox* getItemBox() const { return mBoxItems; } private: typedef std::vector VectorCellView; VectorCellView mListCellView; MyGUI::ItemBox* mBoxItems; }; } // namespace wraps #endif // BASE_ITEM_BOX_H_ mygui-3.2.2+dfsg/Common/ItemBox/ItemDropInfo.h000066400000000000000000000012271322721077200211030ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 07/2008 @module */ #ifndef ITEM_DROP_INFO_H_ #define ITEM_DROP_INFO_H_ #include #include "BaseLayout/BaseLayout.h" namespace wraps { struct DDItemInfo { DDItemInfo(const MyGUI::DDItemInfo& _info) : sender(*_info.sender->getUserData()), sender_index(_info.sender_index), receiver(_info.receiver ? *_info.receiver->getUserData() : nullptr), receiver_index(_info.receiver_index) { } wraps::BaseLayout* sender; size_t sender_index; wraps::BaseLayout* receiver; size_t receiver_index; }; } // namespace wraps #endif // ITEM_DROP_INFO_H_ mygui-3.2.2+dfsg/Common/MessageBox/000077500000000000000000000000001322721077200170575ustar00rootroot00000000000000mygui-3.2.2+dfsg/Common/MessageBox/MessageBox.h000066400000000000000000000255721322721077200213000ustar00rootroot00000000000000/*! @file @author Albert Semenov @date 12/2010 */ #ifndef MESSAGE_BOX_H_ #define MESSAGE_BOX_H_ #include #include "MessageBoxStyle.h" #include "BaseLayout/BaseLayout.h" namespace MyGUI { class Message; typedef delegates::CMultiDelegate2 EventHandle_MessageBoxPtrMessageStyle; class Message : public wraps::BaseLayout { public: Message() : wraps::BaseLayout("MessageBox.layout"), mWidgetText(nullptr), mInfoOk(MessageBoxStyle::None), mInfoCancel(MessageBoxStyle::None), mSmoothShow(false), mIcon(nullptr), mLeftOffset1(0), mLeftOffset2(0) { initialise(); } Message(const std::string& _layoutName) : wraps::BaseLayout(_layoutName), mWidgetText(nullptr), mInfoOk(MessageBoxStyle::None), mInfoCancel(MessageBoxStyle::None), mSmoothShow(false), mIcon(nullptr), mLeftOffset1(0), mLeftOffset2(0) { initialise(); } virtual ~Message() { mWidgetText = nullptr; mIcon = nullptr; } /** Set caption text*/ void setCaption(const UString& _value) { mMainWidget->castType()->setCaption(_value); } /** Set message text*/ void setMessageText(const UString& _value) { if (mWidgetText != nullptr) mWidgetText->setCaption(_value); updateSize(); } /** Create button with specific name*/ MessageBoxStyle addButtonName(const UString& _name) { if (mVectorButton.size() >= MessageBoxStyle::_CountUserButtons) { MYGUI_LOG(Warning, "Too many buttons in message box, ignored"); return MessageBoxStyle::None; } // бит, номер кнопки + смещение до Button1 MessageBoxStyle info = MessageBoxStyle(MessageBoxStyle::Enum(MYGUI_FLAG(mVectorButton.size() + MessageBoxStyle::_IndexUserButton1))); // запоминаем кнопки для отмены и подтверждения if (mVectorButton.empty()) mInfoOk = info; mInfoCancel = info; Widget* widget = mMainWidget->createWidgetT(mButtonType, mButtonSkin, IntCoord(), Align::Left | Align::Bottom); Button* button = widget->castType