From 3f27ba891ac4d032753b219b4b96d1ffbc9fb488 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 15 Aug 2008 23:45:16 -0500 Subject: Second Life viewer sources 1.18.5.0-RC --- linden/indra/llwindow/lllogitechlcd.h | 135 ++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 linden/indra/llwindow/lllogitechlcd.h (limited to 'linden/indra/llwindow/lllogitechlcd.h') diff --git a/linden/indra/llwindow/lllogitechlcd.h b/linden/indra/llwindow/lllogitechlcd.h new file mode 100644 index 0000000..6804bef --- /dev/null +++ b/linden/indra/llwindow/lllogitechlcd.h @@ -0,0 +1,135 @@ +/** + * @file lcd.h + * @brief Description of the LCD owner class. + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2007, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LOGITECH_LCD_H +#define LL_LOGITECH_LCD_H + +#include +#include "llFrametimer.h" + +class CEzLcd; + +// TO Add a new display page groups, duplicate the Region or Debug or Chat class, then modify what's actually displayed (ie how many pages and whats in them) +// in the constructor and update display functions. +// Remember to add in a new enum type for the new display type, and add in functions to actually create/update or remove this page in the SetupDisplayPages function +// And, of course, add the new option to the Menu in llpanelLCDoption.xml, and save details (duplicate the ones for debug or region). + +// this defines one pages worth of display items. +class llLCDSpecificPage +{ +public: + int mPageIndex; + typedef std::vector displayItemArray_t; + // array of indexes that come from the lcd display sdk for specific items being displayed on a given page + displayItemArray_t mDisplayItemArray; +}; + +// this defines a group of pages - associated with a specific type of display, like Debug, Linden Account info, region etc +// NOTE this can have more than one page associated with it - so it has an array of cLCDSpecificPage for each page. +class llLCDPageGroup +{ +public: + llLCDPageGroup(CEzLcd *LCD, int type, HICON SLIcon); + virtual ~llLCDPageGroup(); + virtual void UpdateDetails() = 0; + virtual void GetDisplayable() = 0; + int mType; + HANDLE mHandle; + typedef std::vector pageArray_t; + pageArray_t mPageArray; + BOOL mDisplayPage; +protected: + + CEzLcd *mLCD; + HICON mSLIcon; +}; + + +// class that defines the Default page - used if nothing else is enabled +class llDefaultPageGroup : public llLCDPageGroup +{ +public: + llDefaultPageGroup(CEzLcd *LCD, int type, HICON SLIcon); + virtual void UpdateDetails(); + virtual void GetDisplayable(); +}; + +// Root class - contains pointers to actual LCD display object, and arrays of page groups to be displayed +class llLCD +{ +public: + enum + { + kLCDDefault, + kLCDDebug, + kLCDChat, + kLCDRegion, + kLCDLinden, + kLCDIM, + kLCDDebugConsole, + kMaxLCDPageGroups + }; + llLCD(HINSTANCE instance); + ~llLCD(); + void UpdateDisplay(); + bool Enabled(); + BOOL AreZ10Available(); + BOOL IsG15Available(); + + typedef std::vector pageGroupArray_t; + pageGroupArray_t mPageGroupArray; + HICON mSLIcon; + CEzLcd *mLCD; +private: + + // member functions to display data + void SetUpDisplayPages(); + llLCDPageGroup *GetNextPageToDisplay(); + + llLCDPageGroup *mCurrentGroupBeingShown; + + // members + bool mInited; + + int mPageToShow; + LLFrameTimer mDisplayTimer; + LLFrameTimer mDebounceTimer; + HINSTANCE mInstance; // necessary for loading some icons for the dot matrix LCD display to use + bool mFirstTimeThru; + + + // actual display set up variables + int mDestinationLCD; +}; + + + +#endif \ No newline at end of file -- cgit v1.1