@shijiu/jsview-vue 2.1.200 → 2.1.340-test.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/bin/browser/BrowserApic.vue.mjs +124 -0
  2. package/bin/browser/BrowserApic2.vue.mjs +118 -0
  3. package/bin/browser/BrowserApicLib.mjs +424 -0
  4. package/bin/browser/BrowserAudio.vue.mjs +263 -0
  5. package/bin/browser/BrowserJsvLatex.vue.mjs +110 -0
  6. package/bin/browser/BrowserJsvPlayer.vue.mjs +573 -0
  7. package/bin/browser/BrowserPreload.vue.mjs +154 -0
  8. package/bin/browser/BrowserQrcode.vue.mjs +178 -0
  9. package/bin/browser/BrowserSpray.vue.mjs +66 -0
  10. package/bin/browser/BrowserTextureAnim.vue.mjs +324 -0
  11. package/bin/export-sfc.mjs +12 -0
  12. package/bin/jsview-common.mjs +39 -0
  13. package/bin/jsview-vue.mjs +21106 -0
  14. package/index.js +3 -4
  15. package/package.json +1 -2
  16. package/tools/config/rollup.config.mjs +52 -0
  17. package/tools/config/tsconfig.json +18 -0
  18. package/tools/config/vite.config.ts +60 -0
  19. package/tools/jsview-vue-build.mjs +125 -0
  20. package/utils/JsViewEngineWidget/{JsvFocusBlock.vue → JsvFocus/JsvFocusBlock.vue} +11 -11
  21. package/utils/JsViewEngineWidget/{JsvFocusHub.ts → JsvFocus/JsvFocusHub.ts} +9 -3
  22. package/utils/JsViewEngineWidget/{JsvFocusManager.js → JsvFocus/JsvFocusManager.js} +6 -5
  23. package/utils/JsViewEngineWidget/MetroWidget/AnimationManager.ts +33 -10
  24. package/utils/JsViewEngineWidget/MetroWidget/ListWidget.vue +89 -57
  25. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +118 -62
  26. package/utils/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.js +504 -60
  27. package/utils/JsViewEngineWidget/MetroWidget/RenderItem.ts +11 -1
  28. package/utils/JsViewEngineWidget/MetroWidget/SlotComponent.vue +13 -0
  29. package/utils/JsViewEngineWidget/TemplateParser/CommonMetroTemplate.ts +1 -1
  30. package/utils/JsViewEngineWidget/TemplateParser/ListMetroTemplate.ts +1 -1
  31. package/utils/JsViewEngineWidget/TemplateParser/MetroTemplate.ts +34 -1
  32. package/utils/JsViewEngineWidget/TemplateParser/TemplateItemAdder.ts +52 -11
  33. package/utils/JsViewEngineWidget/index.js +3 -3
  34. package/utils/JsViewPlugin/JsvAudio/AudioProxy.js +9 -0
  35. package/utils/JsViewPlugin/JsvAudio/BrowserAudio/BrowserAudio.vue +11 -3
  36. package/utils/JsViewPlugin/JsvAudio/JsvAudio.vue +1 -0
  37. package/utils/JsViewPlugin/JsvAudio/JsvAudioBridgeProxy.js +8 -0
  38. package/utils/JsViewPlugin/JsvAudio/ScreenLockManager.js +16 -0
  39. package/utils/JsViewPlugin/JsvAudio/version.js +3 -3
  40. package/utils/JsViewPlugin/JsvAudio/version.mjs +3 -3
  41. package/utils/JsViewPlugin/JsvLatex/index.js +1 -1
  42. package/utils/JsViewPlugin/JsvPlayer/JsvPlayer.vue +1 -1
  43. package/utils/JsViewPlugin/JsvPlayer/index-0.9.js +3 -3
  44. package/utils/JsViewPlugin/JsvPlayer/index.js +2 -2
  45. package/utils/JsViewVueTools/DebugTool.js +2 -2
  46. package/utils/JsViewVueTools/DefaultKeyMap.js +1 -1
  47. package/utils/JsViewVueTools/JsvDynamicCssStyle.js +1 -1
  48. package/utils/JsViewVueTools/JsvDynamicKeyFrames.js +2 -2
  49. package/utils/JsViewVueTools/JsvImpactTracer.js +7 -7
  50. package/utils/JsViewVueTools/JsvPreDownloader.ts +1 -1
  51. package/utils/JsViewVueTools/JsvRefTaker.js +2 -1
  52. package/utils/JsViewVueTools/JsvRuntimeBridge.js +29 -29
  53. package/utils/JsViewVueTools/JsvStyleClass.js +3 -3
  54. package/utils/JsViewVueTools/JsvStyleSheetsDeclarer.js +1 -1
  55. package/utils/JsViewVueTools/JsvTextTools.js +4 -4
  56. package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CanvasTexture.ts +29 -1
  57. package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CommandList.ts +6 -5
  58. package/utils/JsViewVueTools/JsvTextureStore/JsvTextureStore.ts +60 -2
  59. package/utils/JsViewVueTools/NinePatchHelper.js +1 -1
  60. package/utils/JsViewVueWidget/JsvActorMove/ActorControlBase.js +1 -1
  61. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMoveControl.js +1 -1
  62. package/utils/JsViewVueWidget/JsvApic/{BrowserApic → JsvApic}/BrowserApic.vue +20 -23
  63. package/utils/JsViewVueWidget/JsvApic/{JsvApic.vue → JsvApic/JsvApic.vue} +3 -14
  64. package/utils/JsViewVueWidget/JsvApic/{index.js → JsvApic/index.js} +2 -4
  65. package/utils/JsViewVueWidget/JsvApic/JsvApic2/BrowserApic2.vue +116 -0
  66. package/utils/JsViewVueWidget/JsvApic/JsvApic2/JsvApic2.vue +137 -0
  67. package/utils/JsViewVueWidget/JsvApic/JsvApic2/index.js +17 -0
  68. package/utils/JsViewVueWidget/JsvApic/JsvBrowserApicLib/BrowserApicLib.js +4 -0
  69. package/utils/JsViewVueWidget/JsvApic/{BrowserApic → JsvBrowserApicLib}/NormalLoopTool.js +16 -18
  70. package/utils/JsViewVueWidget/JsvApic/JsvBrowserApicLib/PartLoopTool.js +90 -0
  71. package/utils/JsViewVueWidget/JsvApic/JsvBrowserApicLib/SingleLoopTool.js +17 -0
  72. package/utils/JsViewVueWidget/JsvApic/JsvBrowserApicLib/Viewer.js +111 -0
  73. package/utils/JsViewVueWidget/JsvApic/JsvCommonLoopToolBase.js +48 -0
  74. package/utils/JsViewVueWidget/JsvConnectLine/ArcLineManager.js +71 -0
  75. package/utils/JsViewVueWidget/JsvConnectLine/JsvConnectLine.vue +354 -0
  76. package/utils/JsViewVueWidget/JsvConnectLine/index.js +2 -0
  77. package/utils/JsViewVueWidget/JsvFreeMoveActor/ActorControl.ts +37 -18
  78. package/utils/JsViewVueWidget/JsvFreeMoveActor/ForgeTypeDefine.ts +7 -3
  79. package/utils/JsViewVueWidget/JsvFreeMoveActor/FreeMoveActor.vue +28 -2
  80. package/utils/JsViewVueWidget/JsvFreeMoveActor/JsvEnvBlocker.vue +12 -5
  81. package/utils/JsViewVueWidget/JsvFreeMoveActor/NexusNode.ts +21 -0
  82. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetAction.ts +47 -59
  83. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetCondition.ts +129 -12
  84. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetState.ts +45 -0
  85. package/utils/JsViewVueWidget/JsvFreeMoveActor/index.js +10 -2
  86. package/utils/JsViewVueWidget/JsvGrid.vue +1 -1
  87. package/utils/JsViewVueWidget/JsvHole.js +1 -1
  88. package/utils/JsViewVueWidget/JsvInput/JsvInput.vue +1 -1
  89. package/utils/JsViewVueWidget/JsvLine/JsvLine.vue +2 -2
  90. package/utils/JsViewVueWidget/JsvLine/LineManager.js +6 -4
  91. package/utils/JsViewVueWidget/JsvMarquee.vue +7 -4
  92. package/utils/JsViewVueWidget/JsvPieChart.vue +1 -1
  93. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +1 -1
  94. package/utils/JsViewVueWidget/JsvPreload/index.js +1 -1
  95. package/utils/JsViewVueWidget/JsvProgressBar.vue +172 -0
  96. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +0 -1
  97. package/utils/JsViewVueWidget/JsvQrcode/index.js +1 -1
  98. package/utils/JsViewVueWidget/JsvRadarChart.vue +1 -1
  99. package/utils/JsViewVueWidget/JsvScaleTextBox.vue +0 -2
  100. package/utils/JsViewVueWidget/JsvSector.vue +1 -1
  101. package/utils/JsViewVueWidget/JsvSoundPool.js +1 -1
  102. package/utils/JsViewVueWidget/JsvSpray/index.js +1 -1
  103. package/utils/JsViewVueWidget/JsvSpriteAnim/FrameBuidler.ts +235 -0
  104. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +433 -401
  105. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteLoader.vue +120 -0
  106. package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +2 -2
  107. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +5 -5
  108. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +425 -422
  109. package/utils/JsViewVueWidget/JsvVisibleSensor/index.js +1 -1
  110. package/utils/JsViewVueWidget/index.js +7 -3
  111. package/utils/index.js +4 -0
  112. package/utils/JsViewVueWidget/JsvApic/BrowserApic/LoopToolBase.js +0 -25
  113. package/utils/JsViewVueWidget/JsvApic/BrowserApic/PartLoopTool.js +0 -119
  114. package/utils/JsViewVueWidget/JsvApic/BrowserApic/Viewer.js +0 -106
  115. /package/utils/JsViewPlugin/JsvLatex/{JsvLatexBrowser.vue → BrowserJsvLatex.vue} +0 -0
  116. /package/utils/JsViewPlugin/JsvPlayer/{JsvPlayerBrowser-0.9.vue → BrowserJsvPlayer-0.9.vue} +0 -0
  117. /package/utils/JsViewPlugin/JsvPlayer/{JsvPlayerBrowser.vue → BrowserJsvPlayer.vue} +0 -0
  118. /package/utils/JsViewVueWidget/JsvApic/{BrowserApic → JsvBrowserApicLib}/ApicDataBase.js +0 -0
  119. /package/utils/JsViewVueWidget/JsvApic/{BrowserApic → JsvBrowserApicLib}/GifData.js +0 -0
  120. /package/utils/JsViewVueWidget/JsvApic/{BrowserApic → JsvBrowserApicLib}/WebpData.js +0 -0
