pxt-common-packages 11.0.1 → 11.1.2

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 (38) hide show
  1. package/built/common-sim.d.ts +6 -0
  2. package/built/common-sim.js +62 -29
  3. package/libs/azureiot/built/debug/binary.js +461 -461
  4. package/libs/color/built/debug/binary.js +8 -8
  5. package/libs/color-sensor/built/debug/binary.js +8 -8
  6. package/libs/controller/built/debug/binary.js +7986 -7953
  7. package/libs/controller---none/built/debug/binary.js +7965 -7932
  8. package/libs/datalogger/built/debug/binary.js +63 -63
  9. package/libs/edge-connector/built/debug/binary.js +8 -8
  10. package/libs/esp32/built/debug/binary.js +462 -462
  11. package/libs/game/built/debug/binary.js +7878 -7845
  12. package/libs/game/sprite.ts +2 -0
  13. package/libs/game/sprites.ts +1 -0
  14. package/libs/lcd/built/debug/binary.js +8 -8
  15. package/libs/light-spectrum-sensor/built/debug/binary.js +8 -8
  16. package/libs/lora/built/debug/binary.js +8 -8
  17. package/libs/matrix-keypad/built/debug/binary.js +8 -8
  18. package/libs/microphone/sim/state.ts +2 -0
  19. package/libs/mqtt/built/debug/binary.js +176 -176
  20. package/libs/net/built/debug/binary.js +176 -176
  21. package/libs/net-game/built/debug/binary.js +9666 -9633
  22. package/libs/palette/built/debug/binary.js +7877 -7844
  23. package/libs/pixel/built/debug/binary.js +8 -8
  24. package/libs/power/built/debug/binary.js +8 -8
  25. package/libs/proximity/built/debug/binary.js +8 -8
  26. package/libs/radio/built/debug/binary.js +8 -8
  27. package/libs/radio-broadcast/built/debug/binary.js +8 -8
  28. package/libs/rotary-encoder/built/debug/binary.js +8 -8
  29. package/libs/screen/built/debug/binary.js +50 -50
  30. package/libs/screen/sim/image.ts +32 -31
  31. package/libs/servo/built/debug/binary.js +8 -8
  32. package/libs/shader/pxt.json +14 -0
  33. package/libs/shader/shader.cpp +140 -0
  34. package/libs/shader/shader.ts +19 -0
  35. package/libs/shader/sim/shader.ts +37 -0
  36. package/libs/sprite-scaling/built/debug/binary.js +7877 -7844
  37. package/libs/storyboard/built/debug/binary.js +7877 -7844
  38. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "shader",
