layer1/Rep.h (123 lines of code) (raw):

/* A* ------------------------------------------------------------------- B* This file contains source code for the PyMOL computer program C* copyright 1998-2000 by Warren Lyford Delano of DeLano Scientific. 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_Rep #define _H_Rep #include"Base.h" #include"Ray.h" #define cCartoon_skip -1 #define cCartoon_auto 0 #define cCartoon_loop 1 #define cCartoon_rect 2 #define cCartoon_oval 3 #define cCartoon_tube 4 #define cCartoon_arrow 5 #define cCartoon_dumbbell 6 #define cCartoon_putty 7 #define cCartoon_dash 8 #define cCartoon_skip_helix -2 #define cRepAll -1 #define cRepNone -2 // show/hide/... codes enum { cVis_HIDE, // 0 cVis_SHOW, // 1 cVis_AS, // 2 cVis_TOGGLE, // 3 }; /* WARNING: don't change these -- you'll break sessions! (you can add to them however, I think) */ enum { cRepCyl, // 0 cRepSphere, // 1 cRepSurface, // 2 cRepLabel, // 3 cRepNonbondedSphere, // 4 cRepCartoon, // 5 cRepRibbon, // 6 cRepLine, // 7 cRepMesh, // 8 cRepDot, // 9 cRepDash, // 10 cRepNonbonded, // 11 cRepCell, // 12 cRepCGO, // 13 cRepCallback, // 14 cRepExtent, // 15 cRepSlice, // 16 cRepAngle, // 17 cRepDihedral, // 18 cRepEllipsoid, // 19 cRepVolume, // 20 // rep count cRepCnt }; #define cRepCylBit (1 << 0) #define cRepSphereBit (1 << 1) #define cRepSurfaceBit (1 << 2) #define cRepLabelBit (1 << 3) #define cRepNonbondedSphereBit (1 << 4) #define cRepCartoonBit (1 << 5) #define cRepRibbonBit (1 << 6) #define cRepLineBit (1 << 7) #define cRepMeshBit (1 << 8) #define cRepDotBit (1 << 9) #define cRepDashBit (1 << 10) #define cRepNonbondedBit (1 << 11) #define cRepCellBit (1 << 12) #define cRepCGOBit (1 << 13) #define cRepCallbackBit (1 << 14) #define cRepExtentBit (1 << 15) #define cRepSliceBit (1 << 16) #define cRepAngleBit (1 << 17) #define cRepDihedralBit (1 << 18) #define cRepEllipsoidBit (1 << 19) #define cRepVolumeBit (1 << 20) /* Add other reps here. Don't forget to * update modules/constants.py::repres{} * update modules/constants.py::fb_module, if needed * update modules/viewing.py::rep_list * create your RepXYZ.h and RepXYZ.c */ #define cRepBitmask ((1 << cRepCnt) - 1) // all reps which can be shown for atoms const int cRepsAtomMask = (cRepCylBit | cRepSphereBit | cRepSurfaceBit | \ cRepLabelBit | cRepNonbondedSphereBit | cRepCartoonBit | cRepRibbonBit | \ cRepLineBit | cRepMeshBit | cRepDotBit | cRepNonbondedBit | cRepEllipsoidBit); // all reps which can be shown for objects const int cRepsObjectMask = (cRepSurfaceBit | cRepMeshBit | cRepDotBit | \ cRepCellBit | cRepCGOBit | cRepCallbackBit | cRepExtentBit | cRepSliceBit | \ cRepAngleBit | cRepDihedralBit | cRepVolumeBit | cRepDashBit); /* Hierarchical invalidation scheme - * each higher level event implies all of the lower levels * These used to be used just for graphics, but are now * used by the molecular editor as well */ /* invalite display (list) */ #define cRepInvDisplay 1 /* precomputed extents (can change if matrix changes) */ #define cRepInvExtents 5 /* invalidate pickable atoms */ #define cRepInvPick 9 /* invalidate external atom colors */ #define cRepInvExtColor 10 /* invalidate atom colors */ #define cRepInvColor 15 /* invalidate label text */ #define cRepInvText 16 /* invalidate visible atoms */ #define cRepInvVisib 20 #define cRepInvVisib2 21 /* invalidate atomic properties */ #define cRepInvProp 22 /* invalidate coordinates */ #define cRepInvCoord 30 /* invalidate graphic representation */ #define cRepInvRep 35 /* invalidate bond structure */ #define cRepInvBonds 40 /* invalidate atomic structure */ #define cRepInvAtoms 50 /* invalidate everything about a structure */ #define cRepInvAll 100 /* invalidate and furthermore, purge existing representations */ #define cRepInvPurge 110 struct CoordSet; struct Object; typedef struct Rep { PyMOLGlobals *G; void (*fRender) (struct Rep * I, RenderInfo * info); struct Rep *(*fUpdate) (struct Rep * I, struct CoordSet * cs, int state, int rep); void (*fInvalidate) (struct Rep * I, struct CoordSet * cs, int level); void (*fFree) (struct Rep * I); int MaxInvalid, Active; CObject *obj; struct CoordSet *cs; Pickable *P; PickContext context; /* private */ void (*fRecolor) (struct Rep * I, struct CoordSet * cs); int (*fSameVis) (struct Rep * I, struct CoordSet * cs); int (*fSameColor) (struct Rep * I, struct CoordSet * cs); struct Rep *(*fRebuild) (struct Rep * I, struct CoordSet * cs, int state, int rep); struct Rep *(*fNew) (struct CoordSet * cs, int state); } Rep; void RepInit(PyMOLGlobals * G, Rep * I); void RepPurge(Rep * I); void RepInvalidate(struct Rep *I, struct CoordSet *cs, int level); int RepGetAutoShowMask(PyMOLGlobals * G); class RepIterator { int end; public: int rep; RepIterator(PyMOLGlobals * G, int rep_); bool next() { return (++rep < end); }; }; #endif