New syntax for the <abs> function.
[shapes.git] / source / globals.h
blob44715d8abc1a3a1d677394fe921d5bc1375b149a
1 /* This file is part of Shapes.
3 * Shapes is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * any later version.
8 * Shapes is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with Shapes. If not, see <http://www.gnu.org/licenses/>.
16 * Copyright 2008 Henrik Tidefelt
19 #ifndef globals_h
20 #define globals_h
22 #include "Shapes_Lang_decls.h"
23 #include "Shapes_Kernel_decls.h"
24 #include "Shapes_Computation_decls.h"
25 #include "Shapes_Concrete_decls.h"
26 #include "Shapes_Helpers_decls.h"
27 #include "Shapes_Exceptions_decls.h"
28 #include "SimplePDF_decls.h"
29 #include "FontMetrics_decls.h"
31 #include "refcount.h"
32 #include "ptrowner.h"
33 #include "elementarylength.h"
34 #include "simplepdfo.h"
35 #include "pdfimport.h"
37 // The following types do not belong to any particular namespace for some reason, and are therefore declared like this:
38 class ShapesScanner;
41 namespace Shapes
44 namespace Interaction
47 extern bool debugBacktrace;
48 extern bool debugSystem;
49 extern size_t debugStep;
50 extern const char * displayUnitName;
51 extern double displayUnitFactor;
52 extern bool fontMetricMessages;
53 extern bool fontMetricDebug;
54 extern bool characterColumnInBytes;
55 extern bool pdfLaTeXInteractionTo_stderr;
56 extern bool logGlobals;
60 namespace Computation
63 extern Concrete::Length the_arcdelta;
64 extern double the_dtMin;
65 extern bool dtMinIsError;
66 extern Concrete::Length theTrixelizeSplicingTol;
67 extern Concrete::Length theTrixelizeOverlapTol;
68 extern RefCountPtr< const Computation::PaintedPolygon3D > THE_NULL_POLYGON3D;
69 extern bool fontMetricGuessIsError;
70 extern Computation::BasicSimplex theTwoTriangleSimplex;
73 namespace Kernel
76 extern Kernel::PassedEnv theGlobalEnvironment; // Useful for functions in the core refering to their home environment.
77 extern std::list< Kernel::Environment * > theEnvironmentList;
78 extern Kernel::TeXLabelManager theTeXLabelManager;
79 extern SimplePDF::PDF_Version the_PDF_version;
80 extern bool allowTransparency;
81 extern bool allowSingletonPaths;
82 extern size_t theIndirectObjectCount;
83 extern SimplePDF::DocumentInfo theDocInfo;
84 extern Kernel::Import thePDFImporter;
85 extern Kernel::DebugLog theDebugLog;
87 extern RefCountPtr< const Kernel::GraphicsState > THE_NO_STATE;
88 extern RefCountPtr< const Kernel::GraphicsState > THE_DEFAULT_STATE;
90 extern RefCountPtr< const Lang::Function > THE_NO_FUNCTION;
92 extern Arguments EMPTY_ARGLIST;
93 extern VariableHandle THE_SLOT_VARIABLE;
94 extern VariableHandle THE_FALSE_VARIABLE;
95 extern VariableHandle THE_TRUE_VARIABLE;
96 extern VariableHandle THE_VOID_VARIABLE;
98 extern StateHandle THE_SLOT_STATE;
100 extern RefCountPtr< const Lang::Symbol > THE_NAVIGATION_SYMBOL;
101 extern RefCountPtr< const Lang::Symbol > THE_ANNOTATION_SYMBOL;
103 extern PtrOwner_back_Access< std::list< Exceptions::Exception * > > thePostCheckErrorsList;
106 namespace Lang
109 extern RefCountPtr< const Lang::GroupNull2D > THE_NULL2D;
110 extern RefCountPtr< const Lang::GroupNull3D > THE_NULL3D;
111 extern RefCountPtr< const Lang::DynamicBindings > THE_NULL_DYNAMIC_BINDINGS;
112 extern RefCountPtr< const Lang::LightGroup > THE_NULL_LIGHTS;
113 extern RefCountPtr< const Lang::SingleListNull > THE_CONS_NULL;
114 extern RefCountPtr< const Lang::Structure > THE_EMPTY_STRUCT;
115 extern RefCountPtr< const Lang::SpecularReflectionNull > THE_SPECULARREFLECTION_NULL;
116 // extern RefCountPtr< const Lang::PaintedPoltgon2D > THE_NULL_POLYGON2D;
117 extern RefCountPtr< const Lang::ColorSpace > THE_INHERITED_COLOR_SPACE;
118 extern RefCountPtr< const Lang::ColorSpace > THE_COLOR_SPACE_DEVICE_GRAY;
119 extern RefCountPtr< const Lang::ColorSpace > THE_COLOR_SPACE_DEVICE_RGB;
120 extern RefCountPtr< const Lang::Drawable2D > THE_POINTPICTURE;
121 extern RefCountPtr< const Lang::Void > THE_VOID;
122 extern RefCountPtr< const Lang::ElementaryPath2D > THE_EMPTYPATH2D;
123 extern RefCountPtr< const Lang::ElementaryPath3D > THE_EMPTYPATH3D;
124 extern RefCountPtr< const Lang::Boolean > THE_FALSE;
125 extern RefCountPtr< const Lang::Boolean > THE_TRUE;
126 extern RefCountPtr< const Lang::Gray > THE_BLACK;
127 extern RefCountPtr< const Lang::Gray > THE_OCCLUDING_WHITE;
128 extern RefCountPtr< const Lang::Alpha > THE_OPAQUE;
129 extern RefCountPtr< const Lang::Class > THE_OBJECT;
130 extern RefCountPtr< const Lang::CoreFunction > THE_NO_ARROW;
131 extern RefCountPtr< const Lang::CoreFunction > THE_IDENTITY;
132 extern RefCountPtr< const Lang::Dash > THE_SOLID_DASH;
133 extern RefCountPtr< const Lang::SoftMask > THE_NONE_MASK;
134 extern RefCountPtr< const Lang::SoftMask > THE_SAME_MASK;
135 extern RefCountPtr< const Lang::Font > THE_FONT_HELVETICA;
137 extern Transform2D THE_2D_IDENTITY;
138 extern Transform3D THE_3D_IDENTITY;
140 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_MINUSMINUS;
141 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_PLUSPLUS;
142 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_AMPERSAND;
143 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_AMPERSAND_MORE;
144 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_PLUS;
145 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_MINUS;
146 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_ANGLE;
147 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_STAR;
148 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_PROJECTION;
149 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_SLASH;
150 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_COMPOSE;
151 extern RefCountPtr< const Lang::UnaryOperatorFunction > THE_OPERATOR_NEG;
152 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_LESS;
153 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_GREATER;
154 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_EQEQ;
155 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_EQNEQ;
156 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_LESSEQ;
157 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_GREATEREQ;
158 extern RefCountPtr< const Lang::UnaryOperatorFunction > THE_OPERATOR_NOT;
159 extern RefCountPtr< const Lang::CoreFunction > THE_FUNCTION_AND;
160 extern RefCountPtr< const Lang::CoreFunction > THE_FUNCTION_OR;
161 extern RefCountPtr< const Lang::BinaryOperatorFunction > THE_OPERATOR_XOR;
163 extern RefCountPtr< const Lang::CoreFunction > THE_FUNCTION_ABS;
166 namespace Ast
169 extern ShapesScanner theShapesScanner;
170 extern Ast::Expression * theProgram;
171 extern PtrOwner_back_Access< std::list< Ast::AnalysisEnvironment * > > theAnalysisEnvironmentList;
172 extern Ast::AnalysisEnvironment * theGlobalAnalysisEnvironment;
173 extern Ast::DummyExpression THE_CORE_DEFAULT_VALUE_EXPRESSION;
174 extern Ast::DummyExpression THE_INTERNAL_VALUE_EXPRESSION;
176 extern PtrOwner_back_Access< std::list< Exceptions::Exception * > > theAnalysisErrorsList;
178 extern RefCountPtr< const Lang::CoreFunction > THE_FUNCTION_coords2D;
179 extern RefCountPtr< const Lang::CoreFunction > THE_FUNCTION_cornercoords2D;
180 extern RefCountPtr< const Lang::CoreFunction > THE_FUNCTION_coords3D;
181 extern RefCountPtr< const Lang::CoreFunction > THE_FUNCTION_polarHandle2DFree_r;
182 extern RefCountPtr< const Lang::CoreFunction > THE_FUNCTION_polarHandle2DFree_ra;
183 extern RefCountPtr< const Lang::CoreFunction > THE_FUNCTION_TeX;
188 #endif