3
+ "description": "Utility methods for shading images",
4
+ "files": [
5
+ "shader.cpp",
6
+ "shader.ts",
7
+ "shims.d.ts"
8
+ ],
9
+ "public": true,
10
+ "dependencies": {
11
+ "core": "file:../core",
12
+ "screen": "file:../screen"
13
+ }
14
+ }
@@ -0,0 +1,140 @@
1
+ #include "pxt.h"
2
+
3
+ #define XX(v) (int)(((int16_t)(v)))
4
+ #define YY(v) (int)(((int16_t)(((int32_t)(v)) >> 16)))
5
+
6
+ namespace ShaderMethods {
7
+
8
+ void mapImage(Image_ toShade, Image_ shadeLevels, int x, int y, Buffer map) {
9
+ if (x >= toShade->width() || y >= toShade->height())
10
+ return;
11
+
12
+ if (toShade->bpp() != 4 || shadeLevels->bpp() != 4 || map->length < 16 || map->length % 16 != 0)
13
+ return;
14
+
15
+ int maxShadeLevel = map->length >> 4;
16
+
17
+ int x2 = x + shadeLevels->width() - 1;
18
+ int y2 = y + shadeLevels->height() - 1;
19
+
20
+ if (x2 < 0 || y2 < 0)
21
+ return;
22
+
23
+ int x0 = x;
24
+ int y0 = y;
25
+
26
+ toShade->clamp(&x2, &y2);
27
+ toShade->clamp(&x, &y);
28
+ int w = x2 - x + 1;
29
+ int h = y2 - y + 1;
30
+
31
+ toShade->makeWritable();
32
+
33
+ auto mapData = map->data;
34
+
35
+ auto toShadeByteHeight = toShade->byteHeight();
36
+ uint8_t *toShadeAddr = toShade->pix(x, y);
37
+
38
+ auto shadeLevelsByteHeight = shadeLevels->byteHeight();
39
+ uint8_t *shadeLevelsAddr = shadeLevels->pix(x - x0, y - y0);
40
+
41
+ while (w-- > 0) {
42
+ auto ptr1 = toShadeAddr;
43
+ auto ptr2 = shadeLevelsAddr;
44
+ unsigned shift1 = y & 1;
45
+ unsigned shift2 = (y - y0) & 1;
46
+ uint8_t shadeLevel = 0;
47
+ for (int i = 0; i < h; i++) {
48
+ if (shift2) {
49
+ shadeLevel = min(*ptr2 >> 4, maxShadeLevel);
50
+ ptr2++;
51
+ shift2 = 0;
52
+ } else {
53
+ shadeLevel = min(*ptr2 & 0x0f, maxShadeLevel);
54
+ shift2 = 1;
55
+ }
56
+
57
+ if (shift1) {
58
+ *ptr1 = (mapData[(*ptr1 >> 4) + (shadeLevel << 4)] << 4) | (*ptr1 & 0x0f);
59
+ ptr1++;
60
+ shift1 = 0;
61
+ } else {
62
+ *ptr1 = (mapData[(*ptr1 & 0xf) + (shadeLevel << 4)] & 0xf) | (*ptr1 & 0xf0);
63
+ shift1 = 1;
64
+ }
65
+ }
66
+ toShadeAddr += toShadeByteHeight;
67
+ shadeLevelsAddr += shadeLevelsByteHeight;
68
+ }
69
+ }
70
+
71
+ void mergeImage(Image_ dst, Image_ src, int x, int y) {
72
+ if (x >= dst->width() || y >= dst->height())
73
+ return;
74
+
75
+ if (dst->bpp() != 4 || src->bpp() != 4)
76
+ return;
77
+
78
+ int x2 = x + src->width() - 1;
79
+ int y2 = y + src->height() - 1;
80
+
81
+ if (x2 < 0 || y2 < 0)
82
+ return;
83
+
84
+ int x0 = x;
85
+ int y0 = y;
86
+
87
+ dst->clamp(&x2, &y2);
88
+ dst->clamp(&x, &y);
89
+ int w = x2 - x + 1;
90
+ int h = y2 - y + 1;
91
+
92
+ dst->makeWritable();
93
+
94
+ auto dstByteHeight = dst->byteHeight();
95
+ uint8_t *dstAddr = dst->pix(x, y);
96
+
97
+ auto srcByteHeight = src->byteHeight();
98
+ uint8_t *srcAddr = src->pix(x - x0, y - y0);
99
+
100
+ while (w-- > 0) {
101
+ auto ptr1 = dstAddr;
102
+ auto ptr2 = srcAddr;
103
+ unsigned shift1 = y & 1;
104
+ unsigned shift2 = (y - y0) & 1;
105
+ int srcValue = 0;
106
+ for (int i = 0; i < h; i++) {
107
+ if (shift2) {
108
+ srcValue = *ptr2 >> 4;
109
+ ptr2++;
110
+ shift2 = 0;
111
+ } else {
112
+ srcValue = *ptr2 & 0x0f;
113
+ shift2 = 1;
114
+ }
115
+
116
+ if (shift1) {
117
+ *ptr1 = (min(*ptr1 >> 4, srcValue) << 4) | (*ptr1 & 0x0f);
118
+ ptr1++;
119
+ shift1 = 0;
120
+ } else {
121
+ *ptr1 = (min(*ptr1 & 0xf, srcValue) & 0xf) | (*ptr1 & 0xf0);
122
+ shift1 = 1;
123
+ }
124
+ }
125
+ dstAddr += dstByteHeight;
126
+ srcAddr += srcByteHeight;
127
+ }
128
+ }
129
+
130
+ //%
131
+ void _mapImage(Image_ toShade, Image_ shadeLevels, int xy, Buffer c) {
132
+ mapImage(toShade, shadeLevels, XX(xy), YY(xy), c);
133
+ }
134
+
135
+ //%
136
+ void _mergeImage(Image_ toShade, Image_ shadeLevels, int xy) {
137
+ mergeImage(toShade, shadeLevels, XX(xy), YY(xy));
138
+ }
139
+
140
+ }
@@ -0,0 +1,19 @@
1
+ namespace helpers {
2
+ //% shim=ShaderMethods::_mapImage
3
+ function _mapImage(toShade: Image, shadeLevels: Image, xy: number, m: Buffer): void { }
4
+
5
+ export function mapImage(toShade: Image, shadeLevels: Image, x: number, y: number, m: Buffer) {
6
+ _mapImage(toShade, shadeLevels, pack(x, y), m);
7
+ }
8
+
9
+ //% shim=ShaderMethods::_mergeImage
10
+ function _mergeImage(dst: Image, src: Image, xy: number): void { }
11
+
12
+ export function mergeImage(dst: Image, src: Image, x: number, y: number) {
13
+ _mergeImage(dst, src, pack(x, y));
14
+ }
15
+
16
+ function pack(x: number, y: number) {
17
+ return (Math.clamp(-30000, 30000, x | 0) & 0xffff) | (Math.clamp(-30000, 30000, y | 0) << 16)
18
+ }
19
+ }
@@ -0,0 +1,37 @@
1
+ /// <reference path="../../screen/sim/image.ts" />
2
+
3
+ namespace pxsim.ShaderMethods {
4
+ export function _mergeImage(dst: RefImage, src: RefImage, xy: number) {
5
+ mergeImage(dst, src, pxsim.ImageMethods.XX(xy), pxsim.ImageMethods.YY(xy));
6
+ }
7
+
8
+ function mergeImage(dst: RefImage, src: RefImage, x0: number, y0: number) {
9
+ for (let x = 0; x < src._width; x++) {
10
+ for (let y = 0; y < src._height; y++) {
11
+ pxsim.ImageMethods.setPixel(
12
+ dst,
13
+ x0 + x,
14
+ y0 + y,
15
+ Math.min(pxsim.ImageMethods.getPixel(dst, x0 + x, y0 + y), pxsim.ImageMethods.getPixel(src, x, y))
16
+ )
17
+ }
18
+ }
19
+ }
20
+
21
+ export function _mapImage(dst: RefImage, src: RefImage, xy: number, buf: RefBuffer) {
22
+ mapImage(dst, src, pxsim.ImageMethods.XX(xy), pxsim.ImageMethods.YY(xy), buf);
23
+ }
24
+
25
+ function mapImage(dst: RefImage, src: RefImage, x0: number, y0: number, buf: RefBuffer) {
26
+ for (let x = 0; x < src._width; x++) {
27
+ for (let y = 0; y < src._height; y++) {
28
+ pxsim.ImageMethods.setPixel(
29
+ dst,
30
+ x0 + x,
31
+ y0 + y,
32
+ buf.data[pxsim.ImageMethods.getPixel(dst, x0 + x, y0 + y) + (pxsim.ImageMethods.getPixel(src, x, y) << 4)]
33
+ )
34
+ }
35
+ }
36
+ }
37
+ }