1 /* 2 Copyright 2008-2024 3 Matthias Ehmann, 4 Michael Gerhaeuser, 5 Carsten Miller, 6 Bianca Valentin, 7 Alfred Wassermann, 8 Peter Wilfahrt 9 10 This file is part of JSXGraph. 11 12 JSXGraph is free software dual licensed under the GNU LGPL or MIT License. 13 14 You can redistribute it and/or modify it under the terms of the 15 16 * GNU Lesser General Public License as published by 17 the Free Software Foundation, either version 3 of the License, or 18 (at your option) any later version 19 OR 20 * MIT License: https://github.com/jsxgraph/jsxgraph/blob/master/LICENSE.MIT 21 22 JSXGraph is distributed in the hope that it will be useful, 23 but WITHOUT ANY WARRANTY; without even the implied warranty of 24 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 GNU Lesser General Public License for more details. 26 27 You should have received a copy of the GNU Lesser General Public License and 28 the MIT License along with JSXGraph. If not, see <https://www.gnu.org/licenses/> 29 and <https://opensource.org/licenses/MIT/>. 30 */ 31 32 /*global JXG: true, define: true, AMprocessNode: true, MathJax: true, document: true */ 33 /*jslint nomen: true, plusplus: true, newcap:true, unparam: true*/ 34 /*eslint no-unused-vars: "off"*/ 35 36 /** 37 * @fileoverview JSXGraph can use various technologies to render the contents of a construction, e.g. 38 * SVG, VML, and HTML5 Canvas. To accomplish this, The rendering and the logic and control mechanisms 39 * are completely separated from each other. Every rendering technology has it's own class, called 40 * Renderer, e.g. SVGRenderer for SVG, the same for VML and Canvas. The common base for all available 41 * renderers is the class AbstractRenderer. 42 */ 43 44 import JXG from "../jxg.js"; 45 import AbstractRenderer from "./abstract.js"; 46 47 /** 48 * This renderer draws nothing. It is intended to be used in environments where none of our rendering engines 49 * are available, e.g. WebWorkers. All methods are empty. 50 * 51 * @class JXG.NoRenderer 52 * @augments JXG.AbstractRenderer 53 * @see JXG.AbstractRenderer 54 */ 55 JXG.NoRenderer = function () { 56 /** 57 * If this property is set to <tt>true</tt> the visual properties of the elements are updated 58 * on every update. Visual properties means: All the stuff stored in the 59 * {@link JXG.GeometryElement#visProp} property won't be set if enhancedRendering is <tt>false</tt> 60 * @type Boolean 61 * @default true 62 */ 63 this.enhancedRendering = false; 64 65 /** 66 * This is used to easily determine which renderer we are using 67 * @example if (board.renderer.type === 'vml') { 68 * // do something 69 * } 70 * @type String 71 */ 72 this.type = "no"; 73 }; 74 75 JXG.extend( 76 JXG.NoRenderer.prototype, 77 /** @lends JXG.NoRenderer.prototype */ { 78 79 // All methods are already documented in JXG.AbstractRenderer 80 81 /* ********* Point related stuff *********** */ 82 83 drawPoint: function (el) {}, 84 85 updatePoint: function (el) {}, 86 87 changePointStyle: function (el) {}, 88 89 /* ********* Line related stuff *********** */ 90 91 drawLine: function (el) {}, 92 93 updateLine: function (el) {}, 94 95 drawTicks: function (el) {}, 96 97 updateTicks: function (el) {}, 98 99 /* ********* Curve related stuff *********** */ 100 101 drawCurve: function (el) {}, 102 103 updateCurve: function (el) {}, 104 105 /* ********* Circle related stuff *********** */ 106 107 drawEllipse: function (el) {}, 108 109 updateEllipse: function (el) {}, 110 111 /* ********* Polygon related stuff *********** */ 112 113 drawPolygon: function (el) {}, 114 115 updatePolygon: function (el) {}, 116 117 /* ********* Text related stuff *********** */ 118 119 displayCopyright: function (str, fontsize) {}, 120 121 drawInternalText: function (el) {}, 122 123 updateInternalText: function (el) {}, 124 125 drawText: function (el) {}, 126 127 updateText: function (el) {}, 128 129 updateTextStyle: function (el, doHighlight) {}, 130 131 updateInternalTextStyle: function (el, strokeColor, strokeOpacity) {}, 132 133 /* ********* Image related stuff *********** */ 134 135 drawImage: function (el) {}, 136 137 updateImage: function (el) {}, 138 139 updateImageURL: function (el) {}, 140 141 /* ********* Render primitive objects *********** */ 142 143 appendChildPrim: function (node, level) {}, 144 145 appendNodesToElement: function (el, type) {}, 146 147 remove: function (node) {}, 148 149 makeArrows: function (el) {}, 150 151 updateEllipsePrim: function (node, x, y, rx, ry) {}, 152 153 updateLinePrim: function (node, p1x, p1y, p2x, p2y, board) {}, 154 155 updatePathPrim: function (node, pathString, board) {}, 156 157 updatePathStringPoint: function (el, size, type) {}, 158 159 updatePathStringPrim: function (el) {}, 160 161 updatePathStringBezierPrim: function (el) {}, 162 163 updatePolygonPrim: function (node, el) {}, 164 165 updateRectPrim: function (node, x, y, w, h) {}, 166 167 setPropertyPrim: function (node, key, val) {}, 168 169 /* ********* Set attributes *********** */ 170 171 show: function (el) {}, 172 173 hide: function (el) {}, 174 175 setBuffering: function (node, type) {}, 176 177 setDashStyle: function (el) {}, 178 179 setDraft: function (el) {}, 180 181 removeDraft: function (el) {}, 182 183 setGradient: function (el) {}, 184 185 updateGradient: function (el) {}, 186 187 setObjectTransition: function (el, duration) {}, 188 189 setObjectFillColor: function (el, color, opacity) {}, 190 191 setObjectStrokeColor: function (el, color, opacity) {}, 192 193 setObjectStrokeWidth: function (el, width) {}, 194 195 setShadow: function (el) {}, 196 197 highlight: function (el) {}, 198 199 noHighlight: function (el) {}, 200 201 /* ********* Renderer control *********** */ 202 203 suspendRedraw: function () {}, 204 205 unsuspendRedraw: function () {}, 206 207 drawNavigationBar: function (board) {}, 208 209 getElementById: function (id) { return null; }, 210 211 resize: function (w, h) {}, 212 213 removeToInsertLater: function () { return function () {}; } 214 } 215 ); 216 217 /** 218 * @ignore 219 */ 220 JXG.NoRenderer.prototype = new AbstractRenderer(); 221 222 export default JXG.NoRenderer; 223