@@ -25,7 +25,7 @@ function direct_call(name, ...args) {
25
25
  return null;
26
26
  }
27
27
 
28
- /**
28
+ /*!
29
29
  * 获取当前集成JsView的APP目前支持的扩展功能列表
30
30
  *
31
31
  * @returns {string} 功能列表,以逗号隔开,包含:
@@ -40,7 +40,7 @@ function getExtFeatureSupports() {
40
40
  return feature_supports;
41
41
  }
42
42
 
43
- /**
43
+ /*!
44
44
  * 获取设备mac地址,优先获取有线mac,无则获取wifi mac
45
45
  * @returns {string} mac address
46
46
  *
@@ -49,7 +49,7 @@ function getMac(){
49
49
  return direct_call("getMac");
50
50
  }
51
51
 
52
- /**
52
+ /*!
53
53
  * 获取设备有线mac地址
54
54
  * @returns {string} mac address
55
55
  *
@@ -58,7 +58,7 @@ function getWireMac(){
58
58
  return direct_call("getWireMac");
59
59
  }
60
60
 
61
- /**
61
+ /*!
62
62
  * 获取设备wifi mac地址
63
63
  * @returns {string} mac address
64
64
  *
@@ -67,7 +67,7 @@ function getWifiMac(){
67
67
  return direct_call("getWifiMac");
68
68
  }
69
69
 
70
- /**
70
+ /*!
71
71
  * 获取设备UUID
72
72
  * @returns {string} UUID
73
73
  *
@@ -76,7 +76,7 @@ function getDeviceUUID(){
76
76
  return direct_call("getDeviceUUID");
77
77
  }
78
78
 
79
- /**
79
+ /*!
80
80
  * 获取设备Android ID
81
81
  * @returns {string} Android ID
82
82
  *
@@ -85,7 +85,7 @@ function getAndroidId(){
85
85
  return direct_call("getAndroidId");
86
86
  }
87
87
 
88
- /**
88
+ /*!
89
89
  * 打开另外一个小程序
90
90
  * @param {string} url 小程序url
91
91
  * @param {string} startup_image 启动图url
@@ -109,7 +109,7 @@ function openWindow(url, startup_image, startup_video, startup_duration, add_his
109
109
  direct_call("openWindow", url, JSON.stringify(setting));
110
110
  }
111
111
 
112
- /**
112
+ /*!
113
113
  * 关闭当前小程序
114
114
  *
115
115
  */
