bfg-common 1.3.136 → 1.3.138

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 (822) hide show
  1. package/.eslintrc.js +21 -21
  2. package/.idea/inspectionProfiles/Project_Default.xml +48 -48
  3. package/.idea/modules.xml +7 -7
  4. package/.idea/prettier.xml +5 -5
  5. package/.idea/uikit.iml +11 -11
  6. package/.idea/vcs.xml +5 -5
  7. package/.prettierrc +4 -4
  8. package/PROJECT_STRUCTURE.md +42 -42
  9. package/README.md +42 -42
  10. package/assets/img/icons/icon-hcs.svg +3 -3
  11. package/assets/img/icons/icon-life-m-dark.svg +3 -3
  12. package/assets/img/icons/icon-life-m-light.svg +3 -3
  13. package/assets/img/icons/icon-ro-dark.svg +1 -1
  14. package/assets/img/icons/icon-ro-light.svg +2 -2
  15. package/assets/img/icons/icons-sprite-dark-6.svg +1 -1
  16. package/assets/img/icons/icons-sprite-light-6.svg +1 -1
  17. package/assets/img/icons/info.svg +8 -8
  18. package/assets/img/icons/vc.svg +52 -52
  19. package/assets/img/logo copy.svg +50 -50
  20. package/assets/img/logo.svg +51 -51
  21. package/assets/localization/local_be.json +2234 -2225
  22. package/assets/localization/local_en.json +2238 -2229
  23. package/assets/localization/local_hy.json +2238 -2229
  24. package/assets/localization/local_kk.json +2237 -2228
  25. package/assets/localization/local_ru.json +2243 -2234
  26. package/assets/localization/local_zh.json +2237 -2228
  27. package/assets/scss/clarity/clr-ui.min.css +8 -8
  28. package/assets/scss/common/animations.scss +28 -28
  29. package/assets/scss/common/global.scss +189 -189
  30. package/assets/scss/common/icons/icons-1.scss +236 -236
  31. package/assets/scss/common/icons/icons-2.scss +222 -222
  32. package/assets/scss/common/icons/icons-3.scss +239 -239
  33. package/assets/scss/common/icons/icons-4.scss +254 -254
  34. package/assets/scss/common/icons/icons-5.scss +59 -59
  35. package/assets/scss/common/icons/icons-6.scss +29 -29
  36. package/assets/scss/common/icons/icons.scss +16 -16
  37. package/assets/scss/common/icons/lib-icons.scss +32 -32
  38. package/assets/scss/common/mixins.scss +39 -39
  39. package/assets/scss/common/normalize.scss +320 -320
  40. package/assets/scss/common/theme.scss +238 -238
  41. package/assets/scss/common/utilities.scss +20 -20
  42. package/assets/scss/common/variables.scss +44 -44
  43. package/assets/scss/main.scss +13 -13
  44. package/components/atoms/DiagramIcon.vue +371 -371
  45. package/components/atoms/TheIcon.vue +2444 -2444
  46. package/components/atoms/TheIcon2.vue +1136 -1136
  47. package/components/atoms/alert/Alert.vue +89 -89
  48. package/components/atoms/alert/Notification.vue +167 -167
  49. package/components/atoms/alert/lib/Alert.spec.ts +38 -38
  50. package/components/atoms/alert/lib/Notification.spec.ts +34 -34
  51. package/components/atoms/alert/lib/models/enums.ts +12 -12
  52. package/components/atoms/alert/lib/models/interfaces.ts +27 -27
  53. package/components/atoms/alert/lib/models/types.ts +7 -7
  54. package/components/atoms/autocomplete/Autocomplete.vue +236 -236
  55. package/components/atoms/collapse/CollapseNav.vue +164 -164
  56. package/components/atoms/collapse/CollapseNavItem.vue +190 -190
  57. package/components/atoms/collapse/lib/models/interfaces.ts +10 -10
  58. package/components/atoms/combobox/Combobox.vue +147 -147
  59. package/components/atoms/datepicker/Datepicker.vue +612 -612
  60. package/components/atoms/datepicker/lib/config/allShortMonths.ts +103 -103
  61. package/components/atoms/datepicker/lib/config/datapicker.ts +43 -43
  62. package/components/atoms/datepicker/lib/models/interfaces.ts +8 -8
  63. package/components/atoms/dropdown/Portlet.vue +111 -111
  64. package/components/atoms/dropdown/dropdown/Dropdown.vue +148 -148
  65. package/components/atoms/dropdown/dropdown/lib/models/interfaces.ts +8 -8
  66. package/components/atoms/dropdown/lib/Portlet.spec.ts +26 -26
  67. package/components/atoms/dropdown/tree/Tree.vue +135 -135
  68. package/components/atoms/dropdown/tree/lib/models/interfaces.ts +10 -10
  69. package/components/atoms/input/Search.vue +16 -16
  70. package/components/atoms/lib/models/interfaces.ts +12 -12
  71. package/components/atoms/list/SelectList.vue +62 -62
  72. package/components/atoms/list/SimpleList.vue +29 -29
  73. package/components/atoms/list/dragDropList/DragDropList.vue +139 -139
  74. package/components/atoms/list/dragDropList/lib/config/events.ts +4 -4
  75. package/components/atoms/loader/BarLoader.vue +27 -27
  76. package/components/atoms/loader/Loader.vue +26 -26
  77. package/components/atoms/loader/PreLoader.vue +35 -35
  78. package/components/atoms/loader/lib/Preloader.spec.ts +24 -24
  79. package/components/atoms/modal/Modal.vue +244 -244
  80. package/components/atoms/modal/bySteps/BySteps.vue +247 -247
  81. package/components/atoms/modal/bySteps/lib/BySteps.spec.ts +66 -66
  82. package/components/atoms/modal/byStepsSecond/ByStepsSecond.vue +175 -175
  83. package/components/atoms/modal/lib/Modal.spec.ts +55 -55
  84. package/components/atoms/nav/NavBar.vue +140 -140
  85. package/components/atoms/nav/VerticalNavBar.vue +89 -89
  86. package/components/atoms/nav/lib/NavBar.spec.ts +34 -34
  87. package/components/atoms/nav/lib/models/interfaces.ts +5 -5
  88. package/components/atoms/notificationBar/NotificationBar.vue +170 -170
  89. package/components/atoms/notificationBar/lib/models/enums.ts +13 -13
  90. package/components/atoms/notificationBar/lib/models/interfaces.ts +6 -6
  91. package/components/atoms/notificationBar/lib/models/types.ts +1 -1
  92. package/components/atoms/perPage/PerPage.vue +52 -52
  93. package/components/atoms/popover/Popover.vue +61 -61
  94. package/components/atoms/popup/SimplePopup.vue +90 -90
  95. package/components/atoms/select/TheSelect.vue +175 -175
  96. package/components/atoms/select/lib/models/interfaces.ts +4 -4
  97. package/components/atoms/stack/StackBlock.vue +179 -179
  98. package/components/atoms/stack/StackContent.vue +63 -63
  99. package/components/atoms/step/VerticalStep.vue +104 -104
  100. package/components/atoms/step/lib/VerticalStep.spec.ts +68 -68
  101. package/components/atoms/step/lib/models/verticalStepItem.ts +7 -7
  102. package/components/atoms/switch/Switch.vue +107 -107
  103. package/components/atoms/table/compact/Compact.vue +526 -526
  104. package/components/atoms/table/compact/lib/models/interfaces.ts +10 -10
  105. package/components/atoms/table/dataGrid/DataGrid.vue +1576 -1576
  106. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +206 -206
  107. package/components/atoms/table/dataGrid/DataGridPage.vue +191 -191
  108. package/components/atoms/table/dataGrid/DataGridPagination.vue +89 -89
  109. package/components/atoms/table/dataGrid/lib/DataGrid.spec.ts +61 -61
  110. package/components/atoms/table/dataGrid/lib/config/itemsPerPage.ts +20 -20
  111. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +28 -28
  112. package/components/atoms/table/dataGrid/lib/models/interfaces.ts +32 -32
  113. package/components/atoms/table/dataGrid/lib/models/types.ts +5 -5
  114. package/components/atoms/table/dataGrid/lib/utils/constructDataTable.ts +32 -32
  115. package/components/atoms/table/info/Info.vue +60 -60
  116. package/components/atoms/table/info/lib/models/interfaces.ts +9 -9
  117. package/components/atoms/table/simpleEvent/SimpleEvent.vue +98 -98
  118. package/components/atoms/table/simpleEvent/lib/models/interfaces.ts +9 -9
  119. package/components/atoms/table/simpleInfo/SimpleInfo.vue +68 -68
  120. package/components/atoms/table/simpleInfo/lib/models/interfaces.ts +4 -4
  121. package/components/atoms/table/simpleTable/SimpleTable.vue +296 -296
  122. package/components/atoms/table/simpleTable/lib/models/interfaces.ts +10 -10
  123. package/components/atoms/tabs/Tabs.vue +215 -215
  124. package/components/atoms/tabs/VerticalTabs.vue +87 -87
  125. package/components/atoms/tabs/lib/models/interfaces.ts +4 -4
  126. package/components/atoms/tabs/lib/models/types.ts +1 -1
  127. package/components/atoms/tooltip/Signpost.vue +225 -225
  128. package/components/atoms/tooltip/Text.vue +37 -37
  129. package/components/atoms/tooltip/Tooltip.vue +57 -57
  130. package/components/atoms/tooltip/TooltipError.vue +113 -113
  131. package/components/atoms/tooltip/lib/models/interfaces.ts +4 -4
  132. package/components/atoms/wizard/Wizard.vue +448 -448
  133. package/components/atoms/wizard/lib/models/enums.ts +8 -8
  134. package/components/atoms/wizard/lib/models/interfaces.ts +48 -48
  135. package/components/atoms/wizard/lib/utils/utils.ts +568 -568
  136. package/components/atoms/wizard/step/Step.vue +112 -112
  137. package/components/common/BadBrowser.vue +114 -114
  138. package/components/common/accordion/Accordion.vue +176 -176
  139. package/components/common/accordion/Recursion.vue +216 -216
  140. package/components/common/accordion/lib/models/enums.ts +5 -5
  141. package/components/common/accordion/lib/models/interfaces.ts +15 -15
  142. package/components/common/accordion/lib/models/types.ts +1 -1
  143. package/components/common/accordion/lib/utils/accordion.ts +31 -31
  144. package/components/common/adapterManager/AdapterManager.vue +819 -819
  145. package/components/common/adapterManager/AddAdapterModal.vue +555 -555
  146. package/components/common/adapterManager/AddAdapterWarningModal.vue +82 -82
  147. package/components/common/adapterManager/NoActiveAdaptersModal.vue +62 -62
  148. package/components/common/adapterManager/NoConnectedActiveAdaptersModal.vue +62 -62
  149. package/components/common/adapterManager/lib/config/index.ts +19 -19
  150. package/components/common/adapterManager/ui/NoSelectedAdapter.vue +39 -39
  151. package/components/common/adapterManager/ui/SecondTitle.vue +37 -37
  152. package/components/common/adapterManager/ui/actions/ActionsBar.vue +93 -93
  153. package/components/common/adapterManager/ui/actions/AddAdapterButton.vue +28 -28
  154. package/components/common/adapterManager/ui/actions/MoveDownAdapterButton.vue +33 -33
  155. package/components/common/adapterManager/ui/actions/MoveUpAdapterButton.vue +33 -33
  156. package/components/common/adapterManager/ui/actions/RemoveAdapterButton.vue +34 -34
  157. package/components/common/adapterManager/ui/actions/VerticalSeparator.vue +10 -10
  158. package/components/common/adapterManager/ui/table/Adapters.vue +91 -91
  159. package/components/common/adapterManager/ui/table/Header.vue +89 -89
  160. package/components/common/adapterManager/ui/table/Table.vue +153 -153
  161. package/components/common/browse/Browse.vue +182 -182
  162. package/components/common/browse/blocks/Container.vue +102 -102
  163. package/components/common/browse/blocks/Title.vue +66 -66
  164. package/components/common/browse/blocks/contents/Files.vue +71 -71
  165. package/components/common/browse/blocks/info/Date.vue +21 -21
  166. package/components/common/browse/blocks/info/Size.vue +17 -17
  167. package/components/common/browse/blocks/info/Text.vue +16 -16
  168. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  169. package/components/common/browse/lib/models/interfaces.ts +5 -5
  170. package/components/common/context/Context.vue +97 -97
  171. package/components/common/context/ContextRecursion.vue +251 -251
  172. package/components/common/context/lib/Context.spec.ts +20 -20
  173. package/components/common/context/lib/ContextRecursion.spec.ts +55 -55
  174. package/components/common/context/lib/models/interfaces.ts +26 -26
  175. package/components/common/details/DetailsItem.vue +106 -106
  176. package/components/common/details/DetailsList.vue +23 -23
  177. package/components/common/details/lib/models/interfaces.ts +9 -9
  178. package/components/common/diagramMain/Diagram.vue +193 -193
  179. package/components/common/diagramMain/DiagramMain.vue +992 -992
  180. package/components/common/diagramMain/Header.vue +190 -190
  181. package/components/common/diagramMain/Highlights.vue +124 -124
  182. package/components/common/diagramMain/adapter/Adapter.vue +114 -114
  183. package/components/common/diagramMain/adapter/AdapterItem.vue +246 -246
  184. package/components/common/diagramMain/adapter/AdapterItems.vue +59 -59
  185. package/components/common/diagramMain/adapter/Block.vue +48 -48
  186. package/components/common/diagramMain/adapter/Contents.vue +110 -110
  187. package/components/common/diagramMain/adapter/Lines.vue +58 -58
  188. package/components/common/diagramMain/adapter/SecondBlock.vue +49 -49
  189. package/components/common/diagramMain/lib/config/index.ts +51 -51
  190. package/components/common/diagramMain/lib/config/initial.ts +38 -38
  191. package/components/common/diagramMain/lib/models/enums.ts +26 -26
  192. package/components/common/diagramMain/lib/models/interfaces.ts +586 -586
  193. package/components/common/diagramMain/lib/models/types.ts +14 -14
  194. package/components/common/diagramMain/lib/utils/utils.ts +218 -218
  195. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +345 -345
  196. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +41 -41
  197. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +494 -494
  198. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +826 -826
  199. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +211 -211
  200. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +206 -206
  201. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +161 -161
  202. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +176 -176
  203. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +522 -522
  204. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +339 -339
  205. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +202 -202
  206. package/components/common/diagramMain/modals/lib/config/adapterModal.ts +111 -111
  207. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +17 -17
  208. package/components/common/diagramMain/modals/lib/config/index.ts +53 -53
  209. package/components/common/diagramMain/modals/lib/config/initial.ts +334 -334
  210. package/components/common/diagramMain/modals/lib/config/networkModal.ts +402 -402
  211. package/components/common/diagramMain/modals/lib/config/portModal.ts +209 -209
  212. package/components/common/diagramMain/modals/lib/config/switchModal.ts +197 -197
  213. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +34 -34
  214. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  215. package/components/common/diagramMain/modals/lib/utils/index.ts +9 -9
  216. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +531 -531
  217. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  218. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +161 -161
  219. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +158 -158
  220. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/VmkernelAdapterReadyComplete.vue +49 -49
  221. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  222. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +141 -141
  223. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  224. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  225. package/components/common/diagramMain/modals/remove/RemoveModal.vue +226 -226
  226. package/components/common/diagramMain/modals/viewSettings/Info.vue +123 -123
  227. package/components/common/diagramMain/modals/viewSettings/ViewSettings.vue +171 -171
  228. package/components/common/diagramMain/modals/viewSettings/ViewSettingsModal.vue +93 -93
  229. package/components/common/diagramMain/network/Block.vue +62 -62
  230. package/components/common/diagramMain/network/Contents.vue +289 -289
  231. package/components/common/diagramMain/network/Lines.vue +71 -71
  232. package/components/common/diagramMain/network/Network.vue +126 -126
  233. package/components/common/diagramMain/network/NoNetwork.vue +53 -53
  234. package/components/common/diagramMain/network/SecondBlock.vue +58 -58
  235. package/components/common/diagramMain/port/Port.vue +370 -370
  236. package/components/common/diagramMain/port/Ports.vue +47 -47
  237. package/components/common/diagramMain/switch/Switch.vue +82 -82
  238. package/components/common/diagramMain/switch/SwitchSelected.vue +35 -35
  239. package/components/common/feedback/Buttons.vue +227 -227
  240. package/components/common/feedback/Feedback.vue +261 -261
  241. package/components/common/feedback/Message.vue +509 -509
  242. package/components/common/feedback/VisitPortal.vue +53 -53
  243. package/components/common/feedback/lib/config/drawingPanel.ts +31 -31
  244. package/components/common/feedback/lib/config/feedbackTabs.ts +24 -24
  245. package/components/common/feedback/lib/models/interfaces.ts +19 -19
  246. package/components/common/feedback/lib/models/types.ts +1 -1
  247. package/components/common/graph/Graph.vue +109 -109
  248. package/components/common/graph/lib/utils/renderGraph.ts +389 -389
  249. package/components/common/headline/Headline.vue +32 -32
  250. package/components/common/help/navbar/left/Left.vue +164 -164
  251. package/components/common/help/navbar/left/lib/models/interfaces.ts +6 -6
  252. package/components/common/help/navbar/left/lib/utils/constructAccordion.ts +27 -27
  253. package/components/common/help/navbar/right/Right.vue +139 -139
  254. package/components/common/help/navbar/right/lib/models/interfaces.ts +4 -4
  255. package/components/common/home/Card.vue +63 -63
  256. package/components/common/home/ResourceBlock.vue +117 -117
  257. package/components/common/home/StatusContent.vue +47 -47
  258. package/components/common/home/alertsTable/AlertsTable.vue +105 -105
  259. package/components/common/home/alertsTable/lib/config/config.ts +61 -61
  260. package/components/common/home/alertsTable/lib/models/enums.ts +11 -11
  261. package/components/common/home/alertsTable/lib/models/interfaces.ts +19 -19
  262. package/components/common/home/alertsTable/lib/models/types.ts +18 -18
  263. package/components/common/home/lib/config/configResourceMeterBlock.ts +25 -25
  264. package/components/common/home/lib/models/interfaces.ts +59 -59
  265. package/components/common/home/lib/models/types.ts +18 -18
  266. package/components/common/home/servicesTable/ServicesTable.vue +79 -79
  267. package/components/common/home/servicesTable/lib/config/config.ts +62 -62
  268. package/components/common/lib/config/states.ts +111 -111
  269. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +359 -359
  270. package/components/common/mainNavigationPanel/lib/models/interfaces.ts +6 -6
  271. package/components/common/mainNavigationPanel/lib/models/types.ts +1 -1
  272. package/components/common/modals/Confirmation.vue +97 -97
  273. package/components/common/modals/Rename.vue +165 -165
  274. package/components/common/modals/lib/config/defaultForm.ts +18 -18
  275. package/components/common/modals/lib/config/renameLabelWidth.ts +3 -3
  276. package/components/common/modals/lib/models/interfaces.ts +5 -5
  277. package/components/common/monitor/advanced/Advanced.vue +243 -243
  278. package/components/common/monitor/advanced/GraphView.vue +180 -180
  279. package/components/common/monitor/advanced/lib/models/interfaces.ts +8 -8
  280. package/components/common/monitor/advanced/lib/models/types.ts +1 -1
  281. package/components/common/monitor/advanced/table/Table.vue +90 -90
  282. package/components/common/monitor/advanced/table/lib/config/performanceDatatable.ts +116 -116
  283. package/components/common/monitor/advanced/table/lib/models/interfaces.ts +12 -12
  284. package/components/common/monitor/advanced/table/lib/models/types.ts +10 -10
  285. package/components/common/monitor/advanced/tools/Tools.vue +436 -436
  286. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModal.vue +504 -502
  287. package/components/common/monitor/advanced/tools/chartOptionsModal/Notification.vue +33 -33
  288. package/components/common/monitor/advanced/tools/chartOptionsModal/actions/Actions.vue +150 -150
  289. package/components/common/monitor/advanced/tools/chartOptionsModal/actions/lib/utils/optionsActions.ts +25 -25
  290. package/components/common/monitor/advanced/tools/chartOptionsModal/actions/saveOptionsModal/SaveOptionsModal.vue +76 -76
  291. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/Counters.vue +105 -104
  292. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/Table.vue +143 -137
  293. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/tableConfig.ts +71 -71
  294. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +716 -689
  295. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/models/interfaces.ts +28 -28
  296. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/models/types.ts +5 -5
  297. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/Timespan.vue +83 -83
  298. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/form/Form.vue +501 -501
  299. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/form/lib/config/dateForm.ts +59 -59
  300. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/Object.vue +220 -198
  301. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/lib/config/objectTable.ts +54 -54
  302. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/lib/models/interfaces.ts +4 -4
  303. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/lib/models/types.ts +1 -1
  304. package/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/interfaces.ts +19 -19
  305. package/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/types.ts +3 -3
  306. package/components/common/monitor/advanced/tools/chartOptionsModal/lib/utils/checkSubmit.ts +12 -0
  307. package/components/common/monitor/advanced/tools/chartOptionsModal/metrics/Metrics.vue +42 -42
  308. package/components/common/monitor/advanced/tools/chartOptionsModal/metrics/lib/config/optionsMetrics.ts +116 -116
  309. package/components/common/monitor/advanced/tools/lib/config/advancedToolbar.ts +125 -125
  310. package/components/common/monitor/advanced/tools/lib/models/interfaces.ts +4 -4
  311. package/components/common/monitor/advanced/tools/lib/utils/countCores.ts +7 -7
  312. package/components/common/monitor/lib/config/getValidDateByOption.ts +76 -76
  313. package/components/common/monitor/lib/models/interfaces.ts +23 -23
  314. package/components/common/monitor/overview/Overview.vue +228 -228
  315. package/components/common/monitor/overview/filters/Filters.vue +221 -221
  316. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +241 -241
  317. package/components/common/monitor/overview/filters/customIntervalModal/lib/config/dateChecker.ts +37 -37
  318. package/components/common/monitor/overview/filters/lib/config/filterOptions.ts +82 -82
  319. package/components/common/monitor/overview/filters/lib/models/interfaces.ts +8 -8
  320. package/components/common/monitor/overview/filters/lib/models/types.ts +3 -3
  321. package/components/common/pages/Tasks.vue +120 -120
  322. package/components/common/perPage/PerPage.vue +51 -51
  323. package/components/common/recursionTree/RecursionTree.vue +203 -203
  324. package/components/common/recursionTree/lib/models/interfaces.ts +19 -19
  325. package/components/common/resource/lib/models/interfaces.ts +9 -9
  326. package/components/common/resource/lib/models/types.ts +1 -1
  327. package/components/common/resource/lib/utils.ts +44 -44
  328. package/components/common/resource/progressBlock/ProgressBlock.vue +105 -105
  329. package/components/common/resource/simple/Simple.vue +58 -58
  330. package/components/common/resource/simple/lib/models/enums.ts +5 -5
  331. package/components/common/select/button/ButtonDropdown.vue +100 -100
  332. package/components/common/select/button/lib/models/interfaces.ts +6 -6
  333. package/components/common/select/input/Input.vue +90 -90
  334. package/components/common/select/input/lib/models/interfaces.ts +5 -5
  335. package/components/common/select/radio/RadioGroup.vue +125 -125
  336. package/components/common/select/radio/lib/models/interfaces.ts +8 -8
  337. package/components/common/shortcuts/Block.vue +84 -84
  338. package/components/common/shortcuts/Category.vue +40 -40
  339. package/components/common/shortcuts/Shortcuts.vue +44 -44
  340. package/components/common/shortcuts/lib/models/interfaces.ts +10 -10
  341. package/components/common/spiceConsole/Drawer.vue +241 -241
  342. package/components/common/spiceConsole/SpiceConsole.vue +83 -83
  343. package/components/common/spiceConsole/keyboard/Keyboard.vue +402 -402
  344. package/components/common/spiceConsole/keyboard/lib/config/keyboardRows.ts +891 -891
  345. package/components/common/spiceConsole/keyboard/lib/models/interfaces.ts +17 -17
  346. package/components/common/spiceConsole/lib/models/types.ts +1 -1
  347. package/components/common/split/horizontal/Horizontal.vue +306 -306
  348. package/components/common/split/horizontal/lib/models/interfaces.ts +5 -5
  349. package/components/common/split/vertical/Vertical.vue +213 -213
  350. package/components/common/split/vertical/lib/models/interfaces.ts +3 -3
  351. package/components/common/tools/Actions.vue +167 -167
  352. package/components/common/tools/lib/models/interfaces.ts +6 -6
  353. package/components/common/tools/viewSettings/ViewSettings.vue +86 -86
  354. package/components/common/tools/viewSettings/lib/models/interfaces.ts +9 -9
  355. package/components/common/vm/actions/add/Add.vue +575 -575
  356. package/components/common/vm/actions/add/FolderTreeView.vue +83 -83
  357. package/components/common/vm/actions/add/lib/config/steps.ts +130 -130
  358. package/components/common/vm/actions/add/lib/utils.ts +102 -102
  359. package/components/common/vm/actions/clone/Clone.vue +518 -518
  360. package/components/common/vm/actions/clone/CloneOld.vue +547 -547
  361. package/components/common/vm/actions/clone/lib/config/steps.ts +74 -74
  362. package/components/common/vm/actions/clone/lib/models/interfaces.ts +7 -7
  363. package/components/common/vm/actions/clone/lib/utils.ts +43 -43
  364. package/components/common/vm/actions/clone/select/options/Options.vue +65 -65
  365. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +269 -269
  366. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +267 -267
  367. package/components/common/vm/actions/common/customizeHardware/lib/config/navItems.ts +19 -19
  368. package/components/common/vm/actions/common/customizeHardware/lib/models/interfaces.ts +7 -7
  369. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +682 -682
  370. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +203 -203
  371. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/lib/models/interfaces.ts +8 -8
  372. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +130 -130
  373. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/lib/config/options.ts +20 -20
  374. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +247 -247
  375. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/lib/config/fileTypes.ts +9 -9
  376. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/lib/config/options.ts +11 -11
  377. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/lib/models/types.ts +1 -1
  378. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +55 -55
  379. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CoresPerSocket.vue +109 -109
  380. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +394 -394
  381. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuHotPlug.vue +49 -49
  382. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuModel.vue +220 -220
  383. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Hv.vue +93 -93
  384. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Iommu.vue +54 -54
  385. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/MaxCpu.vue +105 -105
  386. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Pc.vue +54 -54
  387. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Sa.vue +104 -104
  388. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/lib/config/cpuOptions.ts +19 -19
  389. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +155 -155
  390. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  391. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/Tooltip.vue +58 -58
  392. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/binaryOptions.ts +12 -12
  393. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +53 -53
  394. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces.ts +118 -118
  395. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types.ts +4 -4
  396. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +234 -234
  397. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/lib/config/options.ts +28 -28
  398. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +316 -316
  399. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryHotPlug.vue +53 -53
  400. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/lib/config/memoryOptions.ts +35 -35
  401. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/DiskFile.vue +24 -24
  402. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/Location.vue +173 -173
  403. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/MaximumSize.vue +27 -27
  404. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +449 -449
  405. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/cache/Cache.vue +80 -80
  406. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/cache/lib/config/options.ts +7 -7
  407. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/limitIops/LimitIops.vue +151 -151
  408. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/limitIops/lib/config/options.ts +28 -28
  409. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/Mode.vue +87 -87
  410. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/lib/config/options.ts +18 -18
  411. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/provisioning/Provisioning.vue +87 -87
  412. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/provisioning/lib/config/options.ts +15 -15
  413. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/Sharing.vue +85 -85
  414. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/lib/config/options.ts +12 -12
  415. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/Location.vue +141 -141
  416. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  417. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/adapterType/AdapterType.vue +86 -86
  418. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/adapterType/lib/config/options.ts +9 -9
  419. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +140 -140
  420. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/lib/config/options.ts +11 -11
  421. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +164 -164
  422. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIo.vue +44 -44
  423. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +49 -49
  424. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/lib/config/options.ts +10 -10
  425. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/lib/config/options.ts +7 -7
  426. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +27 -27
  427. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  428. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelection.vue +56 -56
  429. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +77 -77
  430. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/lib/config/options.ts +6 -6
  431. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/InputDevices.vue +21 -21
  432. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +27 -27
  433. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/Reservation.vue +235 -235
  434. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/lib/config/options.ts +33 -33
  435. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/Graphics.vue +45 -45
  436. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/TotalVideoMemory.vue +120 -120
  437. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +177 -177
  438. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/lib/config/options.ts +11 -11
  439. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/model/Model.vue +57 -57
  440. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/model/lib/config/options.ts +10 -10
  441. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +82 -82
  442. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/lib/config/options.ts +14 -14
  443. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +181 -181
  444. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptions.vue +110 -110
  445. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/Menu.vue +45 -45
  446. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/Secure.vue +45 -45
  447. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +50 -50
  448. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/lib/config/config.ts +14 -14
  449. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +83 -83
  450. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/lib/config/config.ts +11 -11
  451. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +197 -197
  452. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/lib/models/interfaces.ts +8 -8
  453. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +181 -181
  454. package/components/common/vm/actions/common/customizeHardware/vmoptions/lib/models/interfaces.ts +34 -34
  455. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/CopyPaste.vue +51 -51
  456. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/FileTransfer.vue +51 -51
  457. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/FolderSharing.vue +50 -50
  458. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/PlaybackCompression.vue +51 -51
  459. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/PowerControl.vue +49 -49
  460. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +253 -253
  461. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/imgCompression/ImgCompression.vue +84 -84
  462. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/imgCompression/lib/config/config.ts +14 -14
  463. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/jpegCompression/JpegCompression.vue +84 -84
  464. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/jpegCompression/lib/config/config.ts +12 -12
  465. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +55 -55
  466. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/lib/config/config.ts +6 -6
  467. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/mouseMode/MouseMode.vue +52 -52
  468. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/mouseMode/lib/config/config.ts +11 -11
  469. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +136 -136
  470. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/lib/models/interfaces.ts +5 -5
  471. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/lib/utils.ts +12 -12
  472. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/sharePolicy/SharePolicy.vue +52 -52
  473. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/sharePolicy/lib/config/config.ts +11 -11
  474. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/streamingMode/StreamingMode.vue +84 -84
  475. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/streamingMode/lib/config/config.ts +12 -12
  476. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/type/Type.vue +84 -84
  477. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/type/lib/config/config.ts +7 -7
  478. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +56 -56
  479. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/lib/config/config.ts +14 -14
  480. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/zlibCompression/ZlibCompression.vue +84 -84
  481. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/zlibCompression/lib/config/config.ts +12 -12
  482. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/Tools.vue +63 -63
  483. package/components/common/vm/actions/common/lib/config/capabilities.ts +339 -339
  484. package/components/common/vm/actions/common/lib/models/enums.ts +89 -89
  485. package/components/common/vm/actions/common/lib/models/interfaces.ts +139 -139
  486. package/components/common/vm/actions/common/lib/models/types.ts +65 -65
  487. package/components/common/vm/actions/common/readyToComplete/ReadyToComplete.vue +15 -15
  488. package/components/common/vm/actions/common/select/compatibility/Compatibility.vue +151 -151
  489. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +170 -170
  490. package/components/common/vm/actions/common/select/computeResource/TreeView.vue +126 -126
  491. package/components/common/vm/actions/common/select/computeResource/lib/ComputeResource.spec.ts +479 -479
  492. package/components/common/vm/actions/common/select/createType/CreateType.vue +61 -61
  493. package/components/common/vm/actions/common/select/createType/lib/config/items.ts +26 -26
  494. package/components/common/vm/actions/common/select/lib/models/interfaces.ts +32 -32
  495. package/components/common/vm/actions/common/select/lib/models/types.ts +46 -46
  496. package/components/common/vm/actions/common/select/name/Name.vue +220 -220
  497. package/components/common/vm/actions/common/select/name/NameOld.vue +215 -215
  498. package/components/common/vm/actions/common/select/os/os.vue +221 -221
  499. package/components/common/vm/actions/common/select/storage/Storage.vue +185 -185
  500. package/components/common/vm/actions/common/select/storage/StorageOld.vue +193 -193
  501. package/components/common/vm/actions/common/select/storage/lib/config/config.ts +166 -166
  502. package/components/common/vm/actions/common/select/storage/lib/models/types.ts +15 -15
  503. package/components/common/vm/actions/editSettings/EditSettings.vue +313 -313
  504. package/components/common/vm/actions/editSettings/lib/models/types.ts +23 -23
  505. package/components/common/vm/actions/editSettings/lib/utils.ts +45 -45
  506. package/components/common/vm/actions/lib/models/interfaces.ts +6 -6
  507. package/components/common/vm/actions/lib/models/types.ts +11 -11
  508. package/components/common/vm/actions/lib/utils.ts +244 -244
  509. package/components/common/vm/lib/models/interfaces.ts +9 -9
  510. package/components/common/vm/lib/utils/powerActions.ts +55 -55
  511. package/components/common/wizards/datastore/add/Add.vue +389 -389
  512. package/components/common/wizards/datastore/add/lib/config/stepItems.ts +160 -160
  513. package/components/common/wizards/datastore/add/lib/models/interfaces.ts +35 -35
  514. package/components/common/wizards/datastore/add/lib/models/types.ts +14 -14
  515. package/components/common/wizards/datastore/add/lib/utils.ts +67 -67
  516. package/components/common/wizards/datastore/add/local/Local.vue +71 -71
  517. package/components/common/wizards/datastore/add/local/createName/CreateName.vue +159 -159
  518. package/components/common/wizards/datastore/add/local/createName/lib/config/defaultForm.ts +15 -15
  519. package/components/common/wizards/datastore/add/nfs/Nfs.vue +94 -94
  520. package/components/common/wizards/datastore/add/nfs/accessibility/Accessibility.vue +97 -97
  521. package/components/common/wizards/datastore/add/nfs/accessibility/lib/config/tabsPannel.ts +24 -24
  522. package/components/common/wizards/datastore/add/nfs/accessibility/lib/models/interfaces.ts +9 -9
  523. package/components/common/wizards/datastore/add/nfs/accessibility/lib/models/types.ts +5 -5
  524. package/components/common/wizards/datastore/add/nfs/accessibility/tablesView/TablesView.vue +142 -142
  525. package/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/config/compatibleTable.ts +54 -54
  526. package/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/config/hostsTableItems.ts +75 -75
  527. package/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/config/incompatibleTable.ts +68 -68
  528. package/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/config/tableKeys.ts +15 -15
  529. package/components/common/wizards/datastore/add/nfs/configuration/Configuration.vue +377 -377
  530. package/components/common/wizards/datastore/add/nfs/configuration/lib/config/defaultForm.ts +33 -33
  531. package/components/common/wizards/datastore/add/nfs/configuration/lib/models/interfaces.ts +12 -12
  532. package/components/common/wizards/datastore/add/nfs/configuration/serversList/DeletePopover.vue +97 -97
  533. package/components/common/wizards/datastore/add/nfs/configuration/serversList/ServersList.vue +124 -124
  534. package/components/common/wizards/datastore/add/nfs/configuration/serversList/lib/config/serversListConfig.ts +41 -41
  535. package/components/common/wizards/datastore/add/nfs/configuration/serversList/lib/config/tableKeys.ts +3 -3
  536. package/components/common/wizards/datastore/add/nfs/configuration/serversList/lib/models/interfaces.ts +11 -11
  537. package/components/common/wizards/datastore/add/nfs/configuration/serversList/lib/models/types.ts +1 -1
  538. package/components/common/wizards/datastore/add/nfs/kerberosAuthentication/KerberosAuthentication.vue +54 -54
  539. package/components/common/wizards/datastore/add/nfs/kerberosAuthentication/lib/config/radioOptions.ts +24 -24
  540. package/components/common/wizards/datastore/add/nfs/version/Version.vue +42 -42
  541. package/components/common/wizards/datastore/add/nfs/version/lib/config/versionOptions.ts +20 -20
  542. package/components/common/wizards/datastore/add/readyComplete/ReadyComplete.vue +78 -78
  543. package/components/common/wizards/datastore/add/readyComplete/lib/config/propertiesDetails.ts +165 -165
  544. package/components/common/wizards/datastore/add/readyComplete/lib/models/interfaces.ts +4 -4
  545. package/components/common/wizards/datastore/add/sharedStorm/SharedStorm.vue +89 -89
  546. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/DeviceSelection.vue +451 -451
  547. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/hostTable/HostTable.vue +144 -144
  548. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/hostTable/lib/config/hostsTable.ts +87 -87
  549. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/hostTable/lib/config/tableKeys.ts +11 -11
  550. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/config/defaultForm.ts +18 -18
  551. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/config/selectOptions.ts +14 -14
  552. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/models/interfaces.ts +55 -55
  553. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/models/types.ts +14 -14
  554. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/PartitionConfiguration.vue +230 -230
  555. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/graphicTooltip/graphicTooltip.vue +64 -64
  556. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/lib/config/selectOptions.ts +46 -46
  557. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/sizeGraphic/sizeGraphic.vue +225 -225
  558. package/components/common/wizards/datastore/add/sharedStorm/version/Version.vue +39 -39
  559. package/components/common/wizards/datastore/add/sharedStorm/version/lib/config/versionOptions.ts +21 -21
  560. package/components/common/wizards/datastore/add/types/Types.vue +77 -77
  561. package/components/common/wizards/datastore/add/types/lib/config/typeOptions.ts +39 -39
  562. package/components/common/wizards/network/add/Add.vue +886 -886
  563. package/components/common/wizards/network/add/lib/config/index.ts +33 -33
  564. package/components/common/wizards/network/add/lib/config/initialData.ts +63 -63
  565. package/components/common/wizards/network/add/lib/config/portPropertiesStep.ts +31 -31
  566. package/components/common/wizards/network/add/lib/config/selectSwitch.ts +19 -19
  567. package/components/common/wizards/network/add/lib/config/sendData.ts +102 -102
  568. package/components/common/wizards/network/add/lib/config/steps.ts +485 -485
  569. package/components/common/wizards/network/add/lib/models/enums.ts +17 -17
  570. package/components/common/wizards/network/add/lib/models/interfaces.ts +201 -201
  571. package/components/common/wizards/network/add/lib/models/types.ts +2 -2
  572. package/components/common/wizards/network/add/lib/utils/index.ts +4 -4
  573. package/components/common/wizards/network/add/mappers/mappers.ts +166 -166
  574. package/components/common/wizards/network/add/modals/SelectNetwork.vue +149 -149
  575. package/components/common/wizards/network/add/modals/SelectStandardSwitch.vue +125 -125
  576. package/components/common/wizards/network/add/modals/SelectSwitch.vue +114 -114
  577. package/components/common/wizards/network/add/steps/ConnectionSettings.vue +148 -148
  578. package/components/common/wizards/network/add/steps/CreateStandardSwitch.vue +86 -86
  579. package/components/common/wizards/network/add/steps/IpFourSettings.vue +245 -245
  580. package/components/common/wizards/network/add/steps/PhysicalAdapter.vue +13 -13
  581. package/components/common/wizards/network/add/steps/PortProperties.vue +369 -369
  582. package/components/common/wizards/network/add/steps/ReadyComplete.vue +20 -20
  583. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +99 -99
  584. package/components/common/wizards/network/add/steps/SelectedTargetDevice.vue +456 -456
  585. package/components/common/wizards/network/add/validations/common.ts +26 -26
  586. package/components/common/wizards/network/add/validations/connectionSettings.ts +70 -70
  587. package/components/common/wizards/network/add/validations/createStandardSwitch.ts +58 -58
  588. package/components/common/wizards/network/add/validations/ipFourSettings.ts +182 -182
  589. package/components/common/wizards/network/add/validations/networkValidation.ts +81 -81
  590. package/components/common/wizards/network/add/validations/portProperties.ts +83 -83
  591. package/components/common/wizards/network/add/validations/targetDevice.ts +109 -109
  592. package/components/common/wizards/network/add/validations/validations.ts +43 -43
  593. package/components/common/wizards/vm/common/computeResource/TreeView.vue +61 -61
  594. package/components/common/wizards/vm/common/readyComplete/ReadyComplete.vue +15 -15
  595. package/components/common/wizards/vm/common/tooltip/Tooltip.vue +82 -82
  596. package/components/common/wizards/vm/common/validation/compatibility/Compatibility.vue +62 -62
  597. package/components/common/wizards/vm/common/validation/lib/models/enums.ts +5 -5
  598. package/components/common/wizards/vm/migrate/Migrate.vue +270 -270
  599. package/components/common/wizards/vm/migrate/contentHeading/ContentHeading.vue +106 -106
  600. package/components/common/wizards/vm/migrate/contentHeading/lib/models/interfaces.ts +7 -7
  601. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +100 -100
  602. package/components/common/wizards/vm/migrate/lib/models/enums.ts +6 -6
  603. package/components/common/wizards/vm/migrate/lib/models/interfaces.ts +24 -24
  604. package/components/common/wizards/vm/migrate/lib/models/types.ts +5 -5
  605. package/components/common/wizards/vm/migrate/lib/utils.ts +80 -80
  606. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +219 -219
  607. package/components/common/wizards/vm/migrate/select/computeResource/lib/config/tabsPannel.ts +28 -28
  608. package/components/common/wizards/vm/migrate/select/computeResource/lib/models/enums.ts +6 -6
  609. package/components/common/wizards/vm/migrate/select/computeResource/lib/models/interfaces.ts +30 -30
  610. package/components/common/wizards/vm/migrate/select/computeResource/lib/models/types.ts +12 -12
  611. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +142 -142
  612. package/components/common/wizards/vm/migrate/select/computeResource/tableView/lib/config/clusterTable.ts +113 -113
  613. package/components/common/wizards/vm/migrate/select/computeResource/tableView/lib/config/hostTable.ts +124 -124
  614. package/components/common/wizards/vm/migrate/select/computeResource/tableView/lib/config/resourcePoolTable.ts +115 -115
  615. package/components/common/wizards/vm/migrate/select/computeResource/tableView/lib/config/tableKeys.ts +65 -65
  616. package/components/common/wizards/vm/migrate/select/computeResource/tableView/lib/config/vappsTable.ts +66 -66
  617. package/components/common/wizards/vm/migrate/select/computeResource/tableView/lib/models/interfaces.ts +50 -50
  618. package/components/common/wizards/vm/migrate/select/computeResource/tableView/lib/models/types.ts +60 -60
  619. package/components/common/wizards/vm/migrate/select/network/Network.vue +51 -51
  620. package/components/common/wizards/vm/migrate/select/network/table/disk/Disk.vue +105 -105
  621. package/components/common/wizards/vm/migrate/select/network/table/disk/lib/config/advancedTable.ts +75 -75
  622. package/components/common/wizards/vm/migrate/select/network/table/disk/lib/config/basicTable.ts +67 -67
  623. package/components/common/wizards/vm/migrate/select/network/table/disk/lib/config/tableKeys.ts +13 -13
  624. package/components/common/wizards/vm/migrate/select/network/table/disk/lib/models/interfaces.ts +12 -12
  625. package/components/common/wizards/vm/migrate/select/network/table/disk/lib/models/types.ts +21 -21
  626. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +39 -39
  627. package/components/common/wizards/vm/migrate/select/priority/lib/config/typeOptions.ts +21 -21
  628. package/components/common/wizards/vm/migrate/select/priority/lib/models/types.ts +1 -1
  629. package/components/common/wizards/vm/migrate/select/storage/Storage.vue +202 -202
  630. package/components/common/wizards/vm/migrate/select/storage/configure/batch/Batch.vue +76 -76
  631. package/components/common/wizards/vm/migrate/select/storage/configure/disk/Disk.vue +86 -86
  632. package/components/common/wizards/vm/migrate/select/storage/diskFormat/DiskFormat.vue +68 -68
  633. package/components/common/wizards/vm/migrate/select/storage/diskFormat/lib/config/formatOptions.ts +26 -26
  634. package/components/common/wizards/vm/migrate/select/storage/lib/config/tabsPannel.ts +18 -18
  635. package/components/common/wizards/vm/migrate/select/storage/lib/models/enums.ts +6 -6
  636. package/components/common/wizards/vm/migrate/select/storage/lib/models/interfaces.ts +14 -14
  637. package/components/common/wizards/vm/migrate/select/storage/lib/models/types.ts +9 -9
  638. package/components/common/wizards/vm/migrate/select/storage/policy/Policy.vue +83 -83
  639. package/components/common/wizards/vm/migrate/select/storage/selectedPerDisk/SelectedPerDisk.vue +87 -87
  640. package/components/common/wizards/vm/migrate/select/storage/table/datastore/Datastore.vue +113 -113
  641. package/components/common/wizards/vm/migrate/select/storage/table/datastore/lib/config/config.ts +154 -154
  642. package/components/common/wizards/vm/migrate/select/storage/table/datastore/lib/models/types.ts +15 -15
  643. package/components/common/wizards/vm/migrate/select/storage/table/disk/Disk.vue +85 -85
  644. package/components/common/wizards/vm/migrate/select/storage/table/disk/lib/config/config.ts +123 -123
  645. package/components/common/wizards/vm/migrate/select/storage/table/disk/lib/config/tableKeys.ts +15 -15
  646. package/components/common/wizards/vm/migrate/select/storage/table/disk/lib/models/interfaces.ts +24 -24
  647. package/components/common/wizards/vm/migrate/select/storage/table/disk/lib/models/types.ts +13 -13
  648. package/components/common/wizards/vm/migrate/select/targetServer/lib/config/tabsPannel.ts +18 -18
  649. package/components/common/wizards/vm/migrate/select/targetServer/lib/models/types.ts +1 -1
  650. package/components/common/wizards/vm/migrate/select/targetServer/new/New.vue +287 -287
  651. package/components/common/wizards/vm/migrate/select/targetServer/new/lib/config/defaultForm.ts +33 -33
  652. package/components/common/wizards/vm/migrate/select/targetServer/saved/Saved.vue +27 -27
  653. package/components/common/wizards/vm/migrate/select/targetServer/targetServer.vue +41 -41
  654. package/components/common/wizards/vm/migrate/select/type/Type.vue +38 -38
  655. package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +41 -41
  656. package/components/common/wizards/vm/migrate/select/type/lib/models/interfaces.ts +5 -5
  657. package/components/content/Hint.vue +24 -24
  658. package/components/layout/theHeader/lib/models/enums.ts +9 -9
  659. package/components/layout/theHeader/lib/utils/localization.ts +32 -32
  660. package/components/lib/models/interfaces.ts +14 -14
  661. package/composables/deepCopy.ts +21 -21
  662. package/composables/useAppVersion.ts +21 -21
  663. package/composables/useDiff.ts +15 -15
  664. package/composables/useEnvLanguage.ts +20 -20
  665. package/composables/useLocal.ts +38 -38
  666. package/composables/useLocalStorage.ts +45 -45
  667. package/composables/useThrottle.ts +32 -32
  668. package/composables/useUniqueId.ts +5 -5
  669. package/eslint/index.js +15 -15
  670. package/eslint/no-import-type.js +17 -17
  671. package/eslint/no-invalid-type-prefix.js +32 -32
  672. package/layouts/auth.vue +31 -31
  673. package/lib/config/regExp.ts +13 -13
  674. package/lib/models/composables/useAppVersion/interfaces.ts +5 -5
  675. package/lib/models/composables/useMyFetch/interfaces.ts +25 -25
  676. package/lib/models/composables/useMyFetch/types.ts +1 -1
  677. package/lib/models/enums.ts +21 -21
  678. package/lib/models/interfaces.ts +26 -26
  679. package/lib/models/plugins/date/interfaces.ts +5 -5
  680. package/lib/models/plugins/date/types.ts +1 -1
  681. package/lib/models/plugins/validation/interfaces.ts +21 -21
  682. package/lib/models/plugins/validation/types.ts +1 -1
  683. package/lib/models/store/host/interfaces.ts +38 -38
  684. package/lib/models/store/interfaces.ts +41 -41
  685. package/lib/models/store/network/interfaces.ts +13 -13
  686. package/lib/models/store/storage/interfaces.ts +32 -32
  687. package/lib/models/store/tasks/enums.ts +27 -27
  688. package/lib/models/store/tasks/interfaces.ts +115 -115
  689. package/lib/models/store/tasks/types.ts +2 -2
  690. package/lib/models/store/types.ts +43 -43
  691. package/lib/models/store/vm/interfaces.ts +234 -234
  692. package/lib/models/table/interfaces.ts +38 -38
  693. package/lib/models/table/types.ts +1 -1
  694. package/lib/models/types.ts +13 -13
  695. package/lib/utils/base64.ts +34 -34
  696. package/lib/utils/contentBuild.ts +34 -34
  697. package/lib/utils/notification.ts +22 -22
  698. package/lib/utils/sendTask.ts +72 -72
  699. package/minify.js +146 -146
  700. package/modules/fixContentBuild/index.ts +92 -92
  701. package/modules/fixContentBuild/lib/utils/methods.ts +114 -114
  702. package/modules/fixSpiceConsoleBuild/index.ts +28 -28
  703. package/modules/replaceEnv/index.ts +40 -40
  704. package/nuxt.config.ts +8 -8
  705. package/package.json +41 -41
  706. package/plugins/binary.ts +122 -122
  707. package/plugins/date.ts +179 -179
  708. package/plugins/recursion.ts +252 -252
  709. package/plugins/spice-console/spice.console.ts +18 -18
  710. package/plugins/text.ts +48 -48
  711. package/plugins/validation.ts +172 -172
  712. package/public/spice-console/application/WorkerProcess.js +3350 -3350
  713. package/public/spice-console/application/WorkerProcess_back.js +3144 -3144
  714. package/public/spice-console/application/WorkerProcess_meta.js +3103 -3103
  715. package/public/spice-console/application/WorkerProcess_reverse.js +3214 -3214
  716. package/public/spice-console/application/agent.js +175 -175
  717. package/public/spice-console/application/application.js +641 -641
  718. package/public/spice-console/application/checkActivity.js +50 -50
  719. package/public/spice-console/application/clientgui.js +842 -842
  720. package/public/spice-console/application/clipboard/clipboarddataparser.js +92 -92
  721. package/public/spice-console/application/clipboard/local/localClipboard.js +110 -110
  722. package/public/spice-console/application/clipboard.js +82 -82
  723. package/public/spice-console/application/codec.js +257 -257
  724. package/public/spice-console/application/imagecache.js +81 -81
  725. package/public/spice-console/application/inputmanager.js +270 -270
  726. package/public/spice-console/application/packetfactory.js +202 -202
  727. package/public/spice-console/application/packetfilter.js +103 -103
  728. package/public/spice-console/application/packetprocess.js +75 -75
  729. package/public/spice-console/application/rasteroperation.js +118 -118
  730. package/public/spice-console/application/spiceconnection.js +197 -197
  731. package/public/spice-console/application/stream.js +67 -67
  732. package/public/spice-console/application/virtualmouse.js +109 -109
  733. package/public/spice-console/keymaps/keyevent.js +36 -36
  734. package/public/spice-console/keymaps/keymap.js +229 -229
  735. package/public/spice-console/keymaps/keymapes.js +375 -375
  736. package/public/spice-console/keymaps/keymapesObj.js +317 -317
  737. package/public/spice-console/keymaps/keymapus.js +317 -317
  738. package/public/spice-console/keymaps/scanCodeObjModifier.js +65 -65
  739. package/public/spice-console/keymaps/scanCodeObjProvider.js +60 -60
  740. package/public/spice-console/lib/AsyncConsumer.js +204 -204
  741. package/public/spice-console/lib/AsyncWorker.js +60 -60
  742. package/public/spice-console/lib/CollisionDetector.js +27 -27
  743. package/public/spice-console/lib/DataLogger.js +197 -197
  744. package/public/spice-console/lib/GenericObjectPool.js +152 -152
  745. package/public/spice-console/lib/GlobalPool.js +114 -114
  746. package/public/spice-console/lib/ImageUncompressor.js +138 -138
  747. package/public/spice-console/lib/IntegrationBenchmark.js +64 -64
  748. package/public/spice-console/lib/PacketWorkerIdentifier.js +107 -107
  749. package/public/spice-console/lib/SyncAsyncHandler.js +46 -46
  750. package/public/spice-console/lib/base64.js +298 -298
  751. package/public/spice-console/lib/biginteger.js +1640 -1640
  752. package/public/spice-console/lib/bowser.js +276 -276
  753. package/public/spice-console/lib/decoder/dixie.js +7930 -7930
  754. package/public/spice-console/lib/decoder/jmuxer.js +2815 -2815
  755. package/public/spice-console/lib/displayRouter.js +83 -83
  756. package/public/spice-console/lib/encrypt.js +191 -191
  757. package/public/spice-console/lib/flipper.js +39 -39
  758. package/public/spice-console/lib/graphic.js +1230 -1230
  759. package/public/spice-console/lib/graphicdebug.js +223 -223
  760. package/public/spice-console/lib/images/bitmap.js +194 -194
  761. package/public/spice-console/lib/images/jsquic_family.js +83 -83
  762. package/public/spice-console/lib/images/jsquic_rgba.js +342 -342
  763. package/public/spice-console/lib/images/jsquic_uncompress.js +529 -529
  764. package/public/spice-console/lib/images/lz.js +717 -717
  765. package/public/spice-console/lib/images/png.js +275 -275
  766. package/public/spice-console/lib/jgestures.min.js +43 -43
  767. package/public/spice-console/lib/jquery-2.0.3.js +8829 -8829
  768. package/public/spice-console/lib/jquery-mousewheel.js +83 -83
  769. package/public/spice-console/lib/jquery-visibility.min.js +1 -1
  770. package/public/spice-console/lib/jsbn.js +578 -578
  771. package/public/spice-console/lib/jsbn2.js +675 -675
  772. package/public/spice-console/lib/lodash.4.0.0.min.js +136 -136
  773. package/public/spice-console/lib/modernizr.js +39 -39
  774. package/public/spice-console/lib/pixastic.js +3244 -3244
  775. package/public/spice-console/lib/prettyprint.js +794 -794
  776. package/public/spice-console/lib/prng4.js +64 -64
  777. package/public/spice-console/lib/queue.js +259 -259
  778. package/public/spice-console/lib/rasterEngine.js +907 -907
  779. package/public/spice-console/lib/rng.js +87 -87
  780. package/public/spice-console/lib/runqueue.js +103 -103
  781. package/public/spice-console/lib/sha1.js +124 -124
  782. package/public/spice-console/lib/stuckkeyshandler.js +122 -122
  783. package/public/spice-console/lib/timelapsedetector.js +62 -62
  784. package/public/spice-console/lib/utils.js +327 -327
  785. package/public/spice-console/lib/virtualjoystick.js +370 -370
  786. package/public/spice-console/network/busconnection.js +195 -195
  787. package/public/spice-console/network/clusternodechooser.js +49 -49
  788. package/public/spice-console/network/connectioncontrol.js +60 -60
  789. package/public/spice-console/network/packetcontroller.js +62 -62
  790. package/public/spice-console/network/packetextractor.js +73 -73
  791. package/public/spice-console/network/packetlinkfactory.js +64 -64
  792. package/public/spice-console/network/packetreassembler.js +77 -77
  793. package/public/spice-console/network/reassemblerfactory.js +39 -39
  794. package/public/spice-console/network/sizedefiner.js +86 -86
  795. package/public/spice-console/network/socket.js +120 -120
  796. package/public/spice-console/network/socketqueue.js +95 -95
  797. package/public/spice-console/network/spicechannel.js +369 -369
  798. package/public/spice-console/network/websocketwrapper.js +75 -75
  799. package/public/spice-console/process/busprocess.js +309 -309
  800. package/public/spice-console/process/cursorprocess.js +110 -110
  801. package/public/spice-console/process/displaypreprocess.js +152 -152
  802. package/public/spice-console/process/displayprocess.js +210 -210
  803. package/public/spice-console/process/inputprocess.js +203 -203
  804. package/public/spice-console/process/mainprocess.js +78 -78
  805. package/public/spice-console/process/playbackprocess.js +233 -233
  806. package/public/spice-console/run.js +180 -180
  807. package/public/spice-console/spiceobjects/generated/protocol.js +537 -537
  808. package/public/spice-console/spiceobjects/spiceobjects.js +3474 -3474
  809. package/public/spice-console/swcanvas/swcanvas.js +82 -82
  810. package/public/spice-console/tools/generate.php +269 -269
  811. package/public/spice-console/tools/generateKeyboardLayout.php +63 -63
  812. package/public/spice-console/tools/generateSpiceObject.php +81 -81
  813. package/store/main/lib/interfaces.ts +9 -9
  814. package/store/tasks/actions.ts +133 -133
  815. package/store/tasks/getters.ts +25 -25
  816. package/store/tasks/lib/models/interfaces.ts +18 -18
  817. package/store/tasks/mappers/recentTasks.ts +43 -43
  818. package/store/tasks/mappers/tasks.ts +42 -42
  819. package/store/tasks/mutations.ts +58 -58
  820. package/store/tasks/state.ts +16 -16
  821. package/store/tasks/store.ts +12 -12
  822. package/tsconfig.json +4 -4
