quickwin 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.en.md +1 -2
  2. package/README.md +1 -2
  3. package/constants.ts +22 -0
  4. package/enum_map.d.ts +4 -0
  5. package/examples/PdfCanvas.js +1 -1
  6. package/examples/PdfCanvas.tsx +2 -2
  7. package/examples/execd/main.js +491 -217
  8. package/examples/pdf_preview2.js +76 -67
  9. package/examples/pdf_preview2.ts +84 -64
  10. package/examples/pdf_viewer.js +4932 -1029
  11. package/examples/pdf_viewer.tsx +11 -22
  12. package/examples/test_gallery.js +308 -143
  13. package/examples/test_gallery.tsx +12 -7
  14. package/examples/test_react_lazy.js +295 -133
  15. package/examples/test_react_lazy.tsx +4 -3
  16. package/examples/test_react_listbox.js +293 -132
  17. package/examples/test_react_listbox.tsx +3 -2
  18. package/examples/test_root_window.js +283 -126
  19. package/examples/test_tab.js +295 -133
  20. package/examples/test_tab.tsx +4 -3
  21. package/examples/tray_demo.js +37 -30
  22. package/examples/tray_demo.tsx +39 -32
  23. package/lib/bitmap.js +40 -0
  24. package/lib/bitmap.ts +39 -0
  25. package/lib/certs.js +31 -3
  26. package/lib/certs.ts +32 -3
  27. package/lib/dpi.js +30 -0
  28. package/lib/dpi.ts +31 -0
  29. package/lib/dumpRects.js +14 -7
  30. package/lib/dumpRects.ts +14 -6
  31. package/lib/ffi/bind.js +5 -4
  32. package/lib/ffi/bind.ts +9 -8
  33. package/lib/http-server.js +50 -25
  34. package/lib/http-server.ts +51 -23
  35. package/lib/react-qw/components/DateTimePicker.js +6 -7
  36. package/lib/react-qw/components/Input.js +5 -1
  37. package/lib/react-qw/components/ListView.js +8 -6
  38. package/lib/react-qw/components/ScrollView.js +28 -22
  39. package/lib/react-qw/index.js +7 -5
  40. package/lib/react-qw/index.ts +5 -5
  41. package/lib/react-qw/props.js +3 -3
  42. package/lib/react-qw/props.ts +3 -3
  43. package/lib/react-qw/reconciler.js +12 -17
  44. package/lib/react-qw/reconciler.ts +12 -16
  45. package/lib/text-measure.js +9 -6
  46. package/lib/text-measure.ts +9 -6
  47. package/lib/windows/comctl32.js +3 -2
  48. package/lib/windows/comctl32.ts +3 -2
  49. package/lib/windows/gdi32.js +28 -6
  50. package/lib/windows/gdi32.ts +30 -6
  51. package/lib/windows/kernel32.js +9 -0
  52. package/lib/windows/kernel32.ts +9 -0
  53. package/lib/windows/shell32.js +11 -2
  54. package/lib/windows/shell32.ts +13 -2
  55. package/lib/windows/structs.js +51 -0
  56. package/lib/windows/structs.ts +55 -0
  57. package/lib/windows/user32.js +6 -5
  58. package/lib/windows/user32.ts +6 -5
  59. package/main.js +13 -5
  60. package/package.json +2 -2
  61. package/quickwin.d.ts +13 -115
  62. package/qwin-nowasm-x86.exe +0 -0
  63. package/qwin-nowasm.exe +0 -0
  64. package/qwin-x86.exe +0 -0
  65. package/qwin.exe +0 -0
  66. package/test/bench_ffi_callraw.js +3 -4
  67. package/test/bench_ffi_callraw.ts +3 -4
  68. package/test/debug/mupdf_debug.js +4 -22
  69. package/test/debug/wasm_export_debug.js +2 -12
  70. package/test/debug/wasm_names.js +3 -13
  71. package/test/example.pdf +0 -0
  72. package/test/mupdf-cdn.js +40 -0
  73. package/test/mupdf-cdn.ts +43 -0
  74. package/test/test_ffi.js +8 -9
  75. package/test/test_ffi.ts +8 -9
  76. package/test/test_ffi_abi.js +6 -6
  77. package/test/test_ffi_abi.ts +8 -8
  78. package/test/test_ffi_windows.js +82 -11
  79. package/test/test_ffi_windows.ts +85 -11
  80. package/test/test_gdi_draw.js +3 -3
  81. package/test/test_gdi_draw.ts +4 -4
  82. package/test/test_mupdf_render.js +4 -22
  83. package/test/test_mupdf_render.ts +4 -23
  84. package/test/test_mupdf_twice.js +4 -19
  85. package/test/test_mupdf_twice.ts +4 -20
  86. package/test/test_mupdf_wasm.js +10 -4
  87. package/test/test_mupdf_wasm.ts +6 -4
  88. package/test/test_react_complex.js +316 -140
  89. package/test/test_react_counter.js +295 -133
  90. package/test/test_react_flex.js +297 -138
  91. package/test/test_react_hidden.js +296 -134
  92. package/test/test_react_listview_link.js +288 -131
  93. package/test/test_react_notify.js +290 -133
  94. package/test/test_react_render.js +295 -133
  95. package/vendor/mupdf-wasm/mupdf-wasm.d.ts +0 -571
  96. package/vendor/mupdf-wasm/mupdf-wasm.js +0 -2749
  97. package/vendor/mupdf-wasm/mupdf-wasm.wasm +0 -0
  98. package/vendor/mupdf-wasm/mupdf.d.ts +0 -939
  99. package/vendor/mupdf-wasm/mupdf.js +0 -3317
