File: background.c

package info (click to toggle)
garlic 1.6-1
  • links: PTS, VCS
  • area: main
  • in suites: lenny, squeeze
  • size: 4,440 kB
  • ctags: 1,403
  • sloc: ansic: 52,465; makefile: 1,133
file content (93 lines) | stat: -rw-r--r-- 2,761 bytes parent folder | download | duplicates (6)
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
/* Copyright (C) 2000 Damir Zucic */

/*=============================================================================

				background.c

Purpose:
	Execute  background command:  change the main window background
	color. 

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) Log file created.
	(2) Return value.

Return value:
	(1) Positive (command) code on success.
	(2) Negative (error) code on failure.

========includes:============================================================*/

#include <stdio.h>

#include <string.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:=================================================*/

char		*ExtractToken_ (char *, int, char *, char *);
int		ParseColor_ (RGBS *, unsigned long *, GUIS *, char *, char *);
size_t		MainRefresh_ (MolComplexS *, int,
			      RuntimeS *, ConfigS *, GUIS *,
			      NearestAtomS *, size_t, unsigned int);

/*======execute bg command:==================================================*/

int Background_ (MolComplexS *mol_complexSP, int mol_complexesN,
		 RuntimeS *runtimeSP, ConfigS *configSP, GUIS *guiSP,
		 NearestAtomS *nearest_atomSP, size_t pixelsN,
		 unsigned int *refreshIP)
{
char		*remainderP;
char		tokenA[STRINGSIZE];

/* Skip the first token: */
remainderP = ExtractToken_ (tokenA, STRINGSIZE,
			    runtimeSP->curr_commandA, " \t\n");
if (!remainderP) return ERROR_BACKGROUND;

/* The second token should contain the color: */
remainderP = ExtractToken_ (tokenA, STRINGSIZE, remainderP, " \t\n");
if (!remainderP)
	{
	strcpy (runtimeSP->messageA, "Main window background color missing!");
	runtimeSP->message_length = strlen (runtimeSP->messageA);
	return ERROR_NO_COLOR;
	}

/* Prepare the main window background color: */
strncpy (configSP->bg_colorA, tokenA, SHORTSTRINGSIZE - 1);
configSP->bg_colorA[SHORTSTRINGSIZE - 1] = '\0';
ParseColor_ (&guiSP->main_winS.bg_rgbS, &guiSP->main_winS.bg_colorID,
	     guiSP, configSP->bg_colorA, "black");

/* Refresh the main window: */
(*refreshIP)++;
MainRefresh_ (mol_complexSP, mol_complexesN, runtimeSP, configSP, guiSP,
	      nearest_atomSP, pixelsN, *refreshIP);

/* Return positive value on success: */
return COMMAND_BACKGROUND;
}

/*===========================================================================*/