/** * @file llxyvector.h * @author Andrey Lihatskiy * @brief Header file for LLXYVector * * $LicenseInfo:firstyear=2001&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2018, 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$ */ // A control that allows to set two related vector magnitudes by manipulating a single vector on a plane. #ifndef LL_LLXYVECTOR_H #define LL_LLXYVECTOR_H #include "lluictrl.h" #include "llpanel.h" #include "lltextbox.h" #include "lllineeditor.h" class LLXYVector : public LLUICtrl { public: struct Params : public LLInitParam::Block { Optional x_entry; Optional y_entry; Optional touch_area; Optional border; Optional edit_bar_height; Optional padding; Optional label_width; Optional min_val_x; Optional max_val_x; Optional increment_x; Optional min_val_y; Optional max_val_y; Optional increment_y; Optional arrow_color; Optional ghost_color; Optional area_color; Optional grid_color; Optional logarithmic; Params(); }; ~LLXYVector() override; bool postBuild() override; bool handleHover(S32 x, S32 y, MASK mask) override; bool handleMouseUp(S32 x, S32 y, MASK mask) override; bool handleMouseDown(S32 x, S32 y, MASK mask) override; void draw() override; void setValue(const LLSD& value) override; void setValue(F32 x, F32 y); LLSD getValue() const override; protected: friend class LLUICtrlFactory; LLXYVector(const Params&); void onEditChange(); protected: LLTextBox* mXLabel; LLTextBox* mYLabel; LLLineEditor* mXEntry; LLLineEditor* mYEntry; LLPanel* mTouchArea; LLViewBorder* mBorder; private: void update(); void setValueAndCommit(F32 x, F32 y); F32 mValueX; F32 mValueY; F32 mMinValueX; F32 mMaxValueX; F32 mIncrementX; F32 mMinValueY; F32 mMaxValueY; F32 mIncrementY; U32 mGhostX; U32 mGhostY; LLUIColor mArrowColor; LLUIColor mGhostColor; LLUIColor mAreaColor; LLUIColor mGridColor; bool mLogarithmic; F32 mLogScaleX; F32 mLogScaleY; }; #endif