@@ -117,7 +117,7 @@ function closePage(){
117
117
  direct_call("closePage");
118
118
  }
119
119
 
120
- /**
120
+ /*!
121
121
  * 获取设备UUID
122
122
  * @param {string} key 属性名称
123
123
  * @returns {string} 属性值
@@ -127,7 +127,7 @@ function getSystemProperty(key){
127
127
  return direct_call("getSystemProperty", key);
128
128
  }
129
129
 
130
- /**
130
+ /*!
131
131
  * 获取已安装应用列表
132
132
  * @returns {string} 应用列表,JSON结构的数组
133
133
  *
@@ -136,7 +136,7 @@ function getInstalledApps(){
136
136
  return direct_call("getInstalledApps");
137
137
  }
138
138
 
139
- /**
139
+ /*!
140
140
  * 启动安卓APP
141
141
  * @param {string} package_name 包名
142
142
  * @param {string} activity Activity方式启动
@@ -192,7 +192,7 @@ function sendNativeBroadcast(package_name, broadcast, action, uri, flags, param)
192
192
  direct_call("sendNativeBroadcast", JSON.stringify(obj));
193
193
  }
194
194
 
195
- /**
195
+ /*!
196
196
  * 获取设备信息
197
197
  * @returns {string} 终端设备信息,JSON数据结构
198
198
  *
@@ -201,7 +201,7 @@ function getDeviceInfo() {
201
201
  return direct_call("getDeviceInfo");
202
202
  }
203
203
 
204
- /**
204
+ /*!
205
205
  * 获取自己的app信息
206
206
  * @returns
207
207
  */
