diff options
| -rw-r--r-- | indra/llrender/llfontgl.cpp | 23 | ||||
| -rw-r--r-- | indra/llrender/llfontgl.h | 1 | ||||
| -rw-r--r-- | indra/llui/lllayoutstack.h | 5 | ||||
| -rw-r--r-- | indra/llui/llradiogroup.h | 2 | ||||
| -rw-r--r-- | indra/llui/llsearcheditor.h | 14 | ||||
| -rw-r--r-- | indra/llui/llui.cpp | 79 | ||||
| -rw-r--r-- | indra/llui/llui.h | 12 | ||||
| -rw-r--r-- | indra/llui/lluictrlfactory.cpp | 3 | ||||
| -rw-r--r-- | indra/llui/lluictrlfactory.h | 6 | ||||
| -rw-r--r-- | indra/llui/lluiimage.cpp | 22 | ||||
| -rw-r--r-- | indra/llui/lluiimage.h | 3 | ||||
| -rw-r--r-- | indra/llui/llview.cpp | 4 | ||||
| -rw-r--r-- | indra/llxuixml/llinitparam.h | 78 | 
13 files changed, 89 insertions, 163 deletions
| diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 7ad5f9608f..db1f019a81 100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp @@ -761,29 +761,6 @@ U8 LLFontGL::getStyleFromString(const std::string &style)  }  // static -std::string LLFontGL::getStringFromStyle(U8 style) -{ -	std::string style_string; -	if (style & NORMAL) -	{ -		style_string += "|NORMAL"; -	} -	if (style & BOLD) -	{ -		style_string += "|BOLD"; -	} -	if (style & ITALIC) -	{ -		style_string += "|ITALIC"; -	} -	if (style & UNDERLINE) -	{ -		style_string += "|UNDERLINE"; -	} -	return style_string; -} - -// static  std::string LLFontGL::nameFromFont(const LLFontGL* fontp)  {  	return fontp->mFontDescriptor.getName(); diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h index ea8eee7690..bb7d8524e7 100644 --- a/indra/llrender/llfontgl.h +++ b/indra/llrender/llfontgl.h @@ -144,7 +144,6 @@ public:  	// Takes a string with potentially several flags, i.e. "NORMAL|BOLD|ITALIC"  	static U8 getStyleFromString(const std::string &style); -	static std::string getStringFromStyle(U8 style);  	static std::string nameFromFont(const LLFontGL* fontp);  	static std::string sizeFromFont(const LLFontGL* fontp); diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index c1af428674..abd5436018 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -45,8 +45,9 @@ public:  	{  		Optional<std::string>	orientation;  		Optional<S32>			border_size; -		Optional<bool>			animate, -								clip; +		Optional<bool>			animate; +		Optional<bool>			clip; +		// mMinWidth and mMinHeight are calculated, not set in XML  		Params();  	}; diff --git a/indra/llui/llradiogroup.h b/indra/llui/llradiogroup.h index b178bb36ca..2edfd7c2ca 100644 --- a/indra/llui/llradiogroup.h +++ b/indra/llui/llradiogroup.h @@ -56,7 +56,7 @@ public:  	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>  	{  		Optional<bool>						has_border; -		Multiple<ItemParams, AtLeast<1> >	items; +		Multiple<ItemParams, LLInitParam::AtLeast<1> >	items;  		Params();  	}; diff --git a/indra/llui/llsearcheditor.h b/indra/llui/llsearcheditor.h index 714aca9337..bd2d595174 100644 --- a/indra/llui/llsearcheditor.h +++ b/indra/llui/llsearcheditor.h @@ -50,17 +50,15 @@ class LLSearchEditor : public LLUICtrl  public:  	struct Params : public LLInitParam::Block<Params, LLLineEditor::Params>  	{ -		Optional<LLButton::Params>	search_button,  -									clear_button; -		Optional<bool>				search_button_visible,  -									clear_button_visible; +		Optional<LLButton::Params> search_button, clear_button; +		Optional<bool> search_button_visible, clear_button_visible;  		Optional<commit_callback_t> keystroke_callback;  		Params() -		:	search_button("search_button"), -			search_button_visible("search_button_visible"), -			clear_button("clear_button"),  -			clear_button_visible("clear_button_visible") +		: search_button("search_button") +		, search_button_visible("search_button_visible") +		, clear_button("clear_button") +		, clear_button_visible("clear_button_visible")  		{  			name = "search_editor";  		} diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 67d3ed408b..6603887905 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -1896,26 +1896,17 @@ namespace LLInitParam  		control("")  	{} -	void TypedParam<LLUIColor>::setValueFromBlock() const +	LLUIColor TypedParam<LLUIColor>::getValueFromBlock() const  	{  		if (control.isProvided())  		{ -			mData.mValue = LLUIColorTable::instance().getColor(control); +			return LLUIColorTable::instance().getColor(control);  		}  		else  		{ -			mData.mValue = LLColor4(red, green, blue, alpha); +			return LLColor4(red, green, blue, alpha);  		}  	} -	 -	void TypedParam<LLUIColor>::setBlockFromValue() -	{ -		LLColor4 color = mData.mValue.get(); -		red = color.mV[VRED]; -		green = color.mV[VGREEN]; -		blue = color.mV[VBLUE]; -		alpha = color.mV[VALPHA]; -	}  	void TypeValues<LLUIColor>::declareValues()  	{ @@ -1941,32 +1932,28 @@ namespace LLInitParam  		addSynonym(name, "");  	} -	void TypedParam<const LLFontGL*>::setValueFromBlock() const +	const LLFontGL* TypedParam<const LLFontGL*>::getValueFromBlock() const  	{ -		const LLFontGL* res_fontp = LLFontGL::getFontByName(name); -		if (res_fontp) +		if (name.isProvided())  		{ -			mData.mValue = res_fontp; -		} +			const LLFontGL* res_fontp = LLFontGL::getFontByName(name); +			if (res_fontp) +			{ +				return res_fontp; +			} -		U8 fontstyle = 0; -		fontstyle = LLFontGL::getStyleFromString(style()); -		LLFontDescriptor desc(name(), size(), fontstyle); -		const LLFontGL* fontp = LLFontGL::getFont(desc); -		if (fontp) -		{ -			mData.mValue = fontp; -		}		 -	} -	 -	void TypedParam<const LLFontGL*>::setBlockFromValue() -	{ -		if (mData.mValue) -		{ -			name = LLFontGL::nameFromFont(mData.mValue); -			size = LLFontGL::sizeFromFont(mData.mValue); -			style = LLFontGL::getStringFromStyle(mData.mValue->getFontDesc().getStyle()); +			U8 fontstyle = 0; +			fontstyle = LLFontGL::getStyleFromString(style()); +			LLFontDescriptor desc(name(), size(), fontstyle); +			const LLFontGL* fontp = LLFontGL::getFont(desc); +			if (fontp) +			{ +				return fontp; +			}  		} +		 +		// default to current value +		return mData.mValue;  	}  	TypedParam<LLRect>::TypedParam(BlockDescriptor& descriptor, const char* name, const LLRect& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count) @@ -1979,7 +1966,7 @@ namespace LLInitParam  		height("height")  	{} -	void TypedParam<LLRect>::setValueFromBlock() const +	LLRect TypedParam<LLRect>::getValueFromBlock() const  	{  		LLRect rect; @@ -2040,17 +2027,7 @@ namespace LLInitParam  			rect.mBottom = bottom;  			rect.mTop = top;  		} -		mData.mValue = rect; -	} -	 -	void TypedParam<LLRect>::setBlockFromValue() -	{ -		left = mData.mValue.mLeft; -		right = mData.mValue.mRight; -		bottom = mData.mValue.mBottom; -		top = mData.mValue.mTop; -		width.setProvided(false); -		height.setProvided(false); +		return rect;  	}  	TypedParam<LLCoordGL>::TypedParam(BlockDescriptor& descriptor, const char* name, LLCoordGL value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count) @@ -2060,15 +2037,9 @@ namespace LLInitParam  	{  	} -	void TypedParam<LLCoordGL>::setValueFromBlock() const -	{ -		mData.mValue.set(x, y); -	} -	 -	void TypedParam<LLCoordGL>::setBlockFromValue() +	LLCoordGL TypedParam<LLCoordGL>::getValueFromBlock() const  	{ -		x = mData.mValue.mX; -		y = mData.mValue.mY; +		return LLCoordGL(x, y);  	} diff --git a/indra/llui/llui.h b/indra/llui/llui.h index 5840e76f5c..5ec07f1941 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -379,8 +379,7 @@ namespace LLInitParam  		TypedParam(BlockDescriptor& descriptor, const char* name, const LLRect& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count); -		void setValueFromBlock() const; -		void setBlockFromValue(); +		LLRect getValueFromBlock() const;  	};  	template<> @@ -402,8 +401,7 @@ namespace LLInitParam  		Optional<std::string> control;  		TypedParam(BlockDescriptor& descriptor, const char* name, const LLUIColor& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count); -		void setValueFromBlock() const; -		void setBlockFromValue(); +		LLUIColor getValueFromBlock() const;  	};  	// provide a better default for Optional<const LLFontGL*> than NULL @@ -431,8 +429,7 @@ namespace LLInitParam  								style;  		TypedParam(BlockDescriptor& descriptor, const char* name, const LLFontGL* const value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count); -		void setValueFromBlock() const; -		void setBlockFromValue(); +		const LLFontGL* getValueFromBlock() const;  	};  	template<> @@ -470,8 +467,7 @@ namespace LLInitParam  						y;  		TypedParam(BlockDescriptor& descriptor, const char* name, LLCoordGL value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count); -		void setValueFromBlock() const; -		void setBlockFromValue(); +		LLCoordGL getValueFromBlock() const;  	};  } diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp index 625d3c63e5..6a7879c8c2 100644 --- a/indra/llui/lluictrlfactory.cpp +++ b/indra/llui/lluictrlfactory.cpp @@ -105,12 +105,9 @@ void LLUICtrlFactory::loadWidgetTemplate(const std::string& widget_tag, LLInitPa  	}  } -static LLFastTimer::DeclareTimer FTM_CREATE_CHILDREN("Create XUI Children"); -  //static   void LLUICtrlFactory::createChildren(LLView* viewp, LLXMLNodePtr node, const widget_registry_t& registry, LLXMLNodePtr output_node)  { -	LLFastTimer ft(FTM_CREATE_CHILDREN);  	if (node.isNull()) return;  	for (LLXMLNodePtr child_node = node->getFirstChild(); child_node.notNull(); child_node = child_node->getNextSibling()) diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h index 6dab9521bb..e4bac48fd3 100644 --- a/indra/llui/lluictrlfactory.h +++ b/indra/llui/lluictrlfactory.h @@ -182,6 +182,9 @@ public:  	template<typename T>  	static T* createWidget(typename T::Params& params, LLView* parent = NULL)  	{ +		// Apply layout transformations, usually munging rect +		T::setupParams(params, parent); +  		T* widget = NULL;  		if (!params.validateBlock()) @@ -306,8 +309,7 @@ fail:  				output_node, output_params, &default_params);  		} -		// Apply layout transformations, usually munging rect -		T::setupParams(params, parent); +		params.from_xui = true;  		T* widget = createWidget<T>(params, parent); diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp index 1dfc281d93..f941f391eb 100644 --- a/indra/llui/lluiimage.cpp +++ b/indra/llui/lluiimage.cpp @@ -161,32 +161,22 @@ void LLUIImage::onImageLoaded()  namespace LLInitParam  { -	void TypedParam<LLUIImage*>::setValueFromBlock() const +	LLUIImage* TypedParam<LLUIImage*>::getValueFromBlock() const  	{  		// The keyword "none" is specifically requesting a null image  		// do not default to current value. Used to overwrite template images.   		if (name() == "none")  		{ -			mData.mValue = NULL; +			return NULL;  		}  		LLUIImage* imagep =  LLUI::getUIImage(name()); -		if (imagep) +		if (!imagep)  		{ -			mData.mValue = imagep; -		} -	} -	 -	void TypedParam<LLUIImage*>::setBlockFromValue() -	{ -		if (mData.mValue == NULL) -		{ -			name = "none"; -		} -		else -		{ -			name = mData.mValue->getName(); +			// default to current value +			imagep = mData.mValue;  		} +		return imagep;  	} diff --git a/indra/llui/lluiimage.h b/indra/llui/lluiimage.h index bdfc44262d..5fa9610ab2 100644 --- a/indra/llui/lluiimage.h +++ b/indra/llui/lluiimage.h @@ -111,8 +111,7 @@ namespace LLInitParam  		{  		} -		void setValueFromBlock() const; -		void setBlockFromValue(); +		LLUIImage* getValueFromBlock() const;  	};  	// Need custom comparison function for our test app, which only loads diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 9f6fc1f298..7932b749a8 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -2501,8 +2501,6 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)  		p.layout = parent->getLayout();  	} -	p.from_xui = true; -  	if (parent)  	{  		LLRect parent_rect = parent->getLocalRect(); @@ -2518,7 +2516,7 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)  		}  		// convert negative or centered coordinates to parent relative values -		// Note: some of this logic matches the logic in TypedParam<LLRect>::setValueFromBlock() +		// Note: some of this logic matches the logic in TypedParam<LLRect>::getValueFromBlock()  		if (p.center_horiz)  		{ diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index 7e1e4a3d21..493ddaa378 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -1,5 +1,5 @@  /**  -f * @file llinitparam.h + * @file llinitparam.h   * @brief parameter block abstraction for creating complex objects and    * parsing construction parameters from xml and LLSD   * @@ -405,41 +405,6 @@ namespace LLInitParam  	class BaseBlock  	{  	public: -		// "Multiple" constraint types -		struct AnyAmount -		{ -			static U32 minCount() { return 0; } -			static U32 maxCount() { return U32_MAX; } -		}; - -		template<U32 MIN_AMOUNT> -		struct AtLeast -		{ -			static U32 minCount() { return MIN_AMOUNT; } -			static U32 maxCount() { return U32_MAX; } -		}; - -		template<U32 MAX_AMOUNT> -		struct AtMost -		{ -			static U32 minCount() { return 0; } -			static U32 maxCount() { return MAX_AMOUNT; } -		}; - -		template<U32 MIN_AMOUNT, U32 MAX_AMOUNT> -		struct Between -		{ -			static U32 minCount() { return MIN_AMOUNT; } -			static U32 maxCount() { return MAX_AMOUNT; } -		}; - -		template<U32 EXACT_COUNT> -		struct Exactly -		{ -			static U32 minCount() { return EXACT_COUNT; } -			static U32 maxCount() { return EXACT_COUNT; } -		}; -  		// this typedef identifies derived classes as being blocks  		typedef void baseblock_base_class_t;  		LOG_CLASS(BaseBlock); @@ -1400,6 +1365,40 @@ namespace LLInitParam  		}  	}; +	struct AnyAmount +	{ +		static U32 minCount() { return 0; } +		static U32 maxCount() { return U32_MAX; } +	}; + +	template<U32 MIN_AMOUNT> +	struct AtLeast +	{ +		static U32 minCount() { return MIN_AMOUNT; } +		static U32 maxCount() { return U32_MAX; } +	}; + +	template<U32 MAX_AMOUNT> +	struct AtMost +	{ +		static U32 minCount() { return 0; } +		static U32 maxCount() { return MAX_AMOUNT; } +	}; + +	template<U32 MIN_AMOUNT, U32 MAX_AMOUNT> +	struct Between +	{ +		static U32 minCount() { return MIN_AMOUNT; } +		static U32 maxCount() { return MAX_AMOUNT; } +	}; + +	template<U32 EXACT_COUNT> +	struct Exactly +	{ +		static U32 minCount() { return EXACT_COUNT; } +		static U32 maxCount() { return EXACT_COUNT; } +	}; +  	template <typename DERIVED_BLOCK, typename BASE_BLOCK = BaseBlock>  	class Block   	:	public BASE_BLOCK @@ -1492,7 +1491,7 @@ namespace LLInitParam  		}; -		template <typename T, typename RANGE = BaseBlock::AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> > +		template <typename T, typename RANGE = AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> >  		class Multiple : public TypedParam<T, NAME_VALUE_LOOKUP, true>  		{  		public: @@ -1712,7 +1711,7 @@ namespace LLInitParam  			{  				if (block_t::validateBlock(true))  				{ -					static_cast<const DERIVED*>(this)->setValueFromBlock(); +					mData.mValue = static_cast<const DERIVED*>(this)->getValueFromBlock();  					// clear stale keyword associated with old value  					mData.clearKey();  					mData.mLastParamVersion = BaseBlock::getLastChangeVersion(); @@ -1738,7 +1737,6 @@ namespace LLInitParam  			mData.mValue = val;  			mData.clearKey();  			setProvided(flag_as_provided); -			static_cast<DERIVED*>(this)->setBlockFromValue();  		}  		void setIfNotProvided(value_assignment_t val, bool flag_as_provided = true) @@ -1770,7 +1768,7 @@ namespace LLInitParam  				// go ahead and issue warnings at this point if any param is invalid  				if(block_t::validateBlock(false))  				{ -					static_cast<const DERIVED*>(this)->setValueFromBlock(); +					mData.mValue = static_cast<const DERIVED*>(this)->getValueFromBlock();  					mData.clearKey();  					mData.mLastParamVersion = BaseBlock::getLastChangeVersion();  				} | 
