(prefixImage, text, fontName, prefixColor, overrideColor, oW, oH, bold)
| 648 | FUNCTION prefixImage |
| 649 | ------------------------------------------------------------------*/ |
| 650 | async 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 | /*------------------------------------------------------------------ |
| 687 | FUNCTION updateLayout |
| 688 | ------------------------------------------------------------------*/ |
no test coverage detected