package/README.en.md CHANGED
@@ -98,8 +98,7 @@ When run without a script file argument, `qwin.exe` checks for embedded JS at th
98
98
  | `gui` | built-in | Win32 window/control/message/tray API |
99
99
  | `sock` | built-in | socket networking (`AddrFamily`, `FdEvent` etc.) |
100
100
  | `wolfssl` | built-in | TLS/SSL (`VerifyMode`, `ReturnCode` etc.) |
101
- | `ffi` | built-in | foreign function interface |
102
- | `win` | built-in | DLL loading (`LoadLibrary`, `GetProcAddress`) |
101
+ | `ffi` | built-in | foreign function interface (DLL loading: `LoadLibrary`, `GetProcAddress`) |
103
102
  | `brotli` | built-in | Brotli decompression |
104
103
  | `wamr` | built-in | low-level WAMR API |
105
104
  | `fetch` | `import './lib/fetch.js'` | adds `fetch()`, `Response`, `Headers` to globalThis |
package/README.md CHANGED
@@ -96,8 +96,7 @@ _build/execd.exe
96
96
  | `gui` | built-in | Win32 窗口/控件/消息/托盘 API |
97
97
  | `sock` | built-in | Socket 网络(`AddrFamily`、`FdEvent` 等) |
98
98
  | `wolfssl` | built-in | TLS/SSL(`VerifyMode`、`ReturnCode` 等) |
99
- | `ffi` | built-in | 外部函数接口 |
100
- | `win` | built-in | DLL 加载(`LoadLibrary`、`GetProcAddress`) |
99
+ | `ffi` | built-in | 外部函数接口(DLL 装载:`LoadLibrary`、`GetProcAddress`) |
101
100
  | `brotli` | built-in | Brotli 解压 |
102
101
  | `wamr` | built-in | 底层 WAMR API |
103
102
  | `fetch` | `import './lib/fetch.js'` | 向 globalThis 添加 `fetch()`、`Response`、`Headers` |
package/constants.ts CHANGED
@@ -54,6 +54,11 @@ export const enum MenuFlag {
54
54
  POPUP = 16, // 0x10
55
55
  }
56
56
 
