// Ryzom - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program 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 Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . #ifndef NL_INTERFACE_CONFIG_H #define NL_INTERFACE_CONFIG_H #include "nel/misc/stream.h" namespace NLGUI { class CGroupContainer; } namespace NLMISC{ class CCDBNodeLeaf; } /** * interface config * class used to managed an interface configuration * \author Matthieu 'TRAP' Besson * \author Nevrax France * \date 2003 */ class CInterfaceConfig { public: // Elements saved from the container struct SCont { std::string Id; uint8 ContainerMode; // 0 - Normal, 1 - Small (save just Opened, ActiveSavable and Active) bool Popuped; bool Opened; sint32 X; sint32 Y; sint32 W; sint32 H; sint32 MinW; sint32 MaxW; bool ActiveSavable; bool Active; sint32 ScrollPos; bool Locked; bool Movable; // alpha uint8 BgAlpha; uint8 ContentAlpha; uint8 RolloverAlphaContent; uint8 RolloverAlphaContainer; bool UseGlobalAlpha; // popup state sint32 PopupX; sint32 PopupY; sint32 PopupW; sint32 PopupH; sint32 PopupMaxH; // backuped position bool BackupedPositionValid; sint32 BackupX; sint32 BackupY; // touch flag bool TouchFlag; // // ------------------------------ void serial (NLMISC::IStream &f); // ------------------------------ void setFrom ( NLGUI::CGroupContainer *pGC); void setTo ( NLGUI::CGroupContainer *pGC); }; // Image of a desktop class CDesktopImage { public: std::vector GCImages; // Image of each group container in the desktop sint Version; // Stream version for extra datas NLMISC::CMemStream ExtraDatas; // TODO : replace it with some polymorphic scheme // CDesktopImage(); void serial(NLMISC::IStream &s); // Build a virtual desktop image from the current desktop void fromCurrentDesktop(); // Set current desktop from this desktop image void toCurrentDesktop(); // Update image of the given group container (added to the list if it does not exist) void updateGroupContainerImage( NLGUI::CGroupContainer &gc); // Remove a group container from the image void removeGroupContainerImage(const std::string &groupName); private: void read(NLMISC::IStream &s); void write(NLMISC::IStream &s); }; // Elements saved from database struct SDBLeaf { std::string Name; sint64 Value; sint64 OldValue; // ------------------------------ void serial (NLMISC::IStream &f); // ------------------------------ void setFrom (NLMISC::CCDBNodeLeaf *pNL); void setTo (NLMISC::CCDBNodeLeaf *pNL); }; void dataBaseToStream (NLMISC::IStream &f); // Write to stream (should support seek functionnality) void streamToDataBase (NLMISC::IStream &f, uint32 uiDbSaveVersion); }; #endif // NL_INTERFACE_CONFIG_H /* End of interface_config.h */