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
|
/* global.h
Copyright (C) 2005,2006,2007 Eugene K. Ressler, Jr.
This file is part of Sketch, a small, simple system for making
3d drawings with LaTeX and the PSTricks or TikZ package.
Sketch is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
Sketch is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Sketch; see the file COPYING.txt. If not, see
http://www.gnu.org/copyleft */
#ifndef __GLOBAL_H
#define __GLOBAL_H
#include "opts.h"
#include "error.h"
#include "geometry.h"
#include "langver.h"
#define GE_EXTENT 0
#define GE_BASELINE 1
#define GE_OPTS 2
#define GE_FRAME 3
#define GE_SPLIT 4
#define GE_CAMERA 8
#define GE_OUTPUT_LANGUAGE 9
// these must match table in opt.c and global.c
#define GEOL_GRAPHICS_BIT 1
#define GEOL_TEX_MACROS_BIT 2
#define GEOL_PSTRICKS (GEOL_GRAPHICS_BIT*0)
#define GEOL_TIKZ (GEOL_GRAPHICS_BIT*1)
#define GEOL_LATEX (GEOL_TEX_MACROS_BIT*0)
#define GEOL_CONTEXT (GEOL_TEX_MACROS_BIT*1)
// this must match string table in global.c
extern char *output_language_str[];
typedef struct global_env_t
{
unsigned set_p_mask;
OPTS opts[1];
POINT_3D bb1, bb2; // bounding box
char *frame_opts; // null if frame has none
FLOAT baseline;
int split_p;
TRANSFORM camera;
int output_language;
PST_VERSION pst_version[1];
}
GLOBAL_ENV;
#define global_env_is_set_p(Env, F) ((Env)->set_p_mask & bit(F))
void init_global_env (GLOBAL_ENV * env, PST_VERSION *pst_version);
void set_global_baseline (GLOBAL_ENV * env, FLOAT baseline, SRC_LINE line);
#define NO_BASELINE FLT_MAX
void set_global_env_extent (GLOBAL_ENV * env, POINT_3D p1, POINT_3D p2,
SRC_LINE line);
int get_transformed_global_env_extent (BOX_3D * extent, GLOBAL_ENV * env);
void set_global_env_opts (GLOBAL_ENV * env, char *opt_str, SRC_LINE line);
void set_global_env_frame (GLOBAL_ENV * env, char *opt_str, SRC_LINE line);
void set_global_env_camera (GLOBAL_ENV * env, TRANSFORM camera,
SRC_LINE line);
void set_global_output_language (GLOBAL_ENV * env, int output_language,
SRC_LINE line);
int get_global_output_language (int *output_language, GLOBAL_ENV * env);
int cmp_with_global_pst_version(GLOBAL_ENV * env,
char * version_str,
SRC_LINE line);
extern GLOBAL_ENV __the_global_env[1];
#define global_env __the_global_env
#endif
|