MCPcopy Index your code
hub / github.com/ajatkj/scriptable / prefixImage

Function prefixImage

LSWeather.js:650–685  ·  view source on GitHub ↗
(prefixImage, text, fontName, prefixColor, overrideColor, oW, oH, bold)

Source from the content-addressed store, hash-verified

648FUNCTION prefixImage
649------------------------------------------------------------------*/
650async function prefixImage(prefixImage, text, fontName, prefixColor, overrideColor, oW, oH, bold){
651 let prefixCanvas;
652 let gap;
653 try {
654 if (bold) font = eval(`allfonts.${fontName}.boldFont`);
655 else font = eval(`allfonts.${fontName}.font`);
656 const fontSize = eval(`allfonts.${fontName}.size`);
657 const fontSizeInPx = Math.ceil(fontSize / DEVICE_SCALE) + "px";
658 const pW = prefixImage.size.width; // prefix width
659 const pH = prefixImage.size.height; // prefix height
660 const dW = (await getTextWidth(text, SYSTEM_FONT_WEIGHT + " " + fontSizeInPx + " " + SYSTEM_FONT_NAME)) * DEVICE_SCALE;
661
662 if (fontSize <= 30) gap = 4;
663 else if (fontSize <= 100) gap = 10;
664 else if (fontSize > 100) gap = 20;
665
666 // Create a new canvas for prefixImage + text of size item
667 prefixCanvas=new DrawContext();
668 prefixCanvas.opaque = false;
669 prefixCanvas.size = new Size(pW + dW + gap,oH);
670 if (prefixColor != "#######") prefixImage = await tintSFSymbol(prefixImage, new Color(prefixColor));
671 // Draw prefixImage at (x,y) = (0,0)
672 prefixCanvas.drawImageAtPoint(prefixImage, new Point(0,0));
673
674 const dataRect = new Rect(pW + gap,0,dW,oH);
675 prefixCanvas.setTextColor(new Color(overrideColor));
676 prefixCanvas.setFont(font);
677 prefixCanvas.setTextAlignedLeft();
678 prefixCanvas.drawTextInRect(text, dataRect);
679 } catch (error) {
680 errMsg = "prefixImage_" + error.message.replace(/\s/g,"_");
681 writeLOG(errMsg);
682 return;
683 }
684 return prefixCanvas.getImage();
685}
686/*------------------------------------------------------------------
687FUNCTION updateLayout
688------------------------------------------------------------------*/

Callers 1

placeDataElementFunction · 0.85

Calls 3

getTextWidthFunction · 0.85
tintSFSymbolFunction · 0.85
writeLOGFunction · 0.70

Tested by

no test coverage detected