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
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
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"
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:
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
;
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
;
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
;
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
;
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
;