diff options
Diffstat (limited to 'indra/integration_tests/llimage_libtest')
3 files changed, 334 insertions, 0 deletions
| diff --git a/indra/integration_tests/llimage_libtest/CMakeLists.txt b/indra/integration_tests/llimage_libtest/CMakeLists.txt new file mode 100644 index 0000000000..0733e5e283 --- /dev/null +++ b/indra/integration_tests/llimage_libtest/CMakeLists.txt @@ -0,0 +1,130 @@ +# -*- cmake -*- + +# Integration tests of the llimage library (JPEG2000, PNG, jpeg, etc... images reading and writing) + +project (llimage_libtest) + +include(00-Common) +include(LLCommon) +include(Linking) +include(LLSharedLibs) +include(LLImage) +include(LLImageJ2COJ)  +include(LLKDU) +include(LLMath) +include(LLVFS) + +include_directories( +    ${LLCOMMON_INCLUDE_DIRS} +    ${LLVFS_INCLUDE_DIRS} +    ${LLIMAGE_INCLUDE_DIRS} +    ${LLMATH_INCLUDE_DIRS} +    ) + +set(llimage_libtest_SOURCE_FILES +    llimage_libtest.cpp +    ) + +set(llimage_libtest_HEADER_FILES +    CMakeLists.txt +    llimage_libtest.h +    ) + +set_source_files_properties(${llimage_libtest_HEADER_FILES} +                            PROPERTIES HEADER_FILE_ONLY TRUE) + +list(APPEND llimage_libtest_SOURCE_FILES ${llimage_libtest_HEADER_FILES}) + +add_executable(llimage_libtest +    WIN32 +    MACOSX_BUNDLE +    ${llimage_libtest_SOURCE_FILES} +) + +set_target_properties(llimage_libtest +    PROPERTIES +    WIN32_EXECUTABLE +    FALSE +) + +# OS-specific libraries +if (DARWIN) +  include(CMakeFindFrameworks) +  find_library(COREFOUNDATION_LIBRARY CoreFoundation) +  set(OS_LIBRARIES ${COREFOUNDATION_LIBRARY}) +elseif (WINDOWS) +  #ll_stack_trace needs this now... +  list(APPEND WINDOWS_LIBRARIES dbghelp) +  set(OS_LIBRARIES ${WINDOWS_LIBRARIES}) +elseif (LINUX) +  set(OS_LIBRARIES) +else (DARWIN) +  message(FATAL_ERROR "Unknown platform") +endif (DARWIN) + +# Libraries on which this application depends on +# Sort by high-level to low-level +target_link_libraries(llimage_libtest +	${LLCOMMON_LIBRARIES} +	${LLVFS_LIBRARIES} +    ${LLIMAGE_LIBRARIES} +    ${LLKDU_LIBRARIES} +    ${KDU_LIBRARY} +    ${LLIMAGEJ2COJ_LIBRARIES} +    ${OS_LIBRARIES} +    ) +	 +if (DARWIN) +  # Path inside the app bundle where we'll need to copy libraries +  set(LLIMAGE_LIBTEST_DESTINATION_DIR +    ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llimage_libtest.app/Contents/Resources +  ) +  # Create the Contents/Resources directory +  add_custom_command( +    TARGET llimage_libtest POST_BUILD +    COMMAND ${CMAKE_COMMAND} +    ARGS +      -E +      make_directory +      ${LLIMAGE_LIBTEST_DESTINATION_DIR} +    COMMENT "Creating Resources directory in app bundle." +  )  +else (DARWIN) +  set(LLIMAGE_LIBTEST_DESTINATION_DIR +    ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ +  ) +endif (DARWIN) + +get_target_property(BUILT_LLCOMMON llcommon LOCATION) +add_custom_command(TARGET llimage_libtest POST_BUILD +  COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_LLCOMMON}  ${LLIMAGE_LIBTEST_DESTINATION_DIR} +  DEPENDS ${BUILT_LLCOMMON} +) + +if (DARWIN) +  # Copy the required libraries to the package app +  add_custom_command(TARGET llimage_libtest POST_BUILD +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libapr-1.0.3.7.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR} +    DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libapr-1.0.3.7.dylib +  add_custom_command(TARGET llimage_libtest POST_BUILD +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libaprutil-1.0.3.8.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR} +    DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libaprutil-1.0.3.8.dylib +  add_custom_command(TARGET llimage_libtest POST_BUILD +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexception_handler.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR} +    DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexception_handler.dylib +  add_custom_command(TARGET llimage_libtest POST_BUILD +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexpat.0.5.0.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR} +    DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexpat.0.5.0.dylib +  ) +endif (DARWIN) + +if (WINDOWS) +  # Check indra/test_apps/llplugintest/CMakeLists.txt for an example of what to copy over for Windows and how +endif (WINDOWS) + +# Ensure people working on the viewer don't break this library +# *NOTE: This could be removed, or only built by TeamCity, if the build +# and link times become too long. +add_dependencies(viewer llimage_libtest) + +ll_deploy_sharedlibs_command(llimage_libtest)  diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp new file mode 100644 index 0000000000..e8fe4864fb --- /dev/null +++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp @@ -0,0 +1,175 @@ +/**  + * @file llimage_libtest.cpp + * @author Merov Linden + * @brief Integration test for the llimage library + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ +#include "linden_common.h" +#include "llpointer.h" + +#include "llimage_libtest.h" + +// Linden library includes +#include "llimage.h" +#include "llimagejpeg.h" +#include "llimagepng.h" +#include "llimagebmp.h" +#include "llimagetga.h" +#include "llimagej2c.h" +#include "lldir.h" + +// system libraries +#include <iostream> + +static const char USAGE[] = "\n" +"usage:\tllimage_libtest [options]\n" +"\n" +" --help                         print this help\n" +"\n"; + +LLPointer<LLImageRaw> load_image(const std::string &src_filename) +{ +	std::string exten = gDirUtilp->getExtension(src_filename); +	U32 codec = LLImageBase::getCodecFromExtension(exten); +	 +	LLPointer<LLImageFormatted> image; +	switch (codec) +	{ +		case IMG_CODEC_BMP: +			image = new LLImageBMP(); +			break; +		case IMG_CODEC_TGA: +			image = new LLImageTGA(); +			break; +		case IMG_CODEC_JPEG: +			image = new LLImageJPEG(); +			break; +		case IMG_CODEC_J2C: +			image = new LLImageJ2C(); +			break; +		case IMG_CODEC_PNG: +			image = new LLImagePNG(); +			break; +		default: +			return NULL; +	} + +	if (!image->load(src_filename)) +	{ +		return NULL; +	} +	 +	if(	(image->getComponents() != 3) && (image->getComponents() != 4) ) +	{ +		std::cout << "Image files with less than 3 or more than 4 components are not supported\n"; +		return NULL; +	} +	 +	LLPointer<LLImageRaw> raw_image = new LLImageRaw; +	if (!image->decode(raw_image, 0.0f)) +	{ +		return NULL; +	} +	 +	return raw_image; +} + +bool save_image(const std::string &filepath, LLPointer<LLImageRaw> raw_image) +{ +	std::string exten = gDirUtilp->getExtension(filepath); +	U32 codec = LLImageBase::getCodecFromExtension(exten); + +	LLPointer<LLImageFormatted> image; +	switch (codec) +	{ +		case IMG_CODEC_BMP: +			image = new LLImageBMP(); +			break; +		case IMG_CODEC_TGA: +			image = new LLImageTGA(); +			break; +		case IMG_CODEC_JPEG: +			image = new LLImageJPEG(); +			break; +		case IMG_CODEC_J2C: +			image = new LLImageJ2C(); +			break; +		case IMG_CODEC_PNG: +			image = new LLImagePNG(); +			break; +		default: +			return NULL; +	} +	 +	if (!image->encode(raw_image, 0.0f)) +	{ +		return false; +	} +	 +	return image->save(filepath); +} + +int main(int argc, char** argv) +{ +	// Init whatever is necessary +	ll_init_apr(); +	LLImage::initClass(); + +	// Analyze command line arguments +	for (int arg=1; arg<argc; ++arg) +	{ +		if (!strcmp(argv[arg], "--help")) +		{ +            // always send the usage to standard out +            std::cout << USAGE << std::endl; +			return 0; +		} +		 +	} +		 +	// List of (input,output) files +	 +	// Load file +	LLPointer<LLImageRaw> raw_image = load_image("lolcat-monorail.jpg"); +	if (raw_image) +	{ +		std::cout << "Image loaded\n" << std::endl; +	} +	else +	{ +		std::cout << "Image not found\n" << std::endl; +	} +	 +	// Save file +	if (raw_image) +	{ +		save_image("monorail.png",raw_image); +	} +		 +	// Output stats on each file +	 +	// Cleanup and exit +	LLImage::cleanupClass(); +	 +	return 0; +} diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.h b/indra/integration_tests/llimage_libtest/llimage_libtest.h new file mode 100644 index 0000000000..63f3d46b50 --- /dev/null +++ b/indra/integration_tests/llimage_libtest/llimage_libtest.h @@ -0,0 +1,29 @@ +/**  + * @file llimage_libtest.h + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ +#ifndef LLIMAGE_LIBTEST_H +#define LLIMAGE_LIBTEST_H + + +#endif | 