@@ -209,7 +209,7 @@ function getAppInfo(){
209
209
  return direct_call("getAppInfo");
210
210
  }
211
211
 
212
- /**
212
+ /*!
213
213
  * 页面加载成功后调用去除启动图
214
214
  *
215
215
  */
@@ -224,7 +224,7 @@ function notifyPageLoaded() {
224
224
  direct_call("notifyPageLoaded");
225
225
  }
226
226
 
227
- /**
227
+ /*!
228
228
  * 是否支持收藏功能
229
229
  * @returns {boolean} true支持,false不支持
230
230
  *
@@ -237,7 +237,7 @@ function hasFavouriteFunction(){
237
237
  return false;
238
238
  }
239
239
 
240
- /**
240
+ /*!
241
241
  * 获取启动内核版本和引擎
242
242
  * @returns {Object} 包含
243
243
  * COREVERSIONRANGE: 启动时设定的内核版本范围
@@ -252,7 +252,7 @@ function getStartParams() {
252
252
  }
253
253
  }
254
254
 
255
- /**
255
+ /*!
256
256
  * 添加收藏
257
257
  * @param {string} url 收藏的url
258
258
  * @param {function} callback 执行接口回调, 处理可能被用户否决
@@ -273,7 +273,7 @@ function addFavourite(url, callback) {
273
273
  }
274
274
  }
275
275
 
276
- /**
276
+ /*!
277
277
  * 更新收藏
278
278
  * @param {string} url 收藏的url
279
279
  * @param {function} callback 执行接口回调, 处理可能被用户否决
@@ -294,7 +294,7 @@ function updateFavourite(url, callback) {
294
294
  }
295
295
  }
296
296
 
297
- /**
297
+ /*!
298
298
  * 删除指定收藏
299
299
  * @param {string} app_name app name 唯一标识
300
300
  * @param {function} callback 执行接口回调, 处理可能被用户否决
@@ -315,7 +315,7 @@ function removeFavourite(app_name, callback) {
315
315
  }
316
316
  }
317
317
 
318
- /**
318
+ /*!
319
319
  * 获取指定收藏
320
320
  * @param {string} app_name app name 唯一标识
321
321
  */
@@ -326,7 +326,7 @@ function getFavourite(app_name) {
326
326
  return null;
327
327
  }
328
328
 
329
- /**
329
+ /*!
330
330
  * 获取所有收藏
331
331
  *
332
332
  */
@@ -337,7 +337,7 @@ function getFavouriteAll() {
337
337
  return null;
338
338
  }
339
339
 
340
- /**
340
+ /*!
341
341
  * 浮窗控制接口,设置从本浮窗界面进行预热的二级浮窗的启动默认尺寸(若不设置则为全屏)
342
342
  * @param {string} mode 全屏模式还是需要Resize的模式。取值范围: "full" 或者 "mini"
343
343
  * 设置成 "mini" 模式后,启动后的界面内需要调用popupResizePosition来调整尺寸才能可见
@@ -346,7 +346,7 @@ function setPopupInitSize(mode) {
346
346
  direct_call("setPopupInitSize", mode);
347
347
  }
348
348
 
349
- /**
349
+ /*!
350
350
  * 浮窗控制接口,设置浮窗显示区域,以相对定位的方式调整弹出框的位置(弹出框弹出后先以尺寸1x1的方式展现)
351
351
  * @param {string} align 横纵对齐方式,有left, right, bottom, top, center可选择
352
352
  * 例如: 右下角"right bottom", 居中"center center"
@@ -359,7 +359,7 @@ function popupResizePosition(align, max_width, max_height, aspect) {
359
359
  direct_call("popupResizePosition", align, max_width, max_height, aspect);
360
360
  }
361
361
 
362
- /**
362
+ /*!
363
363
  * 浮窗系统认为自己准备好后,调用此接口,获取设备的焦点。若不调用的话,默认浮窗系统捕获的焦点
364
364
  */
