Added handling of GL_LUMINANCE pixel format to setManualImage. Was missing, although GL_LUMINANCE_ALPHA and GL_ALPHA were handled.
Also added missing file hurr.
This commit is contained in:
82
indra/llcommon/llstaticstringtable.h
Normal file
82
indra/llcommon/llstaticstringtable.h
Normal file
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* @file llstringtable.h
|
||||
* @brief The LLStringTable class provides a _fast_ method for finding
|
||||
* unique copies of strings.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2001&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$
|
||||
*/
|
||||
|
||||
#ifndef LL_STATIC_STRING_TABLE_H
|
||||
#define LL_STATIC_STRING_TABLE_H
|
||||
|
||||
#include "lldefs.h"
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include "llstl.h"
|
||||
|
||||
class LLStaticHashedString
|
||||
{
|
||||
public:
|
||||
|
||||
LLStaticHashedString(const std::string& s)
|
||||
{
|
||||
string_hash = makehash(s);
|
||||
string = s;
|
||||
}
|
||||
|
||||
const std::string& String() const { return string; }
|
||||
size_t Hash() const { return string_hash; }
|
||||
|
||||
bool operator==(const LLStaticHashedString& b) const { return String() == b.String(); }
|
||||
|
||||
protected:
|
||||
|
||||
size_t makehash(const std::string& s)
|
||||
{
|
||||
size_t len = s.size();
|
||||
const char* c = s.c_str();
|
||||
size_t hashval = 0;
|
||||
for (size_t i=0; i<len; i++)
|
||||
{
|
||||
hashval = ((hashval<<5) + hashval) + *c++;
|
||||
}
|
||||
return hashval;
|
||||
}
|
||||
|
||||
std::string string;
|
||||
size_t string_hash;
|
||||
};
|
||||
|
||||
struct LLStaticStringHasher
|
||||
{
|
||||
enum { bucket_size = 8 };
|
||||
size_t operator()(const LLStaticHashedString& key_value) const { return key_value.Hash(); }
|
||||
bool operator()(const LLStaticHashedString& left, const LLStaticHashedString& right) const { return left.Hash() < right.Hash(); }
|
||||
};
|
||||
|
||||
template< typename MappedObject >
|
||||
class LLStaticStringTable
|
||||
: public boost::unordered_map< LLStaticHashedString, MappedObject, LLStaticStringHasher >
|
||||
{
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1099,6 +1099,26 @@ void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 widt
|
||||
intformat = GL_RGBA8;
|
||||
}
|
||||
|
||||
if (pixformat == GL_LUMINANCE && pixtype == GL_UNSIGNED_BYTE)
|
||||
{ //GL_LUMINANCE is deprecated, convert to GL_RGBA
|
||||
use_scratch = true;
|
||||
scratch = new U32[width*height];
|
||||
|
||||
U32 pixel_count = (U32) (width*height);
|
||||
for (U32 i = 0; i < pixel_count; i++)
|
||||
{
|
||||
U8 lum = ((U8*) pixels)[i];
|
||||
|
||||
U8* pix = (U8*) &scratch[i];
|
||||
pix[0] = pix[1] = pix[2] = lum;
|
||||
pix[3] = 1.f;
|
||||
}
|
||||
|
||||
pixformat = GL_RGBA;
|
||||
intformat = GL_RGBA8;
|
||||
}
|
||||
|
||||
|
||||
if (pixformat == GL_LUMINANCE_ALPHA && pixtype == GL_UNSIGNED_BYTE)
|
||||
{ //GL_LUMINANCE_ALPHA is deprecated, convert to RGBA
|
||||
use_scratch = true;
|
||||
|
||||
Reference in New Issue
Block a user