merge
commit
c9f3a5574e
|
|
@ -366,12 +366,13 @@ JB Kraft
|
|||
Joghert LeSabre
|
||||
VWR-64
|
||||
Jonathan Yap
|
||||
VWR-17801
|
||||
STORM-596
|
||||
STORM-523
|
||||
STORM-616
|
||||
STORM-679
|
||||
STORM-596
|
||||
STORM-737
|
||||
STORM-726
|
||||
VWR-17801
|
||||
STORM-785
|
||||
Kage Pixel
|
||||
VWR-11
|
||||
|
|
@ -750,6 +751,8 @@ Tue Torok
|
|||
CT-74
|
||||
Twisted Laws
|
||||
SNOW-352
|
||||
STORM-466
|
||||
STORM-467
|
||||
Vadim Bigbear
|
||||
VWR-2681
|
||||
Vector Hastings
|
||||
|
|
|
|||
|
|
@ -3,12 +3,13 @@
|
|||
project(llimage)
|
||||
|
||||
include(00-Common)
|
||||
include(LLAddBuildTest)
|
||||
include(LLCommon)
|
||||
include(LLImage)
|
||||
include(LLMath)
|
||||
include(LLVFS)
|
||||
include(ZLIB)
|
||||
include(LLAddBuildTest)
|
||||
include(Tut)
|
||||
|
||||
include_directories(
|
||||
${LLCOMMON_INCLUDE_DIRS}
|
||||
|
|
@ -63,4 +64,12 @@ target_link_libraries(llimage
|
|||
)
|
||||
|
||||
# Add tests
|
||||
#ADD_BUILD_TEST(llimageworker llimage)
|
||||
if (LL_TESTS)
|
||||
SET(llimage_TEST_SOURCE_FILES
|
||||
llimageworker.cpp
|
||||
)
|
||||
LL_ADD_PROJECT_UNIT_TESTS(llimage "${llimage_TEST_SOURCE_FILES}")
|
||||
endif (LL_TESTS)
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -26,10 +26,8 @@
|
|||
*/
|
||||
|
||||
// Precompiled header: almost always required for newview cpp files
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <algorithm>
|
||||
// Class to test
|
||||
#include "linden_common.h"
|
||||
// Class to test
|
||||
#include "../llimageworker.h"
|
||||
// For timer class
|
||||
#include "../llcommon/lltimer.h"
|
||||
|
|
@ -44,7 +42,17 @@
|
|||
// * Do not make any assumption as to how those classes or methods work (i.e. don't copy/paste code)
|
||||
// * A simulator for a class can be implemented here. Please comment and document thoroughly.
|
||||
|
||||
LLImageBase::LLImageBase() {}
|
||||
LLImageBase::LLImageBase()
|
||||
: mData(NULL),
|
||||
mDataSize(0),
|
||||
mWidth(0),
|
||||
mHeight(0),
|
||||
mComponents(0),
|
||||
mBadBufferAllocation(false),
|
||||
mAllowOverSize(false),
|
||||
mMemType(LLMemType::MTYPE_IMAGEBASE)
|
||||
{
|
||||
}
|
||||
LLImageBase::~LLImageBase() {}
|
||||
void LLImageBase::dump() { }
|
||||
void LLImageBase::sanityCheck() { }
|
||||
|
|
|
|||
|
|
@ -90,6 +90,12 @@ void info_callback(const char* msg, void*)
|
|||
lldebugs << "LLImageJ2COJ: " << chomp(msg) << llendl;
|
||||
}
|
||||
|
||||
// Divide a by 2 to the power of b and round upwards
|
||||
int ceildivpow2(int a, int b)
|
||||
{
|
||||
return (a + (1 << b) - 1) >> b;
|
||||
}
|
||||
|
||||
|
||||
LLImageJ2COJ::LLImageJ2COJ()
|
||||
: LLImageJ2CImpl()
|
||||
|
|
|
|||
|
|
@ -34,17 +34,11 @@ class LLImageJ2COJ : public LLImageJ2CImpl
|
|||
public:
|
||||
LLImageJ2COJ();
|
||||
virtual ~LLImageJ2COJ();
|
||||
|
||||
protected:
|
||||
/*virtual*/ BOOL getMetadata(LLImageJ2C &base);
|
||||
/*virtual*/ BOOL decodeImpl(LLImageJ2C &base, LLImageRaw &raw_image, F32 decode_time, S32 first_channel, S32 max_channel_count);
|
||||
/*virtual*/ BOOL encodeImpl(LLImageJ2C &base, const LLImageRaw &raw_image, const char* comment_text, F32 encode_time=0.0,
|
||||
BOOL reversible = FALSE);
|
||||
int ceildivpow2(int a, int b)
|
||||
{
|
||||
// Divide a by b to the power of 2 and round upwards.
|
||||
return (a + (1 << b) - 1) >> b;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -42,4 +42,14 @@ list(APPEND llkdu_SOURCE_FILES ${llkdu_HEADER_FILES})
|
|||
if (USE_KDU)
|
||||
add_library (${LLKDU_LIBRARIES} ${llkdu_SOURCE_FILES})
|
||||
|
||||
# Add tests
|
||||
if (LL_TESTS)
|
||||
include(LLAddBuildTest)
|
||||
include(Tut)
|
||||
SET(llkdu_TEST_SOURCE_FILES
|
||||
llimagej2ckdu.cpp
|
||||
)
|
||||
LL_ADD_PROJECT_UNIT_TESTS(llkdu "${llkdu_TEST_SOURCE_FILES}")
|
||||
endif (LL_TESTS)
|
||||
|
||||
endif (USE_KDU)
|
||||
|
|
|
|||
|
|
@ -229,16 +229,17 @@ void LLImageJ2CKDU::setupCodeStream(LLImageJ2C &base, BOOL keep_codestream, ECod
|
|||
mCodeStreamp = NULL;
|
||||
}
|
||||
|
||||
if (!mInputp)
|
||||
if (!mInputp && base.getData())
|
||||
{
|
||||
llassert(base.getData());
|
||||
// The compressed data has been loaded
|
||||
// Setup the source for the codestrea
|
||||
// Setup the source for the codestream
|
||||
mInputp = new LLKDUMemSource(base.getData(), data_size);
|
||||
}
|
||||
|
||||
llassert(mInputp);
|
||||
mInputp->reset();
|
||||
if (mInputp)
|
||||
{
|
||||
mInputp->reset();
|
||||
}
|
||||
mCodeStreamp = new kdu_codestream;
|
||||
|
||||
mCodeStreamp->create(mInputp);
|
||||
|
|
@ -1017,7 +1018,7 @@ kdc_flow_control::kdc_flow_control (kdu_image_in_base *img_in, kdu_codestream co
|
|||
comp->ratio_counter = 0;
|
||||
comp->remaining_lines = comp->initial_lines = dims.size.y;
|
||||
}
|
||||
assert(num_components > 0);
|
||||
assert(num_components >= 0);
|
||||
|
||||
tile.set_components_of_interest(num_components);
|
||||
max_buffer_memory = engine.create(codestream,tile,false,NULL,false,1,NULL,NULL,false);
|
||||
|
|
|
|||
|
|
@ -50,17 +50,16 @@ public:
|
|||
MODE_RESILIENT = 1,
|
||||
MODE_FUSSY = 2
|
||||
};
|
||||
|
||||
public:
|
||||
LLImageJ2CKDU();
|
||||
virtual ~LLImageJ2CKDU();
|
||||
|
||||
|
||||
protected:
|
||||
/*virtual*/ BOOL getMetadata(LLImageJ2C &base);
|
||||
/*virtual*/ BOOL decodeImpl(LLImageJ2C &base, LLImageRaw &raw_image, F32 decode_time, S32 first_channel, S32 max_channel_count);
|
||||
/*virtual*/ BOOL encodeImpl(LLImageJ2C &base, const LLImageRaw &raw_image, const char* comment_text, F32 encode_time=0.0,
|
||||
BOOL reversible=FALSE);
|
||||
|
||||
private:
|
||||
void setupCodeStream(LLImageJ2C &base, BOOL keep_codestream, ECodeStreamMode mode);
|
||||
void cleanupCodeStream();
|
||||
BOOL initDecode(LLImageJ2C &base, LLImageRaw &raw_image, F32 decode_time, ECodeStreamMode mode, S32 first_channel, S32 max_channel_count );
|
||||
|
|
|
|||
|
|
@ -0,0 +1,248 @@
|
|||
/**
|
||||
* @file llimagej2ckdu_test.cpp
|
||||
* @author Merov Linden
|
||||
* @date 2010-12-17
|
||||
*
|
||||
* $LicenseInfo:firstyear=2006&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, 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"
|
||||
// Class to test
|
||||
#include "../llimagej2ckdu.h"
|
||||
#include "../llkdumem.h"
|
||||
// Tut header
|
||||
#include "../test/lltut.h"
|
||||
|
||||
// -------------------------------------------------------------------------------------------
|
||||
// Stubbing: Declarations required to link and run the class being tested
|
||||
// Notes:
|
||||
// * Add here stubbed implementation of the few classes and methods used in the class to be tested
|
||||
// * Add as little as possible (let the link errors guide you)
|
||||
// * Do not make any assumption as to how those classes or methods work (i.e. don't copy/paste code)
|
||||
// * A simulator for a class can be implemented here. Please comment and document thoroughly.
|
||||
|
||||
// End Stubbing
|
||||
// -------------------------------------------------------------------------------------------
|
||||
// Stubb the LL Image Classes
|
||||
LLImageRaw::LLImageRaw() { }
|
||||
LLImageRaw::~LLImageRaw() { }
|
||||
U8* LLImageRaw::allocateData(S32 ) { return NULL; }
|
||||
void LLImageRaw::deleteData() { }
|
||||
U8* LLImageRaw::reallocateData(S32 ) { return NULL; }
|
||||
BOOL LLImageRaw::resize(U16, U16, S8) { return TRUE; } // this method always returns TRUE...
|
||||
|
||||
LLImageBase::LLImageBase()
|
||||
: mData(NULL),
|
||||
mDataSize(0),
|
||||
mWidth(0),
|
||||
mHeight(0),
|
||||
mComponents(0),
|
||||
mBadBufferAllocation(false),
|
||||
mAllowOverSize(false),
|
||||
mMemType(LLMemType::MTYPE_IMAGEBASE)
|
||||
{ }
|
||||
LLImageBase::~LLImageBase() { }
|
||||
U8* LLImageBase::allocateData(S32 ) { return NULL; }
|
||||
void LLImageBase::deleteData() { }
|
||||
void LLImageBase::dump() { }
|
||||
const U8* LLImageBase::getData() const { return NULL; }
|
||||
U8* LLImageBase::getData() { return NULL; }
|
||||
U8* LLImageBase::reallocateData(S32 ) { return NULL; }
|
||||
void LLImageBase::sanityCheck() { }
|
||||
void LLImageBase::setSize(S32 , S32 , S32 ) { }
|
||||
|
||||
LLImageJ2CImpl::~LLImageJ2CImpl() { }
|
||||
|
||||
LLImageFormatted::LLImageFormatted(S8 ) { }
|
||||
LLImageFormatted::~LLImageFormatted() { }
|
||||
U8* LLImageFormatted::allocateData(S32 ) { return NULL; }
|
||||
S32 LLImageFormatted::calcDataSize(S32 ) { return 0; }
|
||||
S32 LLImageFormatted::calcDiscardLevelBytes(S32 ) { return 0; }
|
||||
BOOL LLImageFormatted::decodeChannels(LLImageRaw*, F32, S32, S32) { return FALSE; }
|
||||
BOOL LLImageFormatted::copyData(U8 *, S32) { return TRUE; } // this method always returns TRUE...
|
||||
void LLImageFormatted::deleteData() { }
|
||||
void LLImageFormatted::dump() { }
|
||||
U8* LLImageFormatted::reallocateData(S32 ) { return NULL; }
|
||||
void LLImageFormatted::resetLastError() { }
|
||||
void LLImageFormatted::sanityCheck() { }
|
||||
void LLImageFormatted::setLastError(const std::string& , const std::string& ) { }
|
||||
|
||||
LLImageJ2C::LLImageJ2C() : LLImageFormatted(IMG_CODEC_J2C) { }
|
||||
LLImageJ2C::~LLImageJ2C() { }
|
||||
S32 LLImageJ2C::calcDataSize(S32 ) { return 0; }
|
||||
S32 LLImageJ2C::calcDiscardLevelBytes(S32 ) { return 0; }
|
||||
S32 LLImageJ2C::calcHeaderSize() { return 0; }
|
||||
BOOL LLImageJ2C::decode(LLImageRaw*, F32) { return FALSE; }
|
||||
BOOL LLImageJ2C::decodeChannels(LLImageRaw*, F32, S32, S32 ) { return FALSE; }
|
||||
void LLImageJ2C::decodeFailed() { }
|
||||
BOOL LLImageJ2C::encode(const LLImageRaw*, F32) { return FALSE; }
|
||||
S8 LLImageJ2C::getRawDiscardLevel() { return 0; }
|
||||
void LLImageJ2C::resetLastError() { }
|
||||
void LLImageJ2C::setLastError(const std::string&, const std::string&) { }
|
||||
BOOL LLImageJ2C::updateData() { return FALSE; }
|
||||
void LLImageJ2C::updateRawDiscardLevel() { }
|
||||
|
||||
LLKDUMemIn::LLKDUMemIn(const U8*, const U32, const U16, const U16, const U8, siz_params*) { }
|
||||
LLKDUMemIn::~LLKDUMemIn() { }
|
||||
bool LLKDUMemIn::get(int, kdu_line_buf&, int) { return false; }
|
||||
|
||||
// Stub Kakadu Library calls
|
||||
kdu_tile_comp kdu_tile::access_component(int ) { kdu_tile_comp a; return a; }
|
||||
void kdu_tile::close(kdu_thread_env* ) { }
|
||||
int kdu_tile::get_num_components() { return 0; }
|
||||
bool kdu_tile::get_ycc() { return false; }
|
||||
void kdu_tile::set_components_of_interest(int , const int* ) { }
|
||||
kdu_resolution kdu_tile_comp::access_resolution() { kdu_resolution a; return a; }
|
||||
int kdu_tile_comp::get_bit_depth(bool ) { return 8; }
|
||||
bool kdu_tile_comp::get_reversible() { return false; }
|
||||
kdu_subband kdu_resolution::access_subband(int ) { kdu_subband a; return a; }
|
||||
void kdu_resolution::get_dims(kdu_dims& ) { }
|
||||
int kdu_resolution::which() { return 0; }
|
||||
kdu_decoder::kdu_decoder(kdu_subband , kdu_sample_allocator*, bool , float, int, kdu_thread_env*, kdu_thread_queue*) { }
|
||||
kdu_synthesis::kdu_synthesis(kdu_resolution, kdu_sample_allocator*, bool, float, kdu_thread_env*, kdu_thread_queue*) { }
|
||||
kdu_params::kdu_params(const char*, bool, bool, bool, bool, bool) { }
|
||||
kdu_params::~kdu_params() { }
|
||||
void kdu_params::set(const char* , int , int , bool ) { }
|
||||
void kdu_params::set(const char* , int , int , int ) { }
|
||||
void kdu_params::finalize_all(bool ) { }
|
||||
void kdu_params::copy_from(kdu_params*, int, int, int, int, int, bool, bool, bool) { }
|
||||
bool kdu_params::parse_string(const char*) { return false; }
|
||||
bool kdu_params::get(const char*, int, int, bool&, bool, bool, bool) { return false; }
|
||||
bool kdu_params::get(const char*, int, int, float&, bool, bool, bool) { return false; }
|
||||
bool kdu_params::get(const char*, int, int, int&, bool, bool, bool) { return false; }
|
||||
kdu_params* kdu_params::access_relation(int, int, int, bool) { return NULL; }
|
||||
kdu_params* kdu_params::access_cluster(const char*) { return NULL; }
|
||||
void kdu_codestream::set_fast() { }
|
||||
void kdu_codestream::set_fussy() { }
|
||||
void kdu_codestream::get_dims(int, kdu_dims&, bool ) { }
|
||||
void kdu_codestream::change_appearance(bool, bool, bool) { }
|
||||
void kdu_codestream::get_tile_dims(kdu_coords, int, kdu_dims&, bool ) { }
|
||||
void kdu_codestream::destroy() { }
|
||||
void kdu_codestream::collect_timing_stats(int ) { }
|
||||
void kdu_codestream::set_max_bytes(kdu_long, bool, bool ) { }
|
||||
void kdu_codestream::get_valid_tiles(kdu_dims& ) { }
|
||||
void kdu_codestream::create(siz_params*, kdu_compressed_target*, kdu_dims*, int, kdu_long ) { }
|
||||
void kdu_codestream::create(kdu_compressed_source*, kdu_thread_env*) { }
|
||||
void kdu_codestream::apply_input_restrictions( int, int, int, int, kdu_dims*, kdu_component_access_mode ) { }
|
||||
void kdu_codestream::get_subsampling(int , kdu_coords&, bool ) { }
|
||||
void kdu_codestream::flush(kdu_long *, int , kdu_uint16 *, bool, bool, double, kdu_thread_env*) { }
|
||||
void kdu_codestream::set_resilient(bool ) { }
|
||||
int kdu_codestream::get_num_components(bool ) { return 0; }
|
||||
siz_params* kdu_codestream::access_siz() { return NULL; }
|
||||
kdu_tile kdu_codestream::open_tile(kdu_coords , kdu_thread_env* ) { kdu_tile a; return a; }
|
||||
kdu_codestream_comment kdu_codestream::add_comment() { kdu_codestream_comment a; return a; }
|
||||
bool kdu_codestream_comment::put_text(const char*) { return false; }
|
||||
void kdu_customize_warnings(kdu_message*) { }
|
||||
void kdu_customize_errors(kdu_message*) { }
|
||||
void kdu_convert_ycc_to_rgb(kdu_line_buf&, kdu_line_buf&, kdu_line_buf&, int) { }
|
||||
kdu_long kdu_multi_analysis::create(kdu_codestream, kdu_tile, bool, kdu_roi_image*, bool, int, kdu_thread_env*, kdu_thread_queue*, bool ) { kdu_long a = 0; return a; }
|
||||
siz_params::siz_params() : kdu_params(NULL, false, false, false, false, false) { }
|
||||
void siz_params::finalize(bool ) { }
|
||||
void siz_params::copy_with_xforms(kdu_params*, int, int, bool, bool, bool) { }
|
||||
int siz_params::write_marker_segment(kdu_output*, kdu_params*, int) { return 0; }
|
||||
bool siz_params::check_marker_segment(kdu_uint16, int, kdu_byte a[], int&) { return false; }
|
||||
bool siz_params::read_marker_segment(kdu_uint16, int, kdu_byte a[], int) { return false; }
|
||||
|
||||
// -------------------------------------------------------------------------------------------
|
||||
// TUT
|
||||
// -------------------------------------------------------------------------------------------
|
||||
|
||||
namespace tut
|
||||
{
|
||||
// Test wrapper declarations
|
||||
struct llimagej2ckdu_test
|
||||
{
|
||||
// Derived test class
|
||||
class LLTestImageJ2CKDU : public LLImageJ2CKDU
|
||||
{
|
||||
public:
|
||||
// Provides public access to some protected methods for testing
|
||||
BOOL callGetMetadata(LLImageJ2C &base) { return getMetadata(base); }
|
||||
BOOL callDecodeImpl(LLImageJ2C &base, LLImageRaw &raw_image, F32 decode_time, S32 first_channel, S32 max_channel_count)
|
||||
{
|
||||
return decodeImpl(base, raw_image, decode_time, first_channel, max_channel_count);
|
||||
}
|
||||
BOOL callEncodeImpl(LLImageJ2C &base, const LLImageRaw &raw_image, const char* comment_text)
|
||||
{
|
||||
return encodeImpl(base, raw_image, comment_text);
|
||||
}
|
||||
};
|
||||
// Instance to be tested
|
||||
LLTestImageJ2CKDU* mImage;
|
||||
|
||||
// Constructor and destructor of the test wrapper
|
||||
llimagej2ckdu_test()
|
||||
{
|
||||
mImage = new LLTestImageJ2CKDU;
|
||||
}
|
||||
~llimagej2ckdu_test()
|
||||
{
|
||||
delete mImage;
|
||||
}
|
||||
};
|
||||
|
||||
// Tut templating thingamagic: test group, object and test instance
|
||||
typedef test_group<llimagej2ckdu_test> llimagej2ckdu_t;
|
||||
typedef llimagej2ckdu_t::object llimagej2ckdu_object_t;
|
||||
tut::llimagej2ckdu_t tut_llimagej2ckdu("LLImageJ2CKDU");
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
// Test functions
|
||||
// Notes:
|
||||
// * Test as many as you possibly can without requiring a full blown simulation of everything
|
||||
// * The tests are executed in sequence so the test instance state may change between calls
|
||||
// * Remember that you cannot test private methods with tut
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Test 1 : test getMetadata()
|
||||
template<> template<>
|
||||
void llimagej2ckdu_object_t::test<1>()
|
||||
{
|
||||
LLImageJ2C* image = new LLImageJ2C();
|
||||
BOOL res = mImage->callGetMetadata(*image);
|
||||
// Trying to set up a data stream with all NIL values and stubbed KDU will "work" and return TRUE
|
||||
// Note that is linking with KDU, that call will throw an exception and fail, returning FALSE
|
||||
ensure("getMetadata() test failed", res == TRUE);
|
||||
}
|
||||
|
||||
// Test 2 : test decodeImpl()
|
||||
template<> template<>
|
||||
void llimagej2ckdu_object_t::test<2>()
|
||||
{
|
||||
LLImageJ2C* image = new LLImageJ2C();
|
||||
LLImageRaw* raw = new LLImageRaw();
|
||||
BOOL res = mImage->callDecodeImpl(*image, *raw, 0.0, 0, 0);
|
||||
// Decoding returns TRUE whenever there's nothing else to do, including if decoding failed, so we'll get TRUE here
|
||||
ensure("decodeImpl() test failed", res == TRUE);
|
||||
}
|
||||
|
||||
// Test 3 : test encodeImpl()
|
||||
template<> template<>
|
||||
void llimagej2ckdu_object_t::test<3>()
|
||||
{
|
||||
LLImageJ2C* image = new LLImageJ2C();
|
||||
LLImageRaw* raw = new LLImageRaw();
|
||||
BOOL res = mImage->callEncodeImpl(*image, *raw, NULL);
|
||||
// Encoding returns TRUE unless an exception was raised, so we'll get TRUE here though nothing really was done
|
||||
ensure("encodeImpl() test failed", res == TRUE);
|
||||
}
|
||||
}
|
||||
|
|
@ -2910,7 +2910,9 @@ bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::str
|
|||
params.from_xui = true;
|
||||
applyXUILayout(params, parent);
|
||||
initFromParams(params);
|
||||
|
||||
// chrome floaters don't take focus at all
|
||||
setFocusRoot(!getIsChrome());
|
||||
|
||||
initFloater(params);
|
||||
|
||||
LLMultiFloater* last_host = LLFloater::getFloaterHost();
|
||||
|
|
|
|||
|
|
@ -1926,6 +1926,8 @@ if (LL_TESTS)
|
|||
llremoteparcelrequest.cpp
|
||||
llviewerhelputil.cpp
|
||||
llversioninfo.cpp
|
||||
llworldmap.cpp
|
||||
llworldmipmap.cpp
|
||||
)
|
||||
|
||||
##################################################
|
||||
|
|
@ -2013,8 +2015,6 @@ if (LL_TESTS)
|
|||
|
||||
#ADD_VIEWER_BUILD_TEST(llmemoryview viewer)
|
||||
#ADD_VIEWER_BUILD_TEST(llagentaccess viewer)
|
||||
#ADD_VIEWER_BUILD_TEST(llworldmap viewer)
|
||||
#ADD_VIEWER_BUILD_TEST(llworldmipmap viewer)
|
||||
#ADD_VIEWER_BUILD_TEST(lltextureinfo viewer)
|
||||
#ADD_VIEWER_BUILD_TEST(lltextureinfodetails viewer)
|
||||
#ADD_VIEWER_BUILD_TEST(lltexturestatsuploader viewer)
|
||||
|
|
|
|||
|
|
@ -83,7 +83,6 @@ LLFloaterMap::~LLFloaterMap()
|
|||
BOOL LLFloaterMap::postBuild()
|
||||
{
|
||||
mMap = getChild<LLNetMap>("Net Map");
|
||||
mMap->setScale(gSavedSettings.getF32("MiniMapScale"));
|
||||
mMap->setToolTipMsg(getString("ToolTipMsg"));
|
||||
sendChildToBack(mMap);
|
||||
|
||||
|
|
@ -288,7 +287,16 @@ void LLFloaterMap::handleZoom(const LLSD& userdata)
|
|||
std::string level = userdata.asString();
|
||||
|
||||
F32 scale = 0.0f;
|
||||
if (level == std::string("close"))
|
||||
if (level == std::string("default"))
|
||||
{
|
||||
LLControlVariable *pvar = gSavedSettings.getControl("MiniMapScale");
|
||||
if(pvar)
|
||||
{
|
||||
pvar->resetToDefault();
|
||||
scale = gSavedSettings.getF32("MiniMapScale");
|
||||
}
|
||||
}
|
||||
else if (level == std::string("close"))
|
||||
scale = LLNetMap::MAP_SCALE_MAX;
|
||||
else if (level == std::string("medium"))
|
||||
scale = LLNetMap::MAP_SCALE_MID;
|
||||
|
|
@ -296,7 +304,6 @@ void LLFloaterMap::handleZoom(const LLSD& userdata)
|
|||
scale = LLNetMap::MAP_SCALE_MIN;
|
||||
if (scale != 0.0f)
|
||||
{
|
||||
gSavedSettings.setF32("MiniMapScale", scale );
|
||||
mMap->setScale(scale);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2736,12 +2736,13 @@ BOOL LLFolderBridge::dragOrDrop(MASK mask, BOOL drop,
|
|||
case DAD_CALLINGCARD:
|
||||
case DAD_LANDMARK:
|
||||
case DAD_SCRIPT:
|
||||
case DAD_CLOTHING:
|
||||
case DAD_OBJECT:
|
||||
case DAD_NOTECARD:
|
||||
case DAD_CLOTHING:
|
||||
case DAD_BODYPART:
|
||||
case DAD_ANIMATION:
|
||||
case DAD_GESTURE:
|
||||
case DAD_MESH:
|
||||
accept = dragItemIntoFolder(inv_item, drop);
|
||||
break;
|
||||
case DAD_LINK:
|
||||
|
|
@ -2771,7 +2772,11 @@ BOOL LLFolderBridge::dragOrDrop(MASK mask, BOOL drop,
|
|||
accept = dragCategoryIntoFolder((LLInventoryCategory*)cargo_data, drop);
|
||||
}
|
||||
break;
|
||||
case DAD_ROOT_CATEGORY:
|
||||
case DAD_NONE:
|
||||
break;
|
||||
default:
|
||||
llwarns << "Unhandled cargo type for drag&drop " << cargo_type << llendl;
|
||||
break;
|
||||
}
|
||||
return accept;
|
||||
|
|
@ -5415,11 +5420,6 @@ void LLRecentItemsFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||
|
||||
menuentry_vec_t disabled_items, items = getMenuItems();
|
||||
|
||||
items.erase(std::remove(items.begin(), items.end(), std::string("New Body Parts")), items.end());
|
||||
items.erase(std::remove(items.begin(), items.end(), std::string("New Clothes")), items.end());
|
||||
items.erase(std::remove(items.begin(), items.end(), std::string("New Note")), items.end());
|
||||
items.erase(std::remove(items.begin(), items.end(), std::string("New Gesture")), items.end());
|
||||
items.erase(std::remove(items.begin(), items.end(), std::string("New Script")), items.end());
|
||||
items.erase(std::remove(items.begin(), items.end(), std::string("New Folder")), items.end());
|
||||
|
||||
hide_context_entries(menu, items, disabled_items);
|
||||
|
|
|
|||
|
|
@ -527,7 +527,8 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)
|
|||
|
||||
if( nearby_chat->getVisible()
|
||||
|| ( chat_msg.mSourceType == CHAT_SOURCE_AGENT
|
||||
&& gSavedSettings.getBOOL("UseChatBubbles") ) )
|
||||
&& gSavedSettings.getBOOL("UseChatBubbles") )
|
||||
|| !mChannel->getShowToasts() ) // to prevent toasts in Busy mode
|
||||
return;//no need in toast if chat is visible or if bubble chat is enabled
|
||||
|
||||
// Handle irc styled messages for toast panel
|
||||
|
|
|
|||
|
|
@ -94,10 +94,12 @@ LLNetMap::LLNetMap (const Params & p)
|
|||
mToolTipMsg()
|
||||
{
|
||||
mDotRadius = llmax(DOT_SCALE * mPixelsPerMeter, MIN_DOT_RADIUS);
|
||||
setScale(gSavedSettings.getF32("MiniMapScale"));
|
||||
}
|
||||
|
||||
LLNetMap::~LLNetMap()
|
||||
{
|
||||
gSavedSettings.setF32("MiniMapScale", mScale);
|
||||
}
|
||||
|
||||
void LLNetMap::setScale( F32 scale )
|
||||
|
|
|
|||
|
|
@ -506,9 +506,6 @@ void LLPanelMainInventory::onFilterSelected()
|
|||
return;
|
||||
}
|
||||
|
||||
BOOL recent_active = ("Recent Items" == mActivePanel->getName());
|
||||
getChildView("add_btn_panel")->setVisible( !recent_active);
|
||||
|
||||
setFilterSubString(mFilterSubString);
|
||||
LLInventoryFilter* filter = mActivePanel->getFilter();
|
||||
LLFloaterInventoryFinder *finder = getFinder();
|
||||
|
|
@ -953,6 +950,11 @@ void LLPanelMainInventory::updateListCommands()
|
|||
|
||||
void LLPanelMainInventory::onAddButtonClick()
|
||||
{
|
||||
// Gray out the "New Folder" option when the Recent tab is active as new folders will not be displayed
|
||||
// unless "Always show folders" is checked in the filter options.
|
||||
bool recent_active = ("Recent Items" == mActivePanel->getName());
|
||||
mMenuAdd->getChild<LLMenuItemGL>("New Folder")->setEnabled(!recent_active);
|
||||
|
||||
setUploadCostIfNeeded();
|
||||
|
||||
showActionMenu(mMenuAdd,"add_btn");
|
||||
|
|
|
|||
|
|
@ -308,24 +308,24 @@ LLToolDragAndDrop::dragOrDrop3dImpl LLToolDragAndDrop::LLDragAndDropDictionary::
|
|||
|
||||
LLToolDragAndDrop::LLDragAndDropDictionary::LLDragAndDropDictionary()
|
||||
{
|
||||
// DT_NONE DT_SELF DT_AVATAR DT_OBJECT DT_LAND
|
||||
// |--------------|---------------------------|---------------------------|-------------------------------|--------------|
|
||||
// DT_NONE DT_SELF DT_AVATAR DT_OBJECT DT_LAND
|
||||
// |-------------------------------|----------------------------------------------|-----------------------------------------------|---------------------------------------------------|--------------------------------|
|
||||
addEntry(DAD_NONE, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_TEXTURE, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dTextureObject, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_SOUND, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_TEXTURE, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dTextureObject, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_SOUND, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_CALLINGCARD, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_LANDMARK, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_SCRIPT, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dRezScript, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_CLOTHING, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dWearItem, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_OBJECT, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dRezAttachmentFromInv, &LLToolDragAndDrop::dad3dGiveInventoryObject, &LLToolDragAndDrop::dad3dRezObjectOnObject, &LLToolDragAndDrop::dad3dRezObjectOnLand));
|
||||
addEntry(DAD_NOTECARD, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_CATEGORY, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dWearCategory, &LLToolDragAndDrop::dad3dGiveInventoryCategory,&LLToolDragAndDrop::dad3dUpdateInventoryCategory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_LANDMARK, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_SCRIPT, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dRezScript, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_CLOTHING, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dWearItem, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_OBJECT, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dRezAttachmentFromInv, &LLToolDragAndDrop::dad3dGiveInventoryObject, &LLToolDragAndDrop::dad3dRezObjectOnObject, &LLToolDragAndDrop::dad3dRezObjectOnLand));
|
||||
addEntry(DAD_NOTECARD, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_CATEGORY, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dWearCategory, &LLToolDragAndDrop::dad3dGiveInventoryCategory, &LLToolDragAndDrop::dad3dUpdateInventoryCategory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_ROOT_CATEGORY, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_BODYPART, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dWearItem, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_ANIMATION, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_GESTURE, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dActivateGesture, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_BODYPART, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dWearItem, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_ANIMATION, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_GESTURE, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dActivateGesture, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dUpdateInventory, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_LINK, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_MESH, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dMeshObject, &LLToolDragAndDrop::dad3dNULL));
|
||||
addEntry(DAD_MESH, new DragAndDropEntry(&LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dNULL, &LLToolDragAndDrop::dad3dGiveInventory, &LLToolDragAndDrop::dad3dMeshObject, &LLToolDragAndDrop::dad3dNULL));
|
||||
// TODO: animation on self could play it? edit it?
|
||||
// TODO: gesture on self could play it? edit it?
|
||||
};
|
||||
|
|
|
|||
|
|
@ -847,17 +847,18 @@ BOOL LLViewerTextEditor::handleDragAndDrop(S32 x, S32 y, MASK mask,
|
|||
{
|
||||
switch( cargo_type )
|
||||
{
|
||||
case DAD_CALLINGCARD:
|
||||
case DAD_TEXTURE:
|
||||
case DAD_SOUND:
|
||||
case DAD_LANDMARK:
|
||||
case DAD_SCRIPT:
|
||||
case DAD_CLOTHING:
|
||||
case DAD_OBJECT:
|
||||
case DAD_NOTECARD:
|
||||
case DAD_BODYPART:
|
||||
case DAD_ANIMATION:
|
||||
case DAD_GESTURE:
|
||||
case DAD_CALLINGCARD:
|
||||
case DAD_TEXTURE:
|
||||
case DAD_SOUND:
|
||||
case DAD_LANDMARK:
|
||||
case DAD_SCRIPT:
|
||||
case DAD_CLOTHING:
|
||||
case DAD_OBJECT:
|
||||
case DAD_NOTECARD:
|
||||
case DAD_BODYPART:
|
||||
case DAD_ANIMATION:
|
||||
case DAD_GESTURE:
|
||||
case DAD_MESH:
|
||||
{
|
||||
LLInventoryItem *item = (LLInventoryItem *)cargo_data;
|
||||
if( item && allowsEmbeddedItems() )
|
||||
|
|
|
|||
|
|
@ -76,13 +76,24 @@ L$30,000
|
|||
</text>
|
||||
<!-- Overlapping buttons for all default actions. Show "Buy" if
|
||||
for sale, "Sit" if can sit, etc. -->
|
||||
<icon
|
||||
name="secure_browsing"
|
||||
image_name="Lock"
|
||||
left="0"
|
||||
visible="false"
|
||||
width="18"
|
||||
height="18"
|
||||
top="103"
|
||||
tool_tip="Secure Browsing"
|
||||
follows="left|top" />
|
||||
<text
|
||||
follows="all"
|
||||
font="SansSerifSmall"
|
||||
height="13"
|
||||
name="object_media_url"
|
||||
width="220"
|
||||
top_pad="0"
|
||||
width="207"
|
||||
left_pad="2"
|
||||
top_delta="0"
|
||||
max_length = "50"
|
||||
use_ellipses="true">
|
||||
http://www.superdupertest.com
|
||||
|
|
@ -135,16 +146,6 @@ L$30,000
|
|||
name="open_btn"
|
||||
top_delta="0"
|
||||
width="80" />
|
||||
<icon
|
||||
name="secure_browsing"
|
||||
image_name="Lock"
|
||||
left_delta="80"
|
||||
visible="false"
|
||||
width="18"
|
||||
height="18"
|
||||
top_delta="0"
|
||||
tool_tip="Secure Browsing"
|
||||
follows="left|top" />
|
||||
|
||||
<!-- non-overlapping buttons here -->
|
||||
<button
|
||||
|
|
@ -153,7 +154,7 @@ L$30,000
|
|||
label="More"
|
||||
layout="topleft"
|
||||
name="more_info_btn"
|
||||
left_delta="10"
|
||||
left_pad="10"
|
||||
top_delta="0"
|
||||
tab_stop="false"
|
||||
width="80" />
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
top="724"
|
||||
visible="false"
|
||||
width="128">
|
||||
<menu_item_call
|
||||
<menu_item_call
|
||||
label="Zoom Close"
|
||||
name="Zoom Close">
|
||||
<menu_item_call.on_click
|
||||
|
|
@ -29,7 +29,14 @@
|
|||
function="Minimap.Zoom"
|
||||
parameter="far" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator />
|
||||
<menu_item_call
|
||||
label="Zoom Default"
|
||||
name="Zoom Default">
|
||||
<menu_item_call.on_click
|
||||
function="Minimap.Zoom"
|
||||
parameter="default" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator />
|
||||
<menu_item_check
|
||||
label="Rotate Map"
|
||||
name="Rotate Map">
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@
|
|||
left_pad="2"
|
||||
name="cancel_button"
|
||||
top_delta="0"
|
||||
width="70" />
|
||||
width="65" />
|
||||
<string
|
||||
name="GroupInvitation">
|
||||
Group Invitation
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@
|
|||
name="map_button"
|
||||
top_delta="-4"
|
||||
left_pad="0"
|
||||
width="60"
|
||||
width="57"
|
||||
enabled="false" />
|
||||
<text
|
||||
type="string"
|
||||
|
|
|
|||
|
|
@ -296,6 +296,7 @@
|
|||
<check_box
|
||||
name="media_auto_play_btn"
|
||||
control_name="ParcelMediaAutoPlayEnable"
|
||||
enabled_control="AudioStreamingMedia"
|
||||
value="true"
|
||||
follows="left|bottom|right"
|
||||
height="15"
|
||||
|
|
|
|||
|
|
@ -25,13 +25,16 @@
|
|||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
// Precompiled header: almost always required for newview cpp files
|
||||
#include "../llviewerprecompiledheaders.h"
|
||||
// Dependencies
|
||||
#include "linden_common.h"
|
||||
#include "llapr.h"
|
||||
#include "llsingleton.h"
|
||||
#include "lltrans.h"
|
||||
#include "lluistring.h"
|
||||
#include "../llviewertexture.h"
|
||||
#include "../llworldmapmessage.h"
|
||||
// Class to test
|
||||
#include "../llworldmap.h"
|
||||
// Dependencies
|
||||
#include "../llviewerimagelist.h"
|
||||
#include "../llworldmapmessage.h"
|
||||
// Tut header
|
||||
#include "../test/lltut.h"
|
||||
|
||||
|
|
@ -44,34 +47,29 @@
|
|||
// * A simulator for a class can be implemented here. Please comment and document thoroughly.
|
||||
|
||||
// Stub image calls
|
||||
LLViewerImageList::LLViewerImageList() { }
|
||||
LLViewerImageList::~LLViewerImageList() { }
|
||||
LLViewerImageList gImageList;
|
||||
LLViewerImage* LLViewerImageList::getImage(const LLUUID &image_id,
|
||||
BOOL usemipmaps,
|
||||
BOOL level_immediate,
|
||||
LLGLint internal_format,
|
||||
LLGLenum primary_format,
|
||||
LLHost request_from_host)
|
||||
{ return NULL; }
|
||||
void LLViewerImage::setBoostLevel(S32 level) { }
|
||||
void LLImageGL::setAddressMode(LLTexUnit::eTextureAddressMode mode) { }
|
||||
void LLViewerTexture::setBoostLevel(S32 ) { }
|
||||
void LLViewerTexture::setAddressMode(LLTexUnit::eTextureAddressMode ) { }
|
||||
LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(const LLUUID&, BOOL, LLViewerTexture::EBoostLevel, S8,
|
||||
LLGLint, LLGLenum, LLHost ) { return NULL; }
|
||||
|
||||
// Stub related map calls
|
||||
LLWorldMapMessage::LLWorldMapMessage() { }
|
||||
LLWorldMapMessage::~LLWorldMapMessage() { }
|
||||
void LLWorldMapMessage::sendItemRequest(U32 type, U64 handle) { }
|
||||
void LLWorldMapMessage::sendMapBlockRequest(U16 min_x, U16 min_y, U16 max_x, U16 max_y, bool return_nonexistent) { }
|
||||
|
||||
LLWorldMipmap::LLWorldMipmap() { }
|
||||
LLWorldMipmap::~LLWorldMipmap() { }
|
||||
void LLWorldMipmap::reset() { }
|
||||
void LLWorldMipmap::dropBoostLevels() { }
|
||||
void LLWorldMipmap::equalizeBoostLevels() { }
|
||||
LLPointer<LLViewerImage> LLWorldMipmap::getObjectsTile(U32 grid_x, U32 grid_y, S32 level, bool load)
|
||||
{ return NULL; }
|
||||
LLPointer<LLViewerFetchedTexture> LLWorldMipmap::getObjectsTile(U32 grid_x, U32 grid_y, S32 level, bool load) { return NULL; }
|
||||
|
||||
// Stub other stuff
|
||||
BOOL gPacificDaylightTime;
|
||||
std::string LLTrans::getString(const std::string &, const LLStringUtil::format_map_t& ) { return std::string("test_trans"); }
|
||||
void LLUIString::updateResult() const { }
|
||||
void LLUIString::setArg(const std::string& , const std::string& ) { }
|
||||
void LLUIString::assign(const std::string& ) { }
|
||||
|
||||
// End Stubbing
|
||||
// -------------------------------------------------------------------------------------------
|
||||
|
|
@ -237,7 +235,7 @@ namespace tut
|
|||
// Test 9 : setLandForSaleImage() / getLandForSaleImage()
|
||||
LLUUID id;
|
||||
mSim->setLandForSaleImage(id);
|
||||
LLPointer<LLViewerImage> image = mSim->getLandForSaleImage();
|
||||
LLPointer<LLViewerFetchedTexture> image = mSim->getLandForSaleImage();
|
||||
ensure("LLSimInfo::getLandForSaleImage() test failed", image.isNull());
|
||||
// Test 10 : isPG()
|
||||
mSim->setAccess(SIM_ACCESS_PG);
|
||||
|
|
@ -370,7 +368,7 @@ namespace tut
|
|||
}
|
||||
// Test 7 : getObjectsTile()
|
||||
try {
|
||||
LLPointer<LLViewerImage> image = mWorld->getObjectsTile((U32)(X_WORLD_TEST/REGION_WIDTH_METERS), (U32)(Y_WORLD_TEST/REGION_WIDTH_METERS), 1);
|
||||
LLPointer<LLViewerFetchedTexture> image = mWorld->getObjectsTile((U32)(X_WORLD_TEST/REGION_WIDTH_METERS), (U32)(Y_WORLD_TEST/REGION_WIDTH_METERS), 1);
|
||||
ensure("LLWorldMap::getObjectsTile() failed", image.isNull());
|
||||
} catch (...) {
|
||||
fail("LLWorldMap::getObjectsTile() test failed with exception");
|
||||
|
|
|
|||
|
|
@ -25,12 +25,12 @@
|
|||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
// Precompiled header: almost always required for newview cpp files
|
||||
#include "../llviewerprecompiledheaders.h"
|
||||
// Dependencies
|
||||
#include "linden_common.h"
|
||||
#include "../llviewertexture.h"
|
||||
#include "../llviewercontrol.h"
|
||||
// Class to test
|
||||
#include "../llworldmipmap.h"
|
||||
// Dependencies
|
||||
#include "../llviewerimagelist.h"
|
||||
// Tut header
|
||||
#include "../test/lltut.h"
|
||||
|
||||
|
|
@ -42,19 +42,14 @@
|
|||
// * Do not make any assumption as to how those classes or methods work (i.e. don't copy/paste code)
|
||||
// * A simulator for a class can be implemented here. Please comment and document thoroughly.
|
||||
|
||||
LLViewerImageList::LLViewerImageList() { }
|
||||
LLViewerImageList::~LLViewerImageList() { }
|
||||
void LLViewerTexture::setBoostLevel(S32 ) { }
|
||||
LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string&, BOOL, LLViewerTexture::EBoostLevel, S8,
|
||||
LLGLint, LLGLenum, const LLUUID& ) { return NULL; }
|
||||
|
||||
LLViewerImageList gImageList;
|
||||
|
||||
LLViewerImage* LLViewerImageList::getImageFromUrl(const std::string& url,
|
||||
BOOL usemipmaps,
|
||||
BOOL level_immediate,
|
||||
LLGLint internal_format,
|
||||
LLGLenum primary_format,
|
||||
const LLUUID& force_id)
|
||||
{ return NULL; }
|
||||
void LLViewerImage::setBoostLevel(S32 level) { }
|
||||
LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLControlGroup, std::string>(name) { }
|
||||
LLControlGroup::~LLControlGroup() { }
|
||||
std::string LLControlGroup::getString(const std::string& ) { return std::string("test_url"); }
|
||||
LLControlGroup gSavedSettings("test_settings");
|
||||
|
||||
// End Stubbing
|
||||
// -------------------------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Reference in New Issue