layer0/PyMOLGlobals.h (145 lines of code) (raw):

/* A* ------------------------------------------------------------------- B* This file contains source code for the PyMOL computer program C* Copyright (c) Schrodinger, LLC. D* ------------------------------------------------------------------- E* It is unlawful to modify or remove this copyright notice. F* ------------------------------------------------------------------- G* Please see the accompanying LICENSE file for further information. H* ------------------------------------------------------------------- I* Additional authors of this source file include: -* -* -* Z* ------------------------------------------------------------------- */ #ifndef _H_PyMOLGlobals #define _H_PyMOLGlobals /* retina scale factor for ortho gui */ extern int _gScaleFactor; inline int DIP2PIXEL(int v) { return v * _gScaleFactor; } inline float DIP2PIXEL(float v) { return v * _gScaleFactor; } /* all of the private singleton classes associated with a PyMOL instance */ /* this gets included in virtually every PyMOL source file, so keep it short and sweet */ typedef int lexidx_t; typedef int lexborrow_t; typedef struct _CMemoryCache CMemoryCache; typedef struct _CIsosurf CIsosurf; typedef struct _CTetsurf CTetsurf; typedef struct _CSphere CSphere; typedef struct _CFeedback CFeedback; typedef struct _CUtil CUtil; typedef struct _CColor CColor; struct CMovie; struct CControl; struct CButMode; typedef struct _COrtho COrtho; typedef struct _CWord CWord; typedef struct _CCGORenderer CCGORenderer; typedef struct _CCharacter CCharacter; struct CPop; class CScene; struct CSeq; typedef struct _CSetting CSetting; typedef struct _CSettingUnique CSettingUnique; typedef struct _CText CText; struct CWizard; typedef struct _CAtomInfo CAtomInfo; typedef struct _CSculptCache CSculptCache; typedef struct _CVFont CVFont; typedef struct _CEditor CEditor; struct CExecutive; typedef struct _CSeeker CSeeker; struct CSelector; typedef struct _CTexture CTexture; typedef struct _CType CType; typedef struct _CMain CMain; typedef struct _CPlugIOManager CPlugIOManager; class CShaderMgr; class CMovieScenes; #ifndef _PYMOL_NOPY typedef struct _CP_inst CP_inst; #endif #ifndef OVLexicon_DEFINED typedef struct _OVLexicon OVLexicon; #define OVLexicon_DEFINED #endif #ifndef CPyMOLOptions_DEFINED typedef struct _CPyMOLOptions CPyMOLOptions; #define CPyMOLOptions_DEFINED #endif #ifndef OVCONTEXT_DEFINED typedef struct _OVContext OVContext; #define OVCONTEXT_DEFINED #endif #ifndef OVONETOONE_DEFINED typedef struct _OVOneToOne OVOneToOne; #define OVONETOONE_DEFINED #endif #ifndef CObject_DEFINED typedef struct _CObject CObject; #define CObject_DEFINED #endif #ifndef CPyMOL_DEFINED typedef struct _CPyMOL CPyMOL; #define CPyMOL_DEFINED #endif #ifndef CGO_DEFINED class CGO; #define CGO_DEFINED #endif #define cPyMOLGlobals_LaunchStatus_StereoFailed 0x1 #define cPyMOLGlobals_LaunchStatus_MultisampleFailed 0x2 typedef struct _PyMOLGlobals PyMOLGlobals; struct _PyMOLGlobals { /* singleton objects */ CMemoryCache *MemoryCache; /* could probably eliminate this... */ CIsosurf *Isosurf; CTetsurf *Tetsurf; CSphere *Sphere; CFeedback *Feedback; CUtil *Util; CColor *Color; CMovie *Movie; CControl *Control; CButMode *ButMode; COrtho *Ortho; CWord *Word; CCGORenderer *CGORenderer; CCharacter *Character; CPop *Pop; CScene *Scene; CGO *DebugCGO; /* for debugging rendering */ CSeq *Seq; CSetting *Setting, *Default; CSettingUnique *SettingUnique; CText *Text; CWizard *Wizard; CAtomInfo *AtomInfo; CSculptCache *SculptCache; CVFont *VFont; CEditor *Editor; CExecutive *Executive; CSeeker *Seeker; CSelector *Selector; CTexture *Texture; CType *Type; OVContext *Context; CMain *Main; /* host/platform-specific "main" code */ CPyMOLOptions *Option; CPyMOL *PyMOL; /* the instance */ OVLexicon *Lexicon; /* lexicon for data (e.g. label) strings */ CPlugIOManager *PlugIOManager; CShaderMgr* ShaderMgr; #ifndef _PYMOL_NOPY CP_inst *P_inst; #endif /* global variables */ int HaveGUI; /* do we have an OpenGL graphics window or are we * command-line only? */ int ValidContext; /* are we guaranteed to have a valid OpenGL * context at this exact moment? */ int Ready; /* is the program fully initialized and ready to receive * messages? */ int Interrupt; /* set when we are attempting to abort time-consuming calculations */ int Terminating; /* is the program shutting down? */ /* note that the following four options are also contained in * PyMOLOption global -- they exist here as independent globals only * because changes haven't yet been made throughout code */ int StereoCapable; /* the current graphics context quad buffered? */ int LaunchStatus; /* to enable deferred output regarding launch status */ int Security; /* do we warn before potentially executing any * Python code and ask for their informed consent? */ int DragDirtyFlag; /* do we need an extra callback to handle a mouse drag? */ #ifdef _PYMOL_LIB void *CallbackObject; void (*enabledCallback)(void *, const char *, int ); #endif // user defined scenes CMovieScenes * scenes; // for glDrawBuffer (e.g. GL_BACK, unless we're using QOpenGLWidget) int DRAW_BUFFER0; struct { lexidx_t #include "lex_constants.h" _; } lex_const; }; /* if we're running PyMOL as a global singleton (old way / backward compatible) then this global variable will contain a pointer to PyMOL global state variables */ #ifndef _PYMOL_NOPY extern PyMOLGlobals *SingletonPyMOLGlobals; #endif #define ORTHOCGOARG , CGO *orthoCGO #define ORTHOCGOARGB orthoCGO #define ORTHOCGOARGVAR , orthoCGO #define ORTHOFASTCGOARGVAR , orthoFastCGO #define ORTHOCGOARGNULL , NULL #endif