57
+ export const enum TrackPopupMenuFlag {
58
+ RETURNCMD = 256, // 0x100
59
+ RIGHTBUTTON = 2, // 0x2
60
+ }
61
+
57
62
  export const enum WindowStyle {
58
63
  OVERLAPPEDWINDOW = 13565952, // 0xCF0000
59
64
  CHILD = 1073741824, // 0x40000000
@@ -225,6 +230,10 @@ export const enum SysMetrics {
225
230
  CYSCREEN = 1, // 0x1
226
231
  }
227
232
 
233
+ export const enum Spi {
234
+ GETNONCLIENTMETRICS = 41, // 0x29
235
+ }
236
+
228
237
  export const enum ButtonStyle {
229
238
  PUSHBUTTON = 0, // 0x0
230
239
  DEFPUSHBUTTON = 1, // 0x1
@@ -353,6 +362,7 @@ export const enum LvImageList {
353
362
  export const enum ImageListFlag {
354
363
  MASK = 1, // 0x1
355
364
  COLOR = 0, // 0x0
365
+ COLOR24 = 24, // 0x18
356
366
  COLOR32 = 32, // 0x20
357
367
  HIGHQUALITYSCALE = 131072, // 0x20000
358
368
  }
@@ -677,6 +687,11 @@ export const enum TtToolFlag {
677
687
  DI_SETITEM = 32768, // 0x8000
678
688
  }
679
689
 
690
+ export const enum ColorUse {
691
+ RGB_COLORS = 0, // 0x0
692
+ PAL_COLORS = 1, // 0x1
693
+ }
694
+
680
695
  export const enum RasterOp {
681
696
  SRCCOPY = 13369376, // 0xCC0020
682
697
  WHITENESS = 16711778, // 0xFF0062
@@ -961,6 +976,13 @@ export const enum ProcessCreationFlag {
961
976
  NO_WINDOW = 134217728, // 0x8000000
962
977
  }
963
978
 
979
+ // File
980
+ export const enum MoveFileFlag {
981
+ REPLACE_EXISTING = 1, // 0x1
982
+ COPY_ALLOWED = 2, // 0x2
983
+ WRITE_THROUGH = 8, // 0x8
984
+ }
985
+
964
986
  // Error codes
965
987
  export const enum ErrorCode {
966
988
  FILE_NOT_FOUND = 2, // 0x2
package/enum_map.d.ts CHANGED
@@ -10,12 +10,14 @@ interface EnumMap {
10
10
  NotifyIconCmd: import('./constants').NotifyIconCmd
11
11
  NotifyIconFlag: import('./constants').NotifyIconFlag
12
12
  MenuFlag: import('./constants').MenuFlag
13
+ TrackPopupMenuFlag: import('./constants').TrackPopupMenuFlag
13
14
  WindowStyle: import('./constants').WindowStyle
14
15
  WmMsg: import('./constants').WmMsg
15
16
  ScrollBar: import('./constants').ScrollBar
16
17
  ScrollCmd: import('./constants').ScrollCmd
17
18
  ScrollInfoFlag: import('./constants').ScrollInfoFlag
18
19
  SysMetrics: import('./constants').SysMetrics
20
+ Spi: import('./constants').Spi
19
21
  ButtonStyle: import('./constants').ButtonStyle
20
22
  MouseKeyFlag: import('./constants').MouseKeyFlag
21
23
  LbMsg: import('./constants').LbMsg
@@ -78,6 +80,7 @@ interface EnumMap {
78
80
  TooltipStyle: import('./constants').TooltipStyle
79
81
  CreatePos: import('./constants').CreatePos
80
82
  TtToolFlag: import('./constants').TtToolFlag
83
+ ColorUse: import('./constants').ColorUse
81
84
  RasterOp: import('./constants').RasterOp
82
85
  PenStyle: import('./constants').PenStyle
83
86
  BackgroundMode: import('./constants').BackgroundMode
@@ -108,6 +111,7 @@ interface EnumMap {
108
111
  IDI: import('./constants').IDI
109
112
  DrawTextFlag: import('./constants').DrawTextFlag
110
113
  ProcessCreationFlag: import('./constants').ProcessCreationFlag
114
+ MoveFileFlag: import('./constants').MoveFileFlag
111
115
  ErrorCode: import('./constants').ErrorCode
112
116
  PowerBroadcast: import('./constants').PowerBroadcast
113
117
  DevMode: import('./constants').DevMode
@@ -28,7 +28,7 @@ export const PdfCanvas = forwardRef(({ pixmap, style }, ref) => {
28
28
  const hdc = GetDC(hwnd);
29
29
  if (hdc) {
30
30
  const bmi = makeBitmapInfo(pm.w, pm.h);
31
- SetDIBitsToDevice(hdc, 0, 0, pm.w, pm.h, 0, 0, 0, pm.h, pm.data, bmi, 0);
31
+ SetDIBitsToDevice(hdc, 0, 0, pm.w, pm.h, 0, 0, 0, pm.h, pm.data, bmi, 0 /* ColorUse.RGB_COLORS */);
32
32
  ReleaseDC(hwnd, hdc);
33
33
  }
34
34
  return 0;
@@ -5,7 +5,7 @@ import { GetDC, ReleaseDC } from '../lib/windows/user32.js'
5
5
  import { SetDIBitsToDevice } from '../lib/windows/gdi32.js'
6
6
  import { BITMAPINFOHEADER } from '../lib/windows/structs.js'
7
7
  import type { WStyle } from '../lib/react-qw/jsx.d.ts'
8
- import { WindowStyle, WmMsg } from '../constants'
8
+ import { ColorUse, WindowStyle, WmMsg } from '../constants'
9
9
 
10
10
  function makeBitmapInfo(w: number, h: number) {
11
11
  // biHeight 负 = 自顶向下(DIB 原点左上);biCompression 缺省 0 = BI_RGB 无压缩
@@ -41,7 +41,7 @@ export const PdfCanvas = forwardRef<gui.HWND, PdfCanvasProps>(
41
41
  const hdc = GetDC(hwnd)
42
42
  if (hdc) {
43
43
  const bmi = makeBitmapInfo(pm.w, pm.h)
44
- SetDIBitsToDevice(hdc, 0, 0, pm.w, pm.h, 0, 0, 0, pm.h, pm.data, bmi, 0)
44
+ SetDIBitsToDevice(hdc, 0, 0, pm.w, pm.h, 0, 0, 0, pm.h, pm.data, bmi, ColorUse.RGB_COLORS)
45
45
  ReleaseDC(hwnd, hdc)
46
46
  }
47
47
  return 0