Improved line-by-line font handling
This commit is contained in:
parent
b835ac45d7
commit
16bbac62fc
110
src/assets/Classes.js
Normal file
110
src/assets/Classes.js
Normal 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
@ -157,6 +157,7 @@
|
||||
</div>
|
||||
<!-- 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="./assets/Classes.js"></script>
|
||||
<script src="./assets/ITThermal.js"></script>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
</body>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user