446 lines
22 KiB
C
446 lines
22 KiB
C
/*
|
|
** Command & Conquer Generals(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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// (c) 2001-2003 Electronic Arts Inc. //
|
|
// //
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// FILE: GadgetSlider.h ///////////////////////////////////////////////////////
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// Westwood Studios Pacific.
|
|
//
|
|
// Confidential Information
|
|
// Copyright (C) 2001 - All Rights Reserved
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// Project: RTS3
|
|
//
|
|
// File name: GadgetSlider.h
|
|
//
|
|
// Created: Colin Day, June 2001
|
|
//
|
|
// Desc: Helpful interface for Sliders
|
|
//
|
|
// Slider Sliders are constructed of 4 pieces, two end pieces,
|
|
// a repeating center, and a smaller repeating center pieces
|
|
// to fill small seams. Since there are vertical sliders
|
|
// and horizontal sliders, the LEFT end of a horizontal
|
|
// slider is stored in the same place as the TOP end for a
|
|
// vertical slider. The RIGHT end of a horizontal is
|
|
// also equivalent to the BOTTOM end of a vertical one.
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma once
|
|
|
|
#ifndef __GADGETSLIDER_H_
|
|
#define __GADGETSLIDER_H_
|
|
|
|
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
|
|
|
// USER INCLUDES //////////////////////////////////////////////////////////////
|
|
#include "GameClient/GameWindow.h"
|
|
#include "GameClient/GameWindowManager.h"
|
|
#include "GameClient/GadgetPushButton.h"
|
|
#include "GameClient/Gadget.h"
|
|
#include "GameClient/Image.h"
|
|
|
|
// FORWARD REFERENCES /////////////////////////////////////////////////////////
|
|
|
|
// TYPE DEFINES ///////////////////////////////////////////////////////////////
|
|
enum{
|
|
HORIZONTAL_SLIDER_THUMB_POSITION = HORIZONTAL_SLIDER_THUMB_HEIGHT *2/3
|
|
};
|
|
// INLINING ///////////////////////////////////////////////////////////////////
|
|
|
|
inline void GadgetSliderGetMinMax( GameWindow *g, Int *min, Int *max )
|
|
{
|
|
SliderData *sData = (SliderData *)g->winGetUserData();
|
|
|
|
*max = sData->maxVal;
|
|
*min = sData->minVal;
|
|
|
|
}
|
|
inline GameWindow *GadgetSliderGetThumb( GameWindow *g ) { return g->winGetChild(); }
|
|
|
|
inline void GadgetSliderSetPosition( GameWindow *win, Int pos )
|
|
{
|
|
TheWindowManager->winSendSystemMsg( win,
|
|
GSM_SET_SLIDER,
|
|
pos,
|
|
0 );
|
|
}
|
|
|
|
inline Int GadgetSliderGetPosition( GameWindow *win )
|
|
{
|
|
SliderData *sData = (SliderData *)win->winGetUserData();
|
|
if (sData)
|
|
{
|
|
return sData->position;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
// sliders are drawn from pieces, a left/top, right/bottom, repeating center, and small repeating center
|
|
inline void GadgetSliderSetEnabledImages( GameWindow *g, const Image *left, const Image *right, const Image *center, const Image *smallCenter )
|
|
{
|
|
g->winSetEnabledImage( 0, left );
|
|
g->winSetEnabledImage( 1, right );
|
|
g->winSetEnabledImage( 2, center );
|
|
g->winSetEnabledImage( 3, smallCenter );
|
|
}
|
|
inline void GadgetSliderSetEnabledImageLeft( GameWindow *g, const Image *left ) { g->winSetEnabledImage( 0, left ); }
|
|
inline void GadgetSliderSetEnabledImageTop( GameWindow *g, const Image *left ) { g->winSetEnabledImage( 0, left ); }
|
|
inline void GadgetSliderSetEnabledImageRight( GameWindow *g, const Image *right ) { g->winSetEnabledImage( 1, right ); }
|
|
inline void GadgetSliderSetEnabledImageBottom( GameWindow *g, const Image *right ) { g->winSetEnabledImage( 1, right ); }
|
|
inline void GadgetSliderSetEnabledImageCenter( GameWindow *g, const Image *center ) { g->winSetEnabledImage( 2, center ); }
|
|
inline void GadgetSliderSetEnabledImageSmallCenter( GameWindow *g, const Image *smallCenter ) { g->winSetEnabledImage( 3, smallCenter ); }
|
|
inline void GadgetSliderSetEnabledColor( GameWindow *g, Color color ) { g->winSetEnabledColor( 0, color ); }
|
|
inline void GadgetSliderSetEnabledBorderColor( GameWindow *g, Color color ) { g->winSetEnabledBorderColor( 0, color ); }
|
|
inline const Image *GadgetSliderGetEnabledImageLeft( GameWindow *g ) { return g->winGetEnabledImage( 0 ); }
|
|
inline const Image *GadgetSliderGetEnabledImageTop( GameWindow *g ) { return g->winGetEnabledImage( 0 ); }
|
|
inline const Image *GadgetSliderGetEnabledImageRight( GameWindow *g ) { return g->winGetEnabledImage( 1 ); }
|
|
inline const Image *GadgetSliderGetEnabledImageBottom( GameWindow *g ) { return g->winGetEnabledImage( 1 ); }
|
|
inline const Image *GadgetSliderGetEnabledImageCenter( GameWindow *g ) { return g->winGetEnabledImage( 2 ); }
|
|
inline const Image *GadgetSliderGetEnabledImageSmallCenter( GameWindow *g ) { return g->winGetEnabledImage( 3 ); }
|
|
inline Color GadgetSliderGetEnabledColor( GameWindow *g ) { return g->winGetEnabledColor( 0 ); }
|
|
inline Color GadgetSliderGetEnabledBorderColor( GameWindow *g ) { return g->winGetEnabledBorderColor( 0 ); }
|
|
|
|
// sliders are drawn from pieces, a left/top, right/bottom, repeating center, and small repeating center
|
|
inline void GadgetSliderSetDisabledImages( GameWindow *g, const Image *left, const Image *right, const Image *center, const Image *smallCenter )
|
|
{
|
|
g->winSetDisabledImage( 0, left );
|
|
g->winSetDisabledImage( 1, right );
|
|
g->winSetDisabledImage( 2, center );
|
|
g->winSetDisabledImage( 3, smallCenter );
|
|
}
|
|
inline void GadgetSliderSetDisabledImageLeft( GameWindow *g, const Image *left ) { g->winSetDisabledImage( 0, left ); }
|
|
inline void GadgetSliderSetDisabledImageTop( GameWindow *g, const Image *left ) { g->winSetDisabledImage( 0, left ); }
|
|
inline void GadgetSliderSetDisabledImageRight( GameWindow *g, const Image *right ) { g->winSetDisabledImage( 1, right ); }
|
|
inline void GadgetSliderSetDisabledImageBottom( GameWindow *g, const Image *right ) { g->winSetDisabledImage( 1, right ); }
|
|
inline void GadgetSliderSetDisabledImageCenter( GameWindow *g, const Image *center ) { g->winSetDisabledImage( 2, center ); }
|
|
inline void GadgetSliderSetDisabledImageSmallCenter( GameWindow *g, const Image *smallCenter ) { g->winSetDisabledImage( 3, smallCenter ); }
|
|
inline void GadgetSliderSetDisabledColor( GameWindow *g, Color color ) { g->winSetDisabledColor( 0, color ); }
|
|
inline void GadgetSliderSetDisabledBorderColor( GameWindow *g, Color color ) { g->winSetDisabledBorderColor( 0, color ); }
|
|
inline const Image *GadgetSliderGetDisabledImageLeft( GameWindow *g ) { return g->winGetDisabledImage( 0 ); }
|
|
inline const Image *GadgetSliderGetDisabledImageTop( GameWindow *g ) { return g->winGetDisabledImage( 0 ); }
|
|
inline const Image *GadgetSliderGetDisabledImageRight( GameWindow *g ) { return g->winGetDisabledImage( 1 ); }
|
|
inline const Image *GadgetSliderGetDisabledImageBottom( GameWindow *g ) { return g->winGetDisabledImage( 1 ); }
|
|
inline const Image *GadgetSliderGetDisabledImageCenter( GameWindow *g ) { return g->winGetDisabledImage( 2 ); }
|
|
inline const Image *GadgetSliderGetDisabledImageSmallCenter( GameWindow *g ){ return g->winGetDisabledImage( 3 ); }
|
|
inline Color GadgetSliderGetDisabledColor( GameWindow *g ) { return g->winGetDisabledColor( 0 ); }
|
|
inline Color GadgetSliderGetDisabledBorderColor( GameWindow *g ) { return g->winGetDisabledBorderColor( 0 ); }
|
|
|
|
// sliders are drawn from pieces, a left/top, right/bottom, repeating center, and small repeating center
|
|
inline void GadgetSliderSetHiliteImages( GameWindow *g, const Image *left, const Image *right, const Image *center, const Image *smallCenter )
|
|
{
|
|
g->winSetHiliteImage( 0, left );
|
|
g->winSetHiliteImage( 1, right );
|
|
g->winSetHiliteImage( 2, center );
|
|
g->winSetHiliteImage( 3, smallCenter );
|
|
}
|
|
inline void GadgetSliderSetHiliteImageLeft( GameWindow *g, const Image *left ) { g->winSetHiliteImage( 0, left ); }
|
|
inline void GadgetSliderSetHiliteImageTop( GameWindow *g, const Image *left ) { g->winSetHiliteImage( 0, left ); }
|
|
inline void GadgetSliderSetHiliteImageRight( GameWindow *g, const Image *right ) { g->winSetHiliteImage( 1, right ); }
|
|
inline void GadgetSliderSetHiliteImageBottom( GameWindow *g, const Image *right ) { g->winSetHiliteImage( 1, right ); }
|
|
inline void GadgetSliderSetHiliteImageCenter( GameWindow *g, const Image *center ) { g->winSetHiliteImage( 2, center ); }
|
|
inline void GadgetSliderSetHiliteImageSmallCenter( GameWindow *g, const Image *smallCenter ) { g->winSetHiliteImage( 3, smallCenter ); }
|
|
inline void GadgetSliderSetHiliteColor( GameWindow *g, Color color ) { g->winSetHiliteColor( 0, color ); }
|
|
inline void GadgetSliderSetHiliteBorderColor( GameWindow *g, Color color ) { g->winSetHiliteBorderColor( 0, color ); }
|
|
inline const Image *GadgetSliderGetHiliteImageLeft( GameWindow *g ) { return g->winGetHiliteImage( 0 ); }
|
|
inline const Image *GadgetSliderGetHiliteImageTop( GameWindow *g ) { return g->winGetHiliteImage( 0 ); }
|
|
inline const Image *GadgetSliderGetHiliteImageRight( GameWindow *g ) { return g->winGetHiliteImage( 1 ); }
|
|
inline const Image *GadgetSliderGetHiliteImageBottom( GameWindow *g ) { return g->winGetHiliteImage( 1 ); }
|
|
inline const Image *GadgetSliderGetHiliteImageCenter( GameWindow *g ) { return g->winGetHiliteImage( 2 ); }
|
|
inline const Image *GadgetSliderGetHiliteImageSmallCenter( GameWindow *g ){ return g->winGetHiliteImage( 3 ); }
|
|
inline Color GadgetSliderGetHiliteColor( GameWindow *g ) { return g->winGetHiliteColor( 0 ); }
|
|
inline Color GadgetSliderGetHiliteBorderColor( GameWindow *g ) { return g->winGetHiliteBorderColor( 0 ); }
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Functions to set the images and colors for the slider thumb
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// enabled
|
|
inline void GadgetSliderSetEnabledThumbImage( GameWindow *g, const Image *image )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetEnabledImage( thumb, image );
|
|
}
|
|
inline void GadgetSliderSetEnabledThumbColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetEnabledColor( thumb, color );
|
|
}
|
|
inline void GadgetSliderSetEnabledThumbBorderColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetEnabledBorderColor( thumb, color );
|
|
}
|
|
inline void GadgetSliderSetEnabledSelectedThumbImage( GameWindow *g, const Image *image )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetEnabledSelectedImage( thumb, image );
|
|
}
|
|
inline void GadgetSliderSetEnabledSelectedThumbColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetEnabledSelectedColor( thumb, color );
|
|
}
|
|
inline void GadgetSliderSetEnabledSelectedThumbBorderColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetEnabledSelectedBorderColor( thumb, color );
|
|
}
|
|
inline const Image *GadgetSliderGetEnabledThumbImage( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetEnabledImage( thumb );
|
|
else
|
|
return NULL;
|
|
}
|
|
inline Color GadgetSliderGetEnabledThumbColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetEnabledColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
inline Color GadgetSliderGetEnabledThumbBorderColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetEnabledBorderColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
inline const Image *GadgetSliderGetEnabledSelectedThumbImage( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetEnabledSelectedImage( thumb );
|
|
else
|
|
return NULL;
|
|
}
|
|
inline Color GadgetSliderGetEnabledSelectedThumbColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetEnabledSelectedColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
inline Color GadgetSliderGetEnabledSelectedThumbBorderColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetEnabledSelectedBorderColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
|
|
|
|
// disabled
|
|
inline void GadgetSliderSetDisabledThumbImage( GameWindow *g, const Image *image )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetDisabledImage( thumb, image );
|
|
}
|
|
inline void GadgetSliderSetDisabledThumbColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetDisabledColor( thumb, color );
|
|
}
|
|
inline void GadgetSliderSetDisabledThumbBorderColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetDisabledBorderColor( thumb, color );
|
|
}
|
|
inline void GadgetSliderSetDisabledSelectedThumbImage( GameWindow *g, const Image *image )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetDisabledSelectedImage( thumb, image );
|
|
}
|
|
inline void GadgetSliderSetDisabledSelectedThumbColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetDisabledSelectedColor( thumb, color );
|
|
}
|
|
inline void GadgetSliderSetDisabledSelectedThumbBorderColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetDisabledSelectedBorderColor( thumb, color );
|
|
}
|
|
inline const Image *GadgetSliderGetDisabledThumbImage( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetDisabledImage( thumb );
|
|
else
|
|
return NULL;
|
|
}
|
|
inline Color GadgetSliderGetDisabledThumbColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetDisabledColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
inline Color GadgetSliderGetDisabledThumbBorderColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetDisabledBorderColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
inline const Image *GadgetSliderGetDisabledSelectedThumbImage( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetDisabledSelectedImage( thumb );
|
|
else
|
|
return NULL;
|
|
}
|
|
inline Color GadgetSliderGetDisabledSelectedThumbColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetDisabledSelectedColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
inline Color GadgetSliderGetDisabledSelectedThumbBorderColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetDisabledSelectedBorderColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
|
|
// hilite
|
|
inline void GadgetSliderSetHiliteThumbImage( GameWindow *g, const Image *image )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetHiliteImage( thumb, image );
|
|
}
|
|
inline void GadgetSliderSetHiliteThumbColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetHiliteColor( thumb, color );
|
|
}
|
|
inline void GadgetSliderSetHiliteThumbBorderColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetHiliteBorderColor( thumb, color );
|
|
}
|
|
inline void GadgetSliderSetHiliteSelectedThumbImage( GameWindow *g, const Image *image )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetHiliteSelectedImage( thumb, image );
|
|
}
|
|
inline void GadgetSliderSetHiliteSelectedThumbColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetHiliteSelectedColor( thumb, color );
|
|
}
|
|
inline void GadgetSliderSetHiliteSelectedThumbBorderColor( GameWindow *g, Color color )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
GadgetButtonSetHiliteSelectedBorderColor( thumb, color );
|
|
}
|
|
inline const Image *GadgetSliderGetHiliteThumbImage( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetHiliteImage( thumb );
|
|
else
|
|
return NULL;
|
|
}
|
|
inline Color GadgetSliderGetHiliteThumbColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetHiliteColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
inline Color GadgetSliderGetHiliteThumbBorderColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetHiliteBorderColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
inline const Image *GadgetSliderGetHiliteSelectedThumbImage( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetHiliteSelectedImage( thumb );
|
|
else
|
|
return NULL;
|
|
}
|
|
inline Color GadgetSliderGetHiliteSelectedThumbColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetHiliteSelectedColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
inline Color GadgetSliderGetHiliteSelectedThumbBorderColor( GameWindow *g )
|
|
{
|
|
GameWindow *thumb = g->winGetChild();
|
|
if( thumb )
|
|
return GadgetButtonGetHiliteSelectedBorderColor( thumb );
|
|
else
|
|
return WIN_COLOR_UNDEFINED;
|
|
}
|
|
|
|
// EXTERNALS //////////////////////////////////////////////////////////////////
|
|
|
|
#endif // __GADGETSLIDER_H_
|
|
|