hostenv_adobesvg.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:10k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. if (typeof window == "undefined") {
  9. dojo.raise("attempt to use adobe svg hostenv when no window object");
  10. }
  11. with (dojo.render) {
  12. name = navigator.appName;
  13. ver = parseFloat(navigator.appVersion, 10);
  14. switch (navigator.platform) {
  15.   case "MacOS":
  16. os.osx = true;
  17. break;
  18.   case "Linux":
  19. os.linux = true;
  20. break;
  21.   case "Windows":
  22. os.win = true;
  23. break;
  24.   default:
  25. os.linux = true;
  26. break;
  27. }
  28. svg.capable = true;
  29. svg.support.builtin = true;
  30. svg.adobe = true;
  31. }
  32. dojo.hostenv.println = function (s) {
  33. try {
  34. var ti = document.createElement("text");
  35. ti.setAttribute("x", "50");
  36. var yPos = 25 + 15 * document.getElementsByTagName("text").length;
  37. ti.setAttribute("y", yPos);
  38. var tn = document.createTextNode(s);
  39. ti.appendChild(tn);
  40. document.documentElement.appendChild(ti);
  41. }
  42. catch (e) {
  43. }
  44. };
  45. dojo.debug = function () {
  46. if (!djConfig.isDebug) {
  47. return;
  48. }
  49. var args = arguments;
  50. if (typeof dojo.hostenv.println != "function") {
  51. dojo.raise("attempt to call dojo.debug when there is no dojo.hostenv println implementation (yet?)");
  52. }
  53. var isJUM = dj_global["jum"];
  54. var s = isJUM ? "" : "DEBUG: ";
  55. for (var i = 0; i < args.length; ++i) {
  56. s += args[i];
  57. }
  58. if (isJUM) {
  59. jum.debug(s);
  60. } else {
  61. dojo.hostenv.println(s);
  62. }
  63. };
  64. dojo.hostenv.startPackage("dojo.hostenv");
  65. dojo.hostenv.name_ = "adobesvg";
  66. dojo.hostenv.anonCtr = 0;
  67. dojo.hostenv.anon = {};
  68. dojo.hostenv.nameAnonFunc = function (anonFuncPtr, namespaceObj) {
  69. var ret = "_" + this.anonCtr++;
  70. var nso = (namespaceObj || this.anon);
  71. while (typeof nso[ret] != "undefined") {
  72. ret = "_" + this.anonCtr++;
  73. }
  74. nso[ret] = anonFuncPtr;
  75. return ret;
  76. };
  77. dojo.hostenv.modulesLoadedFired = false;
  78. dojo.hostenv.modulesLoadedListeners = [];
  79. dojo.hostenv.getTextStack = [];
  80. dojo.hostenv.loadUriStack = [];
  81. dojo.hostenv.loadedUris = [];
  82. dojo.hostenv.modulesLoaded = function () {
  83. if (this.modulesLoadedFired) {
  84. return;
  85. }
  86. if ((this.loadUriStack.length == 0) && (this.getTextStack.length == 0)) {
  87. if (this.inFlightCount > 0) {
  88. dojo.debug("couldn't initialize, there are files still in flight");
  89. return;
  90. }
  91. this.modulesLoadedFired = true;
  92. var mll = this.modulesLoadedListeners;
  93. for (var x = 0; x < mll.length; x++) {
  94. mll[x]();
  95. }
  96. }
  97. };
  98. dojo.hostenv.getNewAnonFunc = function () {
  99. var ret = "_" + this.anonCtr++;
  100. while (typeof this.anon[ret] != "undefined") {
  101. ret = "_" + this.anonCtr++;
  102. }
  103. eval("dojo.nostenv.anon." + ret + " = function(){};");
  104. return [ret, this.anon[ret]];
  105. };
  106. dojo.hostenv.displayStack = function () {
  107. var oa = [];
  108. var stack = this.loadUriStack;
  109. for (var x = 0; x < stack.length; x++) {
  110. oa.unshift([stack[x][0], (typeof stack[x][2])]);
  111. }
  112. dojo.debug("<pre>" + oa.join("n") + "</pre>");
  113. };
  114. dojo.hostenv.unwindUriStack = function () {
  115. var stack = this.loadUriStack;
  116. for (var x in dojo.hostenv.loadedUris) {
  117. for (var y = stack.length - 1; y >= 0; y--) {
  118. if (stack[y][0] == x) {
  119. stack.splice(y, 1);
  120. }
  121. }
  122. }
  123. var next = stack.pop();
  124. if ((!next) && (stack.length == 0)) {
  125. return;
  126. }
  127. for (var x = 0; x < stack.length; x++) {
  128. if ((stack[x][0] == next[0]) && (stack[x][2])) {
  129. next[2] == stack[x][2];
  130. }
  131. }
  132. var last = next;
  133. while (dojo.hostenv.loadedUris[next[0]]) {
  134. last = next;
  135. next = stack.pop();
  136. }
  137. while (typeof next[2] == "string") {
  138. try {
  139. dj_eval(next[2]);
  140. next[1](true);
  141. }
  142. catch (e) {
  143. dojo.debug("we got an error when loading " + next[0]);
  144. dojo.debug("error: " + e);
  145. }
  146. dojo.hostenv.loadedUris[next[0]] = true;
  147. dojo.hostenv.loadedUris.push(next[0]);
  148. last = next;
  149. next = stack.pop();
  150. if ((!next) && (stack.length == 0)) {
  151. break;
  152. }
  153. while (dojo.hostenv.loadedUris[next[0]]) {
  154. last = next;
  155. next = stack.pop();
  156. }
  157. }
  158. if (next) {
  159. stack.push(next);
  160. dojo.debug("### CHOKED ON: " + next[0]);
  161. }
  162. };
  163. dojo.hostenv.loadUri = function (uri, cb) {
  164. if (dojo.hostenv.loadedUris[uri]) {
  165. return;
  166. }
  167. var stack = this.loadUriStack;
  168. stack.push([uri, cb, null]);
  169. var tcb = function (contents) {
  170. if (contents.content) {
  171. contents = contents.content;
  172. }
  173. var next = stack.pop();
  174. if ((!next) && (stack.length == 0)) {
  175. dojo.hostenv.modulesLoaded();
  176. return;
  177. }
  178. if (typeof contents == "string") {
  179. stack.push(next);
  180. for (var x = 0; x < stack.length; x++) {
  181. if (stack[x][0] == uri) {
  182. stack[x][2] = contents;
  183. }
  184. }
  185. next = stack.pop();
  186. }
  187. if (dojo.hostenv.loadedUris[next[0]]) {
  188. dojo.hostenv.unwindUriStack();
  189. return;
  190. }
  191. stack.push(next);
  192. if (next[0] != uri) {
  193. if (typeof next[2] == "string") {
  194. dojo.hostenv.unwindUriStack();
  195. }
  196. } else {
  197. if (!contents) {
  198. next[1](false);
  199. } else {
  200. var deps = dojo.hostenv.getDepsForEval(next[2]);
  201. if (deps.length > 0) {
  202. eval(deps.join(";"));
  203. } else {
  204. dojo.hostenv.unwindUriStack();
  205. }
  206. }
  207. }
  208. };
  209. this.getText(uri, tcb, true);
  210. };
  211. dojo.hostenv.loadModule = function (modulename, exact_only, omit_module_check) {
  212. var module = this.findModule(modulename, 0);
  213. if (module) {
  214. return module;
  215. }
  216. if (typeof this.loading_modules_[modulename] !== "undefined") {
  217. dojo.debug("recursive attempt to load module '" + modulename + "'");
  218. } else {
  219. this.addedToLoadingCount.push(modulename);
  220. }
  221. this.loading_modules_[modulename] = 1;
  222. var relpath = modulename.replace(/./g, "/") + ".js";
  223. var syms = modulename.split(".");
  224. var nsyms = modulename.split(".");
  225. if (syms[0] == "dojo") {
  226. syms[0] = "src";
  227. }
  228. var last = syms.pop();
  229. syms.push(last);
  230. var _this = this;
  231. var pfn = this.pkgFileName;
  232. if (last == "*") {
  233. modulename = (nsyms.slice(0, -1)).join(".");
  234. var module = this.findModule(modulename, 0);
  235. if (module) {
  236. _this.removedFromLoadingCount.push(modulename);
  237. return module;
  238. }
  239. var nextTry = function (lastStatus) {
  240. if (lastStatus) {
  241. module = _this.findModule(modulename, false);
  242. if ((!module) && (syms[syms.length - 1] != pfn)) {
  243. dojo.raise("Module symbol '" + modulename + "' is not defined after loading '" + relpath + "'");
  244. }
  245. if (module) {
  246. _this.removedFromLoadingCount.push(modulename);
  247. dojo.hostenv.modulesLoaded();
  248. return;
  249. }
  250. }
  251. syms.pop();
  252. syms.push(pfn);
  253. relpath = syms.join("/") + ".js";
  254. if (relpath.charAt(0) == "/") {
  255. relpath = relpath.slice(1);
  256. }
  257. _this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry);
  258. };
  259. nextTry();
  260. } else {
  261. relpath = syms.join("/") + ".js";
  262. modulename = nsyms.join(".");
  263. var nextTry = function (lastStatus) {
  264. if (lastStatus) {
  265. module = _this.findModule(modulename, false);
  266. if ((!module) && (syms[syms.length - 1] != pfn)) {
  267. dojo.raise("Module symbol '" + modulename + "' is not defined after loading '" + relpath + "'");
  268. }
  269. if (module) {
  270. _this.removedFromLoadingCount.push(modulename);
  271. dojo.hostenv.modulesLoaded();
  272. return;
  273. }
  274. }
  275. var setPKG = (syms[syms.length - 1] == pfn) ? false : true;
  276. syms.pop();
  277. if (setPKG) {
  278. syms.push(pfn);
  279. }
  280. relpath = syms.join("/") + ".js";
  281. if (relpath.charAt(0) == "/") {
  282. relpath = relpath.slice(1);
  283. }
  284. _this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry);
  285. };
  286. this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry);
  287. }
  288. return;
  289. };
  290. dojo.hostenv.async_cb = null;
  291. dojo.hostenv.unWindGetTextStack = function () {
  292. if (dojo.hostenv.inFlightCount > 0) {
  293. setTimeout("dojo.hostenv.unWindGetTextStack()", 100);
  294. return;
  295. }
  296. dojo.hostenv.inFlightCount++;
  297. var next = dojo.hostenv.getTextStack.pop();
  298. if ((!next) && (dojo.hostenv.getTextStack.length == 0)) {
  299. dojo.hostenv.inFlightCount--;
  300. dojo.hostenv.async_cb = function () {
  301. };
  302. return;
  303. }
  304. dojo.hostenv.async_cb = next[1];
  305. window.getURL(next[0], function (result) {
  306. dojo.hostenv.inFlightCount--;
  307. dojo.hostenv.async_cb(result.content);
  308. dojo.hostenv.unWindGetTextStack();
  309. });
  310. };
  311. dojo.hostenv.getText = function (uri, async_cb, fail_ok) {
  312. try {
  313. if (async_cb) {
  314. dojo.hostenv.getTextStack.push([uri, async_cb, fail_ok]);
  315. dojo.hostenv.unWindGetTextStack();
  316. } else {
  317. return dojo.raise("No synchronous XMLHTTP implementation available, for uri " + uri);
  318. }
  319. }
  320. catch (e) {
  321. return dojo.raise("No XMLHTTP implementation available, for uri " + uri);
  322. }
  323. };
  324. dojo.hostenv.postText = function (uri, async_cb, text, fail_ok, mime_type, encoding) {
  325. var http = null;
  326. var async_callback = function (httpResponse) {
  327. if (!httpResponse.success) {
  328. dojo.raise("Request for uri '" + uri + "' resulted in " + httpResponse.status);
  329. }
  330. if (!httpResponse.content) {
  331. if (!fail_ok) {
  332. dojo.raise("Request for uri '" + uri + "' resulted in no content");
  333. }
  334. return null;
  335. }
  336. async_cb(httpResponse.content);
  337. };
  338. try {
  339. if (async_cb) {
  340. http = window.postURL(uri, text, async_callback, mimeType, encoding);
  341. } else {
  342. return dojo.raise("No synchronous XMLHTTP post implementation available, for uri " + uri);
  343. }
  344. }
  345. catch (e) {
  346. return dojo.raise("No XMLHTTP post implementation available, for uri " + uri);
  347. }
  348. };
  349. function dj_last_script_src() {
  350. var scripts = window.document.getElementsByTagName("script");
  351. if (scripts.length < 1) {
  352. dojo.raise("No script elements in window.document, so can't figure out my script src");
  353. }
  354. var li = scripts.length - 1;
  355. var xlinkNS = "http://www.w3.org/1999/xlink";
  356. var src = null;
  357. var script = null;
  358. while (!src) {
  359. script = scripts.item(li);
  360. src = script.getAttributeNS(xlinkNS, "href");
  361. li--;
  362. if (li < 0) {
  363. break;
  364. }
  365. }
  366. if (!src) {
  367. dojo.raise("Last script element (out of " + scripts.length + ") has no src");
  368. }
  369. return src;
  370. }
  371. if (!dojo.hostenv["library_script_uri_"]) {
  372. dojo.hostenv.library_script_uri_ = dj_last_script_src();
  373. }
  374. dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");