diff options
Diffstat (limited to 'indra/llappearance')
| -rw-r--r-- | indra/llappearance/llavatarappearancedefines.cpp | 24 | ||||
| -rw-r--r-- | indra/llappearance/llavatarappearancedefines.h | 1 | ||||
| -rw-r--r-- | indra/llappearance/lltexlayer.cpp | 15 | ||||
| -rw-r--r-- | indra/llappearance/lltexlayer.h | 1 | 
4 files changed, 40 insertions, 1 deletions
| diff --git a/indra/llappearance/llavatarappearancedefines.cpp b/indra/llappearance/llavatarappearancedefines.cpp index 0416309fc7..f1c78946a1 100644 --- a/indra/llappearance/llavatarappearancedefines.cpp +++ b/indra/llappearance/llavatarappearancedefines.cpp @@ -220,7 +220,7 @@ ETextureIndex LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(EBakedTextu  	return LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(index)->mTextureIndex;  } -//static  +// static  EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByRegionName(std::string name)  {  	U8 index = 0; @@ -238,6 +238,28 @@ EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByRegionName(std::stri  	return BAKED_NUM_INDICES;  } +// static  +EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByImageName(std::string name) +{ +	U8 index = 0; +	while (index < BAKED_NUM_INDICES) +	{ +		const BakedEntry *be = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex) index); +		if (be) +		{ +			const TextureEntry *te = LLAvatarAppearanceDictionary::getInstance()->getTexture(be->mTextureIndex); +			if (te && te->mDefaultImageName.compare(name) == 0) +			{ +				// baked texture found +				return (EBakedTextureIndex) index; +			} +		} +		index++; +	} +	// baked texture could not be found +	return BAKED_NUM_INDICES; +} +  // static  LLWearableType::EType LLAvatarAppearanceDictionary::getTEWearableType(ETextureIndex index )  { diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h index 2e073bf5d2..496f85c107 100644 --- a/indra/llappearance/llavatarappearancedefines.h +++ b/indra/llappearance/llavatarappearancedefines.h @@ -217,6 +217,7 @@ public:  	// find a baked texture index based on its name  	static EBakedTextureIndex 	findBakedByRegionName(std::string name); +	static EBakedTextureIndex 	findBakedByImageName(std::string name);  	// Given a texture entry, determine which wearable type owns it.  	static LLWearableType::EType 		getTEWearableType(ETextureIndex index); diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp index 6f079b4abb..16f94c48dd 100644 --- a/indra/llappearance/lltexlayer.cpp +++ b/indra/llappearance/lltexlayer.cpp @@ -516,6 +516,21 @@ const LLTexLayerSetBuffer* LLTexLayerSet::getComposite() const  	return mComposite;  } +void LLTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 origin_x, S32 origin_y, S32 width, S32 height) +{ +	memset(data, 255, width * height); + +	for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ ) +	{ +		LLTexLayerInterface* layer = *iter; +		layer->gatherAlphaMasks(data, origin_x, origin_y, width, height); +	} +	 +	// Set alpha back to that of our alpha masks. +	renderAlphaMaskTextures(origin_x, origin_y, width, height, true); +} + +  void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height, bool forceClear)  {  	const LLTexLayerSetInfo *info = getInfo(); diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h index f9f8bdd817..405d2c7df4 100644 --- a/indra/llappearance/lltexlayer.h +++ b/indra/llappearance/lltexlayer.h @@ -194,6 +194,7 @@ public:  	const LLTexLayerSetBuffer* 	getComposite() const; // Do not create one if it doesn't exist.  	virtual void				createComposite() = 0;  	void						destroyComposite(); +	void						gatherMorphMaskAlpha(U8 *data, S32 origin_x, S32 origin_y, S32 width, S32 height);  	const LLTexLayerSetInfo* 	getInfo() const 			{ return mInfo; }  	BOOL						setInfo(const LLTexLayerSetInfo *info); // This sets mInfo and calls initialization functions | 
