diff options
Diffstat (limited to 'indra/newview/lltexturectrl.h')
| -rw-r--r-- | indra/newview/lltexturectrl.h | 890 | 
1 files changed, 445 insertions, 445 deletions
diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h index 18cd7d75c0..2f82a28af4 100644 --- a/indra/newview/lltexturectrl.h +++ b/indra/newview/lltexturectrl.h @@ -1,445 +1,445 @@ -/**  - * @file lltexturectrl.h - * @author Richard Nelson, James Cook - * @brief LLTextureCtrl class header file including related functions - * - * $LicenseInfo:firstyear=2002&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_LLTEXTURECTRL_H -#define LL_LLTEXTURECTRL_H - -#include "llcoord.h" -#include "llfiltereditor.h" -#include "llfloater.h" -#include "llfolderview.h" -#include "lllocalbitmaps.h" -#include "llstring.h" -#include "lluictrl.h" -#include "llpermissionsflags.h" -#include "lltextbox.h" // for params -#include "llviewerinventory.h" -#include "llviewborder.h" // for params -#include "llviewerobject.h" -#include "llviewertexture.h" -#include "llwindow.h" - -class LLComboBox; -class LLFloaterTexturePicker; -class LLInventoryItem; -class LLViewerFetchedTexture; -class LLFetchedGLTFMaterial; - -// used for setting drag & drop callbacks. -typedef boost::function<bool (LLUICtrl*, LLInventoryItem*)> drag_n_drop_callback; -typedef boost::function<void (LLInventoryItem*)> texture_selected_callback; - -// Helper functions for UI that work with picker -bool get_is_predefined_texture(LLUUID asset_id); - -// texture picker works by asset ids since objects normaly do -// not retain inventory ids as result these functions are looking -// for textures in inventory by asset ids -// This search can be performance unfriendly and doesn't warranty -// that the texture is original source of asset -LLUUID get_copy_free_item_by_asset_id(LLUUID image_id, bool no_trans_perm = false); -bool get_can_copy_texture(LLUUID image_id); - -enum LLPickerSource -{ -    PICKER_INVENTORY, -    PICKER_LOCAL, -    PICKER_BAKE, -    PICKER_UNKNOWN, // on cancel, default ids -}; - -typedef enum e_pick_inventory_type -{ -    PICK_TEXTURE_MATERIAL = 0, -    PICK_TEXTURE = 1, -    PICK_MATERIAL = 2, -} EPickInventoryType; - -////////////////////////////////////////////////////////////////////////////////////////// -// LLTextureCtrl - - -class LLTextureCtrl -: public LLUICtrl -{ -public: -	typedef enum e_texture_pick_op -	{ -		TEXTURE_CHANGE, -		TEXTURE_SELECT, -		TEXTURE_CANCEL -	} ETexturePickOp; - -public: -	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> -	{ -		Optional<LLUUID>		image_id; -		Optional<LLUUID>		default_image_id; -		Optional<std::string>	default_image_name; -		Optional<bool>			allow_no_texture; -		Optional<bool>			can_apply_immediately; -		Optional<bool>			no_commit_on_selection; // alternative mode: commit occurs and the widget gets dirty -														// only on DnD or when OK is pressed in the picker -		Optional<S32>			label_width; -		Optional<LLUIColor>		border_color; -		Optional<LLUIImage*>	fallback_image; -		 -		Optional<LLTextBox::Params>	multiselect_text, -									caption_text; - -		Optional<LLViewBorder::Params> border; - -		Params() -		:	image_id("image"), -			default_image_id("default_image_id"), -			default_image_name("default_image_name"), -			allow_no_texture("allow_no_texture", false), -			can_apply_immediately("can_apply_immediately"), -			no_commit_on_selection("no_commit_on_selection", false), -		    label_width("label_width", -1), -			border_color("border_color"), -			fallback_image("fallback_image"), -			multiselect_text("multiselect_text"), -			caption_text("caption_text"), -			border("border") -		{} -	}; -protected: -	LLTextureCtrl(const Params&); -	friend class LLUICtrlFactory; -public: -	virtual ~LLTextureCtrl(); - -	// LLView interface - -	virtual bool	handleMouseDown(S32 x, S32 y, MASK mask); -	virtual bool	handleDragAndDrop(S32 x, S32 y, MASK mask, -						bool drop, EDragAndDropType cargo_type, void *cargo_data, -						EAcceptance *accept, -						std::string& tooltip_msg); -	virtual bool	handleHover(S32 x, S32 y, MASK mask); -	virtual bool	handleUnicodeCharHere(llwchar uni_char); - -	virtual void	draw(); -	virtual void	setVisible( bool visible ); -	virtual void	setEnabled( bool enabled ); - -	void			setValid(bool valid); - -	// LLUICtrl interface -	virtual void	clear(); - -	// Takes a UUID, wraps get/setImageAssetID -	virtual void	setValue(const LLSD& value); -	virtual LLSD	getValue() const; - -	// LLTextureCtrl interface -	void			showPicker(bool take_focus); -	bool			isPickerShown() { return !mFloaterHandle.isDead(); } -	void			setLabel(const std::string& label); -	void			setLabelWidth(S32 label_width) {mLabelWidth =label_width;}	 -	const std::string&	getLabel() const							{ return mLabel; } - -	void			setAllowNoTexture( bool b )					{ mAllowNoTexture = b; } -	bool			getAllowNoTexture() const					{ return mAllowNoTexture; } - -	void			setAllowLocalTexture(bool b)					{ mAllowLocalTexture = b; } -	bool			getAllowLocalTexture() const					{ return mAllowLocalTexture; } - -	const LLUUID&	getImageItemID() { return mImageItemID; } - -	virtual void	setImageAssetName(const std::string& name); -	 -	void			setImageAssetID(const LLUUID &image_asset_id); -	const LLUUID&	getImageAssetID() const						{ return mImageAssetID; } - -	void			setDefaultImageAssetID( const LLUUID& id )	{ mDefaultImageAssetID = id; } -	const LLUUID&	getDefaultImageAssetID() const { return mDefaultImageAssetID; } - -	const std::string&	getDefaultImageName() const					{ return mDefaultImageName; } - -	void			setBlankImageAssetID( const LLUUID& id )	{ mBlankImageAssetID = id; } -	const LLUUID&	getBlankImageAssetID() const { return mBlankImageAssetID; } - -	void			setOpenTexPreview(bool open_preview) { mOpenTexPreview = open_preview; } - -	void			setCaption(const std::string& caption); -	void			setCanApplyImmediately(bool b); - -	void			setCanApply(bool can_preview, bool can_apply); - -	void			setImmediateFilterPermMask(PermissionMask mask); -	void			setDnDFilterPermMask(PermissionMask mask) -						{ mDnDFilterPermMask = mask; } -	PermissionMask	getImmediateFilterPermMask() { return mImmediateFilterPermMask; } -    void setFilterPermissionMasks(PermissionMask mask); - -	void			closeDependentFloater(); - -	void			onFloaterClose(); -    void			onFloaterCommit(ETexturePickOp op, -                                    LLPickerSource source, -                                    const LLUUID& local_id, -                                    const LLUUID& inv_id, -                                    const LLUUID& tracking_id); - -	// This call is returned when a drag is detected. Your callback -	// should return true if the drag is acceptable. -	void setDragCallback(drag_n_drop_callback cb)	{ mDragCallback = cb; } - -	// This callback is called when the drop happens. Return true if -	// the drop happened - resulting in an on commit callback, but not -	// necessariliy any other change. -	void setDropCallback(drag_n_drop_callback cb)	{ mDropCallback = cb; } -	 -	void setOnCancelCallback(commit_callback_t cb)	{ mOnCancelCallback = cb; } -	void setOnCloseCallback(commit_callback_t cb)	{ mOnCloseCallback = cb; } -	void setOnSelectCallback(commit_callback_t cb)	{ mOnSelectCallback = cb; } - -	/* -	 * callback for changing texture selection in inventory list of texture floater -	 */ -	void setOnTextureSelectedCallback(texture_selected_callback cb); - -	void setShowLoadingPlaceholder(bool showLoadingPlaceholder); - -	LLViewerFetchedTexture* getTexture() { return mTexturep; } - -    void setBakeTextureEnabled(bool enabled); -    bool getBakeTextureEnabled() const { return mBakeTextureEnabled; } - -    void setInventoryPickType(EPickInventoryType type); -    EPickInventoryType getInventoryPickType() { return mInventoryPickType; }; - -    bool isImageLocal() { return mLocalTrackingID.notNull(); } -    LLUUID getLocalTrackingID() { return mLocalTrackingID; } - -private: -	bool allowDrop(LLInventoryItem* item, EDragAndDropType cargo_type, std::string& tooltip_msg); -	bool doDrop(LLInventoryItem* item); - -private: -	drag_n_drop_callback	 	mDragCallback; -	drag_n_drop_callback	 	mDropCallback; -	commit_callback_t		 	mOnCancelCallback; -	commit_callback_t		 	mOnSelectCallback; -	commit_callback_t		 	mOnCloseCallback; -	texture_selected_callback	mOnTextureSelectedCallback; -	LLPointer<LLViewerFetchedTexture> mTexturep; -	LLUIColor				 	mBorderColor; -	LLUUID					 	mImageItemID; -	LLUUID					 	mImageAssetID; -	LLUUID					 	mDefaultImageAssetID; -	LLUUID					 	mBlankImageAssetID; -    LLUUID						mLocalTrackingID; -	LLUIImagePtr				mFallbackImage; -	std::string					mDefaultImageName; -	LLHandle<LLFloater>			mFloaterHandle; -	LLTextBox*				 	mTentativeLabel; -	LLTextBox*				 	mCaption; -	std::string				 	mLabel; -	bool					 	mAllowNoTexture; // If true, the user can select "none" as an option -	bool						mAllowLocalTexture; -	PermissionMask			 	mImmediateFilterPermMask; -	PermissionMask				mDnDFilterPermMask; -	bool					 	mCanApplyImmediately; -	bool					 	mCommitOnSelection; -	bool					 	mNeedsRawImageData; -	LLViewBorder*			 	mBorder; -	bool					 	mValid; -	bool					 	mShowLoadingPlaceholder; -	std::string				 	mLoadingPlaceholderString; -	S32						 	mLabelWidth; -	bool						mOpenTexPreview; -	bool						mBakeTextureEnabled; -    EPickInventoryType mInventoryPickType; -}; - -////////////////////////////////////////////////////////////////////////////////////////// -// LLFloaterTexturePicker -typedef boost::function<void(LLTextureCtrl::ETexturePickOp op, LLPickerSource source, const LLUUID& asset_id, const LLUUID& inventory_id, const LLUUID& tracking_id)> floater_commit_callback; -typedef boost::function<void()> floater_close_callback; -typedef boost::function<void(const LLUUID& asset_id)> set_image_asset_id_callback; -typedef boost::function<void(LLPointer<LLViewerTexture> texture)> set_on_update_image_stats_callback; - -class LLFloaterTexturePicker : public LLFloater -{ -public: -	LLFloaterTexturePicker( -		LLView* owner, -		LLUUID image_asset_id, -		LLUUID default_image_asset_id, -		LLUUID blank_image_asset_id, -		bool tentative, -		bool allow_no_texture, -		const std::string& label, -		PermissionMask immediate_filter_perm_mask, -		PermissionMask dnd_filter_perm_mask, -		bool can_apply_immediately, -		LLUIImagePtr fallback_image_name, -		EPickInventoryType pick_type); - -	virtual ~LLFloaterTexturePicker(); - -	// LLView overrides -	/*virtual*/ bool	handleDragAndDrop(S32 x, S32 y, MASK mask, -		bool drop, EDragAndDropType cargo_type, void *cargo_data, -		EAcceptance *accept, -		std::string& tooltip_msg); -	/*virtual*/ void	draw(); -	/*virtual*/ bool	handleKeyHere(KEY key, MASK mask); - -	// LLFloater overrides -	/*virtual*/ bool    postBuild(); -    /*virtual*/ void	onOpen(const LLSD& key); -	/*virtual*/ void	onClose(bool app_settings); - -	// New functions -	void setImageID(const LLUUID& image_asset_id, bool set_selection = true); -	bool updateImageStats(); // true if within limits -	const LLUUID&	getAssetID() { return mImageAssetID; } -	const LLUUID&	findItemID(const LLUUID& asset_id, bool copyable_only, bool ignore_library = false); -	void			setCanApplyImmediately(bool b); - -	void			setActive(bool active); - -	LLView*			getOwner() const { return mOwner; } -	void			setOwner(LLView* owner) { mOwner = owner; } -	void			stopUsingPipette(); - -	void commitIfImmediateSet(); -    void commitCallback(LLTextureCtrl::ETexturePickOp op); -	void commitCancel(); - -	void onFilterEdit(const std::string& search_string); - -	void setCanApply(bool can_preview, bool can_apply, bool inworld_image = true); -    void setMinDimentionsLimits(S32 min_dim); -	void setTextureSelectedCallback(const texture_selected_callback& cb) { mTextureSelectedCallback = cb; } -	void setOnFloaterCloseCallback(const floater_close_callback& cb) { mOnFloaterCloseCallback = cb; } -	void setOnFloaterCommitCallback(const floater_commit_callback& cb) { mOnFloaterCommitCallback = cb; } -	void setSetImageAssetIDCallback(const set_image_asset_id_callback& cb) { mSetImageAssetIDCallback = cb; } -	void setOnUpdateImageStatsCallback(const set_on_update_image_stats_callback& cb) { mOnUpdateImageStatsCallback = cb; } -	const LLUUID& getDefaultImageAssetID() { return mDefaultImageAssetID; } -	const LLUUID& getBlankImageAssetID() { return mBlankImageAssetID; } - -	static void		onBtnSetToDefault(void* userdata); -	static void		onBtnSelect(void* userdata); -	static void		onBtnCancel(void* userdata); -	void			onBtnPipette(); -	//static void		onBtnRevert( void* userdata ); -	static void		onBtnBlank(void* userdata); -	static void		onBtnNone(void* userdata); -	void			onSelectionChange(const std::deque<LLFolderViewItem*> &items, bool user_action); -	static void		onApplyImmediateCheck(LLUICtrl* ctrl, void* userdata); -	void			onTextureSelect(const LLTextureEntry& te); - -	static void		onModeSelect(LLUICtrl* ctrl, void *userdata); -	static void		onBtnAdd(void* userdata); -	static void		onBtnRemove(void* userdata); -	static void		onBtnUpload(void* userdata); -	static void		onLocalScrollCommit(LLUICtrl* ctrl, void* userdata); - -	static void		onBakeTextureSelect(LLUICtrl* ctrl, void *userdata); - -	void 			setLocalTextureEnabled(bool enabled); -	void 			setBakeTextureEnabled(bool enabled); - -    void setInventoryPickType(EPickInventoryType type); -    void setImmediateFilterPermMask(PermissionMask mask); - -    static void		onPickerCallback(const std::vector<std::string>& filenames, LLHandle<LLFloater> handle); - -protected: -    void changeMode(); -    void refreshLocalList(); -    void refreshInventoryFilter(); -    void setImageIDFromItem(const LLInventoryItem* itemp, bool set_selection = true); - -	LLPointer<LLViewerTexture> mTexturep; -    LLPointer<LLFetchedGLTFMaterial> mGLTFMaterial; -	LLView*				mOwner; - -	LLUUID				mImageAssetID; // Currently selected texture -	LLUIImagePtr		mFallbackImage; // What to show if currently selected texture is null. -	LLUUID				mDefaultImageAssetID; -	LLUUID				mBlankImageAssetID; -	bool				mTentative; -	bool				mAllowNoTexture; -	LLUUID				mSpecialCurrentImageAssetID;  // Used when the asset id has no corresponding texture in the user's inventory. -	LLUUID				mOriginalImageAssetID; - -	std::string			mLabel; - -	LLTextBox*			mTentativeLabel; -	LLTextBox*			mResolutionLabel; -    LLTextBox*          mResolutionWarning; - -	std::string			mPendingName; -	bool				mActive; - -	LLFilterEditor*		mFilterEdit; -	LLInventoryPanel*	mInventoryPanel; -	PermissionMask		mImmediateFilterPermMask; -	PermissionMask		mDnDFilterPermMask; -	bool				mCanApplyImmediately; -	bool				mNoCopyTextureSelected; -	F32					mContextConeOpacity; -	LLSaveFolderState	mSavedFolderState; -	bool				mSelectedItemPinned; - -	LLComboBox*			mModeSelector; -	LLScrollListCtrl*	mLocalScrollCtrl; -    LLButton*           mDefaultBtn; -    LLButton*           mNoneBtn; -    LLButton*           mBlankBtn; -    LLButton*           mPipetteBtn; -    LLButton*           mSelectBtn; -    LLButton*           mCancelBtn; - -private: -	bool mCanApply; -	bool mCanPreview; -	bool mPreviewSettingChanged; -    bool mLimitsSet; -    S32 mMaxDim; -    S32 mMinDim; -    EPickInventoryType mInventoryPickType; - - -	texture_selected_callback mTextureSelectedCallback; -	floater_close_callback mOnFloaterCloseCallback; -	floater_commit_callback mOnFloaterCommitCallback; -	set_image_asset_id_callback mSetImageAssetIDCallback; -	set_on_update_image_stats_callback mOnUpdateImageStatsCallback; - -	bool mBakeTextureEnabled; - -    static S32 sLastPickerMode; -}; - -#endif  // LL_LLTEXTURECTRL_H +/**
 + * @file lltexturectrl.h
 + * @author Richard Nelson, James Cook
 + * @brief LLTextureCtrl class header file including related functions
 + *
 + * $LicenseInfo:firstyear=2002&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_LLTEXTURECTRL_H
 +#define LL_LLTEXTURECTRL_H
 +
 +#include "llcoord.h"
 +#include "llfiltereditor.h"
 +#include "llfloater.h"
 +#include "llfolderview.h"
 +#include "lllocalbitmaps.h"
 +#include "llstring.h"
 +#include "lluictrl.h"
 +#include "llpermissionsflags.h"
 +#include "lltextbox.h" // for params
 +#include "llviewerinventory.h"
 +#include "llviewborder.h" // for params
 +#include "llviewerobject.h"
 +#include "llviewertexture.h"
 +#include "llwindow.h"
 +
 +class LLComboBox;
 +class LLFloaterTexturePicker;
 +class LLInventoryItem;
 +class LLViewerFetchedTexture;
 +class LLFetchedGLTFMaterial;
 +
 +// used for setting drag & drop callbacks.
 +typedef boost::function<bool (LLUICtrl*, LLInventoryItem*)> drag_n_drop_callback;
 +typedef boost::function<void (LLInventoryItem*)> texture_selected_callback;
 +
 +// Helper functions for UI that work with picker
 +bool get_is_predefined_texture(LLUUID asset_id);
 +
 +// texture picker works by asset ids since objects normaly do
 +// not retain inventory ids as result these functions are looking
 +// for textures in inventory by asset ids
 +// This search can be performance unfriendly and doesn't warranty
 +// that the texture is original source of asset
 +LLUUID get_copy_free_item_by_asset_id(LLUUID image_id, bool no_trans_perm = false);
 +bool get_can_copy_texture(LLUUID image_id);
 +
 +enum LLPickerSource
 +{
 +    PICKER_INVENTORY,
 +    PICKER_LOCAL,
 +    PICKER_BAKE,
 +    PICKER_UNKNOWN, // on cancel, default ids
 +};
 +
 +typedef enum e_pick_inventory_type
 +{
 +    PICK_TEXTURE_MATERIAL = 0,
 +    PICK_TEXTURE = 1,
 +    PICK_MATERIAL = 2,
 +} EPickInventoryType;
 +
 +//////////////////////////////////////////////////////////////////////////////////////////
 +// LLTextureCtrl
 +
 +
 +class LLTextureCtrl
 +: public LLUICtrl
 +{
 +public:
 +    typedef enum e_texture_pick_op
 +    {
 +        TEXTURE_CHANGE,
 +        TEXTURE_SELECT,
 +        TEXTURE_CANCEL
 +    } ETexturePickOp;
 +
 +public:
 +    struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
 +    {
 +        Optional<LLUUID>        image_id;
 +        Optional<LLUUID>        default_image_id;
 +        Optional<std::string>   default_image_name;
 +        Optional<bool>          allow_no_texture;
 +        Optional<bool>          can_apply_immediately;
 +        Optional<bool>          no_commit_on_selection; // alternative mode: commit occurs and the widget gets dirty
 +                                                        // only on DnD or when OK is pressed in the picker
 +        Optional<S32>           label_width;
 +        Optional<LLUIColor>     border_color;
 +        Optional<LLUIImage*>    fallback_image;
 +
 +        Optional<LLTextBox::Params> multiselect_text,
 +                                    caption_text;
 +
 +        Optional<LLViewBorder::Params> border;
 +
 +        Params()
 +        :   image_id("image"),
 +            default_image_id("default_image_id"),
 +            default_image_name("default_image_name"),
 +            allow_no_texture("allow_no_texture", false),
 +            can_apply_immediately("can_apply_immediately"),
 +            no_commit_on_selection("no_commit_on_selection", false),
 +            label_width("label_width", -1),
 +            border_color("border_color"),
 +            fallback_image("fallback_image"),
 +            multiselect_text("multiselect_text"),
 +            caption_text("caption_text"),
 +            border("border")
 +        {}
 +    };
 +protected:
 +    LLTextureCtrl(const Params&);
 +    friend class LLUICtrlFactory;
 +public:
 +    virtual ~LLTextureCtrl();
 +
 +    // LLView interface
 +
 +    virtual bool    handleMouseDown(S32 x, S32 y, MASK mask);
 +    virtual bool    handleDragAndDrop(S32 x, S32 y, MASK mask,
 +                        bool drop, EDragAndDropType cargo_type, void *cargo_data,
 +                        EAcceptance *accept,
 +                        std::string& tooltip_msg);
 +    virtual bool    handleHover(S32 x, S32 y, MASK mask);
 +    virtual bool    handleUnicodeCharHere(llwchar uni_char);
 +
 +    virtual void    draw();
 +    virtual void    setVisible( bool visible );
 +    virtual void    setEnabled( bool enabled );
 +
 +    void            setValid(bool valid);
 +
 +    // LLUICtrl interface
 +    virtual void    clear();
 +
 +    // Takes a UUID, wraps get/setImageAssetID
 +    virtual void    setValue(const LLSD& value);
 +    virtual LLSD    getValue() const;
 +
 +    // LLTextureCtrl interface
 +    void            showPicker(bool take_focus);
 +    bool            isPickerShown() { return !mFloaterHandle.isDead(); }
 +    void            setLabel(const std::string& label);
 +    void            setLabelWidth(S32 label_width) {mLabelWidth =label_width;}
 +    const std::string&  getLabel() const                            { return mLabel; }
 +
 +    void            setAllowNoTexture( bool b )                 { mAllowNoTexture = b; }
 +    bool            getAllowNoTexture() const                   { return mAllowNoTexture; }
 +
 +    void            setAllowLocalTexture(bool b)                    { mAllowLocalTexture = b; }
 +    bool            getAllowLocalTexture() const                    { return mAllowLocalTexture; }
 +
 +    const LLUUID&   getImageItemID() { return mImageItemID; }
 +
 +    virtual void    setImageAssetName(const std::string& name);
 +
 +    void            setImageAssetID(const LLUUID &image_asset_id);
 +    const LLUUID&   getImageAssetID() const                     { return mImageAssetID; }
 +
 +    void            setDefaultImageAssetID( const LLUUID& id )  { mDefaultImageAssetID = id; }
 +    const LLUUID&   getDefaultImageAssetID() const { return mDefaultImageAssetID; }
 +
 +    const std::string&  getDefaultImageName() const                 { return mDefaultImageName; }
 +
 +    void            setBlankImageAssetID( const LLUUID& id )    { mBlankImageAssetID = id; }
 +    const LLUUID&   getBlankImageAssetID() const { return mBlankImageAssetID; }
 +
 +    void            setOpenTexPreview(bool open_preview) { mOpenTexPreview = open_preview; }
 +
 +    void            setCaption(const std::string& caption);
 +    void            setCanApplyImmediately(bool b);
 +
 +    void            setCanApply(bool can_preview, bool can_apply);
 +
 +    void            setImmediateFilterPermMask(PermissionMask mask);
 +    void            setDnDFilterPermMask(PermissionMask mask)
 +                        { mDnDFilterPermMask = mask; }
 +    PermissionMask  getImmediateFilterPermMask() { return mImmediateFilterPermMask; }
 +    void setFilterPermissionMasks(PermissionMask mask);
 +
 +    void            closeDependentFloater();
 +
 +    void            onFloaterClose();
 +    void            onFloaterCommit(ETexturePickOp op,
 +                                    LLPickerSource source,
 +                                    const LLUUID& local_id,
 +                                    const LLUUID& inv_id,
 +                                    const LLUUID& tracking_id);
 +
 +    // This call is returned when a drag is detected. Your callback
 +    // should return true if the drag is acceptable.
 +    void setDragCallback(drag_n_drop_callback cb)   { mDragCallback = cb; }
 +
 +    // This callback is called when the drop happens. Return true if
 +    // the drop happened - resulting in an on commit callback, but not
 +    // necessariliy any other change.
 +    void setDropCallback(drag_n_drop_callback cb)   { mDropCallback = cb; }
 +
 +    void setOnCancelCallback(commit_callback_t cb)  { mOnCancelCallback = cb; }
 +    void setOnCloseCallback(commit_callback_t cb)   { mOnCloseCallback = cb; }
 +    void setOnSelectCallback(commit_callback_t cb)  { mOnSelectCallback = cb; }
 +
 +    /*
 +     * callback for changing texture selection in inventory list of texture floater
 +     */
 +    void setOnTextureSelectedCallback(texture_selected_callback cb);
 +
 +    void setShowLoadingPlaceholder(bool showLoadingPlaceholder);
 +
 +    LLViewerFetchedTexture* getTexture() { return mTexturep; }
 +
 +    void setBakeTextureEnabled(bool enabled);
 +    bool getBakeTextureEnabled() const { return mBakeTextureEnabled; }
 +
 +    void setInventoryPickType(EPickInventoryType type);
 +    EPickInventoryType getInventoryPickType() { return mInventoryPickType; };
 +
 +    bool isImageLocal() { return mLocalTrackingID.notNull(); }
 +    LLUUID getLocalTrackingID() { return mLocalTrackingID; }
 +
 +private:
 +    bool allowDrop(LLInventoryItem* item, EDragAndDropType cargo_type, std::string& tooltip_msg);
 +    bool doDrop(LLInventoryItem* item);
 +
 +private:
 +    drag_n_drop_callback        mDragCallback;
 +    drag_n_drop_callback        mDropCallback;
 +    commit_callback_t           mOnCancelCallback;
 +    commit_callback_t           mOnSelectCallback;
 +    commit_callback_t           mOnCloseCallback;
 +    texture_selected_callback   mOnTextureSelectedCallback;
 +    LLPointer<LLViewerFetchedTexture> mTexturep;
 +    LLUIColor                   mBorderColor;
 +    LLUUID                      mImageItemID;
 +    LLUUID                      mImageAssetID;
 +    LLUUID                      mDefaultImageAssetID;
 +    LLUUID                      mBlankImageAssetID;
 +    LLUUID                      mLocalTrackingID;
 +    LLUIImagePtr                mFallbackImage;
 +    std::string                 mDefaultImageName;
 +    LLHandle<LLFloater>         mFloaterHandle;
 +    LLTextBox*                  mTentativeLabel;
 +    LLTextBox*                  mCaption;
 +    std::string                 mLabel;
 +    bool                        mAllowNoTexture; // If true, the user can select "none" as an option
 +    bool                        mAllowLocalTexture;
 +    PermissionMask              mImmediateFilterPermMask;
 +    PermissionMask              mDnDFilterPermMask;
 +    bool                        mCanApplyImmediately;
 +    bool                        mCommitOnSelection;
 +    bool                        mNeedsRawImageData;
 +    LLViewBorder*               mBorder;
 +    bool                        mValid;
 +    bool                        mShowLoadingPlaceholder;
 +    std::string                 mLoadingPlaceholderString;
 +    S32                         mLabelWidth;
 +    bool                        mOpenTexPreview;
 +    bool                        mBakeTextureEnabled;
 +    EPickInventoryType mInventoryPickType;
 +};
 +
 +//////////////////////////////////////////////////////////////////////////////////////////
 +// LLFloaterTexturePicker
 +typedef boost::function<void(LLTextureCtrl::ETexturePickOp op, LLPickerSource source, const LLUUID& asset_id, const LLUUID& inventory_id, const LLUUID& tracking_id)> floater_commit_callback;
 +typedef boost::function<void()> floater_close_callback;
 +typedef boost::function<void(const LLUUID& asset_id)> set_image_asset_id_callback;
 +typedef boost::function<void(LLPointer<LLViewerTexture> texture)> set_on_update_image_stats_callback;
 +
 +class LLFloaterTexturePicker : public LLFloater
 +{
 +public:
 +    LLFloaterTexturePicker(
 +        LLView* owner,
 +        LLUUID image_asset_id,
 +        LLUUID default_image_asset_id,
 +        LLUUID blank_image_asset_id,
 +        bool tentative,
 +        bool allow_no_texture,
 +        const std::string& label,
 +        PermissionMask immediate_filter_perm_mask,
 +        PermissionMask dnd_filter_perm_mask,
 +        bool can_apply_immediately,
 +        LLUIImagePtr fallback_image_name,
 +        EPickInventoryType pick_type);
 +
 +    virtual ~LLFloaterTexturePicker();
 +
 +    // LLView overrides
 +    /*virtual*/ bool    handleDragAndDrop(S32 x, S32 y, MASK mask,
 +        bool drop, EDragAndDropType cargo_type, void *cargo_data,
 +        EAcceptance *accept,
 +        std::string& tooltip_msg);
 +    /*virtual*/ void    draw();
 +    /*virtual*/ bool    handleKeyHere(KEY key, MASK mask);
 +
 +    // LLFloater overrides
 +    /*virtual*/ bool    postBuild();
 +    /*virtual*/ void    onOpen(const LLSD& key);
 +    /*virtual*/ void    onClose(bool app_settings);
 +
 +    // New functions
 +    void setImageID(const LLUUID& image_asset_id, bool set_selection = true);
 +    bool updateImageStats(); // true if within limits
 +    const LLUUID&   getAssetID() { return mImageAssetID; }
 +    const LLUUID&   findItemID(const LLUUID& asset_id, bool copyable_only, bool ignore_library = false);
 +    void            setCanApplyImmediately(bool b);
 +
 +    void            setActive(bool active);
 +
 +    LLView*         getOwner() const { return mOwner; }
 +    void            setOwner(LLView* owner) { mOwner = owner; }
 +    void            stopUsingPipette();
 +
 +    void commitIfImmediateSet();
 +    void commitCallback(LLTextureCtrl::ETexturePickOp op);
 +    void commitCancel();
 +
 +    void onFilterEdit(const std::string& search_string);
 +
 +    void setCanApply(bool can_preview, bool can_apply, bool inworld_image = true);
 +    void setMinDimentionsLimits(S32 min_dim);
 +    void setTextureSelectedCallback(const texture_selected_callback& cb) { mTextureSelectedCallback = cb; }
 +    void setOnFloaterCloseCallback(const floater_close_callback& cb) { mOnFloaterCloseCallback = cb; }
 +    void setOnFloaterCommitCallback(const floater_commit_callback& cb) { mOnFloaterCommitCallback = cb; }
 +    void setSetImageAssetIDCallback(const set_image_asset_id_callback& cb) { mSetImageAssetIDCallback = cb; }
 +    void setOnUpdateImageStatsCallback(const set_on_update_image_stats_callback& cb) { mOnUpdateImageStatsCallback = cb; }
 +    const LLUUID& getDefaultImageAssetID() { return mDefaultImageAssetID; }
 +    const LLUUID& getBlankImageAssetID() { return mBlankImageAssetID; }
 +
 +    static void     onBtnSetToDefault(void* userdata);
 +    static void     onBtnSelect(void* userdata);
 +    static void     onBtnCancel(void* userdata);
 +    void            onBtnPipette();
 +    //static void       onBtnRevert( void* userdata );
 +    static void     onBtnBlank(void* userdata);
 +    static void     onBtnNone(void* userdata);
 +    void            onSelectionChange(const std::deque<LLFolderViewItem*> &items, bool user_action);
 +    static void     onApplyImmediateCheck(LLUICtrl* ctrl, void* userdata);
 +    void            onTextureSelect(const LLTextureEntry& te);
 +
 +    static void     onModeSelect(LLUICtrl* ctrl, void *userdata);
 +    static void     onBtnAdd(void* userdata);
 +    static void     onBtnRemove(void* userdata);
 +    static void     onBtnUpload(void* userdata);
 +    static void     onLocalScrollCommit(LLUICtrl* ctrl, void* userdata);
 +
 +    static void     onBakeTextureSelect(LLUICtrl* ctrl, void *userdata);
 +
 +    void            setLocalTextureEnabled(bool enabled);
 +    void            setBakeTextureEnabled(bool enabled);
 +
 +    void setInventoryPickType(EPickInventoryType type);
 +    void setImmediateFilterPermMask(PermissionMask mask);
 +
 +    static void     onPickerCallback(const std::vector<std::string>& filenames, LLHandle<LLFloater> handle);
 +
 +protected:
 +    void changeMode();
 +    void refreshLocalList();
 +    void refreshInventoryFilter();
 +    void setImageIDFromItem(const LLInventoryItem* itemp, bool set_selection = true);
 +
 +    LLPointer<LLViewerTexture> mTexturep;
 +    LLPointer<LLFetchedGLTFMaterial> mGLTFMaterial;
 +    LLView*             mOwner;
 +
 +    LLUUID              mImageAssetID; // Currently selected texture
 +    LLUIImagePtr        mFallbackImage; // What to show if currently selected texture is null.
 +    LLUUID              mDefaultImageAssetID;
 +    LLUUID              mBlankImageAssetID;
 +    bool                mTentative;
 +    bool                mAllowNoTexture;
 +    LLUUID              mSpecialCurrentImageAssetID;  // Used when the asset id has no corresponding texture in the user's inventory.
 +    LLUUID              mOriginalImageAssetID;
 +
 +    std::string         mLabel;
 +
 +    LLTextBox*          mTentativeLabel;
 +    LLTextBox*          mResolutionLabel;
 +    LLTextBox*          mResolutionWarning;
 +
 +    std::string         mPendingName;
 +    bool                mActive;
 +
 +    LLFilterEditor*     mFilterEdit;
 +    LLInventoryPanel*   mInventoryPanel;
 +    PermissionMask      mImmediateFilterPermMask;
 +    PermissionMask      mDnDFilterPermMask;
 +    bool                mCanApplyImmediately;
 +    bool                mNoCopyTextureSelected;
 +    F32                 mContextConeOpacity;
 +    LLSaveFolderState   mSavedFolderState;
 +    bool                mSelectedItemPinned;
 +
 +    LLComboBox*         mModeSelector;
 +    LLScrollListCtrl*   mLocalScrollCtrl;
 +    LLButton*           mDefaultBtn;
 +    LLButton*           mNoneBtn;
 +    LLButton*           mBlankBtn;
 +    LLButton*           mPipetteBtn;
 +    LLButton*           mSelectBtn;
 +    LLButton*           mCancelBtn;
 +
 +private:
 +    bool mCanApply;
 +    bool mCanPreview;
 +    bool mPreviewSettingChanged;
 +    bool mLimitsSet;
 +    S32 mMaxDim;
 +    S32 mMinDim;
 +    EPickInventoryType mInventoryPickType;
 +
 +
 +    texture_selected_callback mTextureSelectedCallback;
 +    floater_close_callback mOnFloaterCloseCallback;
 +    floater_commit_callback mOnFloaterCommitCallback;
 +    set_image_asset_id_callback mSetImageAssetIDCallback;
 +    set_on_update_image_stats_callback mOnUpdateImageStatsCallback;
 +
 +    bool mBakeTextureEnabled;
 +
 +    static S32 sLastPickerMode;
 +};
 +
 +#endif  // LL_LLTEXTURECTRL_H
  | 
