summaryrefslogtreecommitdiff
path: root/indra/integration_tests
diff options
context:
space:
mode:
Diffstat (limited to 'indra/integration_tests')
-rw-r--r--indra/integration_tests/llimage_libtest/llimage_libtest.cpp992
-rw-r--r--indra/integration_tests/llimage_libtest/llimage_libtest.h10
-rw-r--r--indra/integration_tests/llui_libtest/llui_libtest.cpp262
-rw-r--r--indra/integration_tests/llui_libtest/llui_libtest.h10
-rw-r--r--indra/integration_tests/llui_libtest/llwidgetreg.cpp104
-rw-r--r--indra/integration_tests/llui_libtest/llwidgetreg.h14
6 files changed, 696 insertions, 696 deletions
diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
index f4dba16a94..95102094ae 100644
--- a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
@@ -1,4 +1,4 @@
-/**
+/**
* @file llimage_libtest.cpp
* @author Merov Linden
* @brief Integration test for the llimage library
@@ -6,21 +6,21 @@
* $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$
*/
@@ -47,7 +47,7 @@
// system libraries
#include <iostream>
-// doc string provided when invoking the program with --help
+// doc string provided when invoking the program with --help
static const char USAGE[] = "\n"
"usage:\tllimage_libtest [options]\n"
"\n"
@@ -105,541 +105,541 @@ static bool sAllDone = false;
// Create an empty formatted image instance of the correct type from the filename
LLPointer<LLImageFormatted> create_image(const std::string &filename)
{
- std::string exten = gDirUtilp->getExtension(filename);
- LLPointer<LLImageFormatted> image = LLImageFormatted::createFromExtension(exten);
- return image;
+ std::string exten = gDirUtilp->getExtension(filename);
+ LLPointer<LLImageFormatted> image = LLImageFormatted::createFromExtension(exten);
+ return image;
}
void output_image_stats(LLPointer<LLImageFormatted> image, const std::string &filename)
{
- // Print out some statistical data on the image
- std::cout << "Image stats for : " << filename << ", extension : " << image->getExtension() << std::endl;
+ // Print out some statistical data on the image
+ std::cout << "Image stats for : " << filename << ", extension : " << image->getExtension() << std::endl;
- std::cout << " with : " << (int)(image->getWidth()) << ", height : " << (int)(image->getHeight()) << std::endl;
- std::cout << " comp : " << (int)(image->getComponents()) << ", levels : " << (int)(image->getLevels()) << std::endl;
- std::cout << " head : " << (int)(image->calcHeaderSize()) << ", data : " << (int)(image->getDataSize()) << std::endl;
+ std::cout << " with : " << (int)(image->getWidth()) << ", height : " << (int)(image->getHeight()) << std::endl;
+ std::cout << " comp : " << (int)(image->getComponents()) << ", levels : " << (int)(image->getLevels()) << std::endl;
+ std::cout << " head : " << (int)(image->calcHeaderSize()) << ", data : " << (int)(image->getDataSize()) << std::endl;
- return;
+ return;
}
// Load an image from file and return a raw (decompressed) instance of its data
LLPointer<LLImageRaw> load_image(const std::string &src_filename, int discard_level, int* region, int load_size, bool output_stats)
{
- LLPointer<LLImageFormatted> image = create_image(src_filename);
-
- // We support partial loading only for j2c images
- if (image->getCodec() == IMG_CODEC_J2C)
- {
- // Load the header
- if (!image->load(src_filename, 600))
- {
- return NULL;
- }
- S32 h = ((LLImageJ2C*)(image.get()))->calcHeaderSize();
- S32 d = (load_size > 0 ? ((LLImageJ2C*)(image.get()))->calcDiscardLevelBytes(load_size) : 0);
- S8 r = ((LLImageJ2C*)(image.get()))->getRawDiscardLevel();
- std::cout << "Merov debug : header = " << h << ", load_size = " << load_size << ", discard level = " << d << ", raw discard level = " << r << std::endl;
- for (d = 0; d < MAX_DISCARD_LEVEL; d++)
- {
- S32 data_size = ((LLImageJ2C*)(image.get()))->calcDataSize(d);
- std::cout << "Merov debug : discard_level = " << d << ", data_size = " << data_size << std::endl;
- }
- if (load_size < 0)
- {
- load_size = (discard_level != -1 ? ((LLImageJ2C*)(image.get()))->calcDataSize(discard_level) : 0);
- }
- // Load the requested byte range
- if (!image->load(src_filename, load_size))
- {
- return NULL;
- }
- }
- else
- {
- // This just loads the image file stream into a buffer. No decoding done.
- 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;
- }
-
- if (output_stats)
- {
- output_image_stats(image, src_filename);
- }
-
- LLPointer<LLImageRaw> raw_image = new LLImageRaw;
-
- // Set the image restriction on load in the case of a j2c image
- if ((image->getCodec() == IMG_CODEC_J2C) && ((discard_level != -1) || (region != NULL)))
- {
- // That method doesn't exist (and likely, doesn't make sense) for any other image file format
- // hence the required cryptic cast.
- ((LLImageJ2C*)(image.get()))->initDecode(*raw_image, discard_level, region);
- }
-
- if (!image->decode(raw_image, 0.0f))
- {
- return NULL;
- }
-
- return raw_image;
+ LLPointer<LLImageFormatted> image = create_image(src_filename);
+
+ // We support partial loading only for j2c images
+ if (image->getCodec() == IMG_CODEC_J2C)
+ {
+ // Load the header
+ if (!image->load(src_filename, 600))
+ {
+ return NULL;
+ }
+ S32 h = ((LLImageJ2C*)(image.get()))->calcHeaderSize();
+ S32 d = (load_size > 0 ? ((LLImageJ2C*)(image.get()))->calcDiscardLevelBytes(load_size) : 0);
+ S8 r = ((LLImageJ2C*)(image.get()))->getRawDiscardLevel();
+ std::cout << "Merov debug : header = " << h << ", load_size = " << load_size << ", discard level = " << d << ", raw discard level = " << r << std::endl;
+ for (d = 0; d < MAX_DISCARD_LEVEL; d++)
+ {
+ S32 data_size = ((LLImageJ2C*)(image.get()))->calcDataSize(d);
+ std::cout << "Merov debug : discard_level = " << d << ", data_size = " << data_size << std::endl;
+ }
+ if (load_size < 0)
+ {
+ load_size = (discard_level != -1 ? ((LLImageJ2C*)(image.get()))->calcDataSize(discard_level) : 0);
+ }
+ // Load the requested byte range
+ if (!image->load(src_filename, load_size))
+ {
+ return NULL;
+ }
+ }
+ else
+ {
+ // This just loads the image file stream into a buffer. No decoding done.
+ 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;
+ }
+
+ if (output_stats)
+ {
+ output_image_stats(image, src_filename);
+ }
+
+ LLPointer<LLImageRaw> raw_image = new LLImageRaw;
+
+ // Set the image restriction on load in the case of a j2c image
+ if ((image->getCodec() == IMG_CODEC_J2C) && ((discard_level != -1) || (region != NULL)))
+ {
+ // That method doesn't exist (and likely, doesn't make sense) for any other image file format
+ // hence the required cryptic cast.
+ ((LLImageJ2C*)(image.get()))->initDecode(*raw_image, discard_level, region);
+ }
+
+ if (!image->decode(raw_image, 0.0f))
+ {
+ return NULL;
+ }
+
+ return raw_image;
}
// Save a raw image instance into a file
bool save_image(const std::string &dest_filename, LLPointer<LLImageRaw> raw_image, int blocks_size, int precincts_size, int levels, bool reversible, bool output_stats)
{
- LLPointer<LLImageFormatted> image = create_image(dest_filename);
-
- // Set the image codestream parameters on output in the case of a j2c image
- if (image->getCodec() == IMG_CODEC_J2C)
- {
- // That method doesn't exist (and likely, doesn't make sense) for any other image file format
- // hence the required cryptic cast.
- if ((blocks_size != -1) || (precincts_size != -1) || (levels != 0))
- {
- ((LLImageJ2C*)(image.get()))->initEncode(*raw_image, blocks_size, precincts_size, levels);
- }
- ((LLImageJ2C*)(image.get()))->setReversible(reversible);
- }
-
- if (!image->encode(raw_image, 0.0f))
- {
- return false;
- }
-
- if (output_stats)
- {
- output_image_stats(image, dest_filename);
- }
-
- return image->save(dest_filename);
+ LLPointer<LLImageFormatted> image = create_image(dest_filename);
+
+ // Set the image codestream parameters on output in the case of a j2c image
+ if (image->getCodec() == IMG_CODEC_J2C)
+ {
+ // That method doesn't exist (and likely, doesn't make sense) for any other image file format
+ // hence the required cryptic cast.
+ if ((blocks_size != -1) || (precincts_size != -1) || (levels != 0))
+ {
+ ((LLImageJ2C*)(image.get()))->initEncode(*raw_image, blocks_size, precincts_size, levels);
+ }
+ ((LLImageJ2C*)(image.get()))->setReversible(reversible);
+ }
+
+ if (!image->encode(raw_image, 0.0f))
+ {
+ return false;
+ }
+
+ if (output_stats)
+ {
+ output_image_stats(image, dest_filename);
+ }
+
+ return image->save(dest_filename);
}
void store_input_file(std::list<std::string> &input_filenames, const std::string &path)
{
- // Break the incoming path in its components
- std::string dir = gDirUtilp->getDirName(path);
- std::string name = gDirUtilp->getBaseFileName(path);
- std::string exten = gDirUtilp->getExtension(path);
-
- // std::cout << "store_input_file : " << path << ", dir : " << dir << ", name : " << name << ", exten : " << exten << std::endl;
-
- // If extension is not an image type or "*", exit
- // Note: we don't support complex patterns for the extension like "j??"
- // Note: on most shells, the pattern expansion is done by the shell so that pattern matching limitation is actually not a problem
- if ((exten.compare("*") != 0) && (LLImageBase::getCodecFromExtension(exten) == IMG_CODEC_INVALID))
- {
- return;
- }
-
- if ((name.find('*') != -1) || ((name.find('?') != -1)))
- {
- // If file name is a pattern, iterate to get each file name and store
- std::string next_name;
- LLDirIterator iter(dir, name);
- while (iter.next(next_name))
- {
- std::string file_name = gDirUtilp->add(dir, next_name);
- input_filenames.push_back(file_name);
- }
- }
- else
- {
- // Verify that the file does exist before storing
- if (gDirUtilp->fileExists(path))
- {
- input_filenames.push_back(path);
- }
- else
- {
- std::cout << "store_input_file : the file " << path << " could not be found" << std::endl;
- }
- }
+ // Break the incoming path in its components
+ std::string dir = gDirUtilp->getDirName(path);
+ std::string name = gDirUtilp->getBaseFileName(path);
+ std::string exten = gDirUtilp->getExtension(path);
+
+ // std::cout << "store_input_file : " << path << ", dir : " << dir << ", name : " << name << ", exten : " << exten << std::endl;
+
+ // If extension is not an image type or "*", exit
+ // Note: we don't support complex patterns for the extension like "j??"
+ // Note: on most shells, the pattern expansion is done by the shell so that pattern matching limitation is actually not a problem
+ if ((exten.compare("*") != 0) && (LLImageBase::getCodecFromExtension(exten) == IMG_CODEC_INVALID))
+ {
+ return;
+ }
+
+ if ((name.find('*') != -1) || ((name.find('?') != -1)))
+ {
+ // If file name is a pattern, iterate to get each file name and store
+ std::string next_name;
+ LLDirIterator iter(dir, name);
+ while (iter.next(next_name))
+ {
+ std::string file_name = gDirUtilp->add(dir, next_name);
+ input_filenames.push_back(file_name);
+ }
+ }
+ else
+ {
+ // Verify that the file does exist before storing
+ if (gDirUtilp->fileExists(path))
+ {
+ input_filenames.push_back(path);
+ }
+ else
+ {
+ std::cout << "store_input_file : the file " << path << " could not be found" << std::endl;
+ }
+ }
}
void store_output_file(std::list<std::string> &output_filenames, std::list<std::string> &input_filenames, const std::string &path)
{
- // Break the incoming path in its components
- std::string dir = gDirUtilp->getDirName(path);
- std::string name = gDirUtilp->getBaseFileName(path);
- std::string exten = gDirUtilp->getExtension(path);
-
- // std::cout << "store_output_file : " << path << ", dir : " << dir << ", name : " << name << ", exten : " << exten << std::endl;
-
- if (dir.empty() && exten.empty())
- {
- // If dir and exten are empty, we interpret the name as a file extension type name and will iterate through input list to populate the output list
- exten = name;
- // Make sure the extension is an image type
- if (LLImageBase::getCodecFromExtension(exten) == IMG_CODEC_INVALID)
- {
- return;
- }
- std::string delim = gDirUtilp->getDirDelimiter();
- std::list<std::string>::iterator in_file = input_filenames.begin();
- std::list<std::string>::iterator end = input_filenames.end();
- for (; in_file != end; ++in_file)
- {
- dir = gDirUtilp->getDirName(*in_file);
- name = gDirUtilp->getBaseFileName(*in_file,true);
- std::string file_name;
- if (!dir.empty())
- {
- file_name = dir + delim + name + "." + exten;
- }
- else
- {
- file_name = name + "." + exten;
- }
- output_filenames.push_back(file_name);
- }
- }
- else
- {
- // Make sure the extension is an image type
- if (LLImageBase::getCodecFromExtension(exten) == IMG_CODEC_INVALID)
- {
- return;
- }
- // Store the path
- output_filenames.push_back(path);
- }
+ // Break the incoming path in its components
+ std::string dir = gDirUtilp->getDirName(path);
+ std::string name = gDirUtilp->getBaseFileName(path);
+ std::string exten = gDirUtilp->getExtension(path);
+
+ // std::cout << "store_output_file : " << path << ", dir : " << dir << ", name : " << name << ", exten : " << exten << std::endl;
+
+ if (dir.empty() && exten.empty())
+ {
+ // If dir and exten are empty, we interpret the name as a file extension type name and will iterate through input list to populate the output list
+ exten = name;
+ // Make sure the extension is an image type
+ if (LLImageBase::getCodecFromExtension(exten) == IMG_CODEC_INVALID)
+ {
+ return;
+ }
+ std::string delim = gDirUtilp->getDirDelimiter();
+ std::list<std::string>::iterator in_file = input_filenames.begin();
+ std::list<std::string>::iterator end = input_filenames.end();
+ for (; in_file != end; ++in_file)
+ {
+ dir = gDirUtilp->getDirName(*in_file);
+ name = gDirUtilp->getBaseFileName(*in_file,true);
+ std::string file_name;
+ if (!dir.empty())
+ {
+ file_name = dir + delim + name + "." + exten;
+ }
+ else
+ {
+ file_name = name + "." + exten;
+ }
+ output_filenames.push_back(file_name);
+ }
+ }
+ else
+ {
+ // Make sure the extension is an image type
+ if (LLImageBase::getCodecFromExtension(exten) == IMG_CODEC_INVALID)
+ {
+ return;
+ }
+ // Store the path
+ output_filenames.push_back(path);
+ }
}
// Holds the metric gathering output in a thread safe way
class LogThread : public LLThread
{
public:
- std::string mFile;
-
- LogThread(std::string& test_name) : LLThread("llimage_libtest log")
- {
- std::string file_name = test_name + std::string(".slp");
- mFile = file_name;
- }
-
- void run()
- {
- std::ofstream os(mFile.c_str());
-
- while (!sAllDone)
- {
- LLFastTimer::writeLog(os);
- os.flush();
- ms_sleep(32);
- }
- LLFastTimer::writeLog(os);
- os.flush();
- os.close();
- }
+ std::string mFile;
+
+ LogThread(std::string& test_name) : LLThread("llimage_libtest log")
+ {
+ std::string file_name = test_name + std::string(".slp");
+ mFile = file_name;
+ }
+
+ void run()
+ {
+ std::ofstream os(mFile.c_str());
+
+ while (!sAllDone)
+ {
+ LLFastTimer::writeLog(os);
+ os.flush();
+ ms_sleep(32);
+ }
+ LLFastTimer::writeLog(os);
+ os.flush();
+ os.close();
+ }
};
int main(int argc, char** argv)
{
- // List of input and output files
- std::list<std::string> input_filenames;
- std::list<std::string> output_filenames;
- // Other optional parsed arguments
- bool analyze_performance = false;
- bool image_stats = false;
- int* region = NULL;
- int discard_level = -1;
- int load_size = 0;
- int precincts_size = -1;
- int blocks_size = -1;
- int levels = 0;
- bool reversible = false;
+ // List of input and output files
+ std::list<std::string> input_filenames;
+ std::list<std::string> output_filenames;
+ // Other optional parsed arguments
+ bool analyze_performance = false;
+ bool image_stats = false;
+ int* region = NULL;
+ int discard_level = -1;
+ int load_size = 0;
+ int precincts_size = -1;
+ int blocks_size = -1;
+ int levels = 0;
+ bool reversible = false;
std::string filter_name = "";
- // Init whatever is necessary
- ll_init_apr();
- LLImage::initClass();
- LogThread* fast_timer_log_thread = NULL; // For performance and metric gathering
+ // Init whatever is necessary
+ ll_init_apr();
+ LLImage::initClass();
+ LogThread* fast_timer_log_thread = NULL; // For performance and metric gathering
- // Analyze command line arguments
- for (int arg = 1; arg < argc; ++arg)
- {
- if (!strcmp(argv[arg], "--help") || !strcmp(argv[arg], "-h"))
- {
+ // Analyze command line arguments
+ for (int arg = 1; arg < argc; ++arg)
+ {
+ if (!strcmp(argv[arg], "--help") || !strcmp(argv[arg], "-h"))
+ {
// Send the usage to standard out
std::cout << USAGE << std::endl;
- return 0;
- }
- else if ((!strcmp(argv[arg], "--input") || !strcmp(argv[arg], "-i")) && arg < argc-1)
- {
- std::string file_name = argv[arg+1];
- while (file_name[0] != '-') // if arg starts with '-', we consider it's not a file name but some other argument
- {
- // std::cout << "input file name : " << file_name << std::endl;
- store_input_file(input_filenames, file_name);
- arg += 1; // Skip that arg now we know it's a file name
- if ((arg + 1) == argc) // Break out of the loop if we reach the end of the arg list
- break;
- file_name = argv[arg+1]; // Next argument and loop over
- }
- }
- else if ((!strcmp(argv[arg], "--output") || !strcmp(argv[arg], "-o")) && arg < argc-1)
- {
- std::string file_name = argv[arg+1];
- while (file_name[0] != '-') // if arg starts with '-', we consider it's not a file name but some other argument
- {
- // std::cout << "output file name : " << file_name << std::endl;
- store_output_file(output_filenames, input_filenames, file_name);
- arg += 1; // Skip that arg now we know it's a file name
- if ((arg + 1) == argc) // Break out of the loop if we reach the end of the arg list
- break;
- file_name = argv[arg+1]; // Next argument and loop over
- }
- }
- else if ((!strcmp(argv[arg], "--region") || !strcmp(argv[arg], "-r")) && arg < argc-1)
- {
- std::string value_str = argv[arg+1];
- int index = 0;
- region = new int[4];
- while (value_str[0] != '-') // if arg starts with '-', it's the next option
- {
- int value = atoi(value_str.c_str());
- region[index++] = value;
- arg += 1; // Definitely skip that arg now we know it's a number
- if ((arg + 1) == argc) // Break out of the loop if we reach the end of the arg list
- break;
- if (index == 4) // Break out of the loop if we captured 4 values already
- break;
- value_str = argv[arg+1]; // Next argument and loop over
- }
- if (index != 4)
- {
- std::cout << "--region arguments invalid" << std::endl;
- delete [] region;
- region = NULL;
- }
- }
- else if (!strcmp(argv[arg], "--discard_level") || !strcmp(argv[arg], "-d"))
- {
- std::string value_str;
- if ((arg + 1) < argc)
- {
- value_str = argv[arg+1];
- }
- if (((arg + 1) >= argc) || (value_str[0] == '-'))
- {
- std::cout << "No valid --discard_level argument given, discard_level ignored" << std::endl;
- }
- else
- {
- discard_level = atoi(value_str.c_str());
- // Clamp to the values accepted by the viewer
- discard_level = llclamp(discard_level,0,5);
- }
- }
- else if (!strcmp(argv[arg], "--load_size") || !strcmp(argv[arg], "-load"))
- {
- std::string value_str;
- if ((arg + 1) < argc)
- {
- value_str = argv[arg+1];
- }
- if (((arg + 1) >= argc) || (value_str[0] == '-'))
- {
- std::cout << "No valid --load_size argument given, load_size ignored" << std::endl;
- }
- else
- {
- load_size = atoi(value_str.c_str());
- }
- }
- else if (!strcmp(argv[arg], "--precincts") || !strcmp(argv[arg], "-p"))
- {
- std::string value_str;
- if ((arg + 1) < argc)
- {
- value_str = argv[arg+1];
- }
- if (((arg + 1) >= argc) || (value_str[0] == '-'))
- {
- std::cout << "No valid --precincts argument given, precincts ignored" << std::endl;
- }
- else
- {
- precincts_size = atoi(value_str.c_str());
- }
- }
- else if (!strcmp(argv[arg], "--blocks") || !strcmp(argv[arg], "-b"))
- {
- std::string value_str;
- if ((arg + 1) < argc)
- {
- value_str = argv[arg+1];
- }
- if (((arg + 1) >= argc) || (value_str[0] == '-'))
- {
- std::cout << "No valid --blocks argument given, blocks ignored" << std::endl;
- }
- else
- {
- blocks_size = atoi(value_str.c_str());
- }
- }
- else if (!strcmp(argv[arg], "--levels") || !strcmp(argv[arg], "-l"))
- {
- std::string value_str;
- if ((arg + 1) < argc)
- {
- value_str = argv[arg+1];
- }
- if (((arg + 1) >= argc) || (value_str[0] == '-'))
- {
- std::cout << "No valid --levels argument given, default (5) will be used" << std::endl;
- }
- else
- {
- levels = atoi(value_str.c_str());
- }
- }
- else if (!strcmp(argv[arg], "--reversible") || !strcmp(argv[arg], "-rev"))
- {
- reversible = true;
- }
- else if (!strcmp(argv[arg], "--logmetrics") || !strcmp(argv[arg], "-log"))
- {
- // '--logmetrics' needs to be specified with a named test metric argument
- // Note: for the moment, only ImageCompressionTester has been tested
- std::string test_name;
- if ((arg + 1) < argc)
- {
- test_name = argv[arg+1];
- }
- if (((arg + 1) >= argc) || (test_name[0] == '-'))
- {
- // We don't have an argument left in the arg list or the next argument is another option
- std::cout << "No --logmetrics argument given, no perf data will be gathered" << std::endl;
- }
- else
- {
- LLFastTimer::sMetricLog = TRUE;
- LLFastTimer::sLogName = test_name;
- arg += 1; // Skip that arg now we know it's a valid test name
- if ((arg + 1) == argc) // Break out of the loop if we reach the end of the arg list
- break;
- }
- }
- else if (!strcmp(argv[arg], "--filter") || !strcmp(argv[arg], "-f"))
- {
- // '--filter' needs to be specified with a named filter argument
- if ((arg + 1) < argc)
- {
- filter_name = argv[arg+1];
- }
- if (((arg + 1) >= argc) || (filter_name[0] == '-'))
- {
- // We don't have an argument left in the arg list or the next argument is another option
- std::cout << "No --filter argument given, no filter will be applied" << std::endl;
- }
- else
- {
- arg += 1; // Skip that arg now we know it's a valid test name
- if ((arg + 1) == argc) // Break out of the loop if we reach the end of the arg list
- break;
+ return 0;
+ }
+ else if ((!strcmp(argv[arg], "--input") || !strcmp(argv[arg], "-i")) && arg < argc-1)
+ {
+ std::string file_name = argv[arg+1];
+ while (file_name[0] != '-') // if arg starts with '-', we consider it's not a file name but some other argument
+ {
+ // std::cout << "input file name : " << file_name << std::endl;
+ store_input_file(input_filenames, file_name);
+ arg += 1; // Skip that arg now we know it's a file name
+ if ((arg + 1) == argc) // Break out of the loop if we reach the end of the arg list
+ break;
+ file_name = argv[arg+1]; // Next argument and loop over
+ }
+ }
+ else if ((!strcmp(argv[arg], "--output") || !strcmp(argv[arg], "-o")) && arg < argc-1)
+ {
+ std::string file_name = argv[arg+1];
+ while (file_name[0] != '-') // if arg starts with '-', we consider it's not a file name but some other argument
+ {
+ // std::cout << "output file name : " << file_name << std::endl;
+ store_output_file(output_filenames, input_filenames, file_name);
+ arg += 1; // Skip that arg now we know it's a file name
+ if ((arg + 1) == argc) // Break out of the loop if we reach the end of the arg list
+ break;
+ file_name = argv[arg+1]; // Next argument and loop over
+ }
+ }
+ else if ((!strcmp(argv[arg], "--region") || !strcmp(argv[arg], "-r")) && arg < argc-1)
+ {
+ std::string value_str = argv[arg+1];
+ int index = 0;
+ region = new int[4];
+ while (value_str[0] != '-') // if arg starts with '-', it's the next option
+ {
+ int value = atoi(value_str.c_str());
+ region[index++] = value;
+ arg += 1; // Definitely skip that arg now we know it's a number
+ if ((arg + 1) == argc) // Break out of the loop if we reach the end of the arg list
+ break;
+ if (index == 4) // Break out of the loop if we captured 4 values already
+ break;
+ value_str = argv[arg+1]; // Next argument and loop over
+ }
+ if (index != 4)
+ {
+ std::cout << "--region arguments invalid" << std::endl;
+ delete [] region;
+ region = NULL;
+ }
+ }
+ else if (!strcmp(argv[arg], "--discard_level") || !strcmp(argv[arg], "-d"))
+ {
+ std::string value_str;
+ if ((arg + 1) < argc)
+ {
+ value_str = argv[arg+1];
+ }
+ if (((arg + 1) >= argc) || (value_str[0] == '-'))
+ {
+ std::cout << "No valid --discard_level argument given, discard_level ignored" << std::endl;
+ }
+ else
+ {
+ discard_level = atoi(value_str.c_str());
+ // Clamp to the values accepted by the viewer
+ discard_level = llclamp(discard_level,0,5);
}
- }
+ }
+ else if (!strcmp(argv[arg], "--load_size") || !strcmp(argv[arg], "-load"))
+ {
+ std::string value_str;
+ if ((arg + 1) < argc)
+ {
+ value_str = argv[arg+1];
+ }
+ if (((arg + 1) >= argc) || (value_str[0] == '-'))
+ {
+ std::cout << "No valid --load_size argument given, load_size ignored" << std::endl;
+ }
+ else
+ {
+ load_size = atoi(value_str.c_str());
+ }
+ }
+ else if (!strcmp(argv[arg], "--precincts") || !strcmp(argv[arg], "-p"))
+ {
+ std::string value_str;
+ if ((arg + 1) < argc)
+ {
+ value_str = argv[arg+1];
+ }
+ if (((arg + 1) >= argc) || (value_str[0] == '-'))
+ {
+ std::cout << "No valid --precincts argument given, precincts ignored" << std::endl;
+ }
+ else
+ {
+ precincts_size = atoi(value_str.c_str());
+ }
+ }
+ else if (!strcmp(argv[arg], "--blocks") || !strcmp(argv[arg], "-b"))
+ {
+ std::string value_str;
+ if ((arg + 1) < argc)
+ {
+ value_str = argv[arg+1];
+ }
+ if (((arg + 1) >= argc) || (value_str[0] == '-'))
+ {
+ std::cout << "No valid --blocks argument given, blocks ignored" << std::endl;
+ }
+ else
+ {
+ blocks_size = atoi(value_str.c_str());
+ }
+ }
+ else if (!strcmp(argv[arg], "--levels") || !strcmp(argv[arg], "-l"))
+ {
+ std::string value_str;
+ if ((arg + 1) < argc)
+ {
+ value_str = argv[arg+1];
+ }
+ if (((arg + 1) >= argc) || (value_str[0] == '-'))
+ {
+ std::cout << "No valid --levels argument given, default (5) will be used" << std::endl;
+ }
+ else
+ {
+ levels = atoi(value_str.c_str());
+ }
+ }
+ else if (!strcmp(argv[arg], "--reversible") || !strcmp(argv[arg], "-rev"))
+ {
+ reversible = true;
+ }
+ else if (!strcmp(argv[arg], "--logmetrics") || !strcmp(argv[arg], "-log"))
+ {
+ // '--logmetrics' needs to be specified with a named test metric argument
+ // Note: for the moment, only ImageCompressionTester has been tested
+ std::string test_name;
+ if ((arg + 1) < argc)
+ {
+ test_name = argv[arg+1];
+ }
+ if (((arg + 1) >= argc) || (test_name[0] == '-'))
+ {
+ // We don't have an argument left in the arg list or the next argument is another option
+ std::cout << "No --logmetrics argument given, no perf data will be gathered" << std::endl;
+ }
+ else
+ {
+ LLFastTimer::sMetricLog = TRUE;
+ LLFastTimer::sLogName = test_name;
+ arg += 1; // Skip that arg now we know it's a valid test name
+ if ((arg + 1) == argc) // Break out of the loop if we reach the end of the arg list
+ break;
+ }
+ }
+ else if (!strcmp(argv[arg], "--filter") || !strcmp(argv[arg], "-f"))
+ {
+ // '--filter' needs to be specified with a named filter argument
+ if ((arg + 1) < argc)
+ {
+ filter_name = argv[arg+1];
+ }
+ if (((arg + 1) >= argc) || (filter_name[0] == '-'))
+ {
+ // We don't have an argument left in the arg list or the next argument is another option
+ std::cout << "No --filter argument given, no filter will be applied" << std::endl;
+ }
+ else
+ {
+ arg += 1; // Skip that arg now we know it's a valid test name
+ if ((arg + 1) == argc) // Break out of the loop if we reach the end of the arg list
+ break;
+ }
+ }
else if (!strcmp(argv[arg], "--analyzeperformance") || !strcmp(argv[arg], "-a"))
- {
- analyze_performance = true;
- }
- else if (!strcmp(argv[arg], "--image-stats") || !strcmp(argv[arg], "-s"))
- {
- image_stats = true;
- }
- }
-
- // Check arguments consistency. Exit with proper message if inconsistent.
- if (input_filenames.size() == 0)
- {
- std::cout << "No input file, nothing to do -> exit" << std::endl;
- return 0;
- }
- if (analyze_performance && !LLFastTimer::sMetricLog)
- {
- std::cout << "Cannot create perf report if no perf gathered (i.e. use argument -log <perf> with -a) -> exit" << std::endl;
- return 0;
- }
-
-
- // Create the logging thread if required
- if (LLFastTimer::sMetricLog)
- {
- LLFastTimer::sLogLock = new LLMutex(NULL);
- fast_timer_log_thread = new LogThread(LLFastTimer::sLogName);
- fast_timer_log_thread->start();
- }
-
+ {
+ analyze_performance = true;
+ }
+ else if (!strcmp(argv[arg], "--image-stats") || !strcmp(argv[arg], "-s"))
+ {
+ image_stats = true;
+ }
+ }
+
+ // Check arguments consistency. Exit with proper message if inconsistent.
+ if (input_filenames.size() == 0)
+ {
+ std::cout << "No input file, nothing to do -> exit" << std::endl;
+ return 0;
+ }
+ if (analyze_performance && !LLFastTimer::sMetricLog)
+ {
+ std::cout << "Cannot create perf report if no perf gathered (i.e. use argument -log <perf> with -a) -> exit" << std::endl;
+ return 0;
+ }
+
+
+ // Create the logging thread if required
+ if (LLFastTimer::sMetricLog)
+ {
+ LLFastTimer::sLogLock = new LLMutex(NULL);
+ fast_timer_log_thread = new LogThread(LLFastTimer::sLogName);
+ fast_timer_log_thread->start();
+ }
+
// Load the filter once and for all
LLImageFilter filter(filter_name);
- // Perform action on each input file
- std::list<std::string>::iterator in_file = input_filenames.begin();
- std::list<std::string>::iterator out_file = output_filenames.begin();
- std::list<std::string>::iterator in_end = input_filenames.end();
- std::list<std::string>::iterator out_end = output_filenames.end();
- for (; in_file != in_end; ++in_file, ++out_file)
- {
- // Load file
- LLPointer<LLImageRaw> raw_image = load_image(*in_file, discard_level, region, load_size, image_stats);
- if (!raw_image)
- {
- std::cout << "Error: Image " << *in_file << " could not be loaded" << std::endl;
- continue;
- }
-
+ // Perform action on each input file
+ std::list<std::string>::iterator in_file = input_filenames.begin();
+ std::list<std::string>::iterator out_file = output_filenames.begin();
+ std::list<std::string>::iterator in_end = input_filenames.end();
+ std::list<std::string>::iterator out_end = output_filenames.end();
+ for (; in_file != in_end; ++in_file, ++out_file)
+ {
+ // Load file
+ LLPointer<LLImageRaw> raw_image = load_image(*in_file, discard_level, region, load_size, image_stats);
+ if (!raw_image)
+ {
+ std::cout << "Error: Image " << *in_file << " could not be loaded" << std::endl;
+ continue;
+ }
+
// Apply the filter
filter.executeFilter(raw_image);
- // Save file
- if (out_file != out_end)
- {
- if (!save_image(*out_file, raw_image, blocks_size, precincts_size, levels, reversible, image_stats))
- {
- std::cout << "Error: Image " << *out_file << " could not be saved" << std::endl;
- }
- else
- {
- std::cout << *in_file << " -> " << *out_file << std::endl;
- }
- }
- }
-
- // Output perf data if requested by user
- if (analyze_performance)
- {
- std::string baseline_name = LLFastTimer::sLogName + "_baseline.slp";
- std::string current_name = LLFastTimer::sLogName + ".slp";
- std::string report_name = LLFastTimer::sLogName + "_report.csv";
-
- std::cout << "Analyzing performance, check report in : " << report_name << std::endl;
-
- LLMetricPerformanceTesterBasic::doAnalysisMetrics(baseline_name, current_name, report_name);
- }
-
- // Stop the perf gathering system if needed
- if (LLFastTimer::sMetricLog)
- {
- LLMetricPerformanceTesterBasic::deleteTester(LLFastTimer::sLogName);
- sAllDone = true;
- }
-
- // Cleanup and exit
- SUBSYSTEM_CLEANUP(LLImage);
- if (fast_timer_log_thread)
- {
- fast_timer_log_thread->shutdown();
- }
-
- return 0;
+ // Save file
+ if (out_file != out_end)
+ {
+ if (!save_image(*out_file, raw_image, blocks_size, precincts_size, levels, reversible, image_stats))
+ {
+ std::cout << "Error: Image " << *out_file << " could not be saved" << std::endl;
+ }
+ else
+ {
+ std::cout << *in_file << " -> " << *out_file << std::endl;
+ }
+ }
+ }
+
+ // Output perf data if requested by user
+ if (analyze_performance)
+ {
+ std::string baseline_name = LLFastTimer::sLogName + "_baseline.slp";
+ std::string current_name = LLFastTimer::sLogName + ".slp";
+ std::string report_name = LLFastTimer::sLogName + "_report.csv";
+
+ std::cout << "Analyzing performance, check report in : " << report_name << std::endl;
+
+ LLMetricPerformanceTesterBasic::doAnalysisMetrics(baseline_name, current_name, report_name);
+ }
+
+ // Stop the perf gathering system if needed
+ if (LLFastTimer::sMetricLog)
+ {
+ LLMetricPerformanceTesterBasic::deleteTester(LLFastTimer::sLogName);
+ sAllDone = true;
+ }
+
+ // Cleanup and exit
+ SUBSYSTEM_CLEANUP(LLImage);
+ if (fast_timer_log_thread)
+ {
+ fast_timer_log_thread->shutdown();
+ }
+
+ return 0;
}
diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.h b/indra/integration_tests/llimage_libtest/llimage_libtest.h
index 63f3d46b50..75fd5a50ae 100644
--- a/indra/integration_tests/llimage_libtest/llimage_libtest.h
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.h
@@ -1,24 +1,24 @@
-/**
+/**
* @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$
*/
diff --git a/indra/integration_tests/llui_libtest/llui_libtest.cpp b/indra/integration_tests/llui_libtest/llui_libtest.cpp
index a0418f09d5..efb9c47a91 100644
--- a/indra/integration_tests/llui_libtest/llui_libtest.cpp
+++ b/indra/integration_tests/llui_libtest/llui_libtest.cpp
@@ -1,25 +1,25 @@
-/**
+/**
* @file llui_libtest.cpp
* @brief Integration test for the LLUI library
*
* $LicenseInfo:firstyear=2009&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$
*/
@@ -31,7 +31,7 @@
#include "llwidgetreg.h"
// linden library includes
-#include "llcontrol.h" // LLControlGroup
+#include "llcontrol.h" // LLControlGroup
#include "lldir.h"
#include "lldiriterator.h"
#include "llerrorcontrol.h"
@@ -48,29 +48,29 @@
// *TODO: teach Parabuild about this program, run automatically after full builds
// I believe these must be globals, not stack variables. JC
-LLControlGroup gSavedSettings("Global"); // saved at end of session
+LLControlGroup gSavedSettings("Global"); // saved at end of session
LLControlGroup gSavedPerAccountSettings("PerAccount"); // saved at end of session
LLControlGroup gWarningSettings("Warnings"); // persists ignored dialogs/warnings
-// We can't create LLImageGL objects because we have no window or rendering
+// We can't create LLImageGL objects because we have no window or rendering
// context. Provide enough of an LLUIImage to test the LLUI library without
// an underlying image.
class TestUIImage : public LLUIImage
{
public:
- TestUIImage()
- : LLUIImage( std::string(), NULL ) // NULL ImageGL, don't deref!
- { }
-
- /*virtual*/ S32 getWidth() const
- {
- return 16;
- }
-
- /*virtual*/ S32 getHeight() const
- {
- return 16;
- }
+ TestUIImage()
+ : LLUIImage( std::string(), NULL ) // NULL ImageGL, don't deref!
+ { }
+
+ /*virtual*/ S32 getWidth() const
+ {
+ return 16;
+ }
+
+ /*virtual*/ S32 getHeight() const
+ {
+ return 16;
+ }
};
@@ -79,138 +79,138 @@ class LLTexture ;
class TestImageProvider : public LLImageProviderInterface
{
public:
- /*virtual*/ LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority)
- {
- return makeImage();
- }
-
- /*virtual*/ LLPointer<LLUIImage> getUIImageByID(const LLUUID& id, S32 priority)
- {
- return makeImage();
- }
-
- /*virtual*/ void cleanUp()
- {
- }
-
- LLPointer<LLUIImage> makeImage()
- {
- LLPointer<LLTexture> image_gl;
- LLPointer<LLUIImage> image = new TestUIImage(); //LLUIImage( std::string(), image_gl);
- mImageList.push_back(image);
- return image;
- }
-
+ /*virtual*/ LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority)
+ {
+ return makeImage();
+ }
+
+ /*virtual*/ LLPointer<LLUIImage> getUIImageByID(const LLUUID& id, S32 priority)
+ {
+ return makeImage();
+ }
+
+ /*virtual*/ void cleanUp()
+ {
+ }
+
+ LLPointer<LLUIImage> makeImage()
+ {
+ LLPointer<LLTexture> image_gl;
+ LLPointer<LLUIImage> image = new TestUIImage(); //LLUIImage( std::string(), image_gl);
+ mImageList.push_back(image);
+ return image;
+ }
+
public:
- // Unclear if we need this, hold on to one copy of each image we make
- std::vector<LLPointer<LLUIImage> > mImageList;
+ // Unclear if we need this, hold on to one copy of each image we make
+ std::vector<LLPointer<LLUIImage> > mImageList;
};
TestImageProvider gTestImageProvider;
void init_llui()
{
- // Font lookup needs directory support
+ // Font lookup needs directory support
#if LL_DARWIN
- const char* newview_path = "../../../../newview";
+ const char* newview_path = "../../../../newview";
#else
- const char* newview_path = "../../../newview";
+ const char* newview_path = "../../../newview";
#endif
- gDirUtilp->initAppDirs("SecondLife", newview_path);
- gDirUtilp->setSkinFolder("default", "en");
-
- // colors are no longer stored in a LLControlGroup file
- LLUIColorTable::instance().loadFromSettings();
-
- std::string config_filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "settings.xml");
- gSavedSettings.loadFromFile(config_filename);
-
- // See LLAppViewer::init()
- LLUI::settings_map_t settings;
- settings["config"] = &gSavedSettings;
- settings["ignores"] = &gWarningSettings;
- settings["floater"] = &gSavedSettings;
- settings["account"] = &gSavedPerAccountSettings;
-
- // Don't use real images as we don't have a GL context
- LLUI::initClass(settings, &gTestImageProvider);
-
- const bool no_register_widgets = false;
- LLWidgetReg::initClass( no_register_widgets );
-
- // Otherwise we get translation warnings when setting up floaters
- // (tooltips for buttons)
- std::set<std::string> default_args;
- LLTransUtil::parseStrings("strings.xml", default_args);
- LLTransUtil::parseLanguageStrings("language_settings.xml");
- LLFontManager::initClass();
-
- // Creating widgets apparently requires fonts to be initialized,
- // otherwise it crashes.
- LLFontGL::initClass(96.f, 1.f, 1.f,
- gDirUtilp->getAppRODataDir(),
- false ); // don't create gl textures
-
- LLFloaterView::Params fvparams;
- fvparams.name("Floater View");
- fvparams.rect( LLRect(0,480,640,0) );
- fvparams.mouse_opaque(false);
- fvparams.follows.flags(FOLLOWS_ALL);
- fvparams.tab_stop(false);
- gFloaterView = LLUICtrlFactory::create<LLFloaterView> (fvparams);
+ gDirUtilp->initAppDirs("SecondLife", newview_path);
+ gDirUtilp->setSkinFolder("default", "en");
+
+ // colors are no longer stored in a LLControlGroup file
+ LLUIColorTable::instance().loadFromSettings();
+
+ std::string config_filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "settings.xml");
+ gSavedSettings.loadFromFile(config_filename);
+
+ // See LLAppViewer::init()
+ LLUI::settings_map_t settings;
+ settings["config"] = &gSavedSettings;
+ settings["ignores"] = &gWarningSettings;
+ settings["floater"] = &gSavedSettings;
+ settings["account"] = &gSavedPerAccountSettings;
+
+ // Don't use real images as we don't have a GL context
+ LLUI::initClass(settings, &gTestImageProvider);
+
+ const bool no_register_widgets = false;
+ LLWidgetReg::initClass( no_register_widgets );
+
+ // Otherwise we get translation warnings when setting up floaters
+ // (tooltips for buttons)
+ std::set<std::string> default_args;
+ LLTransUtil::parseStrings("strings.xml", default_args);
+ LLTransUtil::parseLanguageStrings("language_settings.xml");
+ LLFontManager::initClass();
+
+ // Creating widgets apparently requires fonts to be initialized,
+ // otherwise it crashes.
+ LLFontGL::initClass(96.f, 1.f, 1.f,
+ gDirUtilp->getAppRODataDir(),
+ false ); // don't create gl textures
+
+ LLFloaterView::Params fvparams;
+ fvparams.name("Floater View");
+ fvparams.rect( LLRect(0,480,640,0) );
+ fvparams.mouse_opaque(false);
+ fvparams.follows.flags(FOLLOWS_ALL);
+ fvparams.tab_stop(false);
+ gFloaterView = LLUICtrlFactory::create<LLFloaterView> (fvparams);
}
/*==========================================================================*|
static std::string get_xui_dir()
{
- std::string delim = gDirUtilp->getDirDelimiter();
- return gDirUtilp->getSkinBaseDir() + delim + "default" + delim + "xui" + delim;
+ std::string delim = gDirUtilp->getDirDelimiter();
+ return gDirUtilp->getSkinBaseDir() + delim + "default" + delim + "xui" + delim;
}
// buildFromFile() no longer supports generate-output-LLXMLNode
void export_test_floaters()
{
- // Convert all test floaters to new XML format
- std::string delim = gDirUtilp->getDirDelimiter();
- std::string xui_dir = get_xui_dir() + "en" + delim;
- std::string filename;
-
- LLDirIterator iter(xui_dir, "floater_test_*.xml");
- while (iter.next(filename))
- {
- if (filename.find("_new.xml") != std::string::npos)
- {
- // don't re-export other test floaters
- continue;
- }
- LL_INFOS() << "Converting " << filename << LL_ENDL;
- // Build a floater and output new attributes
- LLXMLNodePtr output_node = new LLXMLNode();
- LLFloater* floater = new LLFloater(LLSD());
- floater->buildFromFile( filename,
- // FALSE, // don't open floater
- output_node);
- std::string out_filename = gDirUtilp->add(xui_dir, filename);
- std::string::size_type extension_pos = out_filename.rfind(".xml");
- out_filename.resize(extension_pos);
- out_filename += "_new.xml";
-
- LL_INFOS() << "Output: " << out_filename << LL_ENDL;
- LLFILE* floater_file = LLFile::fopen(out_filename.c_str(), "w");
- LLXMLNode::writeHeaderToFile(floater_file);
- output_node->writeToFile(floater_file);
- fclose(floater_file);
- }
+ // Convert all test floaters to new XML format
+ std::string delim = gDirUtilp->getDirDelimiter();
+ std::string xui_dir = get_xui_dir() + "en" + delim;
+ std::string filename;
+
+ LLDirIterator iter(xui_dir, "floater_test_*.xml");
+ while (iter.next(filename))
+ {
+ if (filename.find("_new.xml") != std::string::npos)
+ {
+ // don't re-export other test floaters
+ continue;
+ }
+ LL_INFOS() << "Converting " << filename << LL_ENDL;
+ // Build a floater and output new attributes
+ LLXMLNodePtr output_node = new LLXMLNode();
+ LLFloater* floater = new LLFloater(LLSD());
+ floater->buildFromFile( filename,
+ // FALSE, // don't open floater
+ output_node);
+ std::string out_filename = gDirUtilp->add(xui_dir, filename);
+ std::string::size_type extension_pos = out_filename.rfind(".xml");
+ out_filename.resize(extension_pos);
+ out_filename += "_new.xml";
+
+ LL_INFOS() << "Output: " << out_filename << LL_ENDL;
+ LLFILE* floater_file = LLFile::fopen(out_filename.c_str(), "w");
+ LLXMLNode::writeHeaderToFile(floater_file);
+ output_node->writeToFile(floater_file);
+ fclose(floater_file);
+ }
}
|*==========================================================================*/
int main(int argc, char** argv)
{
- // Must init LLError for llerrs to actually cause errors.
- LLError::initForApplication(".");
-
- init_llui();
-
-// export_test_floaters();
-
- return 0;
+ // Must init LLError for llerrs to actually cause errors.
+ LLError::initForApplication(".");
+
+ init_llui();
+
+// export_test_floaters();
+
+ return 0;
}
diff --git a/indra/integration_tests/llui_libtest/llui_libtest.h b/indra/integration_tests/llui_libtest/llui_libtest.h
index d365ebb5e0..ffa5f82784 100644
--- a/indra/integration_tests/llui_libtest/llui_libtest.h
+++ b/indra/integration_tests/llui_libtest/llui_libtest.h
@@ -1,24 +1,24 @@
-/**
+/**
* @file llui_libtest.h
*
* $LicenseInfo:firstyear=2009&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$
*/
diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.cpp b/indra/integration_tests/llui_libtest/llwidgetreg.cpp
index cbf6021119..d3d3468185 100644
--- a/indra/integration_tests/llui_libtest/llwidgetreg.cpp
+++ b/indra/integration_tests/llui_libtest/llwidgetreg.cpp
@@ -1,24 +1,24 @@
-/**
+/**
* @file llwidgetreg.cpp
*
* $LicenseInfo:firstyear=2009&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$
*/
@@ -56,52 +56,52 @@
void LLWidgetReg::initClass(bool register_widgets)
{
- // Only need to register if the Windows linker has optimized away the
- // references to the object files.
- if (register_widgets)
- {
- LLDefaultChildRegistry::Register<LLButton> button("button");
- LLDefaultChildRegistry::Register<LLMenuButton> menu_button("menu_button");
- LLDefaultChildRegistry::Register<LLCheckBoxCtrl> check_box("check_box");
- LLDefaultChildRegistry::Register<LLComboBox> combo_box("combo_box");
- LLDefaultChildRegistry::Register<LLFilterEditor> filter_editor("filter_editor");
- LLDefaultChildRegistry::Register<LLFlyoutButton> flyout_button("flyout_button");
- LLDefaultChildRegistry::Register<LLContainerView> container_view("container_view");
- LLDefaultChildRegistry::Register<LLIconCtrl> icon("icon");
- LLDefaultChildRegistry::Register<LLLoadingIndicator> loading_indicator("loading_indicator");
- LLDefaultChildRegistry::Register<LLLineEditor> line_editor("line_editor");
- LLDefaultChildRegistry::Register<LLMenuItemSeparatorGL> menu_item_separator("menu_item_separator");
- LLDefaultChildRegistry::Register<LLMenuItemCallGL> menu_item_call_gl("menu_item_call");
- LLDefaultChildRegistry::Register<LLMenuItemCheckGL> menu_item_check_gl("menu_item_check");
- LLDefaultChildRegistry::Register<LLMenuGL> menu("menu");
- LLDefaultChildRegistry::Register<LLMenuBarGL> menu_bar("menu_bar");
- LLDefaultChildRegistry::Register<LLContextMenu> context_menu("context_menu");
- LLDefaultChildRegistry::Register<LLMultiSlider> multi_slider_bar("multi_slider_bar");
- LLDefaultChildRegistry::Register<LLMultiSliderCtrl> multi_slider("multi_slider");
- LLDefaultChildRegistry::Register<LLPanel> panel("panel", &LLPanel::fromXML);
- LLDefaultChildRegistry::Register<LLLayoutStack> layout_stack("layout_stack");
- LLDefaultChildRegistry::Register<LLProgressBar> progress_bar("progress_bar");
- LLDefaultChildRegistry::Register<LLRadioGroup> radio_group("radio_group");
- LLDefaultChildRegistry::Register<LLSearchEditor> search_editor("search_editor");
- LLDefaultChildRegistry::Register<LLScrollContainer> scroll_container("scroll_container");
- LLDefaultChildRegistry::Register<LLScrollingPanelList> scrolling_panel_list("scrolling_panel_list");
- LLDefaultChildRegistry::Register<LLScrollListCtrl> scroll_list("scroll_list");
- LLDefaultChildRegistry::Register<LLSlider> slider_bar("slider_bar");
- LLDefaultChildRegistry::Register<LLSliderCtrl> slider("slider");
- LLDefaultChildRegistry::Register<LLSpinCtrl> spinner("spinner");
- LLDefaultChildRegistry::Register<LLStatBar> stat_bar("stat_bar");
- //LLDefaultChildRegistry::Register<LLPlaceHolderPanel> placeholder("placeholder");
- LLDefaultChildRegistry::Register<LLTabContainer> tab_container("tab_container");
- LLDefaultChildRegistry::Register<LLTextBox> text("text");
- LLDefaultChildRegistry::Register<LLTimeCtrl> time("time");
- LLDefaultChildRegistry::Register<LLTextEditor> simple_text_editor("simple_text_editor");
- LLDefaultChildRegistry::Register<LLUICtrl> ui_ctrl("ui_ctrl");
- LLDefaultChildRegistry::Register<LLStatView> stat_view("stat_view");
- //LLDefaultChildRegistry::Register<LLUICtrlLocate> locate("locate");
- //LLDefaultChildRegistry::Register<LLUICtrlLocate> pad("pad");
- LLDefaultChildRegistry::Register<LLViewBorder> view_border("view_border");
- }
+ // Only need to register if the Windows linker has optimized away the
+ // references to the object files.
+ if (register_widgets)
+ {
+ LLDefaultChildRegistry::Register<LLButton> button("button");
+ LLDefaultChildRegistry::Register<LLMenuButton> menu_button("menu_button");
+ LLDefaultChildRegistry::Register<LLCheckBoxCtrl> check_box("check_box");
+ LLDefaultChildRegistry::Register<LLComboBox> combo_box("combo_box");
+ LLDefaultChildRegistry::Register<LLFilterEditor> filter_editor("filter_editor");
+ LLDefaultChildRegistry::Register<LLFlyoutButton> flyout_button("flyout_button");
+ LLDefaultChildRegistry::Register<LLContainerView> container_view("container_view");
+ LLDefaultChildRegistry::Register<LLIconCtrl> icon("icon");
+ LLDefaultChildRegistry::Register<LLLoadingIndicator> loading_indicator("loading_indicator");
+ LLDefaultChildRegistry::Register<LLLineEditor> line_editor("line_editor");
+ LLDefaultChildRegistry::Register<LLMenuItemSeparatorGL> menu_item_separator("menu_item_separator");
+ LLDefaultChildRegistry::Register<LLMenuItemCallGL> menu_item_call_gl("menu_item_call");
+ LLDefaultChildRegistry::Register<LLMenuItemCheckGL> menu_item_check_gl("menu_item_check");
+ LLDefaultChildRegistry::Register<LLMenuGL> menu("menu");
+ LLDefaultChildRegistry::Register<LLMenuBarGL> menu_bar("menu_bar");
+ LLDefaultChildRegistry::Register<LLContextMenu> context_menu("context_menu");
+ LLDefaultChildRegistry::Register<LLMultiSlider> multi_slider_bar("multi_slider_bar");
+ LLDefaultChildRegistry::Register<LLMultiSliderCtrl> multi_slider("multi_slider");
+ LLDefaultChildRegistry::Register<LLPanel> panel("panel", &LLPanel::fromXML);
+ LLDefaultChildRegistry::Register<LLLayoutStack> layout_stack("layout_stack");
+ LLDefaultChildRegistry::Register<LLProgressBar> progress_bar("progress_bar");
+ LLDefaultChildRegistry::Register<LLRadioGroup> radio_group("radio_group");
+ LLDefaultChildRegistry::Register<LLSearchEditor> search_editor("search_editor");
+ LLDefaultChildRegistry::Register<LLScrollContainer> scroll_container("scroll_container");
+ LLDefaultChildRegistry::Register<LLScrollingPanelList> scrolling_panel_list("scrolling_panel_list");
+ LLDefaultChildRegistry::Register<LLScrollListCtrl> scroll_list("scroll_list");
+ LLDefaultChildRegistry::Register<LLSlider> slider_bar("slider_bar");
+ LLDefaultChildRegistry::Register<LLSliderCtrl> slider("slider");
+ LLDefaultChildRegistry::Register<LLSpinCtrl> spinner("spinner");
+ LLDefaultChildRegistry::Register<LLStatBar> stat_bar("stat_bar");
+ //LLDefaultChildRegistry::Register<LLPlaceHolderPanel> placeholder("placeholder");
+ LLDefaultChildRegistry::Register<LLTabContainer> tab_container("tab_container");
+ LLDefaultChildRegistry::Register<LLTextBox> text("text");
+ LLDefaultChildRegistry::Register<LLTimeCtrl> time("time");
+ LLDefaultChildRegistry::Register<LLTextEditor> simple_text_editor("simple_text_editor");
+ LLDefaultChildRegistry::Register<LLUICtrl> ui_ctrl("ui_ctrl");
+ LLDefaultChildRegistry::Register<LLStatView> stat_view("stat_view");
+ //LLDefaultChildRegistry::Register<LLUICtrlLocate> locate("locate");
+ //LLDefaultChildRegistry::Register<LLUICtrlLocate> pad("pad");
+ LLDefaultChildRegistry::Register<LLViewBorder> view_border("view_border");
+ }
- // *HACK: Usually this is registered as a viewer text editor
- LLDefaultChildRegistry::Register<LLTextEditor> text_editor("text_editor");
+ // *HACK: Usually this is registered as a viewer text editor
+ LLDefaultChildRegistry::Register<LLTextEditor> text_editor("text_editor");
}
diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.h b/indra/integration_tests/llui_libtest/llwidgetreg.h
index 30b915eee2..673214991b 100644
--- a/indra/integration_tests/llui_libtest/llwidgetreg.h
+++ b/indra/integration_tests/llui_libtest/llwidgetreg.h
@@ -1,24 +1,24 @@
-/**
+/**
* @file llwidgetreg.h
*
* $LicenseInfo:firstyear=2009&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$
*/
@@ -26,12 +26,12 @@
#define LLWIDGETREG_H
// Register all widgets with the builder registry.
-// Useful on Windows where linker discards all references to the
+// Useful on Windows where linker discards all references to the
// static LLDefaultChildRegistry::Register<> calls.
class LLWidgetReg
{
public:
- static void initClass(bool register_widgets);
+ static void initClass(bool register_widgets);
};
#endif