365
365
  function popupGainFocus() {
@@ -370,7 +370,7 @@ function popupDiscardFocus(){
370
370
  direct_call("popupGainFocus");
371
371
  }
372
372
 
373
- /**
373
+ /*!
374
374
  * 页面预热接口,预热页面将会将以一个新的FrameLayout(内含JsView)的方式加载一个新的应用
375
375
  * 但这个应用在warmLoadView之前,不会创建texture/surface的实际描画资源,也不会加载图片
376
376
  * 仅加载所有JS代码,并正常走完所有启动逻辑(包括描画逻辑),但不会走setTimeout对应的延时逻辑,也不会显示
@@ -399,7 +399,7 @@ function warmUpView(mode, app_url) {
399
399
  return direct_call("warmUpView", mode, app_url);
400
400
  }
401
401
 
402
- /**
402
+ /*!
403
403
  * 将warmUpView后的View展示出来
404
404
  * 若warmUpView中app_url不为null,进行了全预热,则本调用的app_url可以为null
405
405
  * 当warmUpView中设置了app_url时,仍可以新的app_url调整history hash(#)部分进行子页面切换
@@ -412,7 +412,7 @@ function warmLoadView(view_refer_id, app_url, add_history) {
412
412
  direct_call("warmLoadView", view_refer_id, app_url, !!add_history);
413
413
  }
414
414
 
415
- /**
415
+ /*!
416
416
  * 关闭warmUp后未进行warmLoad的View,释放资源
417
417
  * @param {number} view_refer_id warmUpView调用后返回来的View ID
418
418
  */
@@ -420,7 +420,7 @@ function closeWarmedView(view_refer_id) {
420
420
  direct_call("closeWarmedView", view_refer_id);
421
421
  }
422
422
 
423
- /**
423
+ /*!
424
424
  * 触发预下载内核
425
425
  * @param {string} core_version 带branch(主分支版本不带此信息)和版本信息的内核版本,
426
426
  * 例如: 1021265_release_build_xxx
@@ -430,7 +430,7 @@ function preDownloadSdk(core_version){
430
430
  return direct_call("preDownloadSdk", core_version);
431
431
  }
432
432
 
433
- // 显示声明,可以提高执行速度和利用上编辑器的成员名提示功能
433
+ //! 显示声明,可以提高执行速度和利用上编辑器的成员名提示功能
434
434
  const bridge = {
435
435
  getMac,
436
436
  getWireMac,
@@ -2,7 +2,7 @@
2
2
  * Created by donglin.lu@qcast.cn on 4/30/2020.
3
3
  */
4
4
 
5
- /*
5
+ /*!
6
6
  * 【模块 export 内容】
7
7
  * JsvStyleClass:面向对象类,定义一组可以复用的Style,模拟css中的.class的概念
8
8
  * 功能函数:(参数说明见函数本体)
@@ -37,7 +37,7 @@ import { Forge } from "@shijiu/jsview/dom/jsv-forge-define";
37
37
 
38
38
  let sIdGenerator = 100;
39
39
 
40
- // 转换CSS名称的对应表
40
+ //! 转换CSS名称的对应表
41
41
  let sCssNamesMap = null;
42
42
  let sUnitSuffixMap = null;
43
43
 
@@ -118,7 +118,7 @@ function _ConvertStyles(styles_define) {
118
118
  const CONST_TYPE_BASE = null;
119
119
  const CONST_TYPE_TEXT = "text";
120
120
 
121
- // 全局多实例互斥
121
+ //! 全局多实例互斥
122
122
  if (typeof window.__JsvStyleClassMutex === 'undefined') {
123
123
  window.__JsvStyleClassMutex = 0;
124
124
  }
@@ -1,5 +1,5 @@
1
1
 
2
- /*
2
+ /*!
3
3
  * 【模块 export 内容】
4
4
  * JsvStyleSheetsDeclarer: 动态和删除全局的 CssStyle
5
5
  * 接口:
@@ -6,7 +6,7 @@
6
6
  * @Description: file content
7
7
  */
8
8
 
9
- /**
9
+ /*!
10
10
  * 获取文字宽度, 一般用于测量文字宽度
11
11
  *
12
12
  * @param {string} text 文字
@@ -24,20 +24,20 @@ const getTextWidth = (text, style) => {
24
24
  return window.PlatformUtils.GetTextWidth(textParams);
25
25
  };
26
26
 
27
- /**
27
+ /*!
28
28
  * @typedef {object} SliceInfo
29
29
  * @property {int} start - 文字起始index
30
30
  * @property {int} end - 文字结束index
31
31
  * @property {int} width - 文字宽度
32
32
  */
33
33
 
34
- /**
34
+ /*!
35
35
  * @typedef {object} TextInfo
36
36
  * @property {int} totalWidth - 文字整体宽度
37
37
  * @property {Array<SliceInfo>} sliceInfo - 每段文字的信息
38
38
  */
39
39
 
40
- /**
40
+ /*!
41
41
  * 单行超长文字会切成多个div拼接, 由于jsview坐标的取整机制, 拼接出的width和文字width会产生误差, 此接口会返回拼接后的width
42
42
  *
43
43
  * @param {string} text 文字
@@ -107,7 +107,7 @@ class CanvasTexture extends TextureBase {
107
107
  * @param {Number} fromX 绘制起点X
108
108
  * @param {Number} fromY 绘制起点Y
109
109
  * @param {Number} toX 绘制终点X
110
- * @param {Number} toX 绘制终点Y
110
+ * @param {Number} toY 绘制终点Y
111
111
  * @param {Number} lineWidth 线宽
112
112
  * @param {String} color 颜色设定,例如rgba(red:0~255, green:0~255, blue:0~255, alpla:0~1.0), 或则 #AARRGGBB
113
113
  */
@@ -123,6 +123,34 @@ class CanvasTexture extends TextureBase {
123
123
  })
