brilliantsole 0.0.34 → 0.0.35
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.
- package/build/brilliantsole.cjs +213 -0
- package/build/brilliantsole.cjs.map +1 -1
- package/build/brilliantsole.js.map +1 -1
- package/build/brilliantsole.ls.js +244 -0
- package/build/brilliantsole.ls.js.map +1 -1
- package/build/brilliantsole.min.js.map +1 -1
- package/build/brilliantsole.module.d.ts +22 -22
- package/build/brilliantsole.module.js.map +1 -1
- package/build/brilliantsole.module.min.d.ts +22 -22
- package/build/brilliantsole.module.min.js.map +1 -1
- package/build/brilliantsole.node.module.d.ts +53 -23
- package/build/brilliantsole.node.module.js +205 -1
- package/build/brilliantsole.node.module.js.map +1 -1
- package/build/dts/BS.d.ts +0 -2
- package/build/index.node.d.ts +31 -1
- package/examples/display-workout/script.js +0 -6
- package/package.json +1 -1
- package/src/BS.ts +0 -2
- package/examples/display-workout/uMyoBLE.js +0 -133
|
@@ -18916,6 +18916,9 @@
|
|
|
18916
18916
|
log: false
|
|
18917
18917
|
});
|
|
18918
18918
|
const spriteHeaderLength = 3 * 2;
|
|
18919
|
+
function calculateSpriteSheetHeaderLength(numberOfSprites) {
|
|
18920
|
+
return 2 + numberOfSprites * 2 + numberOfSprites * spriteHeaderLength;
|
|
18921
|
+
}
|
|
18919
18922
|
function getCurvesPoints(curves) {
|
|
18920
18923
|
const curvePoints = [];
|
|
18921
18924
|
curves.forEach((curve, index) => {
|
|
@@ -19746,6 +19749,17 @@
|
|
|
19746
19749
|
ctx.drawImage(image, 0, 0, width, height);
|
|
19747
19750
|
return canvas;
|
|
19748
19751
|
}
|
|
19752
|
+
function cropCanvas(canvas, x, y, width, height, targetCanvas) {
|
|
19753
|
+
targetCanvas = targetCanvas || document.createElement("canvas");
|
|
19754
|
+
const ctx = targetCanvas.getContext("2d", {
|
|
19755
|
+
willReadFrequently: true
|
|
19756
|
+
});
|
|
19757
|
+
targetCanvas.width = width;
|
|
19758
|
+
targetCanvas.height = height;
|
|
19759
|
+
ctx.imageSmoothingEnabled = false;
|
|
19760
|
+
ctx.drawImage(canvas, x, y, width, height, 0, 0, width, height);
|
|
19761
|
+
return targetCanvas;
|
|
19762
|
+
}
|
|
19749
19763
|
function removeAlphaFromCanvas(canvas) {
|
|
19750
19764
|
const ctx = canvas.getContext("2d", {
|
|
19751
19765
|
willReadFrequently: true
|
|
@@ -19790,6 +19804,86 @@
|
|
|
19790
19804
|
bitmap
|
|
19791
19805
|
};
|
|
19792
19806
|
}
|
|
19807
|
+
const drawSpriteBitmapCommandHeaderLength = 1 + 2 + 2 + 2 + 2 + 1 + 2;
|
|
19808
|
+
async function canvasToBitmaps(canvas, numberOfColors, mtu) {
|
|
19809
|
+
const {
|
|
19810
|
+
blob,
|
|
19811
|
+
colors,
|
|
19812
|
+
colorIndices
|
|
19813
|
+
} = await quantizeCanvas(canvas, numberOfColors);
|
|
19814
|
+
const bitmapRows = [];
|
|
19815
|
+
const {
|
|
19816
|
+
width,
|
|
19817
|
+
height
|
|
19818
|
+
} = canvas;
|
|
19819
|
+
const numberOfPixels = width * height;
|
|
19820
|
+
const pixelDepth = DisplayPixelDepths.find(pixelDepth => pixelDepthToNumberOfColors(pixelDepth) >= numberOfColors);
|
|
19821
|
+
_console$k.assertWithError(pixelDepth, "no pixelDepth found that covers ".concat(numberOfColors, " colors"));
|
|
19822
|
+
const pixelsPerByte = pixelDepthToPixelsPerByte(pixelDepth);
|
|
19823
|
+
const numberOfBytes = Math.ceil(numberOfPixels / pixelsPerByte);
|
|
19824
|
+
_console$k.log({
|
|
19825
|
+
width,
|
|
19826
|
+
height,
|
|
19827
|
+
numberOfPixels,
|
|
19828
|
+
pixelDepth,
|
|
19829
|
+
pixelsPerByte,
|
|
19830
|
+
numberOfBytes,
|
|
19831
|
+
mtu
|
|
19832
|
+
});
|
|
19833
|
+
const maxPixelDataLength = mtu - (drawSpriteBitmapCommandHeaderLength + 5);
|
|
19834
|
+
const maxPixels = Math.floor(maxPixelDataLength / pixelsPerByte);
|
|
19835
|
+
const maxBitmapWidth = Math.min(maxPixels, width);
|
|
19836
|
+
let maxBitmapHeight = 1;
|
|
19837
|
+
if (maxBitmapWidth == width) {
|
|
19838
|
+
const bitmapRowPixelDataLength = Math.ceil(width / pixelsPerByte);
|
|
19839
|
+
maxBitmapHeight = Math.floor(maxPixelDataLength / bitmapRowPixelDataLength);
|
|
19840
|
+
}
|
|
19841
|
+
_console$k.log({
|
|
19842
|
+
maxPixelDataLength,
|
|
19843
|
+
maxPixels,
|
|
19844
|
+
maxBitmapHeight,
|
|
19845
|
+
maxBitmapWidth
|
|
19846
|
+
});
|
|
19847
|
+
if (maxBitmapHeight >= height) {
|
|
19848
|
+
_console$k.log("image is small enough for a single bitmap");
|
|
19849
|
+
const bitmap = {
|
|
19850
|
+
numberOfColors,
|
|
19851
|
+
pixels: colorIndices,
|
|
19852
|
+
width,
|
|
19853
|
+
height
|
|
19854
|
+
};
|
|
19855
|
+
bitmapRows.push([bitmap]);
|
|
19856
|
+
} else {
|
|
19857
|
+
let offsetX = 0;
|
|
19858
|
+
let offsetY = 0;
|
|
19859
|
+
const bitmapCanvas = document.createElement("canvas");
|
|
19860
|
+
const bitmapColorIndices = new Array(numberOfColors).fill(0).map((_, i) => i);
|
|
19861
|
+
while (offsetY < height) {
|
|
19862
|
+
const bitmapHeight = Math.min(maxBitmapHeight, height - offsetY);
|
|
19863
|
+
offsetX = 0;
|
|
19864
|
+
const bitmapRow = [];
|
|
19865
|
+
bitmapRows.push(bitmapRow);
|
|
19866
|
+
while (offsetX < width) {
|
|
19867
|
+
const bitmapWidth = Math.min(maxBitmapWidth, width - offsetX);
|
|
19868
|
+
cropCanvas(canvas, offsetX, offsetY, bitmapWidth, bitmapHeight, bitmapCanvas);
|
|
19869
|
+
const {
|
|
19870
|
+
bitmap
|
|
19871
|
+
} = await imageToBitmap(bitmapCanvas, bitmapWidth, bitmapHeight, colors, bitmapColorIndices, numberOfColors);
|
|
19872
|
+
bitmapRow.push(bitmap);
|
|
19873
|
+
offsetX += bitmapWidth;
|
|
19874
|
+
}
|
|
19875
|
+
offsetY += bitmapHeight;
|
|
19876
|
+
}
|
|
19877
|
+
}
|
|
19878
|
+
return {
|
|
19879
|
+
bitmapRows,
|
|
19880
|
+
colors
|
|
19881
|
+
};
|
|
19882
|
+
}
|
|
19883
|
+
async function imageToBitmaps(image, width, height, numberOfColors, mtu) {
|
|
19884
|
+
const canvas = resizeImage(image, width, height);
|
|
19885
|
+
return canvasToBitmaps(canvas, numberOfColors, mtu);
|
|
19886
|
+
}
|
|
19793
19887
|
function getBitmapNumberOfBytes(bitmap) {
|
|
19794
19888
|
const pixelDepth = numberOfColorsToPixelDepth(bitmap.numberOfColors);
|
|
19795
19889
|
const pixelsPerByte = pixelDepthToPixelsPerByte(pixelDepth);
|
|
@@ -19809,6 +19903,147 @@
|
|
|
19809
19903
|
_console$k.assertRangeWithError("bitmap.pixels[".concat(index, "]"), pixel, 0, bitmap.numberOfColors - 1);
|
|
19810
19904
|
});
|
|
19811
19905
|
}
|
|
19906
|
+
async function canvasToSprite(canvas, spriteName, numberOfColors, paletteName, overridePalette, spriteSheet) {
|
|
19907
|
+
var _spriteSheet$palettes;
|
|
19908
|
+
let paletteOffset = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;
|
|
19909
|
+
const {
|
|
19910
|
+
width,
|
|
19911
|
+
height
|
|
19912
|
+
} = canvas;
|
|
19913
|
+
let palette = (_spriteSheet$palettes = spriteSheet.palettes) === null || _spriteSheet$palettes === void 0 ? void 0 : _spriteSheet$palettes.find(palette => palette.name == paletteName);
|
|
19914
|
+
if (!palette) {
|
|
19915
|
+
var _spriteSheet$palettes2;
|
|
19916
|
+
palette = {
|
|
19917
|
+
name: paletteName,
|
|
19918
|
+
numberOfColors,
|
|
19919
|
+
colors: new Array(numberOfColors).fill("#000000")
|
|
19920
|
+
};
|
|
19921
|
+
spriteSheet.palettes = spriteSheet.palettes || [];
|
|
19922
|
+
(_spriteSheet$palettes2 = spriteSheet.palettes) === null || _spriteSheet$palettes2 === void 0 ? void 0 : _spriteSheet$palettes2.push(palette);
|
|
19923
|
+
}
|
|
19924
|
+
_console$k.log("pallete", palette);
|
|
19925
|
+
const sprite = {
|
|
19926
|
+
name: spriteName,
|
|
19927
|
+
width,
|
|
19928
|
+
height,
|
|
19929
|
+
paletteSwaps: [],
|
|
19930
|
+
commands: []
|
|
19931
|
+
};
|
|
19932
|
+
const results = await quantizeCanvas(canvas, numberOfColors, !overridePalette ? palette.colors : undefined);
|
|
19933
|
+
const blob = results.blob;
|
|
19934
|
+
const colorIndices = results.colorIndices;
|
|
19935
|
+
if (overridePalette) {
|
|
19936
|
+
results.colors.forEach((color, index) => {
|
|
19937
|
+
palette.colors[index + paletteOffset] = color;
|
|
19938
|
+
});
|
|
19939
|
+
}
|
|
19940
|
+
sprite.commands.push({
|
|
19941
|
+
type: "selectBitmapColors",
|
|
19942
|
+
bitmapColorPairs: new Array(numberOfColors).fill(0).map((_, index) => ({
|
|
19943
|
+
bitmapColorIndex: index,
|
|
19944
|
+
colorIndex: index + paletteOffset
|
|
19945
|
+
}))
|
|
19946
|
+
});
|
|
19947
|
+
const bitmap = {
|
|
19948
|
+
numberOfColors,
|
|
19949
|
+
pixels: colorIndices,
|
|
19950
|
+
width,
|
|
19951
|
+
height
|
|
19952
|
+
};
|
|
19953
|
+
sprite.commands.push({
|
|
19954
|
+
type: "drawBitmap",
|
|
19955
|
+
offsetX: 0,
|
|
19956
|
+
offsetY: 0,
|
|
19957
|
+
bitmap
|
|
19958
|
+
});
|
|
19959
|
+
const spriteIndex = spriteSheet.sprites.findIndex(sprite => sprite.name == spriteName);
|
|
19960
|
+
if (spriteIndex == -1) {
|
|
19961
|
+
spriteSheet.sprites.push(sprite);
|
|
19962
|
+
} else {
|
|
19963
|
+
_console$k.log("overwriting spriteIndex ".concat(spriteIndex));
|
|
19964
|
+
spriteSheet.sprites[spriteIndex] = sprite;
|
|
19965
|
+
}
|
|
19966
|
+
return {
|
|
19967
|
+
sprite,
|
|
19968
|
+
blob
|
|
19969
|
+
};
|
|
19970
|
+
}
|
|
19971
|
+
async function imageToSprite(image, spriteName, width, height, numberOfColors, paletteName, overridePalette, spriteSheet) {
|
|
19972
|
+
let paletteOffset = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0;
|
|
19973
|
+
const canvas = resizeImage(image, width, height);
|
|
19974
|
+
return canvasToSprite(canvas, spriteName, numberOfColors, paletteName, overridePalette, spriteSheet, paletteOffset);
|
|
19975
|
+
}
|
|
19976
|
+
const spriteSheetWithSingleBitmapCommandLength = calculateSpriteSheetHeaderLength(1) + drawSpriteBitmapCommandHeaderLength;
|
|
19977
|
+
function spriteSheetWithBitmapCommandAndSelectBitmapColorsLength(numberOfColors) {
|
|
19978
|
+
return spriteSheetWithSingleBitmapCommandLength + (1 + 1 + numberOfColors * 2);
|
|
19979
|
+
}
|
|
19980
|
+
async function canvasToSpriteSheet(canvas, spriteSheetName, numberOfColors, paletteName, maxFileLength) {
|
|
19981
|
+
const spriteSheet = {
|
|
19982
|
+
name: spriteSheetName,
|
|
19983
|
+
palettes: [],
|
|
19984
|
+
paletteSwaps: [],
|
|
19985
|
+
sprites: []
|
|
19986
|
+
};
|
|
19987
|
+
if (maxFileLength == undefined) {
|
|
19988
|
+
await canvasToSprite(canvas, "image", numberOfColors, paletteName, true, spriteSheet);
|
|
19989
|
+
} else {
|
|
19990
|
+
const {
|
|
19991
|
+
width,
|
|
19992
|
+
height
|
|
19993
|
+
} = canvas;
|
|
19994
|
+
const numberOfPixels = width * height;
|
|
19995
|
+
const pixelDepth = DisplayPixelDepths.find(pixelDepth => pixelDepthToNumberOfColors(pixelDepth) >= numberOfColors);
|
|
19996
|
+
_console$k.assertWithError(pixelDepth, "no pixelDepth found that covers ".concat(numberOfColors, " colors"));
|
|
19997
|
+
const pixelsPerByte = pixelDepthToPixelsPerByte(pixelDepth);
|
|
19998
|
+
const numberOfBytes = Math.ceil(numberOfPixels / pixelsPerByte);
|
|
19999
|
+
_console$k.log({
|
|
20000
|
+
width,
|
|
20001
|
+
height,
|
|
20002
|
+
numberOfPixels,
|
|
20003
|
+
pixelDepth,
|
|
20004
|
+
pixelsPerByte,
|
|
20005
|
+
numberOfBytes,
|
|
20006
|
+
maxFileLength
|
|
20007
|
+
});
|
|
20008
|
+
const maxPixelDataLength = maxFileLength - (spriteSheetWithBitmapCommandAndSelectBitmapColorsLength(numberOfColors) + 5);
|
|
20009
|
+
const imageRowPixelDataLength = Math.ceil(width / pixelsPerByte);
|
|
20010
|
+
const maxSpriteHeight = Math.floor(maxPixelDataLength / imageRowPixelDataLength);
|
|
20011
|
+
if (maxSpriteHeight >= height) {
|
|
20012
|
+
_console$k.log("image is small enough for a single sprite");
|
|
20013
|
+
await canvasToSprite(canvas, "image", numberOfColors, paletteName, true, spriteSheet);
|
|
20014
|
+
} else {
|
|
20015
|
+
var _spriteSheet$palettes3;
|
|
20016
|
+
const {
|
|
20017
|
+
colors
|
|
20018
|
+
} = await quantizeCanvas(canvas, numberOfColors);
|
|
20019
|
+
(_spriteSheet$palettes3 = spriteSheet.palettes) === null || _spriteSheet$palettes3 === void 0 ? void 0 : _spriteSheet$palettes3.push({
|
|
20020
|
+
name: paletteName,
|
|
20021
|
+
numberOfColors,
|
|
20022
|
+
colors
|
|
20023
|
+
});
|
|
20024
|
+
let offsetY = 0;
|
|
20025
|
+
let imageIndex = 0;
|
|
20026
|
+
const spriteCanvas = document.createElement("canvas");
|
|
20027
|
+
while (offsetY < height) {
|
|
20028
|
+
const spriteHeight = Math.min(maxSpriteHeight, height - offsetY);
|
|
20029
|
+
cropCanvas(canvas, 0, offsetY, width, spriteHeight, spriteCanvas);
|
|
20030
|
+
offsetY += spriteHeight;
|
|
20031
|
+
_console$k.log("cropping sprite ".concat(imageIndex), {
|
|
20032
|
+
offsetY,
|
|
20033
|
+
width,
|
|
20034
|
+
spriteHeight
|
|
20035
|
+
});
|
|
20036
|
+
await canvasToSprite(spriteCanvas, "image".concat(imageIndex), numberOfColors, paletteName, false, spriteSheet);
|
|
20037
|
+
imageIndex++;
|
|
20038
|
+
}
|
|
20039
|
+
}
|
|
20040
|
+
}
|
|
20041
|
+
return spriteSheet;
|
|
20042
|
+
}
|
|
20043
|
+
async function imageToSpriteSheet(image, spriteSheetName, width, height, numberOfColors, paletteName, maxFileLength) {
|
|
20044
|
+
const canvas = resizeImage(image, width, height);
|
|
20045
|
+
return canvasToSpriteSheet(canvas, spriteSheetName, numberOfColors, paletteName, maxFileLength);
|
|
20046
|
+
}
|
|
19812
20047
|
|
|
19813
20048
|
const _console$j = createConsole("DisplayManagerInterface", {
|
|
19814
20049
|
log: false
|
|
@@ -27443,6 +27678,9 @@
|
|
|
27443
27678
|
exports.VibrationTypes = VibrationTypes;
|
|
27444
27679
|
exports.VibrationWaveformEffects = VibrationWaveformEffects;
|
|
27445
27680
|
exports.WebSocketClient = WebSocketClient;
|
|
27681
|
+
exports.canvasToBitmaps = canvasToBitmaps;
|
|
27682
|
+
exports.canvasToSprite = canvasToSprite;
|
|
27683
|
+
exports.canvasToSpriteSheet = canvasToSpriteSheet;
|
|
27446
27684
|
exports.displayCurveTypeToNumberOfControlPoints = displayCurveTypeToNumberOfControlPoints;
|
|
27447
27685
|
exports.englishRegex = englishRegex;
|
|
27448
27686
|
exports.fontToSpriteSheet = fontToSpriteSheet;
|
|
@@ -27451,12 +27689,18 @@
|
|
|
27451
27689
|
exports.getFontUnicodeRange = getFontUnicodeRange;
|
|
27452
27690
|
exports.getMaxSpriteSheetSize = getMaxSpriteSheetSize;
|
|
27453
27691
|
exports.hexToRGB = hexToRGB;
|
|
27692
|
+
exports.imageToBitmaps = imageToBitmaps;
|
|
27693
|
+
exports.imageToSprite = imageToSprite;
|
|
27694
|
+
exports.imageToSpriteSheet = imageToSpriteSheet;
|
|
27454
27695
|
exports.intersectWireframes = intersectWireframes;
|
|
27455
27696
|
exports.isWireframePolygon = isWireframePolygon;
|
|
27456
27697
|
exports.maxDisplayScale = maxDisplayScale;
|
|
27457
27698
|
exports.mergeWireframes = mergeWireframes;
|
|
27458
27699
|
exports.parseFont = parseFont;
|
|
27459
27700
|
exports.pixelDepthToNumberOfColors = pixelDepthToNumberOfColors;
|
|
27701
|
+
exports.quantizeImage = quantizeImage;
|
|
27702
|
+
exports.resizeAndQuantizeImage = resizeAndQuantizeImage;
|
|
27703
|
+
exports.resizeImage = resizeImage;
|
|
27460
27704
|
exports.rgbToHex = rgbToHex;
|
|
27461
27705
|
exports.setAllConsoleLevelFlags = setAllConsoleLevelFlags;
|
|
27462
27706
|
exports.setConsoleLevelFlagsForType = setConsoleLevelFlagsForType;
|