/indra/llui/llbadge.h
C++ Header | 174 lines | 98 code | 40 blank | 36 comment | 5 complexity | d7f45d19ace3d8b1348acb10defe9e60 MD5 | raw file
Possible License(s): LGPL-2.1
- /**
- * @file llbadge.h
- * @brief Header for badges
- *
- * $LicenseInfo:firstyear=2001&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_LLBADGE_H
- #define LL_LLBADGE_H
- #include <string>
- #include "lluicolor.h"
- #include "lluictrl.h"
- #include "llstring.h"
- #include "lluiimage.h"
- #include "llview.h"
- //
- // Declarations
- //
- class LLFontGL;
- class LLScrollContainer;
- class LLUICtrlFactory;
- //
- // Relative Position Alignment
- //
- namespace LLRelPos
- {
- enum Location
- {
- CENTER = 0,
- LEFT = (1 << 0),
- RIGHT = (1 << 1),
- TOP = (1 << 2),
- BOTTOM = (1 << 3),
- BOTTOM_LEFT = (BOTTOM | LEFT),
- BOTTOM_RIGHT = (BOTTOM | RIGHT),
- TOP_LEFT = (TOP | LEFT),
- TOP_RIGHT = (TOP | RIGHT),
- };
- inline bool IsBottom(Location relPos) { return (relPos & BOTTOM) == BOTTOM; }
- inline bool IsCenter(Location relPos) { return (relPos == CENTER); }
- inline bool IsLeft(Location relPos) { return (relPos & LEFT) == LEFT; }
- inline bool IsRight(Location relPos) { return (relPos & RIGHT) == RIGHT; }
- inline bool IsTop(Location relPos) { return (relPos & TOP) == TOP; }
- }
- // NOTE: This needs to occur before Optional<LLRelPos::Location> declaration for proper compilation.
- namespace LLInitParam
- {
- template<>
- struct TypeValues<LLRelPos::Location> : public TypeValuesHelper<LLRelPos::Location>
- {
- static void declareValues();
- };
- }
- //
- // Classes
- //
- class LLBadge
- : public LLUICtrl
- {
- public:
- struct Params
- : public LLInitParam::Block<Params, LLUICtrl::Params>
- {
- Optional< LLHandle<LLView> > owner; // Mandatory in code but not in xml
-
- Optional< LLUIImage* > border_image;
- Optional< LLUIColor > border_color;
- Optional< LLUIImage* > image;
- Optional< LLUIColor > image_color;
-
- Optional< std::string > label;
- Optional< LLUIColor > label_color;
- Optional< S32 > label_offset_horiz;
- Optional< S32 > label_offset_vert;
- Optional< LLRelPos::Location > location;
- Optional< S32 > location_offset_hcenter;
- Optional< S32 > location_offset_vcenter;
- Optional< U32 > location_percent_hcenter;
- Optional< U32 > location_percent_vcenter;
- Optional< F32 > padding_horiz;
- Optional< F32 > padding_vert;
-
- Params();
-
- bool equals(const Params&) const;
- };
-
- protected:
- friend class LLUICtrlFactory;
- LLBadge(const Params& p);
- public:
- ~LLBadge();
- bool addToView(LLView * view);
- virtual void draw();
- const std::string getLabel() const { return wstring_to_utf8str(mLabel); }
- void setLabel( const LLStringExplicit& label);
- private:
- LLPointer< LLUIImage > mBorderImage;
- LLUIColor mBorderColor;
- const LLFontGL* mGLFont;
-
- LLPointer< LLUIImage > mImage;
- LLUIColor mImageColor;
-
- LLUIString mLabel;
- LLUIColor mLabelColor;
- S32 mLabelOffsetHoriz;
- S32 mLabelOffsetVert;
- LLRelPos::Location mLocation;
- S32 mLocationOffsetHCenter;
- S32 mLocationOffsetVCenter;
- F32 mLocationPercentHCenter;
- F32 mLocationPercentVCenter;
-
- LLHandle< LLView > mOwner;
- F32 mPaddingHoriz;
- F32 mPaddingVert;
- LLScrollContainer* mParentScroller;
- };
- // Build time optimization, generate once in .cpp file
- #ifndef LLBADGE_CPP
- extern template class LLBadge* LLView::getChild<class LLBadge>(const std::string& name, BOOL recurse) const;
- #endif
- #endif // LL_LLBADGE_H