@@ -1,907 +1,907 @@
1
- /*
2
- Copyright (c) 2016 eyeOS
3
-
4
- This file is part of Open365.
5
-
6
- Open365 is free software: you can redistribute it and/or modify
7
- it under the terms of the GNU Affero General Public License as
8
- published by the Free Software Foundation, either version 3 of the
9
- License, or (at your option) any later version.
10
-
11
- This program is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU Affero General Public License for more details.
15
-
16
- You should have received a copy of the GNU Affero General Public License
17
- along with this program. If not, see <http://www.gnu.org/licenses/>.
18
- */
19
-
20
- wdi.RasterEngine = $.spcExtend(wdi.EventObject.prototype, {
21
- init: function (c) {
22
- this.time = Date.now()
23
- this.clientGui = c.clientGui
24
-
25
- // h264
26
- this.codecH264 = wdi.CodecH264
27
-
28
- // vp8
29
- this.codecVp8 = wdi.CodecVp8
30
-
31
- // vp9
32
- // this.videoDecoderVp9 = {}
33
-
34
- // h265
35
- this.codecH265 = wdi.CodecH265
36
- },
37
-
38
- dispose: function () {
39
- this.clientGui = null
40
- },
41
-
42
- drawCanvas: function (spiceMessage) {
43
- wdi.Debug.log('rasterEngine', this.time)
44
- return this.clientGui.drawCanvas(spiceMessage)
45
- },
46
-
47
- removeCanvas: function (spiceMessage) {
48
- return this.clientGui.removeCanvas(spiceMessage)
49
- },
50
-
51
- invalList: function (spiceMessage) {
52
- var items = spiceMessage.args.items
53
- var item = null
54
- for (var i in items) {
55
- item = items[i]
56
- wdi.ImageCache.delImage(item.id)
57
- }
58
- },
59
-
60
- handleStreamCreate: function (spiceMessage) {
61
- var stream = spiceMessage.args
62
- stream.computedBox = wdi.graphics.getBoxFromSrcArea(stream.rect)
63
- wdi.Stream.addStream(spiceMessage.args.id, stream)
64
-
65
- console.log('%chandleStreamCreate', 'color:rgb(100,255,100)')
66
- switch (stream.codec) {
67
- case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_H264:
68
- this.handleH264StreamCreate(stream.id)
69
- break
70
- case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_VP8:
71
- this.handleVp8StreamCreate(stream.id)
72
- break
73
- case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_VP9:
74
- break
75
- case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_H265:
76
- this.handleH265StreamCreate(stream.id)
77
- break
78
- }
79
-
80
- if (wdi.graphicDebug) {
81
- wdi.graphicDebug.handleStreamInfo()
82
- }
83
- },
84
-
85
- handleVp8StreamCreate: function (streamId) {
86
- this.codecVp8.create(streamId)
87
- },
88
-
89
- handleH265StreamCreate: async function (streamId) {
90
- const stream = wdi.Stream.getStream(streamId)
91
- const context = this.clientGui.getContext(stream.surface_id)
92
- const box = stream.computedBox
93
-
94
- this.codecH265.create(streamId, context, box)
95
- },
96
-
97
- handleH264StreamCreate: function (streamId) {
98
- this.codecH264.create(streamId)
99
- },
100
-
101
- handleStreamData: function (spiceMessage) {
102
- var stream = wdi.Stream.getStream(spiceMessage.args.id)
103
- switch (stream.codec) {
104
- case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_H264:
105
- this.handleH264Stream(spiceMessage)
106
- break
107
- case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_VP8:
108
- this.handleVp8Stream(spiceMessage)
109
- break
110
- case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_VP9:
111
- break
112
- case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_H265:
113
- this.handleH265Stream(spiceMessage)
114
- break
115
- default:
116
- this.handleMjpegStream(spiceMessage)
117
- break
118
- }
119
- },
120
-
121
- handleStreamClip: function (spiceMessage) {
122
- wdi.Stream.clip(spiceMessage.args.id, spiceMessage.args.clip)
123
- wdi.Stream.startTransition(spiceMessage.args.id)
124
- console.log('%chandleStreamClip', 'color:rgb(100,100,255)')
125
- },
126
-
127
- handleStreamDataSized: function (spiceMessage) {
128
- // console.log(spiceMessage, 'handleStreamDataSized');
129
- },
130
-
131
- handleStreamActiveReport: function (spiceMessage) {
132
- // console.log(spiceMessage, 'handleStreamActiveReport');
133
- },
134
-
135
- handleStreamDestroy: function (spiceMessage) {
136
- wdi.Stream.deleteStream(spiceMessage.args.surface_id)
137
-
138
- // Destroy H264
139
- this.codecH264.destroy(spiceMessage.args.surface_id)
140
-
141
- // Destroy VP8
142
- this.codecVp8.destroy()
143
-
144
- // h265
145
- this.codecH265.destroy()
146
-
147
- if (wdi.graphicDebug) {
148
- wdi.graphicDebug.handleStreamInfo()
149
- }
150
-
151
- console.log('%chandleStreamDestroy', 'color:rgb(255,100,100)')
152
- },
153
-
154
- handleMjpegStream: function (spiceMessage) {
155
- var imageData = spiceMessage.args.data //jpeg string encoded
156
- var stream = wdi.Stream.getStream(spiceMessage.args.id) //recover the stream
157
- var context = this.clientGui.getContext(stream.surface_id)
158
- var img = wdi.GlobalPool.create('Image') //auto-release pool
159
- wdi.ExecutionControl.sync = true
160
- var url
161
- img.onload = function () {
162
- URL.revokeObjectURL(url)
163
- var box = stream.computedBox
164
- // we only rotate the stream if spice tells us so through the TOP_DOWN flag mask
165
- if (!stream.flags & wdi.SpiceStreamFlags.SPICE_STREAM_FLAGS_TOP_DOWN) {
166
- var offsetX = box.x + this.width / 2
167
- var offsetY = box.y + this.height / 2
168
- context.save()
169
- context.translate(offsetX, offsetY)
170
- context.rotate(Math.PI)
171
- context.scale(-1, 1)
172
- context.drawImage(
173
- this,
174
- box.x - offsetX,
175
- box.y - offsetY,
176
- box.width,
177
- box.height
178
- )
179
- context.restore()
180
- } else {
181
- context.drawImage(this, box.x, box.y, box.width, box.height)
182
- }
183
- }
184
-
185
- img.onerror = function () {
186
- URL.revokeObjectURL(url)
187
- }
188
-
189
- url = wdi.SpiceObject.bytesToURI(imageData)
190
- img.src = url
191
- },
192
-
193
- handleH264Stream: function (spiceMessage) {
194
- var imageData = spiceMessage.args.data
195
- var stream = wdi.Stream.getStream(spiceMessage.args.id) //recover the stream
196
-
197
- // Был баг, который не запускал стрим
198
- // это условие помогло
199
- if (!this.codecH264.isReady[stream.id]) {
200
- this.codecH264.addQueue(stream.id, imageData)
201
- return
202
- }
203
-
204
- var context = this.clientGui.getContext(stream.surface_id)
205
- wdi.ExecutionControl.sync = true
206
- wdi.Stream.endTransition(spiceMessage.args.id)
207
-
208
- this.codecH264.loadedVideo[stream.id] = () => {
209
- var box = stream.computedBox
210
- // we only rotate the stream if spice tells us so through the TOP_DOWN flag mask
211
- if (!stream.flags & wdi.SpiceStreamFlags.SPICE_STREAM_FLAGS_TOP_DOWN) {
212
- var offsetX = box.x + this.codecH264.video[stream.id].width / 2
213
- var offsetY = box.y + this.codecH264.video[stream.id].height / 2
214
- context.save()
215
- context.translate(offsetX, offsetY)
216
- context.rotate(Math.PI)
217
- context.scale(-1, 1)
218
- context.drawImage(
219
- this.codecH264.video[stream.id],
220
- box.x - offsetX,
221
- box.y - offsetY,
222
- box.width,
223
- box.height
224
- )
225
- context.restore()
226
- } else {
227
- if (
228
- !this.codecH264.video[stream.id] ||
229
- !this.codecH264.loadedVideo[stream.id]
230
- )
231
- return
232
- if (stream.transiting) {
233
- requestAnimationFrame(this.codecH264.loadedVideo[stream.id])
234
- return
235
- }
236
-
237
- context.drawImage(
238
- this.codecH264.video[stream.id],
239
- box.x,
240
- box.y,
241
- box.width,
242
- box.height
243
- )
244
- requestAnimationFrame(this.codecH264.loadedVideo[stream.id])
245
- }
246
- }
247
-
248
- this.codecH264.feed(stream.id, imageData)
249
- },
250
-
251
- handleH265Stream: function (spiceMessage) {
252
- const imageData = spiceMessage.args.data
253
- const stream = wdi.Stream.getStream(spiceMessage.args.id)
254
- const box = stream.computedBox
255
-
256
- // Так как метод handleH265StreamCreate ан синхронный и ждет пока сделается проверка поддерживает ли браузер VideoDecoder,
257
- // некоторые кадры могут быть упущены, их нужно хранить т.к. в них есть ключевые кадры
258
- if (!this.codecH265.isReady[stream.id]) {
259
- this.codecH265.addQueue(stream.id, imageData)
260
- return
261
- }
262
-
263
- if (!this.codecH265.configed[stream.id]) {
264
- this.codecH265.setConfig(stream.id, box)
265
- }
266
-
267
- this.codecH265.decode(stream.id, imageData)
268
- },
269
-
270
- handleVp8Stream: function (spiceMessage) {
271
- var imageData = spiceMessage.args.data
272
- var stream = wdi.Stream.getStream(spiceMessage.args.id)
273
- var context = this.clientGui.getContext(stream.surface_id)
274
- var box = stream.computedBox
275
-
276
- this.codecVp8.feed(stream.id, imageData, context, box)
277
- },
278
-
279
- drawRop3: function (spiceMessage) {
280
- var box = wdi.graphics.getBoxFromSrcArea(spiceMessage.args.base.box)
281
- var context = this.clientGui.getContext(spiceMessage.args.base.surface_id)
282
- var destImg = context.getImageData(box.x, box.y, box.width, box.height)
283
- var clientGui = this.clientGui
284
-
285
- var brush = spiceMessage.args.brush
286
- var rop = spiceMessage.args.rop_descriptor
287
-
288
- var srcArea = wdi.graphics.getBoxFromSrcArea(spiceMessage.args.src_area)
289
- wdi.graphics.getImageFromSpice(
290
- spiceMessage.args.src_image.imageDescriptor,
291
- spiceMessage.args.src_image.data,
292
- this.clientGui,
293
- function (sourceCanvas) {
294
- if (sourceCanvas) {
295
- //Get source image data (image coming from the packet)
296
- var sourceContext = sourceCanvas.getContext('2d')
297
- var srcImg = sourceContext.getImageData(
298
- srcArea.x,
299
- srcArea.y,
300
- srcArea.width,
301
- srcArea.height
302
- )
303
- var srcImgData = srcImg.data //this
304
-
305
- //Get pattern image data
306
- //brush
307
- var tmpcanvas = wdi.graphics.getNewTmpCanvas(box.width, box.height)
308
- var tmpcontext = tmpcanvas.getContext('2d')
309
- var brushBox = {
310
- width: box.width,
311
- height: box.height,
312
- x: 0,
313
- y: 0,
314
- }
315
- wdi.graphics.setBrush(
316
- clientGui,
317
- tmpcontext,
318
- brush,
319
- brushBox,
320
- wdi.SpiceRopd.SPICE_ROPD_OP_PUT
321
- ) //Without alpha?
322
- var pattern = tmpcontext.getImageData(0, 0, box.width, box.height)
323
- var patImgData = pattern.data //this
324
-
325
- //Get dest image data
326
- var destImgData = destImg.data
327
-
328
- //Get result image data
329
- tmpcanvas = wdi.graphics.getNewTmpCanvas(box.width, box.height)
330
- tmpcontext = tmpcanvas.getContext('2d')
331
- var result = tmpcontext.createImageData(box.width, box.height)
332
- var resultData = result.data
333
-
334
- if (
335
- srcImg.width != pattern.width ||
336
- srcImg.width != destImg.width ||
337
- srcImg.height != pattern.height ||
338
- srcImg.height != destImg.height
339
- ) {
340
- //TODO: resize
341
- }
342
-
343
- //Do the Ternary Raster Operation
344
- var length = destImgData.length //Could be anyone
345
- var func = wdi.Rop3[rop]
346
- for (var i = 0; i < length; i += 4) {
347
- resultData[i] =
348
- func(patImgData[i], srcImgData[i], destImgData[i]) & 255
349
- resultData[i + 1] =
350
- func(patImgData[i + 1], srcImgData[i + 1], destImgData[i + 1]) &
351
- 255
352
- resultData[i + 2] =
353
- func(patImgData[i + 2], srcImgData[i + 2], destImgData[i + 2]) &
354
- 255
355
- resultData[i + 3] = 255
356
- }
357
-
358
- tmpcontext.putImageData(result, 0, 0)
359
-
360
- this.drawClip(tmpcanvas, box, context)
361
- } else {
362
- wdi.Debug.log('Unable to get image!')
363
- }
364
- },
365
- this
366
- )
367
- },
368
-
369
- drawInvers: function (spiceMessage) {
370
- var drawBase = spiceMessage.args.base
371
- var box = wdi.graphics.getBoxFromSrcArea(drawBase.box)
372
-
373
- var surface_id = drawBase.surface_id
374
-
375
- var context = this.clientGui.getContext(surface_id)
376
-
377
- var destImg = wdi.graphics.getRect(box, context.canvas)
378
- var imageData = wdi.RasterOperation.process(
379
- wdi.SpiceRopd.SPICE_ROPD_OP_INVERS,
380
- null,
381
- destImg
382
- ) //this operation modifies destination
383
-
384
- context.drawImage(imageData, box.x, box.y, box.width, box.height)
385
- },
386
-
387
- drawStroke: function (spiceMessage) {
388
- var stroke = spiceMessage.args,
389
- context = this.clientGui.getContext(spiceMessage.args.base.surface_id),
390
- color = stroke.brush.color.html_color,
391
- lineWidth = 1,
392
- pointsLength,
393
- firstPoint,
394
- i,
395
- j,
396
- length = stroke.path.num_segments,
397
- seg
398
-
399
- if (stroke.attr.flags & wdi.SpiceLineFlags.SPICE_LINE_FLAGS_STYLED) {
400
- wdi.Debug.log('SPICE_LINE_FLAGS_STYLED')
401
- }
402
-
403
- for (var i = 0; i < length; i++) {
404
- seg = stroke.path.segments[i]
405
-
406
- if (seg.flags & wdi.SpicePathFlags.SPICE_PATH_BEGIN) {
407
- context.beginPath()
408
- context.moveTo(seg.points[0].x, seg.points[0].y)
409
- context.strokeStyle = color
410
- context.lineWidth = lineWidth
411
- }
412
- if (seg.flags & wdi.SpicePathFlags.SPICE_PATH_BEZIER) {
413
- pointsLength = seg.points.length
414
- if (pointsLength % 3 == 0) {
415
- for (j = 0; j < pointsLength; j += 3) {
416
- context.bezierCurveTo(
417
- seg.points[j].x,
418
- seg.points[j].y,
419
- seg.points[j + 1].x,
420
- seg.points[j + 1].y,
421
- seg.points[j + 2].x,
422
- seg.points[j + 2].y
423
- )
424
- }
425
- }
426
- } else {
427
- pointsLength = seg.points.length
428
-
429
- for (j = 0; j < pointsLength; j++) {
430
- if (j == 0) firstPoint = seg.points[j]
431
- context.lineTo(
432
- seg.points[j].x + lineWidth / 2,
433
- seg.points[j].y + lineWidth / 2
434
- )
435
- }
436
- }
437
- if (seg.flags & wdi.SpicePathFlags.SPICE_PATH_END) {
438
- if (seg.flags & wdi.SpicePathFlags.SPICE_PATH_CLOSE) {
439
- context.lineTo(
440
- firstPoint.x + lineWidth / 2,
441
- firstPoint.y + lineWidth / 2
442
- )
443
- }
444
- context.stroke()
445
- context.closePath()
446
- }
447
- }
448
- },
449
-
450
- drawImage: function (spiceMessage) {
451
- var args = spiceMessage.args
452
- var drawBase = args.base
453
- var surface_id = drawBase.surface_id
454
- var rop = args.rop_descriptor
455
-
456
- var scale = args.scale_mode
457
-
458
- //calculate src_area box
459
- var box_origin = wdi.graphics.getBoxFromSrcArea(args.src_area)
460
-
461
- var box_dest = wdi.graphics.getBoxFromSrcArea(drawBase.box)
462
-
463
- if (window.vdiLoadTest && window.firstImage === undefined) {
464
- window.firstImage = true
465
- }
466
-
467
- //get the image in imagedata format
468
- wdi.graphics.getImageFromSpice(
469
- args.image.imageDescriptor,
470
- args.image.data,
471
- this.clientGui,
472
- function (srcImg) {
473
- //we have image?
474
- if (srcImg) {
475
- if (window.firstImage) {
476
- var data
477
- if (srcImg.getContext) {
478
- data = srcImg
479
- .getContext('2d')
480
- .getImageData(0, 0, srcImg.width, srcImg.height)
481
- .data.buffer.slice(0)
482
- } else {
483
- data = srcImg.data.buffer.slice(0)
484
- }
485
- window.firstImageData = data
486
- window.firstImage = false
487
- }
488
-
489
- var rectangle = false
490
-
491
- if (
492
- box_origin.width !== box_dest.width &&
493
- box_origin.height !== box_dest.height
494
- ) {
495
- rectangle = true
496
- srcImg = wdi.graphics.getRect(box_origin, srcImg)
497
- srcImg = wdi.graphics.getImageFromData(srcImg)
498
- var newSrcImg = wdi.graphics.getNewTmpCanvas(
499
- box_dest.width,
500
- box_dest.height
501
- )
502
- var tmpcontext = newSrcImg.getContext('2d')
503
- tmpcontext.drawImage(
504
- srcImg,
505
- 0,
506
- 0,
507
- box_origin.width,
508
- box_origin.height,
509
- 0,
510
- 0,
511
- box_dest.width,
512
- box_dest.height
513
- )
514
- srcImg = newSrcImg
515
- }
516
-
517
- //depending on the rop, we can avoid to get destImg
518
- if (rop !== wdi.SpiceRopd.SPICE_ROPD_OP_PUT) {
519
- //rop
520
- if (!rectangle) {
521
- srcImg = wdi.graphics.getRect(box_origin, srcImg)
522
- }
523
- var destImg = wdi.graphics.getRect(
524
- box_dest,
525
- this.clientGui.getCanvas(surface_id)
526
- )
527
- srcImg = wdi.RasterOperation.process(rop, srcImg, destImg)
528
- }
529
-
530
- var context = this.clientGui.getContext(surface_id)
531
-
532
- if (srcImg instanceof ImageData) {
533
- if (rectangle) {
534
- //a subrectangle has been created, use it
535
- context.putImageData(
536
- srcImg,
537
- box_dest.x,
538
- box_dest.y,
539
- 0,
540
- 0,
541
- box_dest.width,
542
- box_dest.height
543
- )
544
- } else {
545
- context.putImageData(
546
- srcImg,
547
- box_dest.x,
548
- box_dest.y,
549
- box_origin.x,
550
- box_origin.y,
551
- box_origin.width,
552
- box_origin.height
553
- )
554
- }
555
- } else {
556
- if (rectangle) {
557
- context.drawImage(
558
- srcImg,
559
- box_dest.x,
560
- box_dest.y,
561
- box_dest.width,
562
- box_dest.height
563
- )
564
- } else {
565
- context.drawImage(
566
- srcImg,
567
- box_origin.x,
568
- box_origin.y,
569
- box_origin.width,
570
- box_origin.height,
571
- box_dest.x,
572
- box_dest.y,
573
- box_dest.width,
574
- box_dest.height
575
- )
576
- }
577
- }
578
- } else {
579
- //failed to get image, cache error?
580
- wdi.Debug.log('Unable to get image!')
581
- }
582
- },
583
- this,
584
- { opaque: true, brush: args.brush, raw: false }
585
- )
586
- },
587
-
588
- drawClip: function (srcImg, box, context) {
589
- context.drawImage(srcImg, box.x, box.y, box.width, box.height)
590
- },
591
-
592
- drawFill: function (spiceMessage) {
593
- var args = spiceMessage.args
594
- var context = this.clientGui.getContext(args.base.surface_id)
595
- var box = wdi.graphics.getBoxFromSrcArea(args.base.box)
596
- var brush = args.brush
597
- var ropd = args.rop_descriptor
598
-
599
- wdi.graphics.setBrush(this.clientGui, context, brush, box, ropd)
600
- },
601
-
602
- drawCopyBits: function (spiceMessage) {
603
- var drawBase = spiceMessage.args.base
604
- var surface_id = drawBase.surface_id
605
- var src_position = spiceMessage.args.src_position
606
- var context = this.clientGui.getContext(surface_id)
607
- var box = drawBase.box
608
-
609
- var width = box.right - box.left
610
- var height = box.bottom - box.top
611
-
612
- context.drawImage(
613
- context.canvas,
614
- src_position.x,
615
- src_position.y,
616
- width,
617
- height,
618
- drawBase.box.left,
619
- drawBase.box.top,
620
- width,
621
- height
622
- )
623
- },
624
-
625
- drawBlend: function (spiceMessage) {
626
- //TODO: alpha_flags
627
- //TODO: resize
628
- var descriptor = spiceMessage.args.image.imageDescriptor
629
- var drawBase = spiceMessage.args.base
630
- var imgData = spiceMessage.args.image.data
631
- var surface_id = spiceMessage.args.base.surface_id
632
- var rop_desc = spiceMessage.args.rop_descriptor
633
- var flags = spiceMessage.args.flags
634
-
635
- wdi.graphics.getImageFromSpice(
636
- descriptor,
637
- imgData,
638
- this.clientGui,
639
- function (srcImg) {
640
- if (!srcImg) {
641
- wdi.Debug.log('There is no image on Blend')
642
- return
643
- }
644
-
645
- //get box from src area
646
- var box = wdi.graphics.getBoxFromSrcArea(spiceMessage.args.src_area)
647
-
648
- //adapt to src_area
649
- srcImg = wdi.graphics.getRect(box, srcImg)
650
-
651
- //destination box
652
- var dest_box = wdi.graphics.getBoxFromSrcArea(drawBase.box)
653
- var destImg = wdi.graphics.getRect(
654
- dest_box,
655
- this.clientGui.getCanvas(surface_id)
656
- )
657
-
658
- var result = wdi.RasterOperation.process(rop_desc, srcImg, destImg)
659
-
660
- this.clientGui
661
- .getCanvas(surface_id)
662
- .getContext('2d')
663
- .drawImage(
664
- result,
665
- dest_box.x,
666
- dest_box.y,
667
- dest_box.width,
668
- dest_box.height
669
- )
670
- },
671
- this
672
- )
673
- },
674
-
675
- drawAlphaBlend: function (spiceMessage) {
676
- //TODO: alpha_flags
677
- //TODO: resize
678
-
679
- var descriptor = spiceMessage.args.image.imageDescriptor
680
- var drawBase = spiceMessage.args.base
681
- var imgData = spiceMessage.args.image.data
682
- var surface_id = spiceMessage.args.base.surface_id
683
- var flags = spiceMessage.args.alpha_flags
684
- var alpha = spiceMessage.args.alpha
685
-
686
- wdi.graphics.getImageFromSpice(
687
- descriptor,
688
- imgData,
689
- this.clientGui,
690
- function (srcImg) {
691
- if (!srcImg) {
692
- wdi.Debug.log('There is no image on drawAlphaBlend')
693
- }
694
-
695
- var box = wdi.graphics.getBoxFromSrcArea(spiceMessage.args.src_area)
696
-
697
- //adapt to src_area
698
- srcImg = wdi.graphics.getRect(box, srcImg)
699
-
700
- //destination box
701
- var box_dest = wdi.graphics.getBoxFromSrcArea(drawBase.box)
702
- var destImg = wdi.graphics.getRect(
703
- box_dest,
704
- this.clientGui.getCanvas(surface_id)
705
- )
706
-
707
- if (box.width !== box_dest.width && box.height !== box_dest.height) {
708
- var tmpcanvas = wdi.graphics.getNewTmpCanvas(
709
- box_dest.width,
710
- box_dest.height
711
- )
712
- var tmpcontext = tmpcanvas.getContext('2d')
713
- tmpcontext.drawImage(
714
- srcImg,
715
- 0,
716
- 0,
717
- box.width,
718
- box.height,
719
- 0,
720
- 0,
721
- box_dest.width,
722
- box_dest.height
723
- )
724
- srcImg = tmpcanvas
725
- }
726
-
727
- var src = wdi.graphics.getDataFromImage(srcImg).data
728
- var dst = wdi.graphics.getDataFromImage(destImg).data
729
-
730
- var length = src.length - 1
731
-
732
- //create a new imagedata to store result
733
- var imageResult = wdi.graphics.getNewTmpCanvas(
734
- box_dest.width,
735
- box_dest.height
736
- )
737
- var context = imageResult.getContext('2d')
738
-
739
- var resultImageData = context.createImageData(
740
- box_dest.width,
741
- box_dest.height
742
- )
743
- var result = resultImageData.data
744
-
745
- var rS, rD
746
- var gS, gD
747
- var bS, bD
748
- var aS
749
-
750
- for (var px = 0; px < length; px += 4) {
751
- rS = src[px]
752
- gS = src[px + 1]
753
- bS = src[px + 2]
754
-
755
- if (flags || alpha === 255) {
756
- aS = src[px + 3]
757
- } else {
758
- aS = alpha
759
- }
760
-
761
- rD = dst[px]
762
- gD = dst[px + 1]
763
- bD = dst[px + 2]
764
-
765
- if (aS > 30 && alpha === 255) {
766
- //formula from reactos, this is premultiplied alpha values
767
- result[px] = ((rD * (255 - aS)) / 255 + rS) & 0xff
768
- result[px + 1] = ((gD * (255 - aS)) / 255 + gS) & 0xff
769
- result[px + 2] = ((bD * (255 - aS)) / 255 + bS) & 0xff
770
- } else {
771
- //homemade blend function, this is the typical blend function simplified
772
- result[px] = ((rS * aS + rD * (255 - aS)) / 255) & 0xff
773
- result[px + 1] = ((gS * aS + gD * (255 - aS)) / 255) & 0xff
774
- result[px + 2] = ((bS * aS + bD * (255 - aS)) / 255) & 0xff
775
- }
776
-
777
- result[px + 3] = 255
778
- }
779
- imageResult.getContext('2d').putImageData(resultImageData, 0, 0)
780
-
781
- this.drawClip(
782
- imageResult,
783
- box_dest,
784
- this.clientGui.getContext(surface_id)
785
- )
786
- },
787
- this
788
- )
789
- },
790
-
791
- drawWhiteness: function (spiceMessage) {
792
- //TODO: mask
793
- var base = spiceMessage.args.base
794
- var context = this.clientGui.getContext(base.surface_id)
795
- var box = wdi.graphics.getBoxFromSrcArea(base.box)
796
- context.fillStyle = 'white'
797
- context.fillRect(box.x, box.y, box.width, box.height)
798
- },
799
-
800
- drawBlackness: function (spiceMessage) {
801
- //TODO: mask
802
- var base = spiceMessage.args.base
803
- var context = this.clientGui.getContext(base.surface_id)
804
- var box = wdi.graphics.getBoxFromSrcArea(base.box)
805
- context.fillStyle = 'black'
806
- context.fillRect(box.x, box.y, box.width, box.height)
807
- },
808
-
809
- drawTransparent: function (spiceMessage) {
810
- var drawBase = spiceMessage.args.base
811
- var surface_id = drawBase.surface_id
812
-
813
- //calculate src_area box
814
- var box = wdi.graphics.getBoxFromSrcArea(spiceMessage.args.src_area)
815
- var dest_box = wdi.graphics.getBoxFromSrcArea(drawBase.box)
816
-
817
- //get destination iamge, in imagedata format because is what we need
818
- var destImg = this.clientGui
819
- .getContext(surface_id)
820
- .getImageData(dest_box.x, dest_box.y, dest_box.width, dest_box.height)
821
-
822
- wdi.graphics.getImageFromSpice(
823
- spiceMessage.args.image.imageDescriptor,
824
- spiceMessage.args.image.data,
825
- this.clientGui,
826
- function (srcImg) {
827
- if (srcImg) {
828
- //adapt to src_area
829
- srcImg = wdi.graphics.getRect(box, srcImg)
830
-
831
- var source = wdi.graphics.getDataFromImage(srcImg).data
832
- var dest = destImg.data
833
-
834
- var length = source.length - 1
835
- var resultImageData = this.clientGui
836
- .getContext(surface_id)
837
- .createImageData(dest_box.width, dest_box.height)
838
-
839
- var color = spiceMessage.args.transparent_true_color
840
- while (length > 0) {
841
- resultImageData.data[length] = 255 //alpha
842
- if (
843
- source[length - 1] === color.b &&
844
- source[length - 2] === color.g &&
845
- source[length - 3] === color.r
846
- ) {
847
- resultImageData.data[length - 1] = dest[length - 1] //b
848
- resultImageData.data[length - 2] = dest[length - 2] //g
849
- resultImageData.data[length - 3] = dest[length - 3] //r
850
- } else {
851
- resultImageData.data[length - 1] = source[length - 1] //b
852
- resultImageData.data[length - 2] = source[length - 2] //g
853
- resultImageData.data[length - 3] = source[length - 3] //r
854
- }
855
-
856
- length -= 4
857
- }
858
- var resultImage = wdi.graphics.getImageFromData(resultImageData)
859
- this.drawClip(
860
- resultImage,
861
- dest_box,
862
- this.clientGui.getContext(surface_id)
863
- )
864
- } else {
865
- //failed to get image, cache error?
866
- wdi.Debug.log('Unable to get image!')
867
- }
868
- },
869
- this
870
- )
871
- },
872
-
873
- drawText: function (spiceMessage) {
874
- var context = this.clientGui.getContext(spiceMessage.args.base.surface_id)
875
- var bbox = spiceMessage.args.base.box
876
- var clip = spiceMessage.args.base.clip
877
- var text = spiceMessage.args
878
- var string = text.glyph_string
879
- var bpp = string.flags === 1 ? 1 : string.flags * 2
880
-
881
- if (text.back_mode !== 0) {
882
- wdi.graphics.drawBackText(this.clientGui, context, text)
883
- }
884
-
885
- wdi.graphics.drawString(
886
- context,
887
- string,
888
- bpp,
889
- text.fore_brush,
890
- clip.type,
891
- this
892
- )
893
- },
894
-
895
- /**
896
- * Clears all color palettes
897
- * @param spiceMessage
898
- * @param app
899
- */
900
- invalPalettes: function (spiceMessage) {
901
- wdi.ImageCache.clearPalettes()
902
- },
903
-
904
- handleReset: function (spiceMessage) {
905
- // console.log(spiceMessage, 222);
906
- },
907
- })
1
+ /*
2
+ Copyright (c) 2016 eyeOS
3
+
4
+ This file is part of Open365.
5
+
6
+ Open365 is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Affero General Public License as
8
+ published by the Free Software Foundation, either version 3 of the
9
+ License, or (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Affero General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Affero General Public License
17
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
18
+ */
19
+
20
+ wdi.RasterEngine = $.spcExtend(wdi.EventObject.prototype, {
21
+ init: function (c) {
22
+ this.time = Date.now()
23
+ this.clientGui = c.clientGui
24
+
25
+ // h264
26
+ this.codecH264 = wdi.CodecH264
27
+
28
+ // vp8
29
+ this.codecVp8 = wdi.CodecVp8
30
+
31
+ // vp9
32
+ // this.videoDecoderVp9 = {}
33
+
34
+ // h265
35
+ this.codecH265 = wdi.CodecH265
36
+ },
37
+
38
+ dispose: function () {
39
+ this.clientGui = null
40
+ },
41
+
42
+ drawCanvas: function (spiceMessage) {
43
+ wdi.Debug.log('rasterEngine', this.time)
44
+ return this.clientGui.drawCanvas(spiceMessage)
45
+ },
46
+
47
+ removeCanvas: function (spiceMessage) {
48
+ return this.clientGui.removeCanvas(spiceMessage)
49
+ },
50
+
51
+ invalList: function (spiceMessage) {
52
+ var items = spiceMessage.args.items
53
+ var item = null
54
+ for (var i in items) {
55
+ item = items[i]
56
+ wdi.ImageCache.delImage(item.id)
57
+ }
58
+ },
59
+
60
+ handleStreamCreate: function (spiceMessage) {
61
+ var stream = spiceMessage.args
62
+ stream.computedBox = wdi.graphics.getBoxFromSrcArea(stream.rect)
63
+ wdi.Stream.addStream(spiceMessage.args.id, stream)
64
+
65
+ console.log('%chandleStreamCreate', 'color:rgb(100,255,100)')
66
+ switch (stream.codec) {
67
+ case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_H264:
68
+ this.handleH264StreamCreate(stream.id)
69
+ break
70
+ case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_VP8:
71
+ this.handleVp8StreamCreate(stream.id)
72
+ break
73
+ case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_VP9:
74
+ break
75
+ case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_H265:
76
+ this.handleH265StreamCreate(stream.id)
77
+ break
78
+ }
79
+
80
+ if (wdi.graphicDebug) {
81
+ wdi.graphicDebug.handleStreamInfo()
82
+ }
83
+ },
84
+
85
+ handleVp8StreamCreate: function (streamId) {
86
+ this.codecVp8.create(streamId)
87
+ },
88
+
89
+ handleH265StreamCreate: async function (streamId) {
90
+ const stream = wdi.Stream.getStream(streamId)
91
+ const context = this.clientGui.getContext(stream.surface_id)
92
+ const box = stream.computedBox
93
+
94
+ this.codecH265.create(streamId, context, box)
95
+ },
96
+
97
+ handleH264StreamCreate: function (streamId) {
98
+ this.codecH264.create(streamId)
99
+ },
100
+
101
+ handleStreamData: function (spiceMessage) {
102
+ var stream = wdi.Stream.getStream(spiceMessage.args.id)
103
+ switch (stream.codec) {
104
+ case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_H264:
105
+ this.handleH264Stream(spiceMessage)
106
+ break
107
+ case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_VP8:
108
+ this.handleVp8Stream(spiceMessage)
109
+ break
110
+ case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_VP9:
111
+ break
112
+ case wdi.SpiceVideoCodecType.SPICE_VIDEO_CODEC_TYPE_H265:
113
+ this.handleH265Stream(spiceMessage)
114
+ break
115
+ default:
116
+ this.handleMjpegStream(spiceMessage)
117
+ break
118
+ }
119
+ },
120
+
121
+ handleStreamClip: function (spiceMessage) {
122
+ wdi.Stream.clip(spiceMessage.args.id, spiceMessage.args.clip)
123
+ wdi.Stream.startTransition(spiceMessage.args.id)
124
+ console.log('%chandleStreamClip', 'color:rgb(100,100,255)')
125
+ },
126
+
127
+ handleStreamDataSized: function (spiceMessage) {
128
+ // console.log(spiceMessage, 'handleStreamDataSized');
129
+ },
130
+
131
+ handleStreamActiveReport: function (spiceMessage) {
132
+ // console.log(spiceMessage, 'handleStreamActiveReport');
133
+ },
134
+
135
+ handleStreamDestroy: function (spiceMessage) {
136
+ wdi.Stream.deleteStream(spiceMessage.args.surface_id)
137
+
138
+ // Destroy H264
139
+ this.codecH264.destroy(spiceMessage.args.surface_id)
140
+
141
+ // Destroy VP8
142
+ this.codecVp8.destroy()
143
+
144
+ // h265
145
+ this.codecH265.destroy()
146
+
147
+ if (wdi.graphicDebug) {
148
+ wdi.graphicDebug.handleStreamInfo()
149
+ }
150
+
151
+ console.log('%chandleStreamDestroy', 'color:rgb(255,100,100)')
152
+ },
153
+
154
+ handleMjpegStream: function (spiceMessage) {
155
+ var imageData = spiceMessage.args.data //jpeg string encoded
156
+ var stream = wdi.Stream.getStream(spiceMessage.args.id) //recover the stream
157
+ var context = this.clientGui.getContext(stream.surface_id)
158
+ var img = wdi.GlobalPool.create('Image') //auto-release pool
159
+ wdi.ExecutionControl.sync = true
160
+ var url
161
+ img.onload = function () {
162
+ URL.revokeObjectURL(url)
163
+ var box = stream.computedBox
164
+ // we only rotate the stream if spice tells us so through the TOP_DOWN flag mask
165
+ if (!stream.flags & wdi.SpiceStreamFlags.SPICE_STREAM_FLAGS_TOP_DOWN) {
166
+ var offsetX = box.x + this.width / 2
167
+ var offsetY = box.y + this.height / 2
168
+ context.save()
169
+ context.translate(offsetX, offsetY)
170
+ context.rotate(Math.PI)
171
+ context.scale(-1, 1)
172
+ context.drawImage(
173
+ this,
174
+ box.x - offsetX,
175
+ box.y - offsetY,
176
+ box.width,
177
+ box.height
178
+ )
179
+ context.restore()
180
+ } else {
181
+ context.drawImage(this, box.x, box.y, box.width, box.height)
182
+ }
183
+ }
184
+
185
+ img.onerror = function () {
186
+ URL.revokeObjectURL(url)
187
+ }
188
+
189
+ url = wdi.SpiceObject.bytesToURI(imageData)
190
+ img.src = url
191
+ },
192
+
193
+ handleH264Stream: function (spiceMessage) {
194
+ var imageData = spiceMessage.args.data
195
+ var stream = wdi.Stream.getStream(spiceMessage.args.id) //recover the stream
196
+
197
+ // Был баг, который не запускал стрим
198
+ // это условие помогло
199
+ if (!this.codecH264.isReady[stream.id]) {
200
+ this.codecH264.addQueue(stream.id, imageData)
201
+ return
202
+ }
203
+
204
+ var context = this.clientGui.getContext(stream.surface_id)
205
+ wdi.ExecutionControl.sync = true
206
+ wdi.Stream.endTransition(spiceMessage.args.id)
207
+
208
+ this.codecH264.loadedVideo[stream.id] = () => {
209
+ var box = stream.computedBox
210
+ // we only rotate the stream if spice tells us so through the TOP_DOWN flag mask
211
+ if (!stream.flags & wdi.SpiceStreamFlags.SPICE_STREAM_FLAGS_TOP_DOWN) {
212
+ var offsetX = box.x + this.codecH264.video[stream.id].width / 2
213
+ var offsetY = box.y + this.codecH264.video[stream.id].height / 2
214
+ context.save()
215
+ context.translate(offsetX, offsetY)
216
+ context.rotate(Math.PI)
217
+ context.scale(-1, 1)
218
+ context.drawImage(
219
+ this.codecH264.video[stream.id],
220
+ box.x - offsetX,
221
+ box.y - offsetY,
222
+ box.width,
223
+ box.height
224
+ )
225
+ context.restore()
226
+ } else {
227
+ if (
228
+ !this.codecH264.video[stream.id] ||
229
+ !this.codecH264.loadedVideo[stream.id]
230
+ )
231
+ return
232
+ if (stream.transiting) {
233
+ requestAnimationFrame(this.codecH264.loadedVideo[stream.id])
234
+ return
235
+ }
236
+
237
+ context.drawImage(
238
+ this.codecH264.video[stream.id],
239
+ box.x,
240
+ box.y,
241
+ box.width,
242
+ box.height
243
+ )
244
+ requestAnimationFrame(this.codecH264.loadedVideo[stream.id])
245
+ }
246
+ }
247
+
248
+ this.codecH264.feed(stream.id, imageData)
249
+ },
250
+
251
+ handleH265Stream: function (spiceMessage) {
252
+ const imageData = spiceMessage.args.data
253
+ const stream = wdi.Stream.getStream(spiceMessage.args.id)
254
+ const box = stream.computedBox
255
+
256
+ // Так как метод handleH265StreamCreate ан синхронный и ждет пока сделается проверка поддерживает ли браузер VideoDecoder,
257
+ // некоторые кадры могут быть упущены, их нужно хранить т.к. в них есть ключевые кадры
258
+ if (!this.codecH265.isReady[stream.id]) {
259
+ this.codecH265.addQueue(stream.id, imageData)
260
+ return
261
+ }
262
+
263
+ if (!this.codecH265.configed[stream.id]) {
264
+ this.codecH265.setConfig(stream.id, box)
265
+ }
266
+
267
+ this.codecH265.decode(stream.id, imageData)
268
+ },
269
+
270
+ handleVp8Stream: function (spiceMessage) {
271
+ var imageData = spiceMessage.args.data
272
+ var stream = wdi.Stream.getStream(spiceMessage.args.id)
273
+ var context = this.clientGui.getContext(stream.surface_id)
274
+ var box = stream.computedBox
275
+
276
+ this.codecVp8.feed(stream.id, imageData, context, box)
277
+ },
278
+
279
+ drawRop3: function (spiceMessage) {
280
+ var box = wdi.graphics.getBoxFromSrcArea(spiceMessage.args.base.box)
281
+ var context = this.clientGui.getContext(spiceMessage.args.base.surface_id)
282
+ var destImg = context.getImageData(box.x, box.y, box.width, box.height)
283
+ var clientGui = this.clientGui
284
+
285
+ var brush = spiceMessage.args.brush
286
+ var rop = spiceMessage.args.rop_descriptor
287
+
288
+ var srcArea = wdi.graphics.getBoxFromSrcArea(spiceMessage.args.src_area)
289
+ wdi.graphics.getImageFromSpice(
290
+ spiceMessage.args.src_image.imageDescriptor,
291
+ spiceMessage.args.src_image.data,
292
+ this.clientGui,
293
+ function (sourceCanvas) {
294
+ if (sourceCanvas) {
295
+ //Get source image data (image coming from the packet)
296
+ var sourceContext = sourceCanvas.getContext('2d')
297
+ var srcImg = sourceContext.getImageData(
298
+ srcArea.x,
299
+ srcArea.y,
300
+ srcArea.width,
301
+ srcArea.height
302
+ )
303
+ var srcImgData = srcImg.data //this
304
+
305
+ //Get pattern image data
306
+ //brush
307
+ var tmpcanvas = wdi.graphics.getNewTmpCanvas(box.width, box.height)
308
+ var tmpcontext = tmpcanvas.getContext('2d')
309
+ var brushBox = {
310
+ width: box.width,
311
+ height: box.height,
312
+ x: 0,
313
+ y: 0,
314
+ }
315
+ wdi.graphics.setBrush(
316
+ clientGui,
317
+ tmpcontext,
318
+ brush,
319
+ brushBox,
320
+ wdi.SpiceRopd.SPICE_ROPD_OP_PUT
321
+ ) //Without alpha?
322
+ var pattern = tmpcontext.getImageData(0, 0, box.width, box.height)
323
+ var patImgData = pattern.data //this
324
+
325
+ //Get dest image data
326
+ var destImgData = destImg.data
327
+
328
+ //Get result image data
329
+ tmpcanvas = wdi.graphics.getNewTmpCanvas(box.width, box.height)
330
+ tmpcontext = tmpcanvas.getContext('2d')
331
+ var result = tmpcontext.createImageData(box.width, box.height)
332
+ var resultData = result.data
333
+
334
+ if (
335
+ srcImg.width != pattern.width ||
336
+ srcImg.width != destImg.width ||
337
+ srcImg.height != pattern.height ||
338
+ srcImg.height != destImg.height
339
+ ) {
340
+ //TODO: resize
341
+ }
342
+
343
+ //Do the Ternary Raster Operation
344
+ var length = destImgData.length //Could be anyone
345
+ var func = wdi.Rop3[rop]
346
+ for (var i = 0; i < length; i += 4) {
347
+ resultData[i] =
348
+ func(patImgData[i], srcImgData[i], destImgData[i]) & 255
349
+ resultData[i + 1] =
350
+ func(patImgData[i + 1], srcImgData[i + 1], destImgData[i + 1]) &
351
+ 255
352
+ resultData[i + 2] =
353
+ func(patImgData[i + 2], srcImgData[i + 2], destImgData[i + 2]) &
354
+ 255
355
+ resultData[i + 3] = 255
356
+ }
357
+
358
+ tmpcontext.putImageData(result, 0, 0)
359
+
360
+ this.drawClip(tmpcanvas, box, context)
361
+ } else {
362
+ wdi.Debug.log('Unable to get image!')
363
+ }
364
+ },
365
+ this
366
+ )
367
+ },
368
+
369
+ drawInvers: function (spiceMessage) {
370
+ var drawBase = spiceMessage.args.base
371
+ var box = wdi.graphics.getBoxFromSrcArea(drawBase.box)
372
+
373
+ var surface_id = drawBase.surface_id
374
+
375
+ var context = this.clientGui.getContext(surface_id)
376
+
377
+ var destImg = wdi.graphics.getRect(box, context.canvas)
378
+ var imageData = wdi.RasterOperation.process(
379
+ wdi.SpiceRopd.SPICE_ROPD_OP_INVERS,
380
+ null,
381
+ destImg
382
+ ) //this operation modifies destination
383
+
384
+ context.drawImage(imageData, box.x, box.y, box.width, box.height)
385
+ },
386
+
387
+ drawStroke: function (spiceMessage) {
388
+ var stroke = spiceMessage.args,
389
+ context = this.clientGui.getContext(spiceMessage.args.base.surface_id),
390
+ color = stroke.brush.color.html_color,
391
+ lineWidth = 1,
392
+ pointsLength,
393
+ firstPoint,
394
+ i,
395
+ j,
396
+ length = stroke.path.num_segments,
397
+ seg
398
+
399
+ if (stroke.attr.flags & wdi.SpiceLineFlags.SPICE_LINE_FLAGS_STYLED) {
400
+ wdi.Debug.log('SPICE_LINE_FLAGS_STYLED')
401
+ }
402
+
403
+ for (var i = 0; i < length; i++) {
404
+ seg = stroke.path.segments[i]
405
+
406
+ if (seg.flags & wdi.SpicePathFlags.SPICE_PATH_BEGIN) {
407
+ context.beginPath()
408
+ context.moveTo(seg.points[0].x, seg.points[0].y)
409
+ context.strokeStyle = color
410
+ context.lineWidth = lineWidth
411
+ }
412
+ if (seg.flags & wdi.SpicePathFlags.SPICE_PATH_BEZIER) {
413
+ pointsLength = seg.points.length
414
+ if (pointsLength % 3 == 0) {
415
+ for (j = 0; j < pointsLength; j += 3) {
416
+ context.bezierCurveTo(
417
+ seg.points[j].x,
418
+ seg.points[j].y,
419
+ seg.points[j + 1].x,
420
+ seg.points[j + 1].y,
421
+ seg.points[j + 2].x,
422
+ seg.points[j + 2].y
423
+ )
424
+ }
425
+ }
426
+ } else {
427
+ pointsLength = seg.points.length
428
+
429
+ for (j = 0; j < pointsLength; j++) {
430
+ if (j == 0) firstPoint = seg.points[j]
431
+ context.lineTo(
432
+ seg.points[j].x + lineWidth / 2,
433
+ seg.points[j].y + lineWidth / 2
434
+ )
435
+ }
436
+ }
437
+ if (seg.flags & wdi.SpicePathFlags.SPICE_PATH_END) {
438
+ if (seg.flags & wdi.SpicePathFlags.SPICE_PATH_CLOSE) {
439
+ context.lineTo(
440
+ firstPoint.x + lineWidth / 2,
441
+ firstPoint.y + lineWidth / 2
442
+ )
443
+ }
444
+ context.stroke()
445
+ context.closePath()
446
+ }
447
+ }
448
+ },
449
+
450
+ drawImage: function (spiceMessage) {
451
+ var args = spiceMessage.args
452
+ var drawBase = args.base
453
+ var surface_id = drawBase.surface_id
454
+ var rop = args.rop_descriptor
455
+
456
+ var scale = args.scale_mode
457
+
458
+ //calculate src_area box
459
+ var box_origin = wdi.graphics.getBoxFromSrcArea(args.src_area)
460
+
461
+ var box_dest = wdi.graphics.getBoxFromSrcArea(drawBase.box)
462
+
463
+ if (window.vdiLoadTest && window.firstImage === undefined) {
464
+ window.firstImage = true
465
+ }
466
+
467
+ //get the image in imagedata format
468
+ wdi.graphics.getImageFromSpice(
469
+ args.image.imageDescriptor,
470
+ args.image.data,
471
+ this.clientGui,
472
+ function (srcImg) {
473
+ //we have image?
474
+ if (srcImg) {
475
+ if (window.firstImage) {
476
+ var data
477
+ if (srcImg.getContext) {
478
+ data = srcImg
479
+ .getContext('2d')
480
+ .getImageData(0, 0, srcImg.width, srcImg.height)
481
+ .data.buffer.slice(0)
482
+ } else {
483
+ data = srcImg.data.buffer.slice(0)
484
+ }
485
+ window.firstImageData = data
486
+ window.firstImage = false
487
+ }
488
+
489
+ var rectangle = false
490
+
491
+ if (
492
+ box_origin.width !== box_dest.width &&
493
+ box_origin.height !== box_dest.height
494
+ ) {
495
+ rectangle = true
496
+ srcImg = wdi.graphics.getRect(box_origin, srcImg)
497
+ srcImg = wdi.graphics.getImageFromData(srcImg)
498
+ var newSrcImg = wdi.graphics.getNewTmpCanvas(
499
+ box_dest.width,
500
+ box_dest.height
501
+ )
502
+ var tmpcontext = newSrcImg.getContext('2d')
503
+ tmpcontext.drawImage(
504
+ srcImg,
505
+ 0,
506
+ 0,
507
+ box_origin.width,
508
+ box_origin.height,
509
+ 0,
510
+ 0,
511
+ box_dest.width,
512
+ box_dest.height
513
+ )
514
+ srcImg = newSrcImg
515
+ }
516
+
517
+ //depending on the rop, we can avoid to get destImg
518
+ if (rop !== wdi.SpiceRopd.SPICE_ROPD_OP_PUT) {
519
+ //rop
520
+ if (!rectangle) {
521
+ srcImg = wdi.graphics.getRect(box_origin, srcImg)
522
+ }
523
+ var destImg = wdi.graphics.getRect(
524
+ box_dest,
525
+ this.clientGui.getCanvas(surface_id)
526
+ )
527
+ srcImg = wdi.RasterOperation.process(rop, srcImg, destImg)
528
+ }
529
+
530
+ var context = this.clientGui.getContext(surface_id)
531
+
532
+ if (srcImg instanceof ImageData) {
533
+ if (rectangle) {
534
+ //a subrectangle has been created, use it
535
+ context.putImageData(
536
+ srcImg,
537
+ box_dest.x,
538
+ box_dest.y,
539
+ 0,
540
+ 0,
541
+ box_dest.width,
542
+ box_dest.height
543
+ )
544
+ } else {
545
+ context.putImageData(
546
+ srcImg,
547
+ box_dest.x,
548
+ box_dest.y,
549
+ box_origin.x,
550
+ box_origin.y,
551
+ box_origin.width,
552
+ box_origin.height
553
+ )
554
+ }
555
+ } else {
556
+ if (rectangle) {
557
+ context.drawImage(
558
+ srcImg,
559
+ box_dest.x,
560
+ box_dest.y,
561
+ box_dest.width,
562
+ box_dest.height
563
+ )
564
+ } else {
565
+ context.drawImage(
566
+ srcImg,
567
+ box_origin.x,
568
+ box_origin.y,
569
+ box_origin.width,
570
+ box_origin.height,
571
+ box_dest.x,
572
+ box_dest.y,
573
+ box_dest.width,
574
+ box_dest.height
575
+ )
576
+ }
577
+ }
578
+ } else {
579
+ //failed to get image, cache error?
580
+ wdi.Debug.log('Unable to get image!')
581
+ }
582
+ },
583
+ this,
584
+ { opaque: true, brush: args.brush, raw: false }
585
+ )
586
+ },
587
+
588
+ drawClip: function (srcImg, box, context) {
589
+ context.drawImage(srcImg, box.x, box.y, box.width, box.height)
590
+ },
591
+
592
+ drawFill: function (spiceMessage) {
593
+ var args = spiceMessage.args
594
+ var context = this.clientGui.getContext(args.base.surface_id)
595
+ var box = wdi.graphics.getBoxFromSrcArea(args.base.box)
596
+ var brush = args.brush
597
+ var ropd = args.rop_descriptor
598
+
599
+ wdi.graphics.setBrush(this.clientGui, context, brush, box, ropd)
600
+ },
601
+
602
+ drawCopyBits: function (spiceMessage) {
603
+ var drawBase = spiceMessage.args.base
604
+ var surface_id = drawBase.surface_id
605
+ var src_position = spiceMessage.args.src_position
606
+ var context = this.clientGui.getContext(surface_id)
607
+ var box = drawBase.box
608
+
609
+ var width = box.right - box.left
610
+ var height = box.bottom - box.top
611
+
612
+ context.drawImage(
613
+ context.canvas,
614
+ src_position.x,
615
+ src_position.y,
616
+ width,
617
+ height,
618
+ drawBase.box.left,
619
+ drawBase.box.top,
620
+ width,
621
+ height
622
+ )
623
+ },
624
+
625
+ drawBlend: function (spiceMessage) {
626
+ //TODO: alpha_flags
627
+ //TODO: resize
628
+ var descriptor = spiceMessage.args.image.imageDescriptor
629
+ var drawBase = spiceMessage.args.base
630
+ var imgData = spiceMessage.args.image.data
631
+ var surface_id = spiceMessage.args.base.surface_id
632
+ var rop_desc = spiceMessage.args.rop_descriptor
633
+ var flags = spiceMessage.args.flags
634
+
635
+ wdi.graphics.getImageFromSpice(
636
+ descriptor,
637
+ imgData,
638
+ this.clientGui,
639
+ function (srcImg) {
640
+ if (!srcImg) {
641
+ wdi.Debug.log('There is no image on Blend')
642
+ return
643
+ }
644
+
645
+ //get box from src area
646
+ var box = wdi.graphics.getBoxFromSrcArea(spiceMessage.args.src_area)
647
+
648
+ //adapt to src_area
649
+ srcImg = wdi.graphics.getRect(box, srcImg)
650
+
651
+ //destination box
652
+ var dest_box = wdi.graphics.getBoxFromSrcArea(drawBase.box)
653
+ var destImg = wdi.graphics.getRect(
654
+ dest_box,
655
+ this.clientGui.getCanvas(surface_id)
656
+ )
657
+
658
+ var result = wdi.RasterOperation.process(rop_desc, srcImg, destImg)
659
+
660
+ this.clientGui
661
+ .getCanvas(surface_id)
662
+ .getContext('2d')
663
+ .drawImage(
664
+ result,
665
+ dest_box.x,
666
+ dest_box.y,
667
+ dest_box.width,
668
+ dest_box.height
669
+ )
670
+ },
671
+ this
672
+ )
673
+ },
674
+
675
+ drawAlphaBlend: function (spiceMessage) {
676
+ //TODO: alpha_flags
677
+ //TODO: resize
678
+
679
+ var descriptor = spiceMessage.args.image.imageDescriptor
680
+ var drawBase = spiceMessage.args.base
681
+ var imgData = spiceMessage.args.image.data
682
+ var surface_id = spiceMessage.args.base.surface_id
683
+ var flags = spiceMessage.args.alpha_flags
684
+ var alpha = spiceMessage.args.alpha
685
+
686
+ wdi.graphics.getImageFromSpice(
687
+ descriptor,
688
+ imgData,
689
+ this.clientGui,
690
+ function (srcImg) {
691
+ if (!srcImg) {
692
+ wdi.Debug.log('There is no image on drawAlphaBlend')
693
+ }
694
+
695
+ var box = wdi.graphics.getBoxFromSrcArea(spiceMessage.args.src_area)
696
+
697
+ //adapt to src_area
698
+ srcImg = wdi.graphics.getRect(box, srcImg)
699
+
700
+ //destination box
701
+ var box_dest = wdi.graphics.getBoxFromSrcArea(drawBase.box)
702
+ var destImg = wdi.graphics.getRect(
703
+ box_dest,
704
+ this.clientGui.getCanvas(surface_id)
705
+ )
706
+
707
+ if (box.width !== box_dest.width && box.height !== box_dest.height) {
708
+ var tmpcanvas = wdi.graphics.getNewTmpCanvas(
709
+ box_dest.width,
710
+ box_dest.height
711
+ )
712
+ var tmpcontext = tmpcanvas.getContext('2d')
713
+ tmpcontext.drawImage(
714
+ srcImg,
715
+ 0,
716
+ 0,
717
+ box.width,
718
+ box.height,
719
+ 0,
720
+ 0,
721
+ box_dest.width,
722
+ box_dest.height
723
+ )
724
+ srcImg = tmpcanvas
725
+ }
726
+
727
+ var src = wdi.graphics.getDataFromImage(srcImg).data
728
+ var dst = wdi.graphics.getDataFromImage(destImg).data
729
+
730
+ var length = src.length - 1
731
+
732
+ //create a new imagedata to store result
733
+ var imageResult = wdi.graphics.getNewTmpCanvas(
734
+ box_dest.width,
735
+ box_dest.height
736
+ )
737
+ var context = imageResult.getContext('2d')
738
+
739
+ var resultImageData = context.createImageData(
740
+ box_dest.width,
741
+ box_dest.height
742
+ )
743
+ var result = resultImageData.data
744
+
745
+ var rS, rD
746
+ var gS, gD
747
+ var bS, bD
748
+ var aS
749
+
750
+ for (var px = 0; px < length; px += 4) {
751
+ rS = src[px]
752
+ gS = src[px + 1]
753
+ bS = src[px + 2]
754
+
755
+ if (flags || alpha === 255) {
756
+ aS = src[px + 3]
757
+ } else {
758
+ aS = alpha
759
+ }
760
+
761
+ rD = dst[px]
762
+ gD = dst[px + 1]
763
+ bD = dst[px + 2]
764
+
765
+ if (aS > 30 && alpha === 255) {
766
+ //formula from reactos, this is premultiplied alpha values
767
+ result[px] = ((rD * (255 - aS)) / 255 + rS) & 0xff
768
+ result[px + 1] = ((gD * (255 - aS)) / 255 + gS) & 0xff
769
+ result[px + 2] = ((bD * (255 - aS)) / 255 + bS) & 0xff
770
+ } else {
771
+ //homemade blend function, this is the typical blend function simplified
772
+ result[px] = ((rS * aS + rD * (255 - aS)) / 255) & 0xff
773
+ result[px + 1] = ((gS * aS + gD * (255 - aS)) / 255) & 0xff
774
+ result[px + 2] = ((bS * aS + bD * (255 - aS)) / 255) & 0xff
775
+ }
776
+
777
+ result[px + 3] = 255
778
+ }
779
+ imageResult.getContext('2d').putImageData(resultImageData, 0, 0)
780
+
781
+ this.drawClip(
782
+ imageResult,
783
+ box_dest,
784
+ this.clientGui.getContext(surface_id)
785
+ )
786
+ },
787
+ this
788
+ )
789
+ },
790
+
791
+ drawWhiteness: function (spiceMessage) {
792
+ //TODO: mask
793
+ var base = spiceMessage.args.base
794
+ var context = this.clientGui.getContext(base.surface_id)
795
+ var box = wdi.graphics.getBoxFromSrcArea(base.box)
796
+ context.fillStyle = 'white'
797
+ context.fillRect(box.x, box.y, box.width, box.height)
798
+ },
799
+
800
+ drawBlackness: function (spiceMessage) {
801
+ //TODO: mask
802
+ var base = spiceMessage.args.base
803
+ var context = this.clientGui.getContext(base.surface_id)
804
+ var box = wdi.graphics.getBoxFromSrcArea(base.box)
805
+ context.fillStyle = 'black'
806
+ context.fillRect(box.x, box.y, box.width, box.height)
807
+ },
808
+
809
+ drawTransparent: function (spiceMessage) {
810
+ var drawBase = spiceMessage.args.base
811
+ var surface_id = drawBase.surface_id
812
+
813
+ //calculate src_area box
814
+ var box = wdi.graphics.getBoxFromSrcArea(spiceMessage.args.src_area)
815
+ var dest_box = wdi.graphics.getBoxFromSrcArea(drawBase.box)
816
+
817
+ //get destination iamge, in imagedata format because is what we need
818
+ var destImg = this.clientGui
819
+ .getContext(surface_id)
820
+ .getImageData(dest_box.x, dest_box.y, dest_box.width, dest_box.height)
821
+
822
+ wdi.graphics.getImageFromSpice(
823
+ spiceMessage.args.image.imageDescriptor,
824
+ spiceMessage.args.image.data,
825
+ this.clientGui,
826
+ function (srcImg) {
827
+ if (srcImg) {
828
+ //adapt to src_area
829
+ srcImg = wdi.graphics.getRect(box, srcImg)
830
+
831
+ var source = wdi.graphics.getDataFromImage(srcImg).data
832
+ var dest = destImg.data
833
+
834
+ var length = source.length - 1
835
+ var resultImageData = this.clientGui
836
+ .getContext(surface_id)
837
+ .createImageData(dest_box.width, dest_box.height)
838
+
839
+ var color = spiceMessage.args.transparent_true_color
840
+ while (length > 0) {
841
+ resultImageData.data[length] = 255 //alpha
842
+ if (
843
+ source[length - 1] === color.b &&
844
+ source[length - 2] === color.g &&
845
+ source[length - 3] === color.r
846
+ ) {
847
+ resultImageData.data[length - 1] = dest[length - 1] //b
848
+ resultImageData.data[length - 2] = dest[length - 2] //g
849
+ resultImageData.data[length - 3] = dest[length - 3] //r
850
+ } else {
851
+ resultImageData.data[length - 1] = source[length - 1] //b
852
+ resultImageData.data[length - 2] = source[length - 2] //g
853
+ resultImageData.data[length - 3] = source[length - 3] //r
854
+ }
855
+
856
+ length -= 4
857
+ }
858
+ var resultImage = wdi.graphics.getImageFromData(resultImageData)
859
+ this.drawClip(
860
+ resultImage,
861
+ dest_box,
862
+ this.clientGui.getContext(surface_id)
863
+ )
864
+ } else {
865
+ //failed to get image, cache error?
866
+ wdi.Debug.log('Unable to get image!')
867
+ }
868
+ },
869
+ this
870
+ )
871
+ },
872
+
873
+ drawText: function (spiceMessage) {
874
+ var context = this.clientGui.getContext(spiceMessage.args.base.surface_id)
875
+ var bbox = spiceMessage.args.base.box
876
+ var clip = spiceMessage.args.base.clip
877
+ var text = spiceMessage.args
878
+ var string = text.glyph_string
879
+ var bpp = string.flags === 1 ? 1 : string.flags * 2
880
+
881
+ if (text.back_mode !== 0) {
882
+ wdi.graphics.drawBackText(this.clientGui, context, text)
883
+ }
884
+
885
+ wdi.graphics.drawString(
886
+ context,
887
+ string,
888
+ bpp,
889
+ text.fore_brush,
890
+ clip.type,
891
+ this
892
+ )
893
+ },
894
+
895
+ /**
896
+ * Clears all color palettes
897
+ * @param spiceMessage
898
+ * @param app
899
+ */
900
+ invalPalettes: function (spiceMessage) {
901
+ wdi.ImageCache.clearPalettes()
902
+ },
903
+
904
+ handleReset: function (spiceMessage) {
905
+ // console.log(spiceMessage, 222);
906
+ },
907
+ })