124
124
  }
125
125
 
126
+ /**
127
+ * fillLinearGradient
128
+ * 用渐变色填充一个矩形区域
129
+ *
130
+ * @param {int} fromX 绘制起点X
131
+ * @param {int} fromY 绘制起点Y
132
+ * @param {int} toX 绘制终点X
133
+ * @param {int} toY 绘制终点Y
134
+ * @param {Array<String>} colorArray 颜色设定的数组
135
+ * @param {Array<double>} stopsArray 与color数组个数相同,颜色基准点位置
136
+ */
137
+ fillLinearGradient(
138
+ fromX: Number, fromY: Number,
139
+ toX: Number, toY: Number,
140
+ colorArray: Array<String>,
141
+ stopsArray: Array<Number>,
142
+ ) {
143
+ this.drawCommands?.push({
144
+ "cmd": Constants.CMD_FILL_LINEAR_GRADIENT,
145
+ "x0": fromX,
146
+ "y0": fromY,
147
+ "x1": toX,
148
+ "y1": toY,
149
+ "clrs": colorArray,
150
+ "stops": stopsArray
151
+ })
152
+ }
153
+
126
154
  // override
127
155
  commit(): String {
128
156
  if (!this.commited) {
@@ -1,23 +1,24 @@
1
1
  export const CMD_INVALID = 0;
2
2
 
3
- // Canvas初始化
3
+ //! Canvas初始化
4
4
  export const CMD_ALLOC_CANVAS = 1;
5
5
 
6
- // Paint初始化
6
+ //! Paint初始化
7
7
  export const CMD_PREPARE_PAINT = 2;
8
8
 
9
- // Path初始化
9
+ //! Path初始化
10
10
  export const CMD_PREPARE_PATH = 3;
11
11
 
12
- // 绘制指令
12
+ //! 绘制指令
13
13
  export const CMD_CLEAR_CANVAS = 10;
14
14
  export const CMD_DRAW_COLOR = 11;
15
15
  export const CMD_DRAW_CIRCLE_WITH_PAINT = 12;
16
16
  export const CMD_DRAW_RECT_WITH_PAINT = 13;
17
17
  export const CMD_DRAW_PATH_WITH_PAINT = 14;
18
18
  export const CMD_DRAW_LINE = 15;
19
+ export const CMD_FILL_LINEAR_GRADIENT = 16;
19
20
 
20
- // Path的子命令
21
+ //! Path的子命令
21
22
  export const PATH_CMD_MOVE_TO = 30;
22
23
  export const PATH_CMD_LINE_TO = 31;
23
24
  export const PATH_CMD_ARC_TO = 32;
@@ -1,6 +1,30 @@
1
+ /*!
2
+ * JsvTextureStoreApi
3
+ * canvasTexture:
4
+ * 创建texture(图片纹理)句柄, 通过 CanvasTexture 的API进行绘制, 使用注意以下几点
5
+ * a. commit() 接口调用之前可以任意绘制, commit之后就无法更改, commit之后才能使用, commit后绘制内容会被全局保存
6
+ * b. commit()的返回是其使用名称, 在div.backgroundImage和img.src中可使用, 格式: jsvtexturestore://commit返回名
7
+ * c.【非常重要】CanvasTexture是全局管理, commit()之后 不会自动释放, 需要手动调用 deleteTexture, 其参数是commit的返回值
8
+ * deleteTexture:
9
+ * 删除全局保存的texture(图片纹理)
10
+ *
11
+ * CanvasTexture的接口(见 ./CanvasTexture/CanvasTexture.ts 的函数头):
12
+ * Path类型: 例如 rectPath, circlePath (见 ./CanvasTexture/Path.ts 的函数头)
13
+ * 通过 canvasTexture.xxxPath() 获得一个path操作对象,然后通过其接口进行游标运动形成绘制路径
14
+ * Path.fill() 或者 Path.stroke 调用前可以移动游标进行路径规划, 一旦fill或者stroke后就不能更改了。
15
+ * 非Path接口: 完成单一绘制动作,例如drawLine, drawColor
16
+ */
17
+
1
18
  import CanvasTexture from "./CanvasTexture/CanvasTexture";
2
19
  import sStore from "./Store";
3
20
 
21
+ let sJsvTextureConst = {
22
+ LEFT: 1,
23
+ TOP: 2,
24
+ RIGHT: 3,
25
+ BOTTOM: 4,
26
+ }
27
+
4
28
  let sTextureStoreApi: Object = {
5
29
  /**
6
30
  * canvasTexture
@@ -12,10 +36,44 @@ let sTextureStoreApi: Object = {
12
36
  * @param {String|null} baseName 可选, 访问名的前缀信息
13
37
  * @return {CanvasTexture}
14
38
  */
15
- canvasTexture: (width: Number, height: Number, baseName: String | null) => {
39
+ canvasTexture: (width: Number, height: Number, baseName: String | null): Object => {
16
40
  return new CanvasTexture(width, height, baseName);
17
41
  },
18
42
 
43
+ /**
44
+ * getLinearGradientTexture
45
+ * 按照要求创建一个绘制渐变色的纹理,
46
+ * 绘制从起始位置到终止位置的一条线,
47
+ * 例如从右边上的中点绘制到上边缘的中点的直线: RIGHT:0.5 -> TOP:0.5
48
+ * 返回值为访问名
49
+ *
50
+ * @param {int} startSide JsvTextureConst的 LEFT/TOP/RIGHT/BOTTOM, 起始位置
51
+ * @param {double} startSidePercent 起始点在所在边的比例位置
52
+ * @param {int} endSide JsvTextureConst的 LEFT/TOP/RIGHT/BOTTOM, 终止位置
53
+ * @param {double} endSidePercent 终止点在所在边的比例位置
54
+ * @param {Array<String>} colorArray 颜色基准点的颜色队列
55
+ * @param {int} stopsDenominator stops信息百分比的分母,值越小其texture越省内存
56
+ * @param {Array<int>} stopsArray 颜色基准点的百分比的分子队列
57
+ *
58
+ * @return {String} 此Texture的访问名,可以在 img.src 或者 div.backgroundImage 通过 "texturestore://访问名"使用
59
+ */
60
+ getLinearGradientTexture: (
61
+ startSide: Number, startSidePercent: Number,
62
+ endSide: Number, endSidePercent: Number,
63
+ colorArray: Array<String>,
64
+ stopsDenominator: Number, stopsArray: Array<Number>
65
+ ): String => {
66
+ // TODO: 仿照ResProvider的GetLinearGradientTexture调用 this.canvasTexture 创建width+x/height+x的的texture
67
+ // 然后进行绘制一个填满整个canvas的texture
68
+ return "";
69
+ },
70
+
71
+ /**
72
+ * deleteTexture
73
+ * 删除commit后的texture
74
+ *
75
+ * @param {String} storeName 此Texture的应用名称, 是canvasTexture.commit()后的返回值
76
+ */
19
77
  deleteTexture: (storeName: String) => {
20
78
  let textureRef = sStore.getFromStore(storeName);
21
79
  if (textureRef) {
@@ -25,7 +83,7 @@ let sTextureStoreApi: Object = {
25
83
  }
26
84
  }
27
85
 
28
-
29
86
  export {
30
87
  sTextureStoreApi as JsvTextureStoreApi,
88
+ sJsvTextureConst as JsvTextureConst,
31
89
  }
@@ -3,7 +3,7 @@ function toHtmlBorderSet() {
3
3
  }
4
4
 
5
5
 
6
- /*
6
+ /*!
7
7
  * imageWidth { int } // (必填)原图信息: 原图的宽度(由于正方形,宽高相同)
8
8
  * centerWidth { int } // (必填)原图信息: .9图的中心区域宽度(repeat区域)
9
9
  * imageDspWidth { int } // (选填)原图缩放后的显示宽度,计算方法:
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { Forge } from "@shijiu/jsview/dom/jsv-forge-define";
9
9
 
10
- // JsvSpriteBase comes from JsView React Project
10
+ //! JsvSpriteBase comes from JsView React Project
11
11
 
12
12
  class ActorControlBase {
13
13
  constructor(params_count) {
@@ -13,7 +13,7 @@ const CONST_MOVE_TYPE_ACC = 1; // 抛物变速运动
13
13
  const CONST_MOVE_TYPE_UNIFORM = 2; // 匀速运动
14
14
  const CONST_MOVE_TYPE_JUMP = 3; // 无动画,直接调整坐标到目标位置
15
15
 
16
- // 单向运动控制模块,单方向指的是只能进行一个方向的运动,要不是x,要不是y
16
+ //! 单向运动控制模块,单方向指的是只能进行一个方向的运动,要不是x,要不是y
17
17
  class JsvActorMoveControl extends ActorControlBase {
18
18
  constructor() {
19
19
  // 0: X位置,
@@ -6,10 +6,12 @@
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup>
9
- import Viewer from "./Viewer";
10
- import WebpData from "./WebpData";
11
- import GifData from "./GifData";
12
- import { LoopType } from "./LoopToolBase";
9
+ import {
10
+ Viewer,
11
+ WebpData,
12
+ GifData
13
+ } from "../JsvBrowserApicLib/BrowserApicLib";
14
+ import { LoopType } from "../JsvCommonLoopToolBase";
13
15
  import { onMounted, shallowRef } from "vue";
14
16
 
15
17
  const loadImage = (url) => {
@@ -75,6 +77,14 @@ const props = defineProps({
75
77
  let viewer = null;
76
78
  let canvasProxyRef = shallowRef(null);
77
79
 
80
+ const play = () => {
81
+ viewer?.play(props.loopType, props.loopInfo);
82
+ };
83
+
84
+ const stop = () => {
85
+ viewer?.stop();
86
+ };
87
+
78
88
  onMounted(() => {
79
89
  let domLayoutView = canvasProxyRef.value.jsvGetProxyView();
80
90
  domLayoutView.RegisterOnProxyReady(() => {
@@ -90,37 +100,24 @@ onMounted(() => {
90
100
  onstart: props.onStart,
91
101
  onend: props.onEnd,
92
102
  };
93
- viewer = new Viewer(
94
- data,
95
- canvas,
96
- listener,
97
- props.autoPlay,
98
- props.loopType,
99
- props.loopInfo
100
- );
103
+ viewer = new Viewer(data, canvas, listener);
101
104
  if (props.onLoad) {
102
105
  props.onLoad();
103
106
  }
107
+ if (props.autoPlay) {
108
+ play();
109
+ }
104
110
  })
105
111
  .catch((err) => console.error(err));
106
112
  });
107
113
  });
108
114
 
109
115
  defineExpose({
110
- play: () => {
111
- viewer?.play();
112
- },
113
- stop: () => {
114
- viewer?.stop();
115
- },
116
+ play,
117
+ stop,
116
118
  });
117
119
  </script>
118
120
 
119
- <script>
120
- import { LoopType } from "./LoopToolBase";
121
- export { LoopType };
122
- </script>
123
-
124
121
  <template>
125
122
  <div ref="canvasProxyRef" :style="props.style" />
126
123
  </template>
@@ -20,19 +20,8 @@
20
20
  * play(): 开始播放
21
21
  -->
22
22
  <script>
23
- import ForgeHandles from "../../JsViewVueTools/ForgeHandles";
24
-
25
- let LOOP_DEFAULT = 0;
26
- let LOOP_INFINITE = 1;
27
- let LOOP_FINITE = 2;
28
- let LOOP_PART = 3;
29
- let LoopType = {
30
- LOOP_DEFAULT: LOOP_DEFAULT,
31
- LOOP_INFINITE: LOOP_INFINITE,
32
- LOOP_FINITE: LOOP_FINITE,
33
- LOOP_PART: LOOP_PART,
34
- };
35
- export { LoopType };
23
+ import ForgeHandles from "../../../JsViewVueTools/ForgeHandles";
24
+ import { LoopType } from "../JsvCommonLoopToolBase";
36
25
 
37
26
  export default {
38
27
  props: {
@@ -44,7 +33,7 @@ export default {
44
33
  },
45
34
  loopType: {
46
35
  type: Number,
47
- default: LOOP_DEFAULT,
36
+ default: LoopType.LOOP_DEFAULT,
48
37
  },
49
38
  loopInfo: {
50
39
  type: Array,
@@ -5,15 +5,13 @@
5
5
  * @LastEditTime: 2021-10-13 17:41:08
6
6
  * @Description: file content
7
7
  */
8
- //考虑到.vue文件除了export default的component外,还有可能export其他对象,因此使用import * as
8
+ //! 考虑到.vue文件除了export default的component外,还有可能export其他对象,因此使用import * as
9
9
  import * as JsvApic from "./JsvApic.vue";
10
10
  let _JsvApic;
11
11
  if (window.JsView) {
12
12
  _JsvApic = JsvApic.default;
13
13
  } else {
14
- const BrowserApic = await import("./BrowserApic/BrowserApic.vue");
14
+ const BrowserApic = await import("./BrowserApic.vue");
15
15
  _JsvApic = BrowserApic.default;
16
16
  }
17
- let LoopType = JsvApic.LoopType;
18
17
  export default _JsvApic;
19
- export { LoopType };