230 lines
5.9 KiB
C++
230 lines
5.9 KiB
C++
|
|
|
|
/*
|
|
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
|
|
|
|
namespace pymol
|
|
{
|
|
class cif_file;
|
|
class cif_data;
|
|
}; // namespace pymol
|
|
|
|
/* 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;
|
|
|
|
|
|
constexpr unsigned int OrthoLineLength = 1024u;
|
|
using OrthoLineType = char[OrthoLineLength];
|
|
|
|
constexpr unsigned int WordLength = 256u;
|
|
using WordType = char[WordLength];
|
|
|
|
using SelectorID_t = int;
|
|
using SelectorMemberOffset_t = int;
|
|
|
|
using StateIndex_t = int; ///< 0-based state index (C/C++/JavaScript)
|
|
using StateIndexPython_t = int; ///< 1-based state index (Python/Settings)
|
|
|
|
constexpr StateIndex_t cStateAll = -1;
|
|
constexpr StateIndex_t cStateCurrent = -2;
|
|
|
|
typedef struct _CMemoryCache CMemoryCache;
|
|
struct CIsosurf;
|
|
typedef struct _CTetsurf CTetsurf;
|
|
typedef struct _CSphere CSphere;
|
|
class CFeedback;
|
|
typedef struct _CUtil CUtil;
|
|
struct CColor;
|
|
struct CMovie;
|
|
struct CControl;
|
|
struct CButMode;
|
|
class COrtho;
|
|
typedef struct _CWord CWord;
|
|
struct CCGORenderer;
|
|
typedef struct _CCharacter CCharacter;
|
|
struct CPop;
|
|
class CScene;
|
|
struct CSeq;
|
|
struct CSetting;
|
|
struct CSettingUnique;
|
|
struct CText;
|
|
struct CWizard;
|
|
struct CAtomInfo;
|
|
typedef struct _CSculptCache CSculptCache;
|
|
typedef struct _CVFont CVFont;
|
|
typedef struct _CEditor CEditor;
|
|
struct CExecutive;
|
|
struct CSeeker;
|
|
struct CSelector;
|
|
struct CSelectorManager;
|
|
struct CTexture;
|
|
typedef struct _CType CType;
|
|
typedef struct _CMain CMain;
|
|
struct CPlugIOManager;
|
|
struct COpenVR;
|
|
struct ObjectMolecule;
|
|
|
|
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 CPyMOL_DEFINED
|
|
struct CPyMOL;
|
|
#define CPyMOL_DEFINED
|
|
#endif
|
|
|
|
#ifndef CGO_DEFINED
|
|
class CGO;
|
|
#define CGO_DEFINED
|
|
#endif
|
|
|
|
class GFXManager;
|
|
|
|
#define cPyMOLGlobals_LaunchStatus_StereoFailed 0x1
|
|
#define cPyMOLGlobals_LaunchStatus_MultisampleFailed 0x2
|
|
|
|
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;
|
|
CSelectorManager* SelectorMgr;
|
|
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;
|
|
COpenVR* OpenVR;
|
|
GFXManager* GFXMgr;
|
|
#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;
|
|
|
|
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
|
|
|
|
#endif
|