home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 15
/
CD_ASCQ_15_070894.iso
/
news
/
2531
/
include
/
uguipro.h
< prev
Wrap
C/C++ Source or Header
|
1994-06-12
|
26KB
|
623 lines
/************************************************************************\
* File : uguipro.h *
**************************************************************************
* ** ULTIMAN'S G.U.I. ** *
* ********************** *
* -- V 0.99ß -- *
* *
* Copyright (c) 1994 Jérôme Stolfo (UltimaN) *
* *
* -> Français <- | -> English <- *
* Contenu : Ce fichier contient les | Contents : This file contents the *
* définitions des classes de UGUI. | defines for the classes of UGUI *
* Concernant les menus déroulants. | for the menus. Must be placed *
* Il doit être placé en #include | as #include at the begginning of*
* à chaque fic. utilisant les menus| each file using UGUI menus. *
* | *
* ......ENREGISTREMENT....... | ........REGISTERING........ *
* Veuillez SVP lire le fichier | Please read the file READ.ME that *
* LISEZ.MOI qui contient les infor- | contents legal informations about *
* mations légales sur ce logiciel, | that soft, as well as how to *
* ainsi que les modalités d'enregis- | register. *
* trement. | *
* | *
* ----------IMPORTANT----------------|-----------IMPORTANT-------------- *
* Ce fichier, ainsi que les autres | This file, like the others ones *
* fichiers source fourni avec UGUI, | furnished with UGUI, is only gi- *
* est seulement fourni dans un but | ven to help to debugging your *
* de contrôle, d'aide au débuguage, | programs, or for curiosities. *
* de curiosité. Il ne doit pas être | He must not be modified, copied *
* modifié, copié séparément des au- | separately of the other files, *
* tres fichiers, vendu, etc. | or sold , etc. *
* | *
* Les seules informations de ce fi- | The only things you can modify, *
* chier que vous pouvez modifier | are : the #define directives, *
* sont : les directives #define , | and the consts. *
* et les constantes. | *
\************************************************************************/
#ifndef _UGUIPRO_H_
#define _UGUIPRO_H_
#include <ugui.h>
/* return codes of sub menus */
const int UGUIMenuLeft = -1;
const int UGUIMenuRight = -2;
const int UGUIMenuEscape = 0;
/* default width and height of sub menus */
const int UGUISubMenuWidth = 184;
const int UGUISubMenuHeight = 20;
/***************************************************************************/
/* >> UGUIGenericMenu */
/* Generic menu */
/***************************************************************************/
class UGUIGenericSubMenu;
class UGUIBaseMenuItem;
class UGUIGenericMenu : protected UGUIGenericObjectList
{
public :
UGUIGenericMenu ( int, int, int, int, int =1, int =128,
UGUIMenuSettings const & );
/* x, y, length, nb_of_menus, width_of_menu, settings*/
UGUIGenericMenu ( UGUIRectPosition const &, int =1, int =128,
UGUIMenuSettings const & );
UGUIGenericMenu ( UGUIGenericMenu const & );
~UGUIGenericMenu ();
void reDraw(); /* reDraws */
int event ( UGUIEventStruct const & );
void resetLastResult(); /* sets last result to 0 */
int getLastResult();
void setString ( const char *, int ); /* sets titles of menus */
void getString ( char *, int );
UGUIBaseObject *getDrawingObject ( int ); /* returns buttons of title*/
UGUIGenericSubMenu *getSubMenu ( int ); /* returns submenu */
void setSubMenu ( UGUIGenericSubMenu *, int );/*sets a submenu */
void setSubMenu ( int, const char *, UGUIGenericSubMenu * );
/* no, title, submenu */
int addItem ( int, UGUIBaseMenuItem * );
void setSelected ( int );
int getSelected ( );
int getNumber ();
int getWidth ();
UGUIRectPosition getPosition ();
void move ( UGUIRectPosition const & );
void setSettings ( UGUIMenuSettings const & =UGUIgeneralMenuSettings );
UGUIMenuSettings getSettings ();
protected :
int selected,
number,
width;
UGUIRectPosition position;
UGUIMenuSettings settings;
UGUIGenericObjectList drawing;
virtual void addObjects () =0;
};
/***************************************************************************\
* >> UGUIMenuGraphic *
* Menuin graphic mode *
*****************************************************************************
* Constructor : *
* int, int, coordonnées *
* int, int, width and height *
* *or* *
* UGUIRectPosition position *
* int, sub menus number *
* int, width of each title *
* UGUIMenuSettings settings *
\***************************************************************************/
class UGUIMenuGraphic : public UGUIGenericMenu
{
public :
UGUIMenuGraphic ( int, int, int, int, int =1, int =128,
UGUIMenuSettings const & =UGUIgeneralMenuSettings );
/* x, y, length, nb_of_menus, width_of_menu, settings*/
UGUIMenuGraphic ( UGUIRectPosition const &, int =1, int =128,
UGUIMenuSettings const & =UGUIgeneralMenuSettings );
UGUIMenuGraphic ( UGUIMenuGraphic const & );
~UGUIMenuGraphic ();
protected :
void addObjects ();
};
/***************************************************************************/
/* >> UGUIGenericSubMenu */
/* Generic submenu */
/***************************************************************************/
class UGUIGenericSubMenu : protected UGUIGenericObjectList
{
public :
UGUIGenericSubMenu ( int =10, int =UGUISubMenuWidth,
int =UGUISubMenuHeight, UGUISubMenuSettings const & );
UGUIGenericSubMenu ( UGUIRectPosition const &, int =10,
int =UGUISubMenuHeight,
UGUISubMenuSettings const & );
UGUIGenericSubMenu ( UGUIGenericSubMenu const & );
~UGUIGenericSubMenu ();
void reDraw();
int event ( UGUIEventStruct const & );
void resetLastResult();
int getLastResult();
UGUIRectPosition getPosition ();
void move ( UGUIRectPosition const & );
void move ( int, int );
int getNumber (); /* returns item number */
int getSelected ();
void setSelected(int);
UGUISubMenuSettings getSettings ();
void setSettings ( UGUISubMenuSettings const & );
UGUIBaseObject *getWindowObject ( int ); /* returns frames,etc */
UGUIBaseObject *getItem ( int ); /* returns an item */
void setItem ( UGUIBaseMenuItem *, int ); /* sets an item */
int addItem ( UGUIBaseMenuItem * );
virtual void drawBack() =0; /* saves background */
virtual void saveBack() =0; /* draws background*/
protected :
UGUIRectPosition position;
int height;
UGUISubMenuSettings settings;
virtual void addObjects ( )=0;
int lineSizeMem;
char **backPic;
int nbSaves;
char *title;
byte alreadyDrawed;
int selected,
number;
UGUIGenericObjectList drawing;
};
/***************************************************************************\
* >> UGUISubMenuGraphic *
* SubMenu in graphic mode *
*****************************************************************************
* Constructor : *
* nothing *
* *or* *
* UGUIRectPosition position *
* int, item numbers *
* int, int, width and height *
* UGUISubMenuSettings settings *
\***************************************************************************/
class UGUISubMenuGraphic : public UGUIGenericSubMenu
{
public :
/* x, y, length, nb_of_menus, width_of_menu, settings*/
UGUISubMenuGraphic ( int =10, int =UGUISubMenuWidth,
int =UGUISubMenuHeight, UGUISubMenuSettings const &
=UGUIgeneralMenuSettings.subMenu);
UGUISubMenuGraphic ( UGUIRectPosition const &, int =10,
int =UGUISubMenuHeight,
UGUISubMenuSettings const &
=UGUIgeneralMenuSettings.subMenu );
UGUISubMenuGraphic ( UGUISubMenuGraphic const & );
~UGUISubMenuGraphic ();
void move ( UGUIRectPosition const & );
void drawBack();
void saveBack();
protected :
void addObjects ( );
};
/***************************************************************************/
/**** ITEMS **********************************/
/***************************************************************************/
/***************************************************************************/
/* >> UGUIBaseMenuItem */
/* Base class for all items */
/***************************************************************************/
class UGUIBaseMenuItem : public UGUIBaseObject
{
public :
virtual void setSettings ( UGUISubMenuSettings const &
=UGUIgeneralMenuSettings.subMenu ) =0;
virtual UGUISubMenuSettings getSettings () =0;
void move ( UGUIRectPosition const & );
UGUIRectPosition getPosition ();
protected :
UGUIRectPosition position;
};
/***************************************************************************/
/* >> UGUIMenuItemText */
/* Item : text */
/***************************************************************************/
class UGUIMenuItemText : public UGUIBaseMenuItem
{
public :
UGUIMenuItemText ( int, char * ="" );
/* return, text */
~UGUIMenuItemText ();
void reDraw() =0;
int event ( UGUIEventStruct const & );
int getReturnValue ();
void setReturnValue ( int );
void setText ( char * ="" );/* sets text */
void getText ( char * );
void setSettings ( UGUISubMenuSettings const &
=UGUIgeneralMenuSettings.subMenu );
UGUISubMenuSettings getSettings ();
protected :
int returnValue;
char *text;
UGUITextSettings settings;
};
/***************************************************************************\
* >> UGUIMenuItemTextGraphic *
* Item : text (for graphic modes ) *
*****************************************************************************
* Constructor : *
* int, return value *
* char * text of item *
\***************************************************************************/
class UGUIMenuItemTextGraphic : public UGUIMenuItemText
{
public :
UGUIMenuItemTextGraphic ( int, char * ="" );
void reDraw();
};
/***************************************************************************/
/* >> UGUIMenuItemSeparator */
/* Item : text */
/***************************************************************************/
class UGUIMenuItemSeparator : public UGUIBaseMenuItem
{
public :
void setSettings ( UGUISubMenuSettings const &
=UGUIgeneralMenuSettings.subMenu );
UGUISubMenuSettings getSettings ();
UGUIMenuItemSeparator ();
void reDraw() =0;
int event ( UGUIEventStruct const & );
int getReturnValue ();
void setReturnValue ( int );
protected :
UGUILineSettings settings;
int returnValue; /* normally 0 */
};
/***************************************************************************\
* >> UGUIMenuItemSeparatorGraphic *
* Item : separator (for graphics modes ) *
*****************************************************************************
* Constructor : *
* *no parameters* *
\***************************************************************************/
class UGUIMenuItemSeparatorGraphic : public UGUIMenuItemSeparator
{
public :
UGUIMenuItemSeparatorGraphic ( );
void reDraw();
};
/***************************************************************************/
/* >> UGUIMenuItemSubMenu */
/* Item : submenu in menus */
/***************************************************************************/
class UGUIMenuItemSubMenu : public UGUIBaseMenuItem
{
public :
void setSettings ( UGUISubMenuSettings const &
=UGUIgeneralMenuSettings.subMenu );
UGUISubMenuSettings getSettings ();
UGUIMenuItemSubMenu ( char * ="", int=10, int =UGUISubMenuWidth,
int=UGUISubMenuHeight);
/* text, number of item, wid, hei */
~UGUIMenuItemSubMenu ();
void reDraw() =0;
int event ( UGUIEventStruct const & );
UGUIGenericSubMenu *getSubMenu (); /* returns sub-sub menu */
void setSubMenu ( UGUIGenericSubMenu * );/* sets sub menu */
void setText ( char * ="" ); /* sets text */
void getText ( char * );
void move ( UGUIRectPosition const & );
void setPosition();
void getPosition(int &, int &);
int addItem ( UGUIBaseMenuItem * );
protected :
char *text;
UGUISubMenuSettings settings;
UGUIGenericSubMenu *subMenu;
int number, width, height;
UGUIRectPosition position;
};
/***************************************************************************\
* >> UGUIMenuItemSubMenuGraphic *
* Item : sub menu in menus *
*****************************************************************************
* Constructor : *
* char * text of item *
* int number of items in sub menu *
* int, int, width and height of sub menu *
\***************************************************************************/
class UGUIMenuItemSubMenuGraphic : public UGUIMenuItemSubMenu
{
public :
UGUIMenuItemSubMenuGraphic ( char * ="", int =10, int=UGUISubMenuWidth,
int =UGUISubMenuHeight);
void move ( UGUIRectPosition const & );
void reDraw();
};
/***************************************************************************\
* IMPLEMENTATION OF INLINE FUNCTIONS *
* *
* --> W A R N I N G : DO NOT MODIFY ! *
\***************************************************************************/
/***************************************************************************/
/* >> UGUIGenericMenu */
/* Generic menu */
/***************************************************************************/
inline UGUIGenericMenu::~UGUIGenericMenu () {}
inline void UGUIGenericMenu::reDraw()
{ drawing.reDraw();
}
inline void UGUIGenericMenu::resetLastResult()
{ lastResult = UGUI_RNOTHING; }
inline int UGUIGenericMenu::getLastResult()
{ return lastResult; }
inline void UGUIGenericMenu::setString ( const char *str, int no )
{ ((UGUITextButton*)drawing.getObject(no))->setText ( str ); }
inline void UGUIGenericMenu::getString ( char *ptr, int no )
{ ((UGUITextButton*)drawing.getObject(no))->getText( ptr ); }
inline UGUIBaseObject *UGUIGenericMenu::getDrawingObject ( int no )
{ return drawing.getObject(no); }
inline UGUIGenericSubMenu *UGUIGenericMenu::getSubMenu ( int no )
{ return (UGUIGenericSubMenu*)objects[no]; }
inline void UGUIGenericMenu::setSubMenu ( UGUIGenericSubMenu *ob, int no )
{ set ( (UGUIBaseObject*)ob, no );
if (objects[no])
((UGUIGenericSubMenu*)objects[no])->
move ( position.left+no*width, position.bottom+1 );
}
inline void UGUIGenericMenu::setSubMenu ( int no, const char *title,
UGUIGenericSubMenu *sm )
{ setString ( title, no );
setSubMenu ( sm, no );
}
inline int UGUIGenericMenu::addItem ( int no, UGUIBaseMenuItem *it )
{ if (objects[no])
return getSubMenu(no)->addItem ( it );
return -1;
}
inline void UGUIGenericMenu::setSelected ( int x )
{ selected = x; }
inline int UGUIGenericMenu::getSelected ( )
{ return selected; }
inline int UGUIGenericMenu::getNumber ()
{ return number; }
inline int UGUIGenericMenu::getWidth ()
{ return width; }
inline UGUIRectPosition UGUIGenericMenu::getPosition ()
{ return position; }
/***************************************************************************/
/* >> UGUIMenuGraphic */
/* Menuin graphic mode */
/***************************************************************************/
inline UGUIMenuGraphic::UGUIMenuGraphic ( int x, int y, int length, int hei,
int nb, int width, UGUIMenuSettings const &set )
: UGUIGenericMenu ( x, y, length, hei, nb, width, set )
{ this->addObjects();
}
inline UGUIMenuGraphic::UGUIMenuGraphic ( UGUIRectPosition const &pos, int nb,
int width, UGUIMenuSettings const &set )
: UGUIGenericMenu ( pos, nb, width, set )
{ this->addObjects();
}
inline UGUIMenuGraphic::UGUIMenuGraphic ( UGUIMenuGraphic const &ob )
: UGUIGenericMenu ( ob )
{ this->addObjects();
}
inline UGUIMenuGraphic::~UGUIMenuGraphic()
{}
/***************************************************************************/
/* >> UGUIGenericSubMenu */
/* Generic submenu */
/***************************************************************************/
inline UGUIGenericSubMenu::~UGUIGenericSubMenu () {}
inline void UGUIGenericSubMenu::resetLastResult()
{ lastResult = UGUI_RNOTHING; }
inline int UGUIGenericSubMenu::getLastResult()
{ return lastResult; }
inline UGUIRectPosition UGUIGenericSubMenu::getPosition ()
{ return position; }
inline int UGUIGenericSubMenu::getNumber ()
{ return number; }
inline int UGUIGenericSubMenu::getSelected ()
{ return selected; }
inline void UGUIGenericSubMenu::setSelected (int s)
{ selected = s; }
inline UGUISubMenuSettings UGUIGenericSubMenu::getSettings ()
{ return settings; }
inline UGUIBaseObject *UGUIGenericSubMenu::getWindowObject ( int x )
{ return drawing.getObject(x); }
inline UGUIBaseObject *UGUIGenericSubMenu::getItem ( int x)
{ return objects[x]; }
/***************************************************************************/
/* >> UGUISubMenuGraphic */
/* SubMenu in graphic mode */
/***************************************************************************/
inline UGUISubMenuGraphic::UGUISubMenuGraphic ( int num, int wid, int hei,
UGUISubMenuSettings const &set )
: UGUIGenericSubMenu ( num, wid, hei, set )
{ this->addObjects();
}
inline UGUISubMenuGraphic::UGUISubMenuGraphic ( UGUIRectPosition const &pos,
int num, int hei,
UGUISubMenuSettings const &set )
: UGUIGenericSubMenu ( pos, num, hei, set )
{ this->addObjects();
}
inline UGUISubMenuGraphic::UGUISubMenuGraphic (
UGUISubMenuGraphic const &ob )
: UGUIGenericSubMenu ( ob ) {}
/***************************************************************************/
/* >> UGUIBaseMenuItem */
/* Base class for menu items */
/***************************************************************************/
inline void UGUIBaseMenuItem::move ( UGUIRectPosition const &pos )
{ position = pos; }
inline UGUIRectPosition UGUIBaseMenuItem::getPosition ()
{ return position; }
/***************************************************************************/
/* >> UGUIMenuItemText */
/* Item : text */
/***************************************************************************/
inline UGUIMenuItemText::~UGUIMenuItemText ()
{ if (text) delete text; }
inline int UGUIMenuItemText::event ( UGUIEventStruct const &ev )
{ lastResult = returnValue; return lastResult; }
inline int UGUIMenuItemText::getReturnValue ()
{ return returnValue; }
inline void UGUIMenuItemText::setReturnValue ( int val )
{ returnValue = val; }
inline void UGUIMenuItemText::getText( char *ptr )
{ strcpy ( ptr, text );
}
/***************************************************************************/
/* >> UGUIMenuItemTextGraphic */
/* Item : text (for graphic modes ) */
/***************************************************************************/
/***************************************************************************/
/* >> UGUIMenuItemSeparator */
/* Item : text */
/***************************************************************************/
inline UGUIMenuItemSeparator::UGUIMenuItemSeparator () {}
inline int UGUIMenuItemSeparator::event (
UGUIEventStruct const &ev )
{ lastResult = 0;
return lastResult; }
inline int UGUIMenuItemSeparator::getReturnValue ()
{ return returnValue; }
inline void UGUIMenuItemSeparator::setReturnValue ( int val )
{ returnValue = val; }
inline void UGUIMenuItemSeparator::setSettings (
UGUISubMenuSettings const &set )
{ settings = set.separ;
}
/***************************************************************************/
/* >> UGUIMenuItemSeparatorGraphic */
/* Item : separator (for graphics modes ) */
/***************************************************************************/
inline UGUIMenuItemSeparatorGraphic::UGUIMenuItemSeparatorGraphic ( )
: UGUIMenuItemSeparator() {}
/***************************************************************************/
/* >> UGUIMenuItemSubMenu */
/* Item : submenu in menus */
/***************************************************************************/
inline void UGUIMenuItemSubMenu::getText( char *ptr )
{ strcpy ( ptr, text );
}
inline void UGUIMenuItemSubMenu::setSettings (
UGUISubMenuSettings const &set )
{ settings = set; }
inline UGUISubMenuSettings UGUIMenuItemSubMenu::getSettings ()
{ return settings; }
inline UGUIMenuItemSubMenu::~UGUIMenuItemSubMenu ()
{ if (text) delete text;
if (subMenu) delete subMenu;
}
inline UGUIGenericSubMenu *UGUIMenuItemSubMenu::getSubMenu ()
{ return subMenu; }
inline void UGUIMenuItemSubMenu::setSubMenu ( UGUIGenericSubMenu *sub )
{ if (subMenu) delete subMenu;
if (sub)
subMenu=sub;
}
inline void UGUIMenuItemSubMenu::move ( UGUIRectPosition const &pos )
{ position = pos;
}
inline int UGUIMenuItemSubMenu::addItem ( UGUIBaseMenuItem *it )
{ return getSubMenu()->addItem ( it );
}
/***************************************************************************/
/* >> UGUIMenuItemSubMenuGraphic */
/* Item : sub menu in menus */
/***************************************************************************/
inline UGUIMenuItemSubMenuGraphic::UGUIMenuItemSubMenuGraphic ( char *txt,
int nb, int wid, int hei )
: UGUIMenuItemSubMenu ( txt, nb, wid, hei ) {}
#endif