diff options
| author | Merov Linden <merov@lindenlab.com> | 2012-03-15 13:01:14 -0700 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2012-03-15 13:01:14 -0700 | 
| commit | bc6f669ff41db304723428746868d79d3f3b48da (patch) | |
| tree | d64467193799467feae4e3f4bc96bbba06a6122f /indra/llimage | |
| parent | 8efce456afa2f63038594752f491b521e168fbdf (diff) | |
SH-3047 : Read the number of levels from the j2c image header instead of relying on hacked computation based on width / height.
Diffstat (limited to 'indra/llimage')
| -rw-r--r-- | indra/llimage/llimage.cpp | 3 | ||||
| -rw-r--r-- | indra/llimage/llimage.h | 5 | ||||
| -rw-r--r-- | indra/llimage/llimagej2c.cpp | 3 | 
3 files changed, 9 insertions, 2 deletions
| diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index 56e01ac851..091e78e358 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -1334,7 +1334,8 @@ LLImageFormatted::LLImageFormatted(S8 codec)  	  mCodec(codec),  	  mDecoding(0),  	  mDecoded(0), -	  mDiscardLevel(-1) +	  mDiscardLevel(-1), +	  mLevels(0)  {  	mMemType = LLMemType::MTYPE_IMAGEFORMATTED;  } diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h index 4469c9e860..847ba8c11c 100644 --- a/indra/llimage/llimage.h +++ b/indra/llimage/llimage.h @@ -313,6 +313,8 @@ public:  	BOOL isDecoded()  const { return mDecoded ? TRUE : FALSE; }  	void setDiscardLevel(S8 discard_level) { mDiscardLevel = discard_level; }  	S8 getDiscardLevel() const { return mDiscardLevel; } +	S8 getLevels() const { return mLevels; } +	void setLevels(S8 nlevels) { mLevels = nlevels; }  	// setLastError needs to be deferred for J2C images since it may be called from a DLL  	virtual void resetLastError(); @@ -325,7 +327,8 @@ protected:  	S8 mCodec;  	S8 mDecoding;  	S8 mDecoded;  // unused, but changing LLImage layout requires recompiling static Mac/Linux libs. 2009-01-30 JC -	S8 mDiscardLevel; +	S8 mDiscardLevel;	// Current resolution level worked on. 0 = full res, 1 = half res, 2 = quarter res, etc... +	S8 mLevels;			// Number of resolution levels in that image. Min is 1. 0 means unknown.  public:  	static S32 sGlobalFormattedMemory; diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp index cc8cb66d73..fbf4b769e1 100644 --- a/indra/llimage/llimagej2c.cpp +++ b/indra/llimage/llimagej2c.cpp @@ -142,6 +142,7 @@ BOOL LLImageJ2C::updateData()  BOOL LLImageJ2C::initDecode(LLImageRaw &raw_image, int discard_level, int* region)  { +	setDiscardLevel(discard_level != -1 ? discard_level : 0);  	return mImpl->initDecode(*this,raw_image,discard_level,region);  } @@ -286,6 +287,8 @@ S32 LLImageJ2C::calcHeaderSize()  // calcDataSize() returns how many bytes to read   // to load discard_level (including header and higher discard levels) +// *TODO: This is deeply wrong. That size should be taken from the image file header or other  +// relevant infos. In any case, this is only an approximation.  S32 LLImageJ2C::calcDataSize(S32 discard_level)  {  	discard_level = llclamp(discard_level, 0, MAX_DISCARD_LEVEL); | 
