Improved line-by-line font handling

This commit is contained in:
Skylar Grant 2026-01-06 09:35:51 -05:00
parent b835ac45d7
commit 16bbac62fc
3 changed files with 179 additions and 151 deletions

110
src/assets/Classes.js Normal file
View File

@ -0,0 +1,110 @@
/**
* Represents a line item with text, font information, and spacing options.
* @param {String} text The contents of the line
* @param {FontInfo} fontInfo Font details to use for the line
* @param {Boolean} moveDownAfter Provide extra spacing after this line?
* @returns LineItem
*/
class LineItem {
constructor(text, fontInfo, moveDownAfter) {
this.text = text;
this.fontInfo = fontInfo;
this.moveDownAfter = moveDownAfter || false;
return this;
}
/**
* Set the contents of the line
* @param {String} text The contents of the line
* @returns LineItem
*/
setText(text) {
if (typeof text !== 'string') {
throw new Error('Text must be a string');
}
this.text = text;
return this;
}
/**
* Set the font information for the line
* @param {FontInfo} fontInfo Font details to use for the line
* @returns LineItem
*/
setFontInfo(fontInfo) {
if (!(fontInfo instanceof FontInfo)) {
throw new Error('fontInfo must be an instance of FontInfo');
}
this.fontInfo = fontInfo;
return this;
}
/**
* Set whether to provide extra spacing after this line
* @param {Boolean} moveDownAfter Provide extra spacing after this line?
* @returns LineItem
*/
setMoveDownAfter(moveDownAfter) {
if (typeof moveDownAfter !== 'boolean') {
throw new Error('moveDownAfter must be a boolean');
}
this.moveDownAfter = moveDownAfter;
return this;
}
}
/**
* Represents font information including name, size, and style.
* @param {String} name The font name
* @param {Number} size The font size
* @param {String} style The font style
* @returns FontInfo
*/
class FontInfo {
constructor(name, size, style) {
this.name = name || 'Helvetica';
this.style = style || '';
this.size = size || 12;
return this;
}
/**
* Set the font name
* @param {String} name The font name
* @returns FontInfo
*/
setName(name) {
if (typeof name !== 'string') {
throw new Error('Font name must be a string');
}
this.name = name;
return this;
}
/**
* Set the font size
* @param {Number} size The font size
* @returns FontInfo
*/
setSize(size) {
if (typeof size !== 'number' || size <= 0) {
throw new Error('Font size must be a positive number');
}
this.size = size;
return this;
}
/**
* Set the font style
* @param {String} style The font style
* @returns FontInfo
*/
setStyle(style) {
if (typeof style !== 'string') {
throw new Error('Font style must be a string');
}
this.style = style;
return this;
}
}

File diff suppressed because one or more lines are too long

View File

@ -157,6 +157,7 @@
</div> </div>
<!-- Script Calls --> <!-- Script Calls -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js" integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js" integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/" crossorigin="anonymous"></script>
<script src="./assets/Classes.js"></script>
<script src="./assets/ITThermal.js"></script> <script src="./assets/ITThermal.js"></script>
<script src="https://cdn.tailwindcss.com"></script> <script src="https://cdn.tailwindcss.com"></script>
</body> </body>