From 0129eeb352d3d6efb800fe507e50e464fb1eda73 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 25 Nov 2016 20:23:22 -0600 Subject: [PATCH] updated type checking in stim::image --- cmake/FindGLEW.cmake | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------- stim/image/image.h | 16 ++++++++-------- 2 files changed, 128 insertions(+), 71 deletions(-) diff --git a/cmake/FindGLEW.cmake b/cmake/FindGLEW.cmake index 9475809..0b72457 100644 --- a/cmake/FindGLEW.cmake +++ b/cmake/FindGLEW.cmake @@ -1,69 +1,126 @@ +# Copyright (c) 2012-2016 DreamWorks Animation LLC +# +# All rights reserved. This software is distributed under the +# Mozilla Public License 2.0 ( http://www.mozilla.org/MPL/2.0/ ) +# +# Redistributions of source code must retain the above copyright +# and license notice and the following restrictions and disclaimer. +# +# * Neither the name of DreamWorks Animation nor the names of +# its contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# IN NO EVENT SHALL THE COPYRIGHT HOLDERS' AND CONTRIBUTORS' AGGREGATE +# LIABILITY FOR ALL CLAIMS REGARDLESS OF THEIR BASIS EXCEED US$250.00. # -# Windows users: define the GLEW_PATH environment variable to point -# to the root glew directory, which contains: -# lib/Release/Win32/glew32.lib AND/OR lib/Release/x64/glew32.lib -# include/GL/glew.h -#Try to find GLEW library and include path. -# Once done this will define +#-*-cmake-*- +# - Find GLEW +# +# Author : Nicholas Yue yue.nicholas@gmail.com +# +# This auxiliary CMake file helps in find the GLEW headers and libraries # -# GLEW_FOUND -# GLEW_INCLUDE_DIR -# GLEW_LIBRARY -# +# GLEW_FOUND set if Glew is found. +# GLEW_INCLUDE_DIR GLEW's include directory +# GLEW_glew_LIBRARY GLEW libraries +# GLEW_glewmx_LIBRARY GLEWmx libraries (Mulitple Rendering Context) + +FIND_PACKAGE ( PackageHandleStandardArgs ) + +FIND_PATH( GLEW_LOCATION include/GL/glew.h + "$ENV{GLEW_ROOT}" + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS ( GLEW + REQUIRED_VARS GLEW_LOCATION + ) + +IF ( GLEW_LOCATION ) + + SET( GLEW_INCLUDE_DIR "${GLEW_LOCATION}/include" CACHE STRING "GLEW include path") -IF (WIN32) - FIND_PATH( GLEW_INCLUDE_DIR GL/glew.h - $ENV{GLEW_PATH}/include - $ENV{PROGRAMFILES}/GLEW/include - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/include - DOC "The directory where GL/glew.h resides") - if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - FIND_LIBRARY( GLEW_LIBRARY - NAMES glew GLEW glew32 glew32s - PATHS - $ENV{GLEW_PATH}/lib/Release/x64 - $ENV{PROGRAMFILES}/GLEW/lib - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/bin - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/lib - DOC "The GLEW library") - else( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - FIND_LIBRARY( GLEW_LIBRARY - NAMES glew GLEW glew32 glew32s - PATHS - $ENV{GLEW_PATH}/lib/Release/Win32 - $ENV{PROGRAMFILES}/GLEW/lib - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/bin - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/lib - DOC "The GLEW library") - endif( CMAKE_SIZEOF_VOID_P EQUAL 8 ) -ELSE (WIN32) - FIND_PATH( GLEW_INCLUDE_DIR GL/glew.h - /usr/include - /usr/local/include - /sw/include - /opt/local/include - DOC "The directory where GL/glew.h resides") - FIND_LIBRARY( GLEW_LIBRARY - NAMES GLEW glew - PATHS - /usr/lib64 - /usr/lib - /usr/local/lib64 - /usr/local/lib - /sw/lib - /opt/local/lib - DOC "The GLEW library") -ENDIF (WIN32) + SET ( ORIGINAL_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) + IF (GLEW_USE_STATIC_LIBS) + IF (APPLE) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + FIND_LIBRARY ( GLEW_LIBRARY_PATH GLEW PATHS ${GLEW_LOCATION}/lib + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + FIND_LIBRARY ( GLEWmx_LIBRARY_PATH GLEWmx PATHS ${GLEW_LOCATION}/lib + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + # MESSAGE ( "APPLE STATIC" ) + # MESSAGE ( "GLEW_LIBRARY_PATH = " ${GLEW_LIBRARY_PATH} ) + ELSEIF (WIN32) + # Link library + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") + FIND_LIBRARY ( GLEW_LIBRARY_PATH GLEW32S PATHS ${GLEW_LOCATION}/lib ) + FIND_LIBRARY ( GLEWmx_LIBRARY_PATH GLEW32MXS PATHS ${GLEW_LOCATION}/lib ) + ELSE (APPLE) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + FIND_LIBRARY ( GLEW_LIBRARY_PATH GLEW PATHS ${GLEW_LOCATION}/lib + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + FIND_LIBRARY ( GLEWmx_LIBRARY_PATH GLEWmx PATHS ${GLEW_LOCATION}/lib + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + # MESSAGE ( "LINUX STATIC" ) + # MESSAGE ( "GLEW_LIBRARY_PATH = " ${GLEW_LIBRARY_PATH} ) + ENDIF (APPLE) + ELSE () + IF (APPLE) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib") + FIND_LIBRARY ( GLEW_LIBRARY_PATH GLEW PATHS ${GLEW_LOCATION}/lib ) + FIND_LIBRARY ( GLEWmx_LIBRARY_PATH GLEWmx PATHS ${GLEW_LOCATION}/lib ) + ELSEIF (WIN32) + # Link library + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") + FIND_LIBRARY ( GLEW_LIBRARY_PATH GLEW32 PATHS ${GLEW_LOCATION}/lib ) + FIND_LIBRARY ( GLEWmx_LIBRARY_PATH GLEW32mx PATHS ${GLEW_LOCATION}/lib ) + # Load library + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll") + FIND_LIBRARY ( GLEW_DLL_PATH GLEW32 PATHS ${GLEW_LOCATION}/bin + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + FIND_LIBRARY ( GLEWmx_DLL_PATH GLEW32mx PATHS ${GLEW_LOCATION}/bin + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + ELSE (APPLE) + # Unices + FIND_LIBRARY ( GLEW_LIBRARY_PATH GLEW PATHS ${GLEW_LOCATION}/lib + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + FIND_LIBRARY ( GLEWmx_LIBRARY_PATH GLEWmx PATHS ${GLEW_LOCATION}/lib + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + ENDIF (APPLE) + ENDIF () + # MUST reset + SET(CMAKE_FIND_LIBRARY_SUFFIXES ${ORIGINAL_CMAKE_FIND_LIBRARY_SUFFIXES}) -IF (GLEW_INCLUDE_DIR) - SET( GLEW_FOUND 1 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") -ELSE (GLEW_INCLUDE_DIR) - SET( GLEW_FOUND 0 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") -ENDIF (GLEW_INCLUDE_DIR) + SET( GLEW_GLEW_LIBRARY ${GLEW_LIBRARY_PATH} CACHE STRING "GLEW library") + SET( GLEW_GLEWmx_LIBRARY ${GLEWmx_LIBRARY_PATH} CACHE STRING "GLEWmx library") -MARK_AS_ADVANCED( - GLEW_FOUND - GLEW_INCLUDE_DIR - GLEW_LIBRARY -) \ No newline at end of file +ENDIF () diff --git a/stim/image/image.h b/stim/image/image.h index b063eb9..235be8a 100644 --- a/stim/image/image.h +++ b/stim/image/image.h @@ -74,14 +74,14 @@ class image{ #endif /// Returns the value for "white" based on the dynamic range (assumes white is 1.0 for floating point images) T white(){ - - if(typeid(T) == typeid(unsigned char)) return UCHAR_MAX; - if(typeid(T) == typeid(unsigned short)) return SHRT_MAX; - if(typeid(T) == typeid(unsigned)) return UINT_MAX; - if(typeid(T) == typeid(unsigned long)) return ULONG_MAX; - if(typeid(T) == typeid(unsigned long long)) return ULLONG_MAX; - if(typeid(T) == typeid(float)) return 1.0f; - if(typeid(T) == typeid(double)) return 1.0; + return std::numeric_limits::max(); + //if(typeid(T) == typeid(unsigned char)) return UCHAR_MAX; + //if(typeid(T) == typeid(unsigned short)) return SHRT_MAX; + //if(typeid(T) == typeid(unsigned)) return UINT_MAX; + //if(typeid(T) == typeid(unsigned long)) return ULONG_MAX; + //if(typeid(T) == typeid(unsigned long long)) return ULLONG_MAX; + //if(typeid(T) == typeid(float)) return 1.0f; + //if(typeid(T) == typeid(double)) return 1.0; std::cout<<"ERROR in stim::image::white - no white value known for this data type"<