1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
/* Copyright (C) 2000 Damir Zucic */
/*=============================================================================
show.c
Purpose:
Execute show command: show the selected atoms, i.e. set hiddenF to
zero for selected atoms. Only the caught complexes are treated.
For atoms which are not selected visibility status is not changed.
Input:
(1) Pointer to MolComplexS structure, with macromol. complexes.
(2) The number of macromolecular complexes.
(3) Pointer to RuntimeS structure, with some runtime data.
(4) Pointer to ConfigS structure, with configuration data.
(5) Pointer to GUIS structure, with GUI data.
(6) Pointer to NearestAtomS structure.
(7) The number of pixels in the main window free area.
(8) Pointer to refreshI.
Output:
(1) The hiddenF set for each atom in each caught complex.
(2) Return value.
Return value:
(1) The command code.
========includes:============================================================*/
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/Xatom.h>
#include "defines.h"
#include "commands.h"
#include "typedefs.h"
/*======function prototypes:=================================================*/
int ShowBackbone_ (MolComplexS *, int);
size_t MainRefresh_ (MolComplexS *, int,
RuntimeS *, ConfigS *, GUIS *,
NearestAtomS *, size_t, unsigned int);
int ControlRefresh_ (MolComplexS *, ConfigS *, GUIS *);
/*======execute show command:================================================*/
int Show_ (MolComplexS *mol_complexSP, int mol_complexesN,
RuntimeS *runtimeSP,
ConfigS *configSP, GUIS *guiSP,
NearestAtomS *nearest_atomSP, size_t pixelsN,
unsigned int *refreshIP)
{
int mol_complexI;
MolComplexS *curr_mol_complexSP;
size_t atomsN, atomI;
AtomS *curr_atomSP;
/* Check every macromolecular complex: */
for (mol_complexI = 0; mol_complexI < mol_complexesN; mol_complexI++)
{
/** Pointer to the current macromolecular complex: **/
curr_mol_complexSP = mol_complexSP + mol_complexI;
/** Check is the current macromolecular complex caught: **/
if (curr_mol_complexSP->catchF == 0) continue;
/** Number of atoms in a macromolecular complex: **/
atomsN = curr_mol_complexSP->atomsN;
if (atomsN == 0) continue;
/** Scan all atoms in the current complex: **/
for (atomI = 0; atomI < atomsN; atomI++)
{
/** Pointer to the current atom: **/
curr_atomSP = curr_mol_complexSP->atomSP + atomI;
/** Check the selection flag; show selected atoms: **/
if (curr_atomSP->selectedF) curr_atomSP->hiddenF = 0;
}
}
/* Show backbone (update hiddenF for each selected CA atom): */
ShowBackbone_ (mol_complexSP, mol_complexesN);
/* Refresh the main window: */
(*refreshIP)++;
MainRefresh_ (mol_complexSP, mol_complexesN,
runtimeSP, configSP, guiSP,
nearest_atomSP, pixelsN, *refreshIP);
/* Refresh the control window: */
ControlRefresh_ (mol_complexSP + runtimeSP->default_complexI, configSP, guiSP);
/* Return the command code: */
return COMMAND_SHOW;
}
/*===========================================================================*/
|