1 /*
  2     Copyright 2008-2025
  3         Matthias Ehmann,
  4         Michael Gerhaeuser,
  5         Carsten Miller,
  6         Bianca Valentin,
  7         Andreas Walter,
  8         Alfred Wassermann,
  9         Peter Wilfahrt
 10 
 11     This file is part of JSXGraph.
 12 
 13     JSXGraph is free software dual licensed under the GNU LGPL or MIT License.
 14 
 15     You can redistribute it and/or modify it under the terms of the
 16 
 17       * GNU Lesser General Public License as published by
 18         the Free Software Foundation, either version 3 of the License, or
 19         (at your option) any later version
 20       OR
 21       * MIT License: https://github.com/jsxgraph/jsxgraph/blob/master/LICENSE.MIT
 22 
 23     JSXGraph is distributed in the hope that it will be useful,
 24     but WITHOUT ANY WARRANTY; without even the implied warranty of
 25     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 26     GNU Lesser General Public License for more details.
 27 
 28     You should have received a copy of the GNU Lesser General Public License and
 29     the MIT License along with JSXGraph. If not, see <https://www.gnu.org/licenses/>
 30     and <https://opensource.org/licenses/MIT/>.
 31  */
 32 
 33 /*global JXG: true, define: true*/
 34 /*jslint nomen: true, plusplus: true*/
 35 
 36 import JXG from "../jxg.js";
 37 
 38 var major = 1,
 39     minor = 12,
 40     patch = 0,
 41     add = '', // 'dev' 'beta'
 42     version = major + '.' + minor + '.' + patch + (add ? '-' + add : ''),
 43     constants;
 44 
 45 constants =
 46     /** @lends JXG */ {
 47     /**
 48      * Constant: the currently used JSXGraph version.
 49      *
 50      * @name JXG.version
 51      * @type String
 52      */
 53     version: version,
 54 
 55     /**
 56      * Constant: the small gray version indicator in the top left corner of every JSXGraph board (if
 57      * showCopyright is not set to false on board creation).
 58      *
 59      * @name JXG.licenseText
 60      * @type String
 61      */
 62     licenseText: "JSXGraph v" + version + " \u00A9 jsxgraph.org",
 63 
 64     /**
 65      * JSXGraph logo: base64 data-URL of img/png/screen/jsxgraph-logo_black-square-solid.png
 66      *
 67      * @name JXG.licenseLogo
 68      * @type String
 69      */
 70     licenseLogo: 'data:image/png;base64,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',
 71 
 72     /**
 73      *  Constant: user coordinates relative to the coordinates system defined by the bounding box.
 74      *  @name JXG.COORDS_BY_USER
 75      *  @type Number
 76      */
 77     COORDS_BY_USER: 0x0001,
 78 
 79     /**
 80      *  Constant: screen coordinates in pixel relative to the upper left corner of the div element.
 81      *  @name JXG.COORDS_BY_SCREEN
 82      *  @type Number
 83      */
 84     COORDS_BY_SCREEN: 0x0002,
 85 
 86     // object types
 87     OBJECT_TYPE_ARC: 1,
 88     OBJECT_TYPE_ARROW: 2,
 89     OBJECT_TYPE_AXIS: 3,
 90     OBJECT_TYPE_AXISPOINT: 4,
 91     OBJECT_TYPE_TICKS: 5,
 92     OBJECT_TYPE_CIRCLE: 6,
 93     OBJECT_TYPE_CONIC: 7,
 94     OBJECT_TYPE_CURVE: 8,
 95     OBJECT_TYPE_GLIDER: 9,
 96     OBJECT_TYPE_IMAGE: 10,
 97     OBJECT_TYPE_LINE: 11,
 98     OBJECT_TYPE_POINT: 12,
 99     OBJECT_TYPE_SLIDER: 13,// unused
100     OBJECT_TYPE_CAS: 14,
101     OBJECT_TYPE_GXTCAS: 15,
102     OBJECT_TYPE_POLYGON: 16,
103     OBJECT_TYPE_SECTOR: 17,
104     OBJECT_TYPE_TEXT: 18,
105     OBJECT_TYPE_ANGLE: 19,
106     OBJECT_TYPE_INTERSECTION: 20,
107     OBJECT_TYPE_TURTLE: 21,
108     OBJECT_TYPE_VECTOR: 22,
109     OBJECT_TYPE_OPROJECT: 23,
110     OBJECT_TYPE_GRID: 24,
111     OBJECT_TYPE_TANGENT: 25,
112     OBJECT_TYPE_HTMLSLIDER: 26,
113     OBJECT_TYPE_CHECKBOX: 27,
114     OBJECT_TYPE_INPUT: 28,
115     OBJECT_TYPE_BUTTON: 29,
116     OBJECT_TYPE_TRANSFORMATION: 30,
117     OBJECT_TYPE_FOREIGNOBJECT: 31,
118 
119     OBJECT_TYPE_VIEW3D: 32,
120     OBJECT_TYPE_POINT3D: 33,
121     OBJECT_TYPE_LINE3D: 34,
122     OBJECT_TYPE_PLANE3D: 35,
123     OBJECT_TYPE_CURVE3D: 36,
124     OBJECT_TYPE_SURFACE3D: 37,
125 
126     OBJECT_TYPE_MEASUREMENT: 38,
127 
128     OBJECT_TYPE_INTERSECTION_LINE3D: 39,
129     OBJECT_TYPE_SPHERE3D: 40,
130     OBJECT_TYPE_CIRCLE3D: 41,
131     OBJECT_TYPE_INTERSECTION_CIRCLE3D: 42,
132     OBJECT_TYPE_TEXT3D: 43,
133     OBJECT_TYPE_FACE3D: 44,
134     OBJECT_TYPE_POLYHEDRON3D: 45,
135     OBJECT_TYPE_POLYGON3D: 46,
136 
137     // IMPORTANT:
138     // ----------
139     // For being able to differentiate between the (sketchometry specific) SPECIAL_OBJECT_TYPEs and
140     // (core specific) OBJECT_TYPEs, the non-sketchometry types MUST NOT be changed
141     // to values > 100.
142 
143     // object classes
144     OBJECT_CLASS_POINT: 1,
145     OBJECT_CLASS_LINE: 2,
146     OBJECT_CLASS_CIRCLE: 3,
147     OBJECT_CLASS_CURVE: 4,
148     OBJECT_CLASS_AREA: 5,
149     OBJECT_CLASS_OTHER: 6,
150     OBJECT_CLASS_TEXT: 7,
151     OBJECT_CLASS_3D: 8
152 };
153 
154 JXG.extendConstants(JXG, constants);
155 
156 export default constants;
157 // const COORDS_BY_SCREEN = constants.COORDS_BY_SCREEN;
158 // export {constants as default,
159 //         COORDS_BY_SCREEN};
160