storybook
| Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.8 MiB | 
| Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.9 MiB | 
| Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.8 MiB | 
| Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.9 MiB | 
| Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.9 MiB | 
| Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 2.0 MiB | 
							
								
								
									
										
											BIN
										
									
								
								data/images/storybook/storybookPTB.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 54 KiB | 
							
								
								
									
										
											BIN
										
									
								
								data/images/storybook/storybookPTC.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 58 KiB | 
							
								
								
									
										
											BIN
										
									
								
								data/images/storybook/storybookPTG.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 58 KiB | 
							
								
								
									
										
											BIN
										
									
								
								data/images/storybook/storybookPTR.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 63 KiB | 
							
								
								
									
										
											BIN
										
									
								
								data/images/storybook/storybookPTU.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 58 KiB | 
							
								
								
									
										
											BIN
										
									
								
								data/images/storybook/storybookPTW.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 60 KiB | 
| @@ -414,7 +414,7 @@ function writeText(textObjectList, targetContext) { | ||||
| 		textParagraphCanvas.height = scaleY(textObjectList[i].height) + 2 * textCanvasBuffer | ||||
| 		textLineContext.clearRect(0, 0, textLineCanvas.width, textLineCanvas.height) | ||||
| 		textParagraphContext.clearRect(0, 0, textParagraphCanvas.width, textParagraphCanvas.height) | ||||
| 		var outline, shadow = 0, oneLine = false, outlineThickness = 2, textAlign = 'left', finishLine = false, paragraphSpace = 0, permanentLineShift = 0, temporaryLineShift = 0, fontStyle = '' | ||||
| 		var outline, shadow = 0, oneLine = false, outlineThickness = 2, textAlign = 'left', finishLine = false, paragraphSpace = 0, permanentLineShift = 0, temporaryLineShift = 0, fontStyle = '', manaCost = false, canWriteText = true | ||||
| 		textObjectList[i].otherParameters.forEach(item => eval(item)) | ||||
| 		textLineContext.strokeStyle = outline | ||||
| 		textLineContext.lineWidth = outlineThickness | ||||
| @@ -425,6 +425,10 @@ function writeText(textObjectList, targetContext) { | ||||
| 		var textY = 0 | ||||
| 		var currentLineWidth = 0 | ||||
| 		var splitText = textObjectList[i].text.replace(/\n/g, '{line}').replace(/{/g, 'fh48a3h2{').replace(/}/g, '}fh48a3h2').replace(/ /g, 'fh48a3h2 fh48a3h2').split('fh48a3h2') | ||||
| 		if (manaCost) { | ||||
| 			splitText = '{' + textObjectList[i].text.replace(/\n/g, '').replace(/{/g, ' ').replace(/}/g, ' ').replace(/ /g, '}fh48a3h2{right4}fh48a3h2{') + '}' | ||||
| 			splitText = splitText.split('fh48a3h2') | ||||
| 		} | ||||
| 		splitText.push('') | ||||
| 		innerloop: | ||||
| 		for (var n = 0; n < splitText.length; n++) { | ||||
| @@ -510,6 +514,12 @@ function writeText(textObjectList, targetContext) { | ||||
| 					} else if (manaSymbolCodeList.includes(possibleCodeLower.split('/').join(''))) { | ||||
| 						//THIS HAS TO BE THE LAST ONE | ||||
| 						var manaSymbolDiameter = textSize * 0.77 | ||||
| 						if (manaCost) { | ||||
| 							var shadowOffset = eval(manaCostShadowOffset) | ||||
| 							textLineContext.beginPath() | ||||
| 							textLineContext.arc(textX + manaSymbolDiameter / 2 + shadowOffset[0], textCanvasBuffer + textSize - manaSymbolDiameter * 0.45 + shadowOffset[1], manaSymbolDiameter / 2, 0, 2 * Math.PI) | ||||
| 							textLineContext.fill() | ||||
| 						} | ||||
| 						textLineContext.drawImage(manaSymbolImageList[manaSymbolCodeList.indexOf(possibleCodeLower.split('/').join(''))], textX, textCanvasBuffer + textSize - manaSymbolDiameter * 0.95, manaSymbolDiameter, manaSymbolDiameter) | ||||
| 						currentLineWidth += manaSymbolDiameter * 1.02 | ||||
| 						textX += manaSymbolDiameter * 1.02 | ||||
| @@ -519,6 +529,9 @@ function writeText(textObjectList, targetContext) { | ||||
| 				} else { | ||||
| 					wordToWrite = splitText[n] | ||||
| 				} | ||||
| 				if (!canWriteText) { | ||||
| 					wordToWrite = '' | ||||
| 				} | ||||
| 				if (wordToWrite != '' || n == splitText.length - 1 || finishLine) { | ||||
| 					var currentWordWidth = textLineContext.measureText(wordToWrite).width | ||||
| 					if (currentWordWidth + currentLineWidth > scaleX(textObjectList[i].width) || n == splitText.length - 1 || finishLine) { | ||||
|   | ||||
| @@ -6,7 +6,13 @@ if (!loadedVersions.includes('storybookRegular')) { | ||||
| 		['Black Frame', 'data/images/storybook/storybookFrameB.png', 0, 0, 1, 1, ['Full']], | ||||
| 		['Red Frame', 'data/images/storybook/storybookFrameR.png', 0, 0, 1, 1, ['Full']], | ||||
| 		['Green Frame', 'data/images/storybook/storybookFrameG.png', 0, 0, 1, 1, ['Full']], | ||||
| 		['Colorless Frame', 'data/images/storybook/storybookFrameC.png', 0, 0, 1, 1, ['Full']] | ||||
| 		['Colorless Frame', 'data/images/storybook/storybookFrameC.png', 0, 0, 1, 1, ['Full']], | ||||
| 		['White Power/Toughness', 'data/images/storybook/storybookPTW.png', 1114/1500, 1860/2100, 332/1500, 138/2100, ['Full']], | ||||
| 		['Blue Power/Toughness', 'data/images/storybook/storybookPTU.png', 1114/1500, 1860/2100, 332/1500, 138/2100, ['Full']], | ||||
| 		['Black Power/Toughness', 'data/images/storybook/storybookPTB.png', 1114/1500, 1860/2100, 332/1500, 138/2100, ['Full']], | ||||
| 		['Red Power/Toughness', 'data/images/storybook/storybookPTR.png', 1114/1500, 1860/2100, 332/1500, 138/2100, ['Full']], | ||||
| 		['Green Power/Toughness', 'data/images/storybook/storybookPTG.png', 1114/1500, 1860/2100, 332/1500, 138/2100, ['Full']], | ||||
| 		['Colorless Power/Toughness', 'data/images/storybook/storybookPTC.png', 1114/1500, 1860/2100, 332/1500, 138/2100, ['Full']] | ||||
| 	], 'frameClassStorybookRegular') | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -2,17 +2,21 @@ | ||||
| if (!loadedVersions.includes('storybook')) { | ||||
| 	loadedVersions.push('storybook') | ||||
| 	// loadMaskImages([['Storybook Right Half', 'data/images/storybook/maskStorybookRightHalf.png']]) | ||||
| 	//special additional mana cost, title, and type | ||||
| } | ||||
|  | ||||
| if (currentVersion != 'storybook') { | ||||
| 	currentVersion = 'storybook' | ||||
|  | ||||
| 	loadTextOptions([ | ||||
| 		new cardText('Card Title', '', 222/1500, 187/2100, 1248/1500, 80/2100, 'belerenb', 80/2100, 'black', ['oneLine=true']), | ||||
| 		new cardText('Card Type', '', 345/1500, 1268/2100, 1248/1500, 68/2100, 'belerenb', 68/2100, 'black', ['oneLine=true']), | ||||
| 		new cardText('Rules Text', '', 124/1500, 1348/2100, 600/1500, 624/2100, 'mplantin', 74/2100, 'black'), | ||||
| 		new cardText('Rules Text (Right)', '', 780/1500, 1348/2100, 600/1500, 624/2100, 'mplantin', 74/2100, 'black'), | ||||
| 		new cardText('Power/Toughness', '', 1190/1500, 1950/2100, 210/1500, 78/2100, 'belerenbsc', 78/2100, 'black', ['oneLine=true,textAlign="center"']) | ||||
| 		new cardText('Card Title', '', 222/1500, 188/2100, 1248/1500, 80/2100, 'belerenb', 80/2100, 'black', ['oneLine=true']), | ||||
| 		new cardText('Card Type', '', 345/1500, 1269/2100, 1248/1500, 68/2100, 'belerenb', 68/2100, 'black', ['oneLine=true']), | ||||
| 		new cardText('Rules Text', '', 125/1500, 1500/2100, 597/1500, 500/2100, 'mplantin', 74/2100, 'black'), | ||||
| 		new cardText('Rules Text (Right)', '', 796/1500, 1370/2100, 570/1500, 600/2100, 'mplantin', 74/2100, 'black'), | ||||
| 		new cardText('Power/Toughness', '', 1190/1500, 1957/2100, 210/1500, 78/2100, 'belerenbsc', 78/2100, 'black', ['oneLine=true,textAlign="center"']), | ||||
| 		new cardText('Adventure Title', '', 122/1500, 1386/2100, 600/1500, 62/2100, 'belerenb', 62/2100, 'white', ['oneLine=true']), | ||||
| 		new cardText('Adventure Type', '', 122/1500, 1480/2100, 600/1500, 62/2100, 'belerenb', 62/2100, 'white', ['oneLine=true']), | ||||
| 		new cardText('Adventure Mana Cost', '', 122/1500, 1394/2100, 600/1500, 82/2100, 'belerenb', 82/2100, 'black', ['oneLine=true','manaCost=true','canWriteText=false','textAlign="right"']) | ||||
| 	]) | ||||
|  | ||||
| 	artX = scaleX(50/1500) | ||||
| @@ -51,11 +55,14 @@ function bottomInfoStorybook() { | ||||
| 			ptBoxShift = 36/2100 | ||||
| 		} | ||||
| 	} | ||||
| 	if (ptBoxShift == 0) { | ||||
| 		Array.from(cardMaster.children).forEach(element => {if (element.children[2].innerHTML.includes('Power/Toughness')) {ptBoxShift = 36/2100}}) | ||||
| 	} | ||||
| 	writeText( | ||||
| 		[ | ||||
| 			{text: document.getElementById('inputInfoSet').value + '{right' + scaleX(0.005) + '}\u2605{right' + scaleX(0.005) + '}' + document.getElementById('inputInfoLanguage').value + ' {saveTextX}{artistbrush}{fontbelerenbsc}' + document.getElementById('inputInfoArtist').value, x: 97/1500, y: 2036/2100, width: 1306/1500, height: 36/2100, font: 'gothammedium', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true']}, | ||||
| 			{text: document.getElementById('inputInfoNumber').value + '{loadTextX}' + document.getElementById('inputInfoRarity').value, x: 97/1500, y: 2000/2100, width: 1306/1500, height: 36/2100, font: 'gothammedium', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true']}, | ||||
| 			{text: '{right}\u2122 & \u00a9 ' + date.getFullYear() + ' Wizards of the Coast', x: 97/1500, y: 2000/2100 + ptBoxShift, width: 1306/1500, height: 35/2100, font: 'mplantin', fontSize: 35/2100, fontColor: 'white', otherParameters: ['oneLine=true']}, | ||||
| 			{text: document.getElementById('inputInfoSet').value + '{right' + scaleX(0.005) + '}\u2605{right' + scaleX(0.005) + '}' + document.getElementById('inputInfoLanguage').value + ' {saveTextX}{artistbrush}{fontbelerenbsc}' + document.getElementById('inputInfoArtist').value, x: 97/1500, y: 2034/2100, width: 1306/1500, height: 36/2100, font: 'gothammedium', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true']}, | ||||
| 			{text: document.getElementById('inputInfoNumber').value + '{loadTextX}' + document.getElementById('inputInfoRarity').value, x: 97/1500, y: 1998/2100, width: 1306/1500, height: 36/2100, font: 'gothammedium', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true']}, | ||||
| 			{text: '{right}\u2122 & \u00a9 ' + date.getFullYear() + ' Wizards of the Coast', x: 97/1500, y: 1998/2100 + ptBoxShift, width: 1306/1500, height: 35/2100, font: 'mplantin', fontSize: 35/2100, fontColor: 'white', otherParameters: ['oneLine=true']}, | ||||
| 			{text: 'NOT FOR SALE', x: 97/1500, y: 2066/2100, width: 1306/1500, height: 30/2100, font: 'gothammedium', fontSize: 30/2100, fontColor: 'white', otherParameters: ['oneLine=true']}, | ||||
| 			{text: '{right}CardConjurer.com', x: 97/1500, y: 2030/2100 + ptBoxShift, width: 1306/1500, height: 30/2100, font: 'mplantin', fontSize: 30/2100, fontColor: 'white', otherParameters: ['oneLine=true']} | ||||
| 		], bottomInfoContext) | ||||
|   | ||||
 Kyle
					Kyle