You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.8 KiB
95 lines
3.8 KiB
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============ |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//============================================================================= |
|
|
|
#ifndef VGUI_H |
|
#define VGUI_H |
|
|
|
//If you are going to add stuff to the vgui core... |
|
// |
|
//Keep it simple. |
|
// |
|
//Never put code in a header. |
|
// |
|
//The name of the class is the name of the the file |
|
// |
|
//Each class gets its own .cpp file for its definition and a .h for its header. Helper |
|
//classes can be used but only within the .cpp and not referenceable from anywhere else. |
|
// |
|
//Don't add unneeded files. Keep the API clean. |
|
// |
|
//No platform specific code in vgui\lib-src\vgui dir. Code in vgui\lib-src\vgui should |
|
//only include from vgui\include or standard C includes. ie, if I see windows.h included |
|
//anywhere but vgui\lib-src\win32 I will hunt you down and kill you. Don't give me any crap |
|
//that mfc is platform inspecific. |
|
// |
|
//Always use <> and not "" for includes |
|
// |
|
//Use minimum dependencies in headers. Don't include another header if you can get away |
|
//with forward declaring (which is usually the case) |
|
// |
|
//No macros in headers. They are tools of satan. This also means no use of DEFINEs, use enum |
|
// |
|
//Minimize global functions |
|
// |
|
//No global variables. |
|
// |
|
//Panel is getting pretty plump, try and avoid adding junk to it if you can |
|
|
|
//TODO: Look and Feel support |
|
// add Panel::setPaintProxy, if _paintProxy exists, it calls _paintProxy->paint |
|
// instead of Panel::paint. Components should implement their painting in a seperate |
|
// plugin class. Perhaps to encourage this, Panel::paint should just go away completely |
|
// The other option is to have Panel have the interface Paintable |
|
// class Paintable |
|
// { |
|
// public: |
|
// virtual void paint()=0; |
|
// }; |
|
// Then a component can implement its paint in the class itself and then call |
|
// setPaintProxy(this). If this is the case _paintProxy->paint should always be called |
|
// and never Panel::paint from within paintTraverse |
|
//TODO: Figure out the 'Valve' Look and Feel and implement that instead of a the Java one |
|
//TODO: Determine ownership policy for Borders, Layouts, etc.. |
|
//TODO: tooltips support |
|
//TODO: ComboKey (hot key support) |
|
//TODO: add Background.cpp, remove paintBackground from all components |
|
// Panel implements setBackground, Panel::paintBackground calls _background->paintBackground |
|
// similiar to the way Border works. |
|
//TODO: Builtin components should never overide paintBackground, only paint |
|
//TODO: All protected members should be converted to private |
|
//TODO: All member variables should be moved to the top of the class prototype |
|
//TODO: All private methods should be prepended with private |
|
//TODO: Use of word internal in method names is not consistent and confusing |
|
//TODO: Cleanup so bullshit publics are properly named, maybe even figure out |
|
// a naming convention for them |
|
//TODO: Breakup InputSignal into logical pieces |
|
//TODO: Button is in a state of disarray, it should have ButtonModel support |
|
//TODO: get rid of all the stupid strdup laziness, convert to vgui_strdup |
|
//TODO: actually figure out policy on String and implement it consistently |
|
//TODO: implement createLayoutInfo for other Layouts than need it |
|
//TODO: BorderLayout should have option for a null LayoutInfo defaulting to center |
|
//TODO: SurfaceBase should go away, put it in Surface |
|
//TODO: ActionSignals and other Signals should just set a flag when they fire. |
|
// then App can come along later and fire all the signals |
|
//TODO: Change all method naming to starting with a capital letter. |
|
|
|
#if XASH_WIN32 |
|
# define VGUIAPI __declspec( dllexport ) |
|
#else |
|
# define VGUIAPI __attribute__ ((visibility("default"))) |
|
#include <sys/types.h> // size_t define |
|
#endif |
|
|
|
#define null 0L |
|
|
|
typedef unsigned char uchar; |
|
typedef unsigned short ushort; |
|
typedef unsigned int uint; |
|
typedef unsigned long ulong; |
|
|
|
#endif |
|
|
|
|