/* ** Command & Conquer Generals Zero Hour(tm) ** Copyright 2025 Electronic Arts Inc. ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU 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 General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . */ //////////////////////////////////////////////////////////////////////////////// // // // (c) 2001-2003 Electronic Arts Inc. // // // //////////////////////////////////////////////////////////////////////////////// // FILE: LayoutScheme.h /////////////////////////////////////////////////////// //----------------------------------------------------------------------------- // // Westwood Studios Pacific. // // Confidential Information // Copyright (C) 2001 - All Rights Reserved // //----------------------------------------------------------------------------- // // Project: GUIEdit // // File name: LayoutScheme.h // // Created: Colin Day, August 2001 // // Desc: Layout scheme editing and loading // //----------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////// #pragma once #ifndef __LAYOUTSCHEME_H_ #define __LAYOUTSCHEME_H_ // SYSTEM INCLUDES //////////////////////////////////////////////////////////// #include // USER INCLUDES ////////////////////////////////////////////////////////////// #include "Lib/BaseType.h" #include "Properties.h" // FORWARD REFERENCES ///////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // TYPE DEFINES /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // LayoutScheme --------------------------------------------------------------- /** The layout scheme provides a place for default look of newly * created controls and windows */ //----------------------------------------------------------------------------- class LayoutScheme { public: LayoutScheme(); ~LayoutScheme(); void init( void ); void openDialog( void ); ///< open the scheme info and editing dialog char *getSchemeFilename( void ); ///< get the scheme filename void setSchemeFilename( char *filename ); ///< set the scheme filename Bool saveScheme( char *filename ); ///< save the current scheme to file Bool loadScheme( char *filename ); ///< load the scheme file ImageAndColorInfo *getImageAndColor( StateIdentifier id ); void storeImageAndColor( StateIdentifier id, const Image *image, Color color, Color borderColor ); void setFont( GameFont *font ); GameFont *getFont( void ); Color getEnabledTextColor( void ); Color getEnabledTextBorderColor( void ); Color getDisabledTextColor( void ); Color getDisabledTextBorderColor( void ); Color getHiliteTextColor( void ); Color getHiliteTextBorderColor( void ); void setEnabledTextColor( Color c ); void setEnabledTextBorderColor( Color c ); void setDisabledTextColor( Color c ); void setDisabledTextBorderColor( Color c ); void setHiliteTextColor( Color c ); void setHiliteTextBorderColor( Color c ); /** apply the image and color info stored in the state identifer tables used for "property editing" to all appropriate windows currently loaded in the editor */ void applyPropertyTablesToWindow( GameWindow *root ); protected: ImageAndColorInfo *findEntry( StateIdentifier id ); char m_schemeFilename[ _MAX_PATH ]; ///< filename ImageAndColorInfo m_imageAndColorTable[ NUM_STATE_IDENTIFIERS ]; // the color and image info TextDrawData m_enabledText; ///< default text colors TextDrawData m_disabledText; ///< default text colors TextDrawData m_hiliteText; ///< default text colors GameFont *m_font; ///< default font }; // end LayoutScheme /////////////////////////////////////////////////////////////////////////////// // INLINING /////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// inline char *LayoutScheme::getSchemeFilename( void ) { return m_schemeFilename; } inline void LayoutScheme::setSchemeFilename( char *filename ) { strcpy( m_schemeFilename, filename ); } inline Color LayoutScheme::getEnabledTextColor( void ) { return m_enabledText.color; } inline Color LayoutScheme::getEnabledTextBorderColor( void ) { return m_enabledText.borderColor; } inline Color LayoutScheme::getDisabledTextColor( void ) { return m_disabledText.color; } inline Color LayoutScheme::getDisabledTextBorderColor( void ) { return m_disabledText.borderColor; } inline Color LayoutScheme::getHiliteTextColor( void ) { return m_hiliteText.color; } inline Color LayoutScheme::getHiliteTextBorderColor( void ) { return m_hiliteText.borderColor; } inline void LayoutScheme::setEnabledTextColor( Color c ) { m_enabledText.color = c; } inline void LayoutScheme::setEnabledTextBorderColor( Color c ) { m_enabledText.borderColor = c; } inline void LayoutScheme::setDisabledTextColor( Color c ) { m_disabledText.color = c; } inline void LayoutScheme::setDisabledTextBorderColor( Color c ) { m_disabledText.borderColor = c; } inline void LayoutScheme::setHiliteTextColor( Color c ) { m_hiliteText.color = c; } inline void LayoutScheme::setHiliteTextBorderColor( Color c ) { m_hiliteText.borderColor = c; } inline void LayoutScheme::setFont( GameFont *font ) { m_font = font; } inline GameFont *LayoutScheme::getFont( void ) { return m_font; } /////////////////////////////////////////////////////////////////////////////// // EXTERNALS ////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// extern LayoutScheme *TheDefaultScheme; #endif // end __LAYOUTSCHEME_H_