Alibek Omarov
7 years ago
committed by
GitHub
14 changed files with 1061 additions and 9 deletions
@ -0,0 +1,95 @@ |
|||||||
|
//========= 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.
|
||||||
|
|
||||||
|
#ifdef _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 |
||||||
|
|
@ -0,0 +1,130 @@ |
|||||||
|
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
// $NoKeywords: $
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifndef VGUI_APP_H |
||||||
|
#define VGUI_APP_H |
||||||
|
|
||||||
|
#include<VGUI.h> |
||||||
|
#include<VGUI_MouseCode.h> |
||||||
|
#include<VGUI_KeyCode.h> |
||||||
|
#include<VGUI_Dar.h> |
||||||
|
#include<VGUI_Cursor.h> |
||||||
|
|
||||||
|
namespace vgui |
||||||
|
{ |
||||||
|
|
||||||
|
class Panel; |
||||||
|
class TickSignal; |
||||||
|
class Scheme; |
||||||
|
class TickSignal; |
||||||
|
class SurfaceBase; |
||||||
|
|
||||||
|
class VGUIAPI App |
||||||
|
{ |
||||||
|
public: |
||||||
|
App() {} |
||||||
|
App(bool externalMain) {} |
||||||
|
public: |
||||||
|
static App* getInstance() {return 0;} |
||||||
|
//TODO: the public and public bullshit are all messed up, need to organize
|
||||||
|
//TODO: actually all of the access needs to be properly thought out while you are at it
|
||||||
|
public: |
||||||
|
virtual void start() {} |
||||||
|
virtual void stop() {} |
||||||
|
virtual void externalTick() {} |
||||||
|
virtual bool wasMousePressed(MouseCode code,Panel* panel) {return false;} |
||||||
|
virtual bool wasMouseDoublePressed(MouseCode code,Panel* panel) {return false;} |
||||||
|
virtual bool isMouseDown(MouseCode code,Panel* panel) {return false;} |
||||||
|
virtual bool wasMouseReleased(MouseCode code,Panel* panel) {return false;} |
||||||
|
virtual bool wasKeyPressed(KeyCode code,Panel* panel) {return false;} |
||||||
|
virtual bool isKeyDown(KeyCode code,Panel* panel) {return false;} |
||||||
|
virtual bool wasKeyTyped(KeyCode code,Panel* panel) {return false;} |
||||||
|
virtual bool wasKeyReleased(KeyCode code,Panel* panel) {return false;} |
||||||
|
virtual void addTickSignal(TickSignal* s) {} |
||||||
|
virtual void setCursorPos(int x,int y) {} |
||||||
|
virtual void getCursorPos(int& x,int& y) {} |
||||||
|
virtual void setMouseCapture(Panel* panel) {} |
||||||
|
virtual void setMouseArena(int x0,int y0,int x1,int y1,bool enabled) {} |
||||||
|
virtual void setMouseArena(Panel* panel) {} |
||||||
|
virtual void requestFocus(Panel* panel) {} |
||||||
|
virtual Panel* getFocus() {return 0;} |
||||||
|
virtual void repaintAll() {} |
||||||
|
virtual void setScheme(Scheme* scheme) {} |
||||||
|
virtual Scheme* getScheme() {return 0;} |
||||||
|
virtual void enableBuildMode() {} |
||||||
|
virtual long getTimeMillis() {return 0;} |
||||||
|
virtual char getKeyCodeChar(KeyCode code,bool shifted) {return '\0';} |
||||||
|
virtual void getKeyCodeText(KeyCode code,char* buf,int buflen) {} |
||||||
|
virtual int getClipboardTextCount() {return 0;} |
||||||
|
virtual void setClipboardText(const char* text,int textLen) {} |
||||||
|
virtual int getClipboardText(int offset,char* buf,int bufLen) {return 0;} |
||||||
|
virtual void reset() {} |
||||||
|
virtual void internalSetMouseArena(int x0,int y0,int x1,int y1,bool enabled) {} |
||||||
|
virtual bool setRegistryString(const char* key,const char* value) {return false;} |
||||||
|
virtual bool getRegistryString(const char* key,char* value,int valueLen) {return false;} |
||||||
|
virtual bool setRegistryInteger(const char* key,int value) {return false;} |
||||||
|
virtual bool getRegistryInteger(const char* key,int& value) {return false;} |
||||||
|
virtual void setCursorOveride(Cursor* cursor) {} |
||||||
|
virtual Cursor* getCursorOveride() {return 0;} |
||||||
|
virtual void setMinimumTickMillisInterval(int interval) {} |
||||||
|
public: //bullshit public stuff
|
||||||
|
virtual void main(int argc,char* argv[])=0; |
||||||
|
virtual void run() {} |
||||||
|
virtual void internalCursorMoved(int x,int y,SurfaceBase* surfaceBase) {} //expects input in surface space
|
||||||
|
virtual void internalMousePressed(MouseCode code,SurfaceBase* surfaceBase) {} |
||||||
|
virtual void internalMouseDoublePressed(MouseCode code,SurfaceBase* surfaceBase) {} |
||||||
|
virtual void internalMouseReleased(MouseCode code,SurfaceBase* surfaceBase) {} |
||||||
|
virtual void internalMouseWheeled(int delta,SurfaceBase* surfaceBase) {} |
||||||
|
virtual void internalKeyPressed(KeyCode code,SurfaceBase* surfaceBase) {} |
||||||
|
virtual void internalKeyTyped(KeyCode code,SurfaceBase* surfaceBase) {} |
||||||
|
virtual void internalKeyReleased(KeyCode code,SurfaceBase* surfaceBase) {} |
||||||
|
private: |
||||||
|
virtual void init() {} |
||||||
|
virtual void updateMouseFocus(int x,int y,SurfaceBase* surfaceBase) {} |
||||||
|
virtual void setMouseFocus(Panel* newMouseFocus) {} |
||||||
|
protected: |
||||||
|
virtual void surfaceBaseCreated(SurfaceBase* surfaceBase) {} |
||||||
|
virtual void surfaceBaseDeleted(SurfaceBase* surfaceBase) {} |
||||||
|
virtual void platTick() {} |
||||||
|
virtual void internalTick() {} |
||||||
|
protected: |
||||||
|
static App* _instance; |
||||||
|
protected: |
||||||
|
bool _running; |
||||||
|
bool _externalMain; |
||||||
|
Dar<SurfaceBase*> _surfaceBaseDar; |
||||||
|
Panel* _keyFocus; |
||||||
|
Panel* _oldMouseFocus; |
||||||
|
Panel* _mouseFocus; |
||||||
|
Panel* _mouseCapture; |
||||||
|
Panel* _wantedKeyFocus; |
||||||
|
bool _mousePressed[MOUSE_LAST]; |
||||||
|
bool _mouseDoublePressed[MOUSE_LAST]; |
||||||
|
bool _mouseDown[MOUSE_LAST]; |
||||||
|
bool _mouseReleased[MOUSE_LAST]; |
||||||
|
bool _keyPressed[KEY_LAST]; |
||||||
|
bool _keyTyped[KEY_LAST]; |
||||||
|
bool _keyDown[KEY_LAST]; |
||||||
|
bool _keyReleased[KEY_LAST]; |
||||||
|
Dar<TickSignal*> _tickSignalDar; |
||||||
|
Scheme* _scheme; |
||||||
|
bool _buildMode; |
||||||
|
bool _wantedBuildMode; |
||||||
|
Panel* _mouseArenaPanel; |
||||||
|
Cursor* _cursor[Cursor::dc_last]; |
||||||
|
Cursor* _cursorOveride; |
||||||
|
private: |
||||||
|
long _nextTickMillis; |
||||||
|
long _minimumTickMillisInterval; |
||||||
|
friend class SurfaceBase; |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
#endif |
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,44 @@ |
|||||||
|
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
// $NoKeywords: $
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifndef VGUI_COLOR_H |
||||||
|
#define VGUI_COLOR_H |
||||||
|
|
||||||
|
#include<VGUI.h> |
||||||
|
#include<VGUI_Scheme.h> |
||||||
|
|
||||||
|
//TODO: rename getColor(r,g,b,a) to getRGBA(r,g,b,a)
|
||||||
|
//TODO: rename setColor(r,g,b,a) to setRGBA(r,g,b,a)
|
||||||
|
//TODO: rename getColor(sc) to getSchemeColor(sc)
|
||||||
|
//TODO: rename setColor(sc) to setSchemeColor(sc)
|
||||||
|
|
||||||
|
namespace vgui |
||||||
|
{ |
||||||
|
|
||||||
|
class VGUIAPI Color |
||||||
|
{ |
||||||
|
private: |
||||||
|
uchar _color[4]; |
||||||
|
Scheme::SchemeColor _schemeColor; |
||||||
|
public: |
||||||
|
Color() {} |
||||||
|
Color(int r,int g,int b,int a) {} |
||||||
|
Color(Scheme::SchemeColor sc) {} |
||||||
|
private: |
||||||
|
virtual void init() {} |
||||||
|
public: |
||||||
|
virtual void setColor(int r,int g,int b,int a) {} |
||||||
|
virtual void setColor(Scheme::SchemeColor sc) {} |
||||||
|
virtual void getColor(int& r,int& g,int& b,int& a) {} |
||||||
|
virtual void getColor(Scheme::SchemeColor& sc) {} |
||||||
|
virtual int operator[](int index) {return 0;} |
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
#endif |
@ -0,0 +1,57 @@ |
|||||||
|
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
// $NoKeywords: $
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifndef VGUI_CURSOR_H |
||||||
|
#define VGUI_CURSOR_H |
||||||
|
|
||||||
|
#include<VGUI.h> |
||||||
|
|
||||||
|
namespace vgui |
||||||
|
{ |
||||||
|
|
||||||
|
class Bitmap; |
||||||
|
|
||||||
|
class VGUIAPI Cursor |
||||||
|
{ |
||||||
|
public: |
||||||
|
enum DefaultCursor |
||||||
|
{ |
||||||
|
dc_user, |
||||||
|
dc_none, |
||||||
|
dc_arrow, |
||||||
|
dc_ibeam, |
||||||
|
dc_hourglass, |
||||||
|
dc_crosshair, |
||||||
|
dc_up, |
||||||
|
dc_sizenwse, |
||||||
|
dc_sizenesw, |
||||||
|
dc_sizewe, |
||||||
|
dc_sizens, |
||||||
|
dc_sizeall, |
||||||
|
dc_no, |
||||||
|
dc_hand, |
||||||
|
dc_last |
||||||
|
}; |
||||||
|
private: |
||||||
|
int _hotspot[2]; |
||||||
|
Bitmap* _bitmap; |
||||||
|
DefaultCursor _dc; |
||||||
|
public: |
||||||
|
Cursor(DefaultCursor dc) {} |
||||||
|
Cursor(Bitmap* bitmap,int hotspotX,int hotspotY) {} |
||||||
|
public: |
||||||
|
virtual void getHotspot(int& x,int& y) {} |
||||||
|
private: |
||||||
|
virtual void privateInit(Bitmap* bitmap,int hotspotX,int hotspotY) {} |
||||||
|
public: |
||||||
|
virtual Bitmap* getBitmap() {return 0;} |
||||||
|
virtual DefaultCursor getDefaultCursor() {return dc_none;} |
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
#endif |
@ -0,0 +1,194 @@ |
|||||||
|
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
// $NoKeywords: $
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifndef VGUI_DAR_H |
||||||
|
#define VGUI_DAR_H |
||||||
|
|
||||||
|
#include<stdlib.h> |
||||||
|
#include<string.h> |
||||||
|
#include<VGUI.h> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
namespace vgui |
||||||
|
{ |
||||||
|
|
||||||
|
//Simple lightweight dynamic array implementation
|
||||||
|
template<class ELEMTYPE> class VGUIAPI Dar |
||||||
|
{ |
||||||
|
public: |
||||||
|
Dar() |
||||||
|
{ |
||||||
|
_count=0; |
||||||
|
_capacity=0; |
||||||
|
_data=null; |
||||||
|
ensureCapacity(4); |
||||||
|
} |
||||||
|
Dar(int initialCapacity) |
||||||
|
{ |
||||||
|
_count=0; |
||||||
|
_capacity=0; |
||||||
|
_data=null; |
||||||
|
ensureCapacity(initialCapacity); |
||||||
|
} |
||||||
|
public: |
||||||
|
void ensureCapacity(int wantedCapacity) |
||||||
|
{ |
||||||
|
if(wantedCapacity<=_capacity){return;} |
||||||
|
|
||||||
|
//double capacity until it is >= wantedCapacity
|
||||||
|
//this could be done with math, but iterative is just so much more fun
|
||||||
|
int newCapacity=_capacity; |
||||||
|
if(newCapacity==0){newCapacity=1;} |
||||||
|
while(newCapacity<wantedCapacity){newCapacity*=2;} |
||||||
|
|
||||||
|
//allocate and zero newData
|
||||||
|
ELEMTYPE* newData=new ELEMTYPE[newCapacity]; |
||||||
|
if(newData==null){exit(0);return;} |
||||||
|
memset(newData,0,sizeof(ELEMTYPE)*newCapacity); |
||||||
|
_capacity=newCapacity; |
||||||
|
|
||||||
|
//copy data into newData
|
||||||
|
for(int i=0;i<_count;i++){newData[i]=_data[i];} |
||||||
|
|
||||||
|
delete[] _data; |
||||||
|
_data=newData; |
||||||
|
} |
||||||
|
void setCount(int count) |
||||||
|
{ |
||||||
|
if((count<0)||(count>_capacity)) |
||||||
|
{ |
||||||
|
return; |
||||||
|
} |
||||||
|
_count=count; |
||||||
|
} |
||||||
|
int getCount() |
||||||
|
{ |
||||||
|
return _count; |
||||||
|
} |
||||||
|
void addElement(ELEMTYPE elem) |
||||||
|
{ |
||||||
|
ensureCapacity(_count+1); |
||||||
|
_data[_count]=elem; |
||||||
|
_count++; |
||||||
|
} |
||||||
|
bool hasElement(ELEMTYPE elem) |
||||||
|
{ |
||||||
|
for(int i=0;i<_count;i++) |
||||||
|
{ |
||||||
|
if(_data[i]==elem) |
||||||
|
{ |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
void putElement(ELEMTYPE elem) |
||||||
|
{ |
||||||
|
if(hasElement(elem)) |
||||||
|
{ |
||||||
|
return; |
||||||
|
} |
||||||
|
addElement(elem); |
||||||
|
} |
||||||
|
void insertElementAt(ELEMTYPE elem,int index) |
||||||
|
{ |
||||||
|
if((index<0)||(index>_count)) |
||||||
|
{ |
||||||
|
return; |
||||||
|
} |
||||||
|
if((index==_count)||(_count==0)) |
||||||
|
{ |
||||||
|
addElement(elem); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
addElement(elem); //just to make sure it is big enough
|
||||||
|
for(int i=_count-1;i>index;i--) |
||||||
|
{ |
||||||
|
_data[i]=_data[i-1]; |
||||||
|
} |
||||||
|
_data[index]=elem; |
||||||
|
} |
||||||
|
} |
||||||
|
void setElementAt(ELEMTYPE elem,int index) |
||||||
|
{ |
||||||
|
if((index<0)||(index>=_count)) |
||||||
|
{ |
||||||
|
return; |
||||||
|
} |
||||||
|
_data[index]=elem; |
||||||
|
} |
||||||
|
void removeElementAt(int index) |
||||||
|
{ |
||||||
|
if((index<0)||(index>=_count)) |
||||||
|
{ |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
//slide everything to the right of index, left one.
|
||||||
|
for(int i=index;i<(_count-1);i++) |
||||||
|
{ |
||||||
|
_data[i]=_data[i+1]; |
||||||
|
} |
||||||
|
_count--; |
||||||
|
} |
||||||
|
void removeElement(ELEMTYPE elem) |
||||||
|
{ |
||||||
|
for(int i=0;i<_count;i++) |
||||||
|
{ |
||||||
|
if(_data[i]==elem) |
||||||
|
{ |
||||||
|
removeElementAt(i); |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
void removeAll() |
||||||
|
{ |
||||||
|
_count=0; |
||||||
|
} |
||||||
|
ELEMTYPE operator[](int index) |
||||||
|
{ |
||||||
|
if((index<0)||(index>=_count)) |
||||||
|
{ |
||||||
|
return null; |
||||||
|
} |
||||||
|
return _data[index]; |
||||||
|
} |
||||||
|
protected: |
||||||
|
int _count; |
||||||
|
int _capacity; |
||||||
|
ELEMTYPE* _data; |
||||||
|
}; |
||||||
|
|
||||||
|
#ifdef _WIN32 |
||||||
|
//forward referencing all the template types used so they get exported
|
||||||
|
template class VGUIAPI Dar<char>; |
||||||
|
template class VGUIAPI Dar<char*>; |
||||||
|
template class VGUIAPI Dar<int>; |
||||||
|
template class VGUIAPI Dar<class Button*>; |
||||||
|
template class VGUIAPI Dar<class SurfaceBase*>; |
||||||
|
template class VGUIAPI Dar<class InputSignal*>; |
||||||
|
template class VGUIAPI Dar<class FocusChangeSignal*>; |
||||||
|
template class VGUIAPI Dar<class FrameSignal*>; |
||||||
|
template class VGUIAPI Dar<class ActionSignal*>; |
||||||
|
template class VGUIAPI Dar<class IntChangeSignal*>; |
||||||
|
template class VGUIAPI Dar<class TickSignal*>; |
||||||
|
template class VGUIAPI Dar<class Dar<char>*>; |
||||||
|
template class VGUIAPI Dar<class Frame*>; |
||||||
|
template class VGUIAPI Dar<class DesktopIcon*>; |
||||||
|
template class VGUIAPI Dar<class ChangeSignal*>; |
||||||
|
template class VGUIAPI Dar<class Panel*>; |
||||||
|
template class VGUIAPI Dar<class Label*>; |
||||||
|
template class VGUIAPI Dar<class RepaintSignal*>; |
||||||
|
#endif |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
#endif |
@ -0,0 +1,126 @@ |
|||||||
|
//========= Copyright Š 1996-2002, Valve LLC, All rights reserved. ============
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
// $NoKeywords: $
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifndef VGUI_KEYCODE_H |
||||||
|
#define VGUI_KEYCODE_H |
||||||
|
|
||||||
|
#include<VGUI.h> |
||||||
|
|
||||||
|
namespace vgui |
||||||
|
{ |
||||||
|
enum VGUIAPI KeyCode |
||||||
|
{ |
||||||
|
KEY_0=0, |
||||||
|
KEY_1, |
||||||
|
KEY_2, |
||||||
|
KEY_3, |
||||||
|
KEY_4, |
||||||
|
KEY_5, |
||||||
|
KEY_6, |
||||||
|
KEY_7, |
||||||
|
KEY_8, |
||||||
|
KEY_9, |
||||||
|
KEY_A, |
||||||
|
KEY_B, |
||||||
|
KEY_C, |
||||||
|
KEY_D, |
||||||
|
KEY_E, |
||||||
|
KEY_F, |
||||||
|
KEY_G, |
||||||
|
KEY_H, |
||||||
|
KEY_I, |
||||||
|
KEY_J, |
||||||
|
KEY_K, |
||||||
|
KEY_L, |
||||||
|
KEY_M, |
||||||
|
KEY_N, |
||||||
|
KEY_O, |
||||||
|
KEY_P, |
||||||
|
KEY_Q, |
||||||
|
KEY_R, |
||||||
|
KEY_S, |
||||||
|
KEY_T, |
||||||
|
KEY_U, |
||||||
|
KEY_V, |
||||||
|
KEY_W, |
||||||
|
KEY_X, |
||||||
|
KEY_Y, |
||||||
|
KEY_Z, |
||||||
|
KEY_PAD_0, |
||||||
|
KEY_PAD_1, |
||||||
|
KEY_PAD_2, |
||||||
|
KEY_PAD_3, |
||||||
|
KEY_PAD_4, |
||||||
|
KEY_PAD_5, |
||||||
|
KEY_PAD_6, |
||||||
|
KEY_PAD_7, |
||||||
|
KEY_PAD_8, |
||||||
|
KEY_PAD_9, |
||||||
|
KEY_PAD_DIVIDE, |
||||||
|
KEY_PAD_MULTIPLY, |
||||||
|
KEY_PAD_MINUS, |
||||||
|
KEY_PAD_PLUS, |
||||||
|
KEY_PAD_ENTER, |
||||||
|
KEY_PAD_DECIMAL, |
||||||
|
KEY_LBRACKET, |
||||||
|
KEY_RBRACKET, |
||||||
|
KEY_SEMICOLON, |
||||||
|
KEY_APOSTROPHE, |
||||||
|
KEY_BACKQUOTE, |
||||||
|
KEY_COMMA, |
||||||
|
KEY_PERIOD, |
||||||
|
KEY_SLASH, |
||||||
|
KEY_BACKSLASH, |
||||||
|
KEY_MINUS, |
||||||
|
KEY_EQUAL, |
||||||
|
KEY_ENTER, |
||||||
|
KEY_SPACE, |
||||||
|
KEY_BACKSPACE, |
||||||
|
KEY_TAB, |
||||||
|
KEY_CAPSLOCK, |
||||||
|
KEY_NUMLOCK, |
||||||
|
KEY_ESCAPE, |
||||||
|
KEY_SCROLLLOCK, |
||||||
|
KEY_INSERT, |
||||||
|
KEY_DELETE, |
||||||
|
KEY_HOME, |
||||||
|
KEY_END, |
||||||
|
KEY_PAGEUP, |
||||||
|
KEY_PAGEDOWN, |
||||||
|
KEY_BREAK, |
||||||
|
KEY_LSHIFT, |
||||||
|
KEY_RSHIFT, |
||||||
|
KEY_LALT, |
||||||
|
KEY_RALT, |
||||||
|
KEY_LCONTROL, |
||||||
|
KEY_RCONTROL, |
||||||
|
KEY_LWIN, |
||||||
|
KEY_RWIN, |
||||||
|
KEY_APP, |
||||||
|
KEY_UP, |
||||||
|
KEY_LEFT, |
||||||
|
KEY_DOWN, |
||||||
|
KEY_RIGHT, |
||||||
|
KEY_F1, |
||||||
|
KEY_F2, |
||||||
|
KEY_F3, |
||||||
|
KEY_F4, |
||||||
|
KEY_F5, |
||||||
|
KEY_F6, |
||||||
|
KEY_F7, |
||||||
|
KEY_F8, |
||||||
|
KEY_F9, |
||||||
|
KEY_F10, |
||||||
|
KEY_F11, |
||||||
|
KEY_F12, |
||||||
|
KEY_LAST |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
#endif |
||||||
|
|
@ -0,0 +1,24 @@ |
|||||||
|
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
// $NoKeywords: $
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifndef VGUI_MOUSECODE_H |
||||||
|
#define VGUI_MOUSECODE_H |
||||||
|
|
||||||
|
#include<VGUI.h> |
||||||
|
|
||||||
|
namespace vgui |
||||||
|
{ |
||||||
|
enum VGUIAPI MouseCode |
||||||
|
{ |
||||||
|
MOUSE_LEFT=0, |
||||||
|
MOUSE_RIGHT, |
||||||
|
MOUSE_MIDDLE, |
||||||
|
MOUSE_LAST |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
#endif |
@ -0,0 +1,229 @@ |
|||||||
|
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
// $NoKeywords: $
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifndef VGUI_PANEL_H |
||||||
|
#define VGUI_PANEL_H |
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
TODO: |
||||||
|
|
||||||
|
Maybe have the border know who they are added to. |
||||||
|
A border can only be added to 1 thing, and will be |
||||||
|
removed from the other. That way they can actually |
||||||
|
be memory managed. Also do Layout's this way too. |
||||||
|
|
||||||
|
TODO: |
||||||
|
outlinedRect should have a thickness arg |
||||||
|
|
||||||
|
*/ |
||||||
|
|
||||||
|
|
||||||
|
#include<VGUI.h> |
||||||
|
#include<VGUI_Dar.h> |
||||||
|
#include<VGUI_Scheme.h> |
||||||
|
#include<VGUI_Color.h> |
||||||
|
#include<VGUI_Cursor.h> |
||||||
|
#include <VGUI_MouseCode.h> |
||||||
|
#include <VGUI_KeyCode.h> |
||||||
|
//#include <VGUI_RepaintSignal.h>
|
||||||
|
|
||||||
|
namespace vgui |
||||||
|
{ |
||||||
|
|
||||||
|
enum KeyCode; |
||||||
|
enum MouseCode; |
||||||
|
class SurfaceBase; |
||||||
|
class FocusChangeSignal; |
||||||
|
class InputSignal; |
||||||
|
class Cursor; |
||||||
|
class Layout; |
||||||
|
class FocusNavGroup; |
||||||
|
class Border; |
||||||
|
class Font; |
||||||
|
class BuildGroup; |
||||||
|
class App; |
||||||
|
class LayoutInfo; |
||||||
|
class RepaintSignal; |
||||||
|
|
||||||
|
class VGUIAPI Panel |
||||||
|
{ |
||||||
|
public: |
||||||
|
Panel() {} |
||||||
|
Panel(int x,int y,int wide,int tall) {setPos(x, y); setSize(wide, tall);} |
||||||
|
private: |
||||||
|
void init(int x,int y,int wide,int tall) {} |
||||||
|
public: |
||||||
|
virtual void setPos(int x,int y) {_pos[0] = x; _pos[1] = y;} |
||||||
|
virtual void getPos(int& x,int& y) {x = _pos[0]; y = _pos[1];} |
||||||
|
virtual void setSize(int wide,int tall) {_size[0] = wide, _size[1] = tall;} |
||||||
|
virtual void getSize(int& wide,int& tall) {wide = _size[0], tall = _size[1];} |
||||||
|
virtual void setBounds(int x,int y,int wide,int tall) {} |
||||||
|
virtual void getBounds(int& x,int& y,int& wide,int& tall) {} |
||||||
|
virtual int getWide() {return _size[0];} |
||||||
|
virtual int getTall() {return _size[1];} |
||||||
|
virtual Panel* getParent() {return _parent;} |
||||||
|
virtual void setVisible(bool state) {_visible = state;} |
||||||
|
virtual bool isVisible() {return _visible;} |
||||||
|
virtual bool isVisibleUp() {return false;} |
||||||
|
virtual void repaint() {} |
||||||
|
virtual void repaintAll() {} |
||||||
|
virtual void getAbsExtents(int& x0,int& y0,int& x1,int& y1) {} |
||||||
|
virtual void getClipRect(int& x0,int& y0,int& x1,int& y1) {} |
||||||
|
virtual void setParent(Panel* newParent) {_parent = newParent; newParent->addChild(this);} |
||||||
|
virtual void addChild(Panel* child) {} |
||||||
|
virtual void insertChildAt(Panel* child,int index) {} |
||||||
|
virtual void removeChild(Panel* child) {} |
||||||
|
virtual bool wasMousePressed(MouseCode code) {return false;} |
||||||
|
virtual bool wasMouseDoublePressed(MouseCode code) {return false;} |
||||||
|
virtual bool isMouseDown(MouseCode code) {return false;} |
||||||
|
virtual bool wasMouseReleased(MouseCode code) {return false;} |
||||||
|
virtual bool wasKeyPressed(KeyCode code) {return false;} |
||||||
|
virtual bool isKeyDown(KeyCode code) {return false;} |
||||||
|
virtual bool wasKeyTyped(KeyCode code) {return false;} |
||||||
|
virtual bool wasKeyReleased(KeyCode code) {return false;} |
||||||
|
virtual void addInputSignal(InputSignal* s) {} |
||||||
|
virtual void removeInputSignal(InputSignal* s) {} |
||||||
|
virtual void addRepaintSignal(RepaintSignal* s) {} |
||||||
|
virtual void removeRepaintSignal(RepaintSignal* s) {} |
||||||
|
virtual bool isWithin(int x,int y) {return false;} //in screen space
|
||||||
|
virtual Panel* isWithinTraverse(int x,int y) {return 0;} |
||||||
|
virtual void localToScreen(int& x,int& y) {} |
||||||
|
virtual void screenToLocal(int& x,int& y) {} |
||||||
|
virtual void setCursor(Cursor* cursor) {} |
||||||
|
virtual void setCursor(Scheme::SchemeCursor scu) {} |
||||||
|
virtual Cursor* getCursor() {return 0;} |
||||||
|
virtual void setMinimumSize(int wide,int tall) {} |
||||||
|
virtual void getMinimumSize(int& wide,int& tall) {} |
||||||
|
virtual void requestFocus() {} |
||||||
|
virtual bool hasFocus() {return false;} |
||||||
|
virtual int getChildCount() {return 0;} |
||||||
|
virtual Panel* getChild(int index) {return 0;} |
||||||
|
virtual void setLayout(Layout* layout) {} |
||||||
|
virtual void invalidateLayout(bool layoutNow) {} |
||||||
|
virtual void setFocusNavGroup(FocusNavGroup* focusNavGroup) {} |
||||||
|
virtual void requestFocusPrev() {} |
||||||
|
virtual void requestFocusNext() {} |
||||||
|
virtual void addFocusChangeSignal(FocusChangeSignal* s) {} |
||||||
|
virtual bool isAutoFocusNavEnabled() {return false;} |
||||||
|
virtual void setAutoFocusNavEnabled(bool state) {} |
||||||
|
virtual void setBorder(Border* border) {} |
||||||
|
virtual void setPaintBorderEnabled(bool state) {} |
||||||
|
virtual void setPaintBackgroundEnabled(bool state) {} |
||||||
|
virtual void setPaintEnabled(bool state) {} |
||||||
|
virtual void getInset(int& left,int& top,int& right,int& bottom) {} |
||||||
|
virtual void getPaintSize(int& wide,int& tall) {} |
||||||
|
virtual void setPreferredSize(int wide,int tall) {} |
||||||
|
virtual void getPreferredSize(int& wide,int& tall) {} |
||||||
|
virtual SurfaceBase* getSurfaceBase() {return 0;} |
||||||
|
virtual bool isEnabled() {return _enabled = false;} |
||||||
|
virtual void setEnabled(bool state) {_enabled = true;} |
||||||
|
virtual void setBuildGroup(BuildGroup* buildGroup,const char* panelPersistanceName) {} |
||||||
|
virtual bool isBuildGroupEnabled() {return false;} |
||||||
|
virtual void removeAllChildren() {} |
||||||
|
virtual void repaintParent() {} |
||||||
|
virtual Panel* createPropertyPanel() {return 0;} |
||||||
|
virtual void getPersistanceText(char* buf,int bufLen) {} |
||||||
|
virtual void applyPersistanceText(const char* buf) {} |
||||||
|
virtual void setFgColor(Scheme::SchemeColor sc) {} |
||||||
|
virtual void setBgColor(Scheme::SchemeColor sc) {} |
||||||
|
virtual void setFgColor(int r,int g,int b,int a) {} |
||||||
|
virtual void setBgColor(int r,int g,int b,int a) {} |
||||||
|
virtual void getFgColor(int& r,int& g,int& b,int& a) {} |
||||||
|
virtual void getBgColor(int& r,int& g,int& b,int& a) {} |
||||||
|
virtual void setBgColor(Color color) {} |
||||||
|
virtual void setFgColor(Color color) {} |
||||||
|
virtual void getBgColor(Color& color) {} |
||||||
|
virtual void getFgColor(Color& color) {} |
||||||
|
virtual void setAsMouseCapture(bool state) {} |
||||||
|
virtual void setAsMouseArena(bool state) {} |
||||||
|
virtual App* getApp() {return 0;} |
||||||
|
virtual void getVirtualSize(int& wide,int& tall) {} |
||||||
|
virtual void setLayoutInfo(LayoutInfo* layoutInfo) {} |
||||||
|
virtual LayoutInfo* getLayoutInfo() {return 0;} |
||||||
|
virtual bool isCursorNone() {return false;} |
||||||
|
public: //bullshit public
|
||||||
|
virtual void solveTraverse() {} |
||||||
|
virtual void paintTraverse() {} |
||||||
|
virtual void setSurfaceBaseTraverse(SurfaceBase* surfaceBase) {} |
||||||
|
protected: |
||||||
|
virtual void performLayout() {} |
||||||
|
virtual void internalPerformLayout() {} |
||||||
|
virtual void drawSetColor(Scheme::SchemeColor sc) {} |
||||||
|
virtual void drawSetColor(int r,int g,int b,int a) {} |
||||||
|
virtual void drawFilledRect(int x0,int y0,int x1,int y1) {} |
||||||
|
virtual void drawOutlinedRect(int x0,int y0,int x1,int y1) {} |
||||||
|
virtual void drawSetTextFont(Scheme::SchemeFont sf) {} |
||||||
|
virtual void drawSetTextFont(Font* font) {} |
||||||
|
virtual void drawSetTextColor(Scheme::SchemeColor sc) {} |
||||||
|
virtual void drawSetTextColor(int r,int g,int b,int a) {} |
||||||
|
virtual void drawSetTextPos(int x,int y) {} |
||||||
|
virtual void drawPrintText(const char* str,int strlen) {} |
||||||
|
virtual void drawPrintText(int x,int y,const char* str,int strlen) {} |
||||||
|
virtual void drawPrintChar(char ch) {} |
||||||
|
virtual void drawPrintChar(int x,int y,char ch) {} |
||||||
|
virtual void drawSetTextureRGBA(int id,const char* rgba,int wide,int tall) {} |
||||||
|
virtual void drawSetTexture(int id) {} |
||||||
|
virtual void drawTexturedRect(int x0,int y0,int x1,int y1) {} |
||||||
|
virtual void solve() {} |
||||||
|
virtual void paintTraverse(bool repaint) {if(repaint) paintBackground();} |
||||||
|
virtual void paintBackground() {} |
||||||
|
virtual void paint() {} |
||||||
|
virtual void paintBuildOverlay() {} |
||||||
|
virtual void internalCursorMoved(int x,int y) {} |
||||||
|
virtual void internalCursorEntered() {} |
||||||
|
virtual void internalCursorExited() {} |
||||||
|
virtual void internalMousePressed(MouseCode code) {} |
||||||
|
virtual void internalMouseDoublePressed(MouseCode code) {} |
||||||
|
virtual void internalMouseReleased(MouseCode code) {} |
||||||
|
virtual void internalMouseWheeled(int delta) {} |
||||||
|
virtual void internalKeyPressed(KeyCode code) {} |
||||||
|
virtual void internalKeyTyped(KeyCode code) {} |
||||||
|
virtual void internalKeyReleased(KeyCode code) {} |
||||||
|
virtual void internalKeyFocusTicked() {} |
||||||
|
virtual void internalFocusChanged(bool lost) {} |
||||||
|
virtual void internalSetCursor() {} |
||||||
|
protected: |
||||||
|
int _pos[2]; |
||||||
|
int _size[2]; |
||||||
|
int _loc[2]; |
||||||
|
int _minimumSize[2]; |
||||||
|
int _preferredSize[2]; |
||||||
|
Dar<Panel*> _childDar; |
||||||
|
Panel* _parent; |
||||||
|
SurfaceBase* _surfaceBase; |
||||||
|
Dar<InputSignal*> _inputSignalDar; |
||||||
|
Dar<RepaintSignal*> _repaintSignalDar; |
||||||
|
int _clipRect[4]; |
||||||
|
Cursor* _cursor; |
||||||
|
Scheme::SchemeCursor _schemeCursor; |
||||||
|
bool _visible; |
||||||
|
Layout* _layout; |
||||||
|
bool _needsLayout; |
||||||
|
FocusNavGroup* _focusNavGroup; |
||||||
|
Dar<FocusChangeSignal*> _focusChangeSignalDar; |
||||||
|
bool _autoFocusNavEnabled; |
||||||
|
Border* _border; |
||||||
|
private: |
||||||
|
bool _needsRepaint; |
||||||
|
bool _enabled; |
||||||
|
BuildGroup* _buildGroup; |
||||||
|
Color _fgColor; |
||||||
|
Color _bgColor; |
||||||
|
LayoutInfo* _layoutInfo; |
||||||
|
bool _paintBorderEnabled; |
||||||
|
bool _paintBackgroundEnabled; |
||||||
|
bool _paintEnabled; |
||||||
|
friend class Panel; |
||||||
|
friend class App; |
||||||
|
friend class SurfaceBase; |
||||||
|
friend class Image; |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
#endif |
@ -0,0 +1,82 @@ |
|||||||
|
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
// $NoKeywords: $
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifndef VGUI_SCHEME_H |
||||||
|
#define VGUI_SCHEME_H |
||||||
|
|
||||||
|
#include<VGUI.h> |
||||||
|
|
||||||
|
|
||||||
|
namespace vgui |
||||||
|
{ |
||||||
|
|
||||||
|
class Font; |
||||||
|
class Cursor; |
||||||
|
|
||||||
|
class VGUIAPI Scheme |
||||||
|
{ |
||||||
|
public: |
||||||
|
enum SchemeColor |
||||||
|
{ |
||||||
|
sc_user=0, |
||||||
|
sc_black, |
||||||
|
sc_white, |
||||||
|
sc_primary1, |
||||||
|
sc_primary2, |
||||||
|
sc_primary3, |
||||||
|
sc_secondary1, |
||||||
|
sc_secondary2, |
||||||
|
sc_secondary3, |
||||||
|
sc_last |
||||||
|
}; |
||||||
|
enum SchemeFont |
||||||
|
{ |
||||||
|
sf_user=0, |
||||||
|
sf_primary1, |
||||||
|
sf_primary2, |
||||||
|
sf_primary3, |
||||||
|
sf_secondary1, |
||||||
|
sf_last |
||||||
|
}; |
||||||
|
enum SchemeCursor |
||||||
|
{ |
||||||
|
scu_user=0, |
||||||
|
scu_none, |
||||||
|
scu_arrow, |
||||||
|
scu_ibeam, |
||||||
|
scu_hourglass, |
||||||
|
scu_crosshair, |
||||||
|
scu_up, |
||||||
|
scu_sizenwse, |
||||||
|
scu_sizenesw, |
||||||
|
scu_sizewe, |
||||||
|
scu_sizens, |
||||||
|
scu_sizeall, |
||||||
|
scu_no, |
||||||
|
scu_hand, |
||||||
|
scu_last |
||||||
|
}; |
||||||
|
public: |
||||||
|
Scheme() {} |
||||||
|
public: |
||||||
|
virtual void setColor(SchemeColor sc,int r,int g,int b,int a) {} |
||||||
|
virtual void getColor(SchemeColor sc,int& r,int& g,int& b,int& a) {} |
||||||
|
virtual void setFont(SchemeFont sf,Font* font) {} |
||||||
|
virtual Font* getFont(SchemeFont sf) {return 0;} |
||||||
|
virtual void setCursor(SchemeCursor sc,Cursor* cursor) {} |
||||||
|
virtual Cursor* getCursor(SchemeCursor sc) {return 0;} |
||||||
|
protected: |
||||||
|
int _color[sc_last][4]; |
||||||
|
Font* _font[sf_last]; |
||||||
|
Cursor* _cursor[scu_last]; |
||||||
|
friend class Panel; |
||||||
|
friend class Canvas; |
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
#endif |
Loading…
Reference in new issue