forked from GithubMirrors/cardconjurer
		
	a new beginning
This commit is contained in:
		
							
								
								
									
										933
									
								
								data/scripts/main.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										933
									
								
								data/scripts/main.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,933 @@ | |||||||
|  | //============================================// | ||||||
|  | //       Card Conjurer, by Kyle Burton        // | ||||||
|  | //============================================// | ||||||
|  | /* Initiate! */ | ||||||
|  | window.onload = initiate | ||||||
|  | function initiate() { | ||||||
|  | 	var cardWidth = 750, cardHeight = 1050; | ||||||
|  | 	displayCanvas = document.getElementById("displayCanvas"); | ||||||
|  | 	document.getElementById("displayCanvas").width = cardWidth; | ||||||
|  | 	document.getElementById("displayCanvas").height = cardHeight; | ||||||
|  | 	displayContext = displayCanvas.getContext("2d"); | ||||||
|  | 	loadScript("data/scripts/sortable.js"); | ||||||
|  | 	// var el = document.getElementById('items'); | ||||||
|  | 	// var sortable = Sortable.create(el); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // import Sortable from './data/scripts/sortable.js' | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Functions that make stuff */ | ||||||
|  | function newCanvas(newCanvasName) { | ||||||
|  | 	window[newCanvasName + "Canvas"] = document.createElement("canvas"); | ||||||
|  | 	window[newCanvasName + "Canvas"].width = cardWidth; | ||||||
|  | 	window[newCanvasName + "Canvas"].height = cardHeight; | ||||||
|  | 	window[newCanvasName + "Context"] = window[newCanvasName + "Canvas"].getContext("2d"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Functions that manage the website */ | ||||||
|  | function toggleTabs(event, targetTab, tabSubject) { | ||||||
|  | 	var tabList = document.getElementsByClassName(tabSubject); | ||||||
|  | 	for (var i = 0; i < tabList.length; i++) { | ||||||
|  | 		tabList[i].classList.remove("tabVisible"); | ||||||
|  | 		tabList[i].classList.remove("tabOptionSelected"); | ||||||
|  | 	} | ||||||
|  | 	document.getElementById(targetTab).classList.add("tabVisible") | ||||||
|  | 	event.target.classList.add("tabOptionSelected") | ||||||
|  | } | ||||||
|  | function loadScript(scriptPath){ | ||||||
|  | 	var script = document.createElement("script"); | ||||||
|  | 	script.setAttribute("type","text/javascript"); | ||||||
|  | 	script.setAttribute("src", scriptPath); | ||||||
|  | 	if (typeof script != "undefined") { | ||||||
|  | 		document.getElementsByTagName("head")[0].appendChild(script); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // //Define some variables | ||||||
|  | // var cardWidth = 750, cardHeight = 1050 | ||||||
|  | // var version = {} | ||||||
|  | // var date = new Date() | ||||||
|  | // var initiated = false | ||||||
|  | // var suggestedColor = "White" | ||||||
|  | // document.getElementById("inputInfoNumber").value = date.getFullYear() | ||||||
|  | // //Make all the canvases and their contexts | ||||||
|  | // var mainCanvas = document.getElementById("mainCanvas") | ||||||
|  | // mainCanvas.width = cardWidth | ||||||
|  | // mainCanvas.height = cardHeight | ||||||
|  | // var mainContext = mainCanvas.getContext("2d") | ||||||
|  | // var canvasList = ["card", "mask", "image", "text", "paragraph", "line", "transparent", "crop", "bottomInfo", "setSymbol", "watermark", "temp"] | ||||||
|  | // for (var i = 0; i < canvasList.length; i++) { | ||||||
|  | // 	window[canvasList[i] + "Canvas"] = document.createElement("canvas") | ||||||
|  | // 	window[canvasList[i] + "Canvas"].width = cardWidth | ||||||
|  | // 	window[canvasList[i] + "Canvas"].height = cardHeight | ||||||
|  | // 	window[canvasList[i] + "Context"] = window[canvasList[i] + "Canvas"].getContext("2d") | ||||||
|  | // } | ||||||
|  | // //Create the arrays that keeps track of what parts of the card are what | ||||||
|  | // var cardMasterTypes = [] | ||||||
|  | // var cardMasterImages = [] | ||||||
|  | // //var cardMasterOpacity = [] | ||||||
|  | // var cardMasterOpacityValue = [] | ||||||
|  | // //Mana symbol Array setup | ||||||
|  | // var manaSymbolCodeList = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "w", "u", "b", "r", "g", "2w", "2u", "2b", "2r", "2g", "pw", "pu", "pb", "pr", "pg", "wu", "wb", "ub", "ur", "br", "bg", "rg", "rw", "gw", "gu", "x", "s", "c", "t","untap", "e", "y", "z", "1/2", "inf", "chaos", "plane", "l+", "l-", "l0", "oldtap", "artistbrush", "bar"] | ||||||
|  | // var manaSymbolImageList = [] | ||||||
|  | // //Manually create a few important images | ||||||
|  | // var cardArt = new Image(), setSymbol = new Image(), watermark = new Image() | ||||||
|  | // cardArt.crossOrigin = "anonymous" | ||||||
|  | // setSymbol.crossOrigin = "anonymous" | ||||||
|  | // watermark.crossOrigin = "anonymous" | ||||||
|  | // cardArt.onload = function() { | ||||||
|  | // 	updateCardCanvas() | ||||||
|  | // } | ||||||
|  | // setSymbol.onload = function() { | ||||||
|  | // 	updateSetSymbolCanvas() | ||||||
|  | // } | ||||||
|  | // watermark.onload = function() { | ||||||
|  | // 	updateWatermarkCanvas() | ||||||
|  | // } | ||||||
|  | // //Load the mana symbol images | ||||||
|  | // loadManaSymbolImages() | ||||||
|  | // //Load the CSV full of image data | ||||||
|  | // loadImageSpreadsheet() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // //============================================// | ||||||
|  | // //                 Functions                  // | ||||||
|  | // //============================================// | ||||||
|  | // var nameArray = [] | ||||||
|  | // //Load the CSV full of image data | ||||||
|  | // function loadImageSpreadsheet() { | ||||||
|  | // 	var xhttp = new XMLHttpRequest() | ||||||
|  | // 	xhttp.onreadystatechange = function() { | ||||||
|  | // 		if (this.readyState == 4) { | ||||||
|  | // 			var rawText = xhttp.responseText.split("\n") | ||||||
|  | // 			for (var i = 0; i < rawText.length; i ++) { | ||||||
|  | // 				for (var n = 0; n < rawText[0].split(",").length; n++) { | ||||||
|  | // 					if (i == 0) { | ||||||
|  | // 						window[rawText[0].split(",")[n].trim() + "Array"] = [] | ||||||
|  | // 					} else { | ||||||
|  | // 						window[rawText[0].split(",")[n].trim() + "Array"][i - 1] = rawText[i].split(",")[n].trim() | ||||||
|  | // 					} | ||||||
|  | // 				} | ||||||
|  | //                 if (i != 0) { | ||||||
|  | //                     nameArray[i - 1] = versionArray[i - 1] + colorArray[i - 1] + typeArray[i - 1] | ||||||
|  | //                 } | ||||||
|  | // 				if (i == rawText.length - 1) { | ||||||
|  | //                     init() | ||||||
|  | // 				} | ||||||
|  | // 			} | ||||||
|  | // 		} | ||||||
|  | // 	} | ||||||
|  | // 	xhttp.open("GET", "data/images/imageSpreadsheet.csv", true) | ||||||
|  | // 	xhttp.send() | ||||||
|  | // } | ||||||
|  | // //After the csv has been loaded, the init function runs. | ||||||
|  | // function init() { | ||||||
|  | // 	//Loads the base version (m15) | ||||||
|  | // 	changeVersionTo("m15") | ||||||
|  | // 	//Loads all the masks | ||||||
|  | // 	for (var i = 0; i < colorArray.length; i ++) { | ||||||
|  | // 		if (colorArray[i] == "Mask") { | ||||||
|  | // 			loadImage(i) | ||||||
|  | // 		} | ||||||
|  | // 	} | ||||||
|  | // 	//Runs any tests. This should not do anything when published. | ||||||
|  | // 	setTimeout(testFunction, 100) | ||||||
|  | //     initiated = true | ||||||
|  | //     textCodeTutorial() | ||||||
|  | //     //Checks cookies! | ||||||
|  | //     setTimeout(checkCookies, 100) | ||||||
|  | // } | ||||||
|  | // //Loads an image. Only actually loads images the first time each image is loaded, otherwise assigns it. | ||||||
|  | // function loadImage(index, target = "none") { | ||||||
|  | // 	if (window[nameArray[index]] == undefined) { | ||||||
|  | // 		window[nameArray[index]] = new customImage(index, target) | ||||||
|  | // 	} else { | ||||||
|  | // 		addToCardMaster(index, target) | ||||||
|  | // 	} | ||||||
|  | // } | ||||||
|  | // //Special image object | ||||||
|  | // function customImage(index, target) { | ||||||
|  | // 	this.loaded = false | ||||||
|  | // 	this.index = index | ||||||
|  | // 	this.image = new Image() | ||||||
|  | // 	this.image.src = "data/images/" + nameArray[index] + ".png" | ||||||
|  | // 	this.image.onload = function() { | ||||||
|  | // 		window[nameArray[index]].loaded = true | ||||||
|  | // 		addToCardMaster(index, target) | ||||||
|  | // 	} | ||||||
|  | // } | ||||||
|  | // //Adds an image to the card master. Replaces the previous one if it already existed | ||||||
|  | // function addToCardMaster(index, target) { | ||||||
|  | // 	if (target == "preview") { | ||||||
|  | // 		document.getElementById("imgPreview").src = window[nameArray[index]].image.src | ||||||
|  | // 		return | ||||||
|  | // 	} | ||||||
|  | //     if (document.getElementById("checkboxSecondary").checked) { | ||||||
|  | //         target += "Secondary" | ||||||
|  | //     } | ||||||
|  | // 	if ((target == typeArray[index]) || (secondaryArray[index] && target.replace("Secondary", "")) == typeArray[index] || (typeArray[index] == "Full")) { | ||||||
|  | // 		if (cardMasterTypes.includes(target)) { | ||||||
|  | // 			cardMasterImages[cardMasterTypes.indexOf(target)] = window[nameArray[index]] | ||||||
|  | // 		} else { | ||||||
|  | // 			cardMasterImages[cardMasterTypes.length] = window[nameArray[index]] | ||||||
|  | // 			cardMasterTypes[cardMasterTypes.length] = target | ||||||
|  | // 		} | ||||||
|  | // 		cardMasterUpdated() | ||||||
|  | // 	} | ||||||
|  | // } | ||||||
|  | // //Runs through all the assigned card images and draws them in | ||||||
|  | // function cardMasterUpdated() { | ||||||
|  | // 	imageContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 	for (var i = 0; i < version.typeOrder.length; i ++) { | ||||||
|  | // 		if (cardMasterTypes.includes(version.typeOrder[i])) { | ||||||
|  | // 			imageContext.mask(cardMasterTypes.indexOf(version.typeOrder[i])) | ||||||
|  | // 		} | ||||||
|  | // 	} | ||||||
|  | // } | ||||||
|  | // //Custom function that draws onto a canvas using masks | ||||||
|  | // CanvasRenderingContext2D.prototype.mask = function(cardMasterIndex) { | ||||||
|  | // 	maskContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 	maskContext.globalCompositeOperation = "source-over" | ||||||
|  | // 	if (cardMasterTypes[cardMasterIndex].includes("Secondary")) { | ||||||
|  | // 		maskContext.drawImage(window[nameArray[nameArray.indexOf("noneMaskSecondary")]].image, 0, 0, cardWidth, cardHeight) | ||||||
|  | // 		maskContext.globalCompositeOperation = "source-in" | ||||||
|  | // 	} | ||||||
|  | // 	var maskToUse = window[versionArray[cardMasterImages[cardMasterIndex].index] + "Mask" + cardMasterTypes[cardMasterIndex].replace("Secondary", "")] | ||||||
|  | // 	if (maskToUse != undefined) { | ||||||
|  | // 		maskContext.drawImage(maskToUse.image, xArray[maskToUse.index] * cardWidth, yArray[maskToUse.index] * cardHeight, widthArray[maskToUse.index] * cardWidth, heightArray[maskToUse.index] * cardHeight) | ||||||
|  | // 		maskContext.globalCompositeOperation = "source-in" | ||||||
|  | // 	} | ||||||
|  | // 	var mainImageIndex = cardMasterImages[cardMasterIndex].index | ||||||
|  | //     maskContext.drawImage(cardMasterImages[cardMasterIndex].image, xArray[mainImageIndex] * cardWidth, yArray[mainImageIndex] * cardHeight, widthArray[mainImageIndex] * cardWidth, heightArray[mainImageIndex] * cardHeight) | ||||||
|  | //     this.globalAlpha = cardMasterOpacityValue[version.typeOrder.indexOf(cardMasterTypes[cardMasterIndex].replace("Secondary", ""))] / 100 | ||||||
|  | // 	this.drawImage(maskCanvas, 0, 0, cardWidth, cardHeight) | ||||||
|  | //     this.globalAlpha = 1 | ||||||
|  | // 	if (cardMasterTypes[cardMasterIndex].includes("RareStamp")) { | ||||||
|  | // 		this.drawImage(window[nameArray[nameArray.indexOf("noneMaskStamp")]].image, version.rareStampX, version.rareStampY, version.rareStampWidth, version.rareStampHeight) | ||||||
|  | // 	} | ||||||
|  | // 	updateImageCanvas() | ||||||
|  | // } | ||||||
|  | // //All the canvas functions | ||||||
|  | // function updateImageCanvas() { | ||||||
|  | // //    imageContext.globalCompositeOperation = "destination-out" | ||||||
|  | // //    for (var i = 0; i < cardMasterOpacity.length; i ++) { | ||||||
|  | // //        imageContext.globalAlpha = 1 - cardMasterOpacityValue[i] / 100 | ||||||
|  | // //        opacityImage = window[version.currentVersion + "Mask" + cardMasterOpacity[i]].image | ||||||
|  | // //        imageContext.drawImage(opacityImage, 0, 0, cardWidth, cardHeight) | ||||||
|  | // //    } | ||||||
|  | // //    imageContext.globalAlpha = 1 | ||||||
|  | // //    imageContext.globalCompositeOperation = "source-over" | ||||||
|  | // 	updateBottomInfoCanvas() | ||||||
|  | // } | ||||||
|  | // function updateTextCanvas() { | ||||||
|  | // 	//post processing? | ||||||
|  | // 	updateCardCanvas() | ||||||
|  | // } | ||||||
|  | // var currentlyWritingText = false | ||||||
|  | // //Rewrites all the text! | ||||||
|  | // function updateText() { | ||||||
|  | //     if (!currentlyWritingText) { | ||||||
|  | //         currentlyWritingText = true | ||||||
|  | //         setTimeout(updateTextInnerShell, 100) | ||||||
|  | //     } | ||||||
|  | // } | ||||||
|  | // function updateTextInnerShell() { | ||||||
|  | //     version.textList[whichTextIndex][1] = document.getElementById("inputText").value | ||||||
|  | //     textContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | //     for (var i = 0; i < version.textList.length; i ++) { | ||||||
|  | //         var waitUntilIAmDone = textContext.writeText(version.textList[i][1], version.textList[i][2], version.textList[i][3], version.textList[i][4], version.textList[i][5], version.textList[i][6], version.textList[i][7], version.textList[i][8], version.textList[i][9]) | ||||||
|  | //         updateTextCanvas() | ||||||
|  | //     } | ||||||
|  | // } | ||||||
|  | // //figures out the placing of the set symbol | ||||||
|  | // function updateSetSymbolCanvas() { | ||||||
|  | // 	setSymbolContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 	var setSymbolWidth, setSymbolHeight, setSymbolX, setSymbolY | ||||||
|  | // 	if (version.setSymbolWidth / version.setSymbolHeight < setSymbol.width / setSymbol.height) { | ||||||
|  | // 		//wider | ||||||
|  | // 		setSymbolWidth = version.setSymbolWidth | ||||||
|  | // 		setSymbolHeight = version.setSymbolWidth / setSymbol.width * setSymbol.height | ||||||
|  | // 		setSymbolX = version.setSymbolRight - setSymbolWidth | ||||||
|  | // 		setSymbolY = version.setSymbolVertical - setSymbolHeight / 2 | ||||||
|  | // 	} else { | ||||||
|  | // 		//taller | ||||||
|  | // 		setSymbolHeight = version.setSymbolHeight | ||||||
|  | // 		setSymbolWidth = version.setSymbolHeight / setSymbol.height * setSymbol.width | ||||||
|  | // 		setSymbolX = version.setSymbolRight - setSymbolWidth | ||||||
|  | // 		setSymbolY = version.setSymbolVertical - setSymbolHeight / 2 | ||||||
|  | // 	} | ||||||
|  | // 	setSymbolContext.drawImage(setSymbol, setSymbolX, setSymbolY, setSymbolWidth, setSymbolHeight) | ||||||
|  | // 	updateCardCanvas() | ||||||
|  | // } | ||||||
|  | // function updateWatermarkCanvas() { | ||||||
|  | // 	if (document.getElementById("inputWatermarkPrimary").value != "none") { | ||||||
|  | // 		watermarkContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 		var watermarkX, watermarkY, watermarkWidth, watermarkHeight | ||||||
|  | // 		if (version.watermarkWidth / version.watermarkHeight < watermark.width / watermark.height) { | ||||||
|  | // 			//wider | ||||||
|  | // 			watermarkWidth = version.watermarkWidth | ||||||
|  | // 			watermarkHeight = version.watermarkWidth / watermark.width * watermark.height | ||||||
|  | // 			watermarkX = cardWidth / 2 - watermarkWidth / 2 | ||||||
|  | // 			watermarkY = version.watermarkY - watermarkHeight / 2 | ||||||
|  | // 		} else { | ||||||
|  | // 			//taller | ||||||
|  | // 			watermarkHeight = version.watermarkHeight | ||||||
|  | // 			watermarkWidth = version.watermarkHeight / watermark.height * watermark.width | ||||||
|  | // 			watermarkX = cardWidth / 2 - watermarkWidth / 2 | ||||||
|  | // 			watermarkY = version.watermarkY - watermarkHeight / 2 | ||||||
|  | // 		} | ||||||
|  | // 		watermarkContext.drawImage(watermark, watermarkX, watermarkY, watermarkWidth, watermarkHeight) | ||||||
|  | // 		watermarkContext.globalCompositeOperation = "source-in" | ||||||
|  | // 		if (document.getElementById("inputWatermarkPrimary").value != "default") { | ||||||
|  | // 			watermarkContext.fillStyle = document.getElementById("inputWatermarkPrimary").value | ||||||
|  | // 			watermarkContext.fillRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 		} | ||||||
|  | // 		if (document.getElementById("inputWatermarkSecondary").value != "none") { | ||||||
|  | // 			watermarkContext.globalCompositeOperation = "source-atop" | ||||||
|  | // 			tempContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 			tempContext.drawImage(window[nameArray[nameArray.indexOf("noneMaskSecondary")]].image, 0, 0, cardWidth, cardHeight) | ||||||
|  | // 			tempContext.globalCompositeOperation = "source-in" | ||||||
|  | // 			if (document.getElementById("inputWatermarkSecondary").value == "default") { | ||||||
|  | // 				tempContext.drawImage(watermark, watermarkX, watermarkY, watermarkWidth, watermarkHeight) | ||||||
|  | // 			} else { | ||||||
|  | // 				tempContext.fillStyle = document.getElementById("inputWatermarkSecondary").value | ||||||
|  | // 				tempContext.fillRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 			} | ||||||
|  | // 			tempContext.globalCompositeOperation = "source-over" | ||||||
|  | // 			watermarkContext.drawImage(tempCanvas, 0, 0, cardWidth, cardHeight) | ||||||
|  | // 		} | ||||||
|  | // 		watermarkContext.globalCompositeOperation = "source-over" | ||||||
|  | // 	} else { | ||||||
|  | // 		watermarkContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 	} | ||||||
|  | // 	updateCardCanvas() | ||||||
|  | // } | ||||||
|  | // //Does the bottom info function! This can be different depending on the version. | ||||||
|  | // function updateBottomInfoCanvas() { | ||||||
|  | // 	window[version.bottomInfoFunction]() | ||||||
|  | // } | ||||||
|  | // function updateCardCanvas() { | ||||||
|  | //     if (!initiated) { | ||||||
|  | //         return | ||||||
|  | //     } | ||||||
|  | // 	//clear it | ||||||
|  | // 	cardContext.fillStyle = "black" | ||||||
|  | // 	cardContext.fillRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 	//draw the art, frame, text, mana symbols, set symbol, watermark... | ||||||
|  | // 	cardContext.drawImage(cardArt, version.artX + getValue("inputCardArtX"), version.artY + getValue("inputCardArtY"), cardArt.width * getValue("inputCardArtZoom") / 100, cardArt.height * getValue("inputCardArtZoom") / 100) | ||||||
|  | // 	cardContext.drawImage(imageCanvas, 0, 0, cardWidth, cardHeight) | ||||||
|  | // 	cardContext.drawImage(watermarkCanvas, 0, 0, cardWidth, cardHeight) | ||||||
|  | // 	cardContext.drawImage(textCanvas, 0, 0, cardWidth, cardHeight) | ||||||
|  | // 	cardContext.drawImage(bottomInfoCanvas, 0, 0, cardWidth, cardHeight) | ||||||
|  | // 	cardContext.drawManaCost(document.getElementById("inputManaCost").value, version.manaCostX, version.manaCostY, version.manaCostDiameter, version.manaCostDistance, version.manaCostDirection) | ||||||
|  | // 	cardContext.drawImage(setSymbolCanvas, 0, 0, cardWidth, cardHeight) | ||||||
|  | // 	//clear the corners | ||||||
|  | // 	cardContext.globalCompositeOperation = "destination-out" | ||||||
|  | // 	cardContext.drawImage(window[nameArray[nameArray.indexOf("noneMaskCorners")]].image, 0, 0, cardWidth, cardHeight) | ||||||
|  | // 	cardContext.globalCompositeOperation = "source-over" | ||||||
|  | // 	//paste it to the visible canvas | ||||||
|  | // 	mainContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 	mainContext.drawImage(cardCanvas, 0, 0, cardWidth, cardHeight) | ||||||
|  | //     currentlyWritingText = false | ||||||
|  | // } | ||||||
|  | // //Loads an image in from user input | ||||||
|  | // function userLoadImage() { | ||||||
|  | // 	loadImage(getSelectedTab("tabSelectColor"), "preview") | ||||||
|  | // } | ||||||
|  | // //Enters an image from user input | ||||||
|  | // function userEnterImage() { | ||||||
|  | // 	loadImage(getSelectedTab("tabSelectColor"), getSelectedTab("frameType")) | ||||||
|  | // } | ||||||
|  | // //Removes an image from user input | ||||||
|  | // function userRemoveImage() { | ||||||
|  | //     var targetToRemove = getSelectedTab("frameType") | ||||||
|  | //     if (document.getElementById("checkboxSecondary").checked) { | ||||||
|  | //         targetToRemove += "Secondary" | ||||||
|  | //     } | ||||||
|  | // 	if (cardMasterTypes.includes(targetToRemove) && targetToRemove != "Full") { | ||||||
|  | // 		cardMasterImages.splice(cardMasterTypes.indexOf(targetToRemove), 1) | ||||||
|  | // 		cardMasterTypes.splice(cardMasterTypes.indexOf(targetToRemove), 1) | ||||||
|  | // 		cardMasterUpdated() | ||||||
|  | // 	} | ||||||
|  | // } | ||||||
|  | // //Loads a script | ||||||
|  | // function loadScript(scriptPath){ | ||||||
|  | // 	var script = document.createElement("script") | ||||||
|  | // 	script.setAttribute("type","text/javascript") | ||||||
|  | // 	script.setAttribute("src", scriptPath) | ||||||
|  | // 	if (typeof script != "undefined") { | ||||||
|  | // 		document.getElementsByTagName("head")[0].appendChild(script) | ||||||
|  | // 	} | ||||||
|  | // } | ||||||
|  | // //Adjusts values to the card size | ||||||
|  | // function cwidth(inputWidth) { | ||||||
|  | // 	return inputWidth / 750 * cardWidth | ||||||
|  | // } | ||||||
|  | // function cheight(inputHeight) { | ||||||
|  | // 	return inputHeight / 1050 * cardHeight | ||||||
|  | // } | ||||||
|  | // //shortcut for parseInt(document.getElementById("").value) | ||||||
|  | // function getValue(elementId) { | ||||||
|  | // 	return parseFloat(document.getElementById(elementId).value) | ||||||
|  | // } | ||||||
|  | // //Changes the version | ||||||
|  | // function changeVersionTo(versionToChangeTo) { | ||||||
|  | // 	loadScript("data/versions/" + versionToChangeTo + "Version.js") | ||||||
|  | // } | ||||||
|  | // function finishChangingVersion() { | ||||||
|  | //     hideShowFrameTypes() | ||||||
|  | // 	for (var i = 0; i < version.textList.length; i ++) { | ||||||
|  | // 		document.getElementById("inputWhichTextTabs").innerHTML += "<div class='tabButton text' onclick='tabFunction(event, `text`, `option" + version.textList[i][0] + "`, `textTabFunction`)'>" + version.textList[i][0] + "</div>" | ||||||
|  | //         if (i == 0) { | ||||||
|  | //             document.getElementsByClassName("tabButton text")[0].classList.add("activeTab") | ||||||
|  | //         } | ||||||
|  | // 	} | ||||||
|  | // 	updateText() | ||||||
|  | // 	updateBottomInfoCanvas() | ||||||
|  | // 	updateSetSymbolCanvas() | ||||||
|  | // } | ||||||
|  | // function hideShowFrameTypes() { | ||||||
|  | //     document.getElementById("frameType").innerHTML = "" | ||||||
|  | //     document.getElementById("inputImageTypeOpacity").innerHTML = "" | ||||||
|  | //     for (var i = 0; i < version.typeOrder.length; i ++) { | ||||||
|  | //         if (!version.typeOrder[i].includes("Secondary") && (!version.typesAdvanced.includes(version.typeOrder[i]) || document.getElementById("checkboxAdvanced").checked)) { | ||||||
|  | //             tabSelectAddOption("frameType", version.typeOrder[i], version.typeOrder[i]) | ||||||
|  | //             document.getElementById("inputImageTypeOpacity").innerHTML += "<option>" + version.typeOrder[i] + "</option>" | ||||||
|  | // //            cardMasterOpacity[cardMasterOpacity.length] = version.typeOrder[i] | ||||||
|  | //             cardMasterOpacityValue[cardMasterOpacityValue.length] = 100 | ||||||
|  | //         } | ||||||
|  | //     } | ||||||
|  | //     document.getElementsByClassName("frameType")[0].className += " activeTab" | ||||||
|  | //     hideShowColors(true) | ||||||
|  | //     loadOpacityValue() | ||||||
|  | // } | ||||||
|  | // //Hides and shows the options in inputImageColor to match the selected type | ||||||
|  | // function hideShowColors(enter = false) { | ||||||
|  | // 	document.getElementById("tabSelectColor").innerHTML = "" | ||||||
|  | //     var activeTab = false | ||||||
|  | // 	for (var i = 0; i < versionArray.length; i ++) { | ||||||
|  | // 		if (versionArray[i] == version.currentVersion && (typeArray[i] == getSelectedTab("frameType").replace("Secondary", "") || (typeArray[i] == "Full" && version.typeNotFull.includes(getSelectedTab("frameType")) == false)) && colorArray[i] != "Mask" && (document.getElementById("checkboxAdvanced").checked || advancedArray[i] == "FALSE")) { | ||||||
|  | // 			tabSelectAddOption("tabSelectColor", displayNameArray[i], i) | ||||||
|  | //             if (displayNameArray[i] == suggestedColor) { | ||||||
|  | //                 document.getElementsByClassName("tabSelectColor")[document.getElementsByClassName("tabSelectColor").length - 1].className += " activeTab" | ||||||
|  | //                 activeTab = true | ||||||
|  | //             } | ||||||
|  | // 		} | ||||||
|  | // 	} | ||||||
|  | //     if (!activeTab && document.getElementsByClassName("tabSelectColor").length > 0) { | ||||||
|  | //         document.getElementsByClassName("tabSelectColor")[0].className += " activeTab" | ||||||
|  | //     } | ||||||
|  | // 	if (enter) { | ||||||
|  | // 		userEnterImage() | ||||||
|  | // 	} | ||||||
|  | // 	userLoadImage() | ||||||
|  | // } | ||||||
|  | // //Loads the opacity value | ||||||
|  | // function loadOpacityValue() { | ||||||
|  | // 	document.getElementById("inputOpacityValue").value = cardMasterOpacityValue[version.typeOrder.indexOf(document.getElementById("inputImageTypeOpacity").value)] || 100 | ||||||
|  | // } | ||||||
|  | // function opacityValueUpdated() { | ||||||
|  | // 	cardMasterOpacityValue[version.typeOrder.indexOf(document.getElementById("inputImageTypeOpacity").value)] = document.getElementById("inputOpacityValue").value | ||||||
|  | // 	cardMasterUpdated() | ||||||
|  | // } | ||||||
|  | // //Custom text function! This acts on any codes and makes things look nice :) | ||||||
|  | // CanvasRenderingContext2D.prototype.writeText = function(text = "", textX = 0, textY = 0, textWidth = cardWidth, textHeight = cardHeight, textFont = "belerenbsc", inputTextSize = 38, textColor="black", other="") { | ||||||
|  | // 	paragraphContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 	var textSize = inputTextSize | ||||||
|  | // 	lineContext.font = textSize + "px " + textFont | ||||||
|  | // 	lineContext.fillStyle = textColor | ||||||
|  | // 	var otherParameters = other.split(",") | ||||||
|  | // 	var outline, shadow = 0, oneLine = false, outlineWidth = 2, textAlign = "left", verticalAlign = true, lineSpace = 1 | ||||||
|  | // 	for (var i = 0; i < otherParameters.length; i ++) { | ||||||
|  | // 		eval(otherParameters[i]) | ||||||
|  | // 	} | ||||||
|  | // 	lineContext.strokeStyle = outline | ||||||
|  | // 	lineContext.lineWidth = outlineWidth | ||||||
|  | // 	var currentLineX = 0 | ||||||
|  | // 	var currentLineY = textY + textSize * 0.45 | ||||||
|  | // 	var uniqueSplitter = "9dn57gwbt4sh" | ||||||
|  | // 	var splitString = text.replace(/ /g, uniqueSplitter +  " " + uniqueSplitter).replace(/{/g, uniqueSplitter + "{").replace(/}/g, "}" + uniqueSplitter).split(uniqueSplitter) | ||||||
|  | // 	splitString[splitString.length] = " " | ||||||
|  | // 	var lastWordAdded = "" | ||||||
|  | // 	for (var i = 0; i < splitString.length; i++) { | ||||||
|  | // 		if (splitString[i] != "") { | ||||||
|  | // 			var wordToWrite = splitString[i] | ||||||
|  | // 			var finishLine = false | ||||||
|  | // 			if (splitString[i].includes("{") && splitString[i].includes("}")) { | ||||||
|  | // 				//It may be a code | ||||||
|  | // 				wordToWrite = "" | ||||||
|  | // 				possibleCodeLower = splitString[i].toLowerCase().replace("{", "").replace("}", "") | ||||||
|  | // 				if (possibleCodeLower == "line" && !oneLine) { | ||||||
|  | // 					finishLine = true | ||||||
|  | //                     currentLineY += textSize * 0.35 | ||||||
|  | // 				} else if (possibleCodeLower == "linenospace" && ! oneLine) { | ||||||
|  | // 					finishLine = true | ||||||
|  | // 				} else if (possibleCodeLower == "bar" || possibleCodeLower == "flavor") { | ||||||
|  | // 					finishLine = true | ||||||
|  | // 					var barWidth = manaSymbolImageList[63].width | ||||||
|  | // 					var barHeight = manaSymbolImageList[63].height | ||||||
|  | // 					paragraphContext.drawImage(manaSymbolImageList[63], textX + textWidth / 2 - barWidth / 2, currentLineY + textSize * 0.6, barWidth, barHeight) | ||||||
|  | // 					currentLineY += textSize * 0.8 | ||||||
|  | // 					if (possibleCodeLower == "flavor") { | ||||||
|  | // 						lineContext.font = "italic " + (textSize - 3) + "px " + textFont | ||||||
|  | // 					} | ||||||
|  | // 				} else if (possibleCodeLower.includes("fontsize")) { | ||||||
|  | // 					textSize += parseInt(possibleCodeLower.slice(8, possibleCodeLower.length)) | ||||||
|  | // 					lineContext.font = textSize + "px " + textFont | ||||||
|  | // 				} else if (possibleCodeLower == "i") { | ||||||
|  | // 					lineContext.font = "italic " + textSize + "px " + textFont | ||||||
|  | // 				} else if (possibleCodeLower == "/i") { | ||||||
|  | // 					lineContext.font = textSize + "px " + textFont | ||||||
|  | // 				} else if (possibleCodeLower == "center") { | ||||||
|  | // 					textAlign = "center" | ||||||
|  | // 				} else if (possibleCodeLower == "right") { | ||||||
|  | // 					textAlign = "right" | ||||||
|  | // 				} else if (possibleCodeLower == "left") { | ||||||
|  | // 					textAlign = "left" | ||||||
|  | // 				} else if (possibleCodeLower.includes("up")) { | ||||||
|  | // 					currentLineY -= (parseInt(possibleCodeLower.slice(2, possibleCodeLower.length))) | ||||||
|  | // 				} else if (possibleCodeLower.includes("down")) { | ||||||
|  | // 					currentLineY += (parseInt(possibleCodeLower.slice(4, possibleCodeLower.length))) | ||||||
|  | // 				} else if (possibleCodeLower.includes("left")) { | ||||||
|  | // 					currentLineX -= (parseInt(possibleCodeLower.slice(4, possibleCodeLower.length))) | ||||||
|  | // 				} else if (possibleCodeLower.includes("right")) { | ||||||
|  | // 					currentLineX += (parseInt(possibleCodeLower.slice(5, possibleCodeLower.length))) | ||||||
|  | // 				} else if (possibleCodeLower == "artistbrush") { | ||||||
|  | // 					var artistBrushWidth = textSize * 1.2 | ||||||
|  | // 					lineContext.drawImage(manaSymbolImageList[62], currentLineX, currentLineY - artistBrushWidth * 0.58, artistBrushWidth, artistBrushWidth * 13 / 21) | ||||||
|  | // 					currentLineX += artistBrushWidth * 1.1 | ||||||
|  | // 				} else if (possibleCodeLower.includes("fontcolor")) { | ||||||
|  | // 					lineContext.fillStyle = possibleCodeLower.slice(9, possibleCodeLower.length) | ||||||
|  | // 				}else if (possibleCodeLower.includes("font")) { | ||||||
|  | // 					textFont = possibleCodeLower.slice(5, possibleCodeLower.length) | ||||||
|  | // 					lineContext.font = textSize + "px " + textFont | ||||||
|  | // 				} else if (manaSymbolCodeList.includes(possibleCodeLower)) { | ||||||
|  | // 					//THIS HAS TO BE THE LAST ONE | ||||||
|  | // 					var manaSymbolDiameter = textSize * 0.77 | ||||||
|  | // 					lineContext.drawImage(manaSymbolImageList[manaSymbolCodeList.indexOf(possibleCodeLower)], currentLineX, currentLineY - manaSymbolDiameter * 0.95, manaSymbolDiameter, manaSymbolDiameter) | ||||||
|  | // 					currentLineX += manaSymbolDiameter * 1.02 | ||||||
|  | // 				} else { | ||||||
|  | // 					wordToWrite = splitString[i] | ||||||
|  | // 				} | ||||||
|  | // 			} | ||||||
|  | // 			if (wordToWrite != "" || finishLine == true) { | ||||||
|  | // 				//We're left with a word. Write it. | ||||||
|  | // 				var currentWordWidth = lineContext.measureText(wordToWrite).width | ||||||
|  | // 				if (i == splitString.length - 1) { | ||||||
|  | // 					//forces the last artificially added space to be too wide, making sure the last line is drawn in. | ||||||
|  | // 					currentWordWidth = textWidth + 1 | ||||||
|  | // 				} | ||||||
|  | // 				if (currentLineX + currentWordWidth > textWidth || finishLine) { | ||||||
|  | // 					//Finish the line | ||||||
|  | // 					if (oneLine && i != splitString.length - 1 && inputTextSize > 1) { | ||||||
|  | // 						lineContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 						this.writeText(text, textX, textY, textWidth, textHeight, textFont, inputTextSize - 1, textColor, other) | ||||||
|  | // 						return | ||||||
|  | // 					} | ||||||
|  | // 					var alignAdjust = 0 | ||||||
|  | // 					if (textAlign == "center" || textAlign == "right") { | ||||||
|  | // 						if (lastWordAdded == " ") { | ||||||
|  | // 							currentLineX -= textContext.measureText("   ").width | ||||||
|  | // 						} | ||||||
|  | // 						if (textAlign == "center") { | ||||||
|  | // 							alignAdjust = textWidth / 2 - currentLineX  / 2 + textX | ||||||
|  | // 						} else if (textAlign == "right") { | ||||||
|  | // 							alignAdjust = textWidth + textX - currentLineX | ||||||
|  | // 						} | ||||||
|  | // 					} else { | ||||||
|  | // 						alignAdjust += textX | ||||||
|  | // 					} | ||||||
|  | // 					paragraphContext.drawImage(lineCanvas, 0 + alignAdjust, 0, cardWidth, cardHeight) | ||||||
|  | // 					lineContext.clearRect(0, 0, cardWidth, cardHeight) | ||||||
|  | // 					currentLineY += textSize * lineSpace | ||||||
|  | // 					currentLineX = 0 | ||||||
|  | // 					if (wordToWrite == " ") { | ||||||
|  | // 						currentWordWidth = 0 | ||||||
|  | // 					} | ||||||
|  | // 				} | ||||||
|  | // 				//Whether or not the current line is finished, write to it. | ||||||
|  | // 				if (shadow > 0) { | ||||||
|  | // 					lineContext.fillText(wordToWrite, currentLineX + shadow, currentLineY + shadow) | ||||||
|  | // 				} | ||||||
|  | // 				if (outline != undefined) { | ||||||
|  | // 					lineContext.strokeText(wordToWrite, currentLineX, currentLineY) | ||||||
|  | // 				} | ||||||
|  | // 				lineContext.fillText(wordToWrite, currentLineX, currentLineY) | ||||||
|  | // 				currentLineX += currentWordWidth | ||||||
|  | // 				lastWordAdded = wordToWrite | ||||||
|  | // 			} | ||||||
|  | // 		} | ||||||
|  | // 	} | ||||||
|  | // 	verticalAdjust = 0 | ||||||
|  | // 	if (verticalAlign) { | ||||||
|  | // 		verticalAdjust = (textHeight + textY - currentLineY + textSize) / 2 | ||||||
|  | // 	} | ||||||
|  | // 	this.drawImage(paragraphCanvas, 0, 0 + verticalAdjust, cardWidth, cardHeight) | ||||||
|  | // 	return "done" | ||||||
|  | // } | ||||||
|  | // //Loads up all the mana symbol images | ||||||
|  | // function loadManaSymbolImages() { | ||||||
|  | // 	for (var i = 0; i < manaSymbolCodeList.length; i++) { | ||||||
|  | // 		manaSymbolImageList[i] = new Image() | ||||||
|  | // 		manaSymbolImageList[i].src = "data/images/manaSymbols/" + i + ".png" | ||||||
|  | // 	} | ||||||
|  | // } | ||||||
|  | // //Draws a mana cost | ||||||
|  | // CanvasRenderingContext2D.prototype.drawManaCost = function(text, symbolsX, symbolsY, diameter = 50, distance = -50, direction = "horizontal") { | ||||||
|  | // 	var splitManaCost = text.replace(/{/g, " ").replace(/}/g, " ").split(" ") | ||||||
|  | // 	var currentSymbolIndex = 0 | ||||||
|  | // 	var currentX = symbolsX | ||||||
|  | // 	var currentY = symbolsY | ||||||
|  | // 	for (var i = splitManaCost.length - 1; i >= 0; i --) { | ||||||
|  | // 		if (manaSymbolCodeList.includes(splitManaCost[i])) { | ||||||
|  | // 			if (Array.isArray(direction) && i < direction.length) { | ||||||
|  | // 				currentX = direction[i][0] | ||||||
|  | // 				currentY = direction[i][1] | ||||||
|  | // 			} | ||||||
|  | // 			this.fillStyle = "black" | ||||||
|  | // 			this.beginPath() | ||||||
|  | // 			this.arc(currentX + diameter / 2.1, currentY + diameter / 1.8, diameter / 2, 0, 2 * Math.PI, false) | ||||||
|  | // 			this.fill() | ||||||
|  | // 			this.drawImage(manaSymbolImageList[manaSymbolCodeList.indexOf(splitManaCost[i])], currentX, currentY, diameter, diameter) | ||||||
|  | // 			if (direction == "horizontal") { | ||||||
|  | // 				currentX += distance | ||||||
|  | // 			} else if (direction == "vertical") { | ||||||
|  | // 				currentY += distance | ||||||
|  | // 			} | ||||||
|  | // 		} | ||||||
|  | // 	} | ||||||
|  | // } | ||||||
|  | // //Changes the textarea content to whichever text is currently selected for editing | ||||||
|  | // var whichTextIndex = 0 | ||||||
|  | // function changeWhichText() { | ||||||
|  | // 	for (var i = 0; i < version.textList.length; i ++) { | ||||||
|  | // 		if (version.textList[i][0] == document.getElementById("inputWhichText").value) { | ||||||
|  | // 			whichTextIndex = i | ||||||
|  | // 		} | ||||||
|  | // 	} | ||||||
|  | // 	document.getElementById("inputText").value = version.textList[whichTextIndex][1] | ||||||
|  | // } | ||||||
|  | // //Removes all the white pixels in an image | ||||||
|  | // var whiteThreshold = 250 | ||||||
|  | // function whiteToTransparent(targetImage, source = targetImage.src) { | ||||||
|  | //     //Create image, size canvas, draw image | ||||||
|  | //     var imgTempTarget = new Image() | ||||||
|  | //     imgTempTarget.crossOrigin = "anonymous" | ||||||
|  | //     imgTempTarget.src = source | ||||||
|  | //     imgTempTarget.onload = function() { | ||||||
|  | //     	if (imgTempTarget.width > 0 && imgTempTarget.height > 0) { | ||||||
|  | //     		transparentCanvas.width = imgTempTarget.width | ||||||
|  | //     		transparentCanvas.height = imgTempTarget.height | ||||||
|  | //     		transparentContext.drawImage(imgTempTarget, 0, 0) | ||||||
|  | //             //declare variables | ||||||
|  | //             var width = transparentCanvas.width | ||||||
|  | //             var height = transparentCanvas.height | ||||||
|  | //             var imageData = transparentContext.getImageData(0, 0, transparentCanvas.width, transparentCanvas.height) | ||||||
|  | //             var x, y, index | ||||||
|  | //             //Go through every pixel and | ||||||
|  | //             for (y = 0; y < height; y++) { | ||||||
|  | //             	for (x = 0; x < width; x++) { | ||||||
|  | //                     index = (y * width + x) * 4 | ||||||
|  | //                     if (imageData.data[index] >= whiteThreshold && imageData.data[index + 1] >= whiteThreshold && imageData.data[index + 2] >= whiteThreshold) { | ||||||
|  | //                         imageData.data[index + 3] = 0 | ||||||
|  | //                     } | ||||||
|  | //                 } | ||||||
|  | //             } | ||||||
|  | //             transparentContext.clearRect(0, 0, width, height) | ||||||
|  | //             transparentContext.putImageData(imageData, 0, 0) | ||||||
|  | //             targetImage.src = transparentCanvas.toDataURL() | ||||||
|  | //             autocrop(targetImage) | ||||||
|  | //         } | ||||||
|  | //     } | ||||||
|  | // } | ||||||
|  | // //Removes all the whitespace in an image | ||||||
|  | // function autocrop(targetImage, source = targetImage.src) { | ||||||
|  | //     //Create image, size canvas, draw image | ||||||
|  | //     var imgTempTarget = new Image() | ||||||
|  | //     imgTempTarget.crossOrigin = "anonymous" | ||||||
|  | //     imgTempTarget.src = source | ||||||
|  | //     imgTempTarget.onload = function() { | ||||||
|  | //         if (imgTempTarget.width > 0 && imgTempTarget.height > 0) { | ||||||
|  | //             cropCanvas.width = imgTempTarget.width | ||||||
|  | //             cropCanvas.height = imgTempTarget.height | ||||||
|  | //             cropContext.drawImage(imgTempTarget, 0, 0) | ||||||
|  | //             //declare variables | ||||||
|  | //             var width = cropCanvas.width | ||||||
|  | //             var height = cropCanvas.height | ||||||
|  | //             var pix = {x:[], y:[]} | ||||||
|  | //             var imageData = cropContext.getImageData(0, 0, cropCanvas.width, cropCanvas.height) | ||||||
|  | //             var x, y, index | ||||||
|  | //             if (imageData.data.length > 4) { | ||||||
|  | //             	//Go through every pixel and | ||||||
|  | // 	            for (y = 0; y < height; y++) { | ||||||
|  | // 	                for (x = 0; x < width; x++) { | ||||||
|  | // 	                    //(y * width + x) * 4 + 3 calculates the index at which the alpha value of the pixel at x, y is given | ||||||
|  | // 	                    index = (y * width + x) * 4 + 3 | ||||||
|  | // 	                    if (imageData.data[index] > 0) { | ||||||
|  | // 	                        //pix is the image object that stores two arrays of x and y coordinates. These stored coordinates are all the visible pixels | ||||||
|  | // 	                        pix.x.push(x) | ||||||
|  | // 	                        pix.y.push(y) | ||||||
|  | // 	                    } | ||||||
|  | // 	                } | ||||||
|  | // 	            } | ||||||
|  | // 	            //sorts the arrays numerically | ||||||
|  | // 	            pix.x.sort(function(a,b){return a-b}) | ||||||
|  | // 	            pix.y.sort(function(a,b){return a-b}) | ||||||
|  | // 	            var n = pix.x.length - 1 | ||||||
|  | // 	            //Finds the difference between the leftmost and rightmost visible pixels, and the topmost and bottommost pixels, cuts out a section of the canvas | ||||||
|  | // 	            width = pix.x[n] - pix.x[0] | ||||||
|  | // 	            height = pix.y[n] - pix.y[0] | ||||||
|  | // 	            var cropped = cropContext.getImageData(pix.x[0], pix.y[0], width + 1, height + 1) | ||||||
|  | // 	            //Resizes the canvas and draws cropped image | ||||||
|  | // 	            cropCanvas.width = width + 1 | ||||||
|  | // 	            cropCanvas.height = height + 1 | ||||||
|  | // 	            cropContext.putImageData(cropped, 0, 0) | ||||||
|  | // 	            //Saves the newly cropped image to the given image | ||||||
|  | // 	            targetImage.src = cropCanvas.toDataURL() | ||||||
|  | //             } | ||||||
|  | //         } | ||||||
|  | //     } | ||||||
|  | // } | ||||||
|  | // //The next several functions are all about loading images! | ||||||
|  | // function uploadImage(event, destination) { | ||||||
|  | // 	var input = event.target | ||||||
|  | // 	var reader = new FileReader() | ||||||
|  | // 	reader.onload = function() { | ||||||
|  | // 		var dataURL = reader.result | ||||||
|  | // 		destination.src = dataURL | ||||||
|  | // 	} | ||||||
|  | // 	reader.readAsDataURL(input.files[0]) | ||||||
|  | // } | ||||||
|  | // var savedArtList = [], cardArtUrlList = [], cardArtArtistList = [] | ||||||
|  | // function inputCardArtName(cardArtNameInput) { | ||||||
|  | // 	var xhttp = new XMLHttpRequest() | ||||||
|  | // 	xhttp.onreadystatechange = function() { | ||||||
|  | // 		if (this.readyState == 4 && this.status == 200) { | ||||||
|  | // 			savedArtList = this.responseText.split('"art_crop":"') | ||||||
|  | // 			savedArtList.splice(0, 1) | ||||||
|  | // 			document.getElementById("inputCardArtNameNumber").max = savedArtList.length | ||||||
|  | // 			document.getElementById("inputCardArtNameNumber").value = 1 | ||||||
|  | // 			for (i = 0; i < savedArtList.length; i ++) { | ||||||
|  | // 				cardArtUrlList[i] = savedArtList[i].split('","border_crop":')[0] | ||||||
|  | // 			} | ||||||
|  | // 			for (i = 0; i < savedArtList.length; i ++) { | ||||||
|  | // 				cardArtArtistList[i] = savedArtList[i].slice(savedArtList[i].indexOf('"artist":"') + 10, savedArtList[i].indexOf('","artist_ids":')) | ||||||
|  | // 			} | ||||||
|  | // 			inputCardArtNameNumber(1) | ||||||
|  | // 		} else if (this.readyState == 4 && this.status == 404) { | ||||||
|  | // 			alert("Sorry, but we can't seem to find any art for '" + cardArtNameInput + "'") | ||||||
|  | // 		} | ||||||
|  | // 	} | ||||||
|  | // 	xhttp.open("GET", "https://api.scryfall.com/cards/search?order=released&unique=art&q=name%3D" + cardArtNameInput.replace(/ /g, "_"), true) | ||||||
|  | // 	xhttp.send() | ||||||
|  | // } | ||||||
|  | // function inputCardArtNameNumber(cardArtNameNumberInput) { | ||||||
|  | // 	cardArt.src = cardArtUrlList[cardArtNameNumberInput - 1] | ||||||
|  | // 	document.getElementById("inputInfoArtist").value = cardArtArtistList[cardArtNameNumberInput - 1] | ||||||
|  | // 	updateBottomInfoCanvas() | ||||||
|  | // } | ||||||
|  | // //Downloads the image! | ||||||
|  | // function downloadCardImage(linkElement) { | ||||||
|  | // 	if (document.getElementById("inputInfoArtist").value.replace(/ /g, "") != "") { | ||||||
|  | // 		linkElement.download = version.textList[0][1].toLowerCase().replace(/ /g, "_") + ".png" | ||||||
|  | // 		if (linkElement.download == ".png") { | ||||||
|  | // 			linkElement.download = "card.png" | ||||||
|  | // 		} | ||||||
|  | // 	} else { | ||||||
|  | // 		event.preventDefault() | ||||||
|  | // 		alert("You must properly credit an artist before downloading") | ||||||
|  | // 	} | ||||||
|  | // 	var cardImageData = cardCanvas.toDataURL() | ||||||
|  | // 	if (cardImageData == undefined) { | ||||||
|  | // 		alert("Sorry, it seems that you cannot download your card. Please try using a different browser/device.") | ||||||
|  | // 	} | ||||||
|  | // 	linkElement.href = cardImageData | ||||||
|  | // } | ||||||
|  | // //Toggles the visibility of tooltips | ||||||
|  | // function toggleTooltips(revealed = true) { | ||||||
|  | // 	var tooltipList = document.getElementsByClassName("tooltiptext") | ||||||
|  | // 	for (var i = 0; i < tooltipList.length; i ++) { | ||||||
|  | // 		if (revealed) { | ||||||
|  | // 			tooltipList[i].classList.remove("hidden") | ||||||
|  | // 		} else { | ||||||
|  | // 			tooltipList[i].classList.add("hidden") | ||||||
|  | // 		} | ||||||
|  | // 	} | ||||||
|  | // 	setCookie("tooltipsToggled", revealed + "") | ||||||
|  | // } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // //DELETE: (for testing purposes only) | ||||||
|  | // function testFunction() { | ||||||
|  | // 	loadScript("data/scripts/setCodeList.js") | ||||||
|  | // } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // function setCookie(cookieName, cookieValue, cookieTime = (5 * 365 * 24 * 60 * 60 * 1000)) { //years*days*hours*minutes*seconds*milliseconds | ||||||
|  | //   	var tempDate = new Date(); | ||||||
|  | //   	tempDate.setTime(tempDate.getTime() + cookieTime); | ||||||
|  | //   	var expires = "expires=" + tempDate.toUTCString(); | ||||||
|  | //   	document.cookie = cookieName + "=" + cookieValue + ";" + expires + ";path=/"; | ||||||
|  | // } | ||||||
|  | // function getCookie(cookieName) { | ||||||
|  | //   	var name = cookieName + "="; | ||||||
|  | //   	var cookieArray = document.cookie.split(";"); | ||||||
|  | //   	for(var i = 0; i < cookieArray.length; i++) { | ||||||
|  | //     	var tempCookie = cookieArray[i]; | ||||||
|  | //     	while (tempCookie.charAt(0) == " ") { | ||||||
|  | //       		tempCookie = tempCookie.substring(1); | ||||||
|  | //     	} | ||||||
|  | //     	if (tempCookie.indexOf(name) == 0) { | ||||||
|  | //      		return tempCookie.substring(name.length, tempCookie.length); | ||||||
|  | //     	} | ||||||
|  | //   	} | ||||||
|  | //   	return ""; | ||||||
|  | // } | ||||||
|  | // function checkCookies() { | ||||||
|  | // 	if (getCookie("tooltipsToggled") == "false") { | ||||||
|  | // 		toggleTooltips(false) | ||||||
|  | // 		document.getElementById("tooltipToggler").checked = false | ||||||
|  | // 	} | ||||||
|  | //     if (getCookie("advancedBorders") == "true") { | ||||||
|  | //         document.getElementById("checkboxAdvanced").checked = true | ||||||
|  | //         hideShowFrameTypes() | ||||||
|  | //     } | ||||||
|  | // } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // function tabFunction(event, section, target, specialFunction = "none") { | ||||||
|  | //     var tabButtons = document.getElementsByClassName("tabButton " + section) | ||||||
|  | //     for (var i = 0; i < tabButtons.length; i++) { | ||||||
|  | //         tabButtons[i].className = tabButtons[i].className.replace(" activeTab", "") | ||||||
|  | //     } | ||||||
|  | //     event.currentTarget.className += " activeTab" | ||||||
|  | //     if (specialFunction != "none") { | ||||||
|  | //         window[specialFunction](event, section, target) | ||||||
|  | //     } else { | ||||||
|  | //         var tabContents = document.getElementsByClassName("tabContent " + section) | ||||||
|  | //         for (var i = 0; i < tabContents.length; i++) { | ||||||
|  | //             tabContents[i].className = tabContents[i].className.replace(" displayed", "") | ||||||
|  | //         } | ||||||
|  | //         document.getElementById(target).className += " displayed" | ||||||
|  | //     } | ||||||
|  | // } | ||||||
|  | // function textTabFunction(event, section, target) { | ||||||
|  | //     for (var i = 0; i < version.textList.length; i ++) { | ||||||
|  | //         if (version.textList[i][0] == target.replace("option", "")) { | ||||||
|  | //             whichTextIndex = i | ||||||
|  | //         } | ||||||
|  | //     } | ||||||
|  | //     document.getElementById("inputText").value = version.textList[whichTextIndex][1] | ||||||
|  | // } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // function tabSelect(event, selectSection) { | ||||||
|  | //     var tabSelectButtons = document.getElementsByClassName(selectSection) | ||||||
|  | //     for (var i = 0; i < tabSelectButtons.length; i++) { | ||||||
|  | //         tabSelectButtons[i].className = tabSelectButtons[i].className.replace(" activeTab", "") | ||||||
|  | //     } | ||||||
|  | //     event.target.className += " activeTab" | ||||||
|  | //     if (selectSection == "frameType") { | ||||||
|  | //         hideShowColors() | ||||||
|  | //     } else if (selectSection == "tabSelectColor") { | ||||||
|  | //         userLoadImage() | ||||||
|  | //         suggestedColor = displayNameArray[getSelectedTab("tabSelectColor")] | ||||||
|  | //     } | ||||||
|  | // } | ||||||
|  | // function getSelectedTab(selectSection) { | ||||||
|  | //     var tabSelectButtons = document.getElementsByClassName(selectSection) | ||||||
|  | //     for (var i = 0; i < tabSelectButtons.length; i++) { | ||||||
|  | //         if (tabSelectButtons[i].className.includes("activeTab")) { | ||||||
|  | //             return tabSelectButtons[i].id | ||||||
|  | //         } | ||||||
|  | //     } | ||||||
|  | // } | ||||||
|  | // function tabSelectAddOption(tabSection, displayName, tabValue) { | ||||||
|  | //     document.getElementById(tabSection).innerHTML += "<div class='tabButton tabSelectButton " + tabSection + "' id='" + tabValue + "' onclick='tabSelect(event, `" + tabSection + "`)'>" + displayName + "</div>" | ||||||
|  | // } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // function textCodeTutorial() { | ||||||
|  | // 	var textCodeTutorialString = `line-skips to the next line | ||||||
|  | // 	_linenospace-skips to the next line, but doesn't add spacing | ||||||
|  | // 	_bar-skips to the next line, and adds the flavor text bar | ||||||
|  | // 	_flavor-skips to the next line, adds the flavor text bar, and italicizes the following text | ||||||
|  | // 	_i-italicizes the following text | ||||||
|  | // 	_/i-removes italics from the following text | ||||||
|  | // 	_fontsize#-changes the font size to # pixels | ||||||
|  | // 	_fontcolor#-changes the color to #. Can use color names, or hex codes | ||||||
|  | // 	_left-justifies text to the left | ||||||
|  | // 	_center-justifies text to the center | ||||||
|  | // 	_right-justifies text to the right | ||||||
|  | // 	_up#-moves the following text # pixels up | ||||||
|  | // 	_down#-moves the following text # pixels down | ||||||
|  | // 	_left#-moves the following text # pixels left | ||||||
|  | // 	_right#-moves the following text # pixels right | ||||||
|  | // 	_SYMBOL-creates a mana symbol, where SYMBOL can be: w, u, b, r, g, 1, 2, 3, etc...` | ||||||
|  | // 	var textCodeTutorialArray = textCodeTutorialString.split("_") | ||||||
|  | // 	for (var i = 0; i < textCodeTutorialArray.length; i ++) { | ||||||
|  | // 		document.getElementById("textCodeTutorial").innerHTML += "<div class='selectable'><b>{" + textCodeTutorialArray[i].split("-")[0] + "}</b></div><div>" + textCodeTutorialArray[i].split("-")[1] + "</div>" | ||||||
|  | // 	} | ||||||
|  | // } | ||||||
|  |  | ||||||
|  | // function advancedBordersClicked() { | ||||||
|  | //     hideShowFrameTypes() | ||||||
|  | //     setCookie("advancedBorders", document.getElementById("checkboxAdvanced").checked + "") | ||||||
|  | // } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // //textCodeTutorial() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // /*To do list: | ||||||
|  | // watermarks | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // possibly border color? | ||||||
|  | // */ | ||||||
							
								
								
									
										3692
									
								
								data/scripts/sortable.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3692
									
								
								data/scripts/sortable.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										272
									
								
								data/site/newStyles.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										272
									
								
								data/site/newStyles.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,272 @@ | |||||||
|  | /*fonts*/ | ||||||
|  | @font-face { | ||||||
|  | 	font-family: gothammedium; | ||||||
|  | 	src: url("../fonts/gotham-medium.ttf"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  | 	font-family: belerenb; | ||||||
|  | 	src: url("../fonts/beleren-b.ttf"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  | 	font-family: belerenbsc; | ||||||
|  | 	src: url("../fonts/beleren-bsc.ttf"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  | 	font-family: matrix; | ||||||
|  | 	src: url("../fonts/matrix.ttf"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  | 	font-family: matrixb; | ||||||
|  | 	src: url("../fonts/matrix-b.ttf"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  | 	font-family: matrixbsc; | ||||||
|  | 	src: url("../fonts/matrix-bsc.ttf"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  | 	font-family: mplantin; | ||||||
|  | 	src: url("../fonts/mplantin.ttf"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  | 	font-family: mplantini; | ||||||
|  | 	src: url("../fonts/mplantin-i.ttf"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  | 	font-family: goudymedieval; | ||||||
|  | 	src: url("../fonts/goudy-medieval.ttf"); | ||||||
|  | } | ||||||
|  | :root { | ||||||
|  | 	--shifting-color-1: #00c300; | ||||||
|  | 	--shifting-color-1-light: #c8ff64; | ||||||
|  | 	--light-color: #eee; | ||||||
|  | 	--dark-color: #333; | ||||||
|  |     --clear-light: #fff2; | ||||||
|  |     --clear-mid: #fff4; | ||||||
|  |     --clear-dark: #fff6; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*Background & Footer*/ | ||||||
|  | html { | ||||||
|  | 	background-image: linear-gradient(to bottom right, var(--shifting-color-1), var(--shifting-color-1-light)); | ||||||
|  | 	background-attachment: fixed; | ||||||
|  | 	overflow-x: hidden; | ||||||
|  | 	-webkit-user-select: none; | ||||||
|  | 	-moz-user-select: none; | ||||||
|  | 	-ms-user-select: none; | ||||||
|  | 	user-select: none; | ||||||
|  | 	font-size: 8pt; | ||||||
|  | } | ||||||
|  | body { | ||||||
|  | 	margin: 0px; | ||||||
|  | 	background-image: url(images/lowpoly.png); | ||||||
|  | 	background-attachment: fixed; | ||||||
|  | 	background-size: cover; | ||||||
|  | } | ||||||
|  | footer { | ||||||
|  | 	background-color: var(--dark-color); | ||||||
|  | 	padding: 2.5em; | ||||||
|  | 	font: 1.3em gothammedium; | ||||||
|  | 	color: var(--light-color); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*Canvas*/ | ||||||
|  | canvas { | ||||||
|  | 	width: calc(100%); | ||||||
|  | 	height: auto; | ||||||
|  | 	max-width: 750px; | ||||||
|  | 	max-height: 1050px; | ||||||
|  | } | ||||||
|  | .canvasContainer { | ||||||
|  | 	text-align: center; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*Grids*/ | ||||||
|  | .mainGrid { | ||||||
|  | 	padding: 0.3em; | ||||||
|  | 	display: grid; | ||||||
|  | 	grid-gap: 1.5em; | ||||||
|  | 	grid-template-columns: auto; | ||||||
|  | 	font: 1.6em mplantin; | ||||||
|  | } | ||||||
|  | .imageGrid { | ||||||
|  | 	display: grid; | ||||||
|  | 	grid-template-columns: auto 9em; | ||||||
|  | 	min-height: 12.5em; | ||||||
|  | } | ||||||
|  | .footerGrid { | ||||||
|  | 	display: grid; | ||||||
|  | 	grid-template-columns: auto; | ||||||
|  | 	grid-gap: 2em; | ||||||
|  | } | ||||||
|  | .autoGrid { | ||||||
|  | 	display: grid; | ||||||
|  | 	grid-template-columns: repeat(auto-fit, minmax(6em, 1fr)); | ||||||
|  | 	grid-auto-rows: min-content; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*Misc elements*/ | ||||||
|  | .download { | ||||||
|  |     text-align: center; | ||||||
|  |     font: 1.5em belerenbsc; | ||||||
|  | } | ||||||
|  | .pageTitle { | ||||||
|  | 	font: 5em belerenbsc; | ||||||
|  | 	text-align: center; | ||||||
|  | 	padding-top: 0.3em; | ||||||
|  | } | ||||||
|  | .bar { | ||||||
|  | 	background-image: url(../images/manaSymbols/63.png); | ||||||
|  | 	background-position: center; | ||||||
|  | 	background-repeat: no-repeat; | ||||||
|  | 	background-size: 100% 2px; | ||||||
|  | 	width: 100%; | ||||||
|  | 	height: 1em; | ||||||
|  | } | ||||||
|  | .imgPreview { | ||||||
|  | 	width: 100%; | ||||||
|  | } | ||||||
|  | .layer { | ||||||
|  | 	padding: 2em 2em; | ||||||
|  | 	color: black; | ||||||
|  | 	font-size: 2em; | ||||||
|  | 	text-align: center; | ||||||
|  |     margin-bottom: 3em; | ||||||
|  |     background-color: var(--light-color); | ||||||
|  | 	background-image: url(images/layerBackground.png); | ||||||
|  | 	background-position: center; | ||||||
|  | 	background-repeat: no-repeat; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*Various text modifications*/ | ||||||
|  | .title { | ||||||
|  | 	text-align: center; | ||||||
|  | 	font: 1.5em belerenbsc; | ||||||
|  | } | ||||||
|  | .truncate { | ||||||
|  |     overflow: hidden; | ||||||
|  |     white-space: nowrap; | ||||||
|  |     text-overflow: ellipsis; | ||||||
|  |     text-indent: 0em; | ||||||
|  | } | ||||||
|  | .paragraph { | ||||||
|  | 	font: 1em mplantin; | ||||||
|  | 	text-align: left; | ||||||
|  | } | ||||||
|  | .indent { | ||||||
|  | 	text-indent: 2em; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*General modifications*/ | ||||||
|  | .hidden { | ||||||
|  | 	display: none; | ||||||
|  | } | ||||||
|  | .visible { | ||||||
|  | 	display: inline-block; | ||||||
|  | } | ||||||
|  | .selectable { | ||||||
|  | 	user-select: all; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*Hyperlinks*/ | ||||||
|  | a { | ||||||
|  | 	color: black; | ||||||
|  | } | ||||||
|  | a:hover { | ||||||
|  | 	color: var(--dark-color); | ||||||
|  | } | ||||||
|  | footer a { | ||||||
|  | 	color: white; | ||||||
|  | } | ||||||
|  | footer a:hover { | ||||||
|  | 	color: var(--shifting-color-1-light); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*Controls the area taken by the canvas*/ | ||||||
|  | @media screen and (min-width: 888pt) { | ||||||
|  | 	/*Makes room for the canvas and controls to be side by side*/ | ||||||
|  | 	.mainGrid { | ||||||
|  | 		padding: 1.5em; | ||||||
|  | 		grid-template-columns: calc(750px + 2px) auto; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @media screen and (min-width: calc(750px + 2em)) { | ||||||
|  | 	/*The canvas can be full size and doesn't have to scale anymore*/ | ||||||
|  | 	canvas { | ||||||
|  | 		width: 750px; | ||||||
|  | 		height: 1050px; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | /*The screen is big enough (larger than phone, likely) to use a larger font*/ | ||||||
|  | @media screen and (min-width: 263pt) { | ||||||
|  | 	html { | ||||||
|  | 		font-size: 10pt; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | /*These control tooltips for mobile devices vs. desktops/laptops*/ | ||||||
|  | /*@media screen and (min-width: 1024px) { | ||||||
|  | 	.tooltip:hover .tooltiptext { | ||||||
|  | 	  	visibility: visible; | ||||||
|  | 	  	opacity: 1; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @media screen and (max-width: 1023px) { | ||||||
|  | 	.tooltip:focus .tooltiptext, div.tooltip > input:focus + .tooltiptext, div.tooltip > textarea:focus + .tooltiptext { | ||||||
|  | 	  	visibility: visible; | ||||||
|  | 	  	opacity: 1; | ||||||
|  | 	} | ||||||
|  | }*/ | ||||||
|  | /*Allows the footer to be displayed horizontally on Desktop*/ | ||||||
|  | @media screen and (min-width: 375pt) { | ||||||
|  | 	.footerGrid { | ||||||
|  | 		display: grid; | ||||||
|  | 		grid-template-columns: repeat(auto-fit, minmax(0px, 1fr)); | ||||||
|  | 		grid-gap: 1em; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*WIP (or I'm too lazy to sort these)*/ | ||||||
|  | .tabMenu { | ||||||
|  | 	display: grid; | ||||||
|  | 	grid-template-columns: repeat(auto-fit, minmax(3em, 1fr)); | ||||||
|  | 	grid-auto-rows: min-content; | ||||||
|  | } | ||||||
|  | .tabOption { | ||||||
|  | 	font: 1.5em belerenbsc; | ||||||
|  | 	text-align: center; | ||||||
|  | 	background-color: var(--clear-light); | ||||||
|  | 	border: 1px solid var(--light-color); | ||||||
|  | 	transition: 0.5s; | ||||||
|  | } | ||||||
|  | .tabOption:hover { | ||||||
|  | 	background-color: var(--clear-mid); | ||||||
|  | 	transition: 0s; | ||||||
|  | } | ||||||
|  | .tabOption.tabOptionSelected { | ||||||
|  | 	background-color: var(--clear-dark); | ||||||
|  | } | ||||||
|  | .tabContent:not(.tabVisible) { | ||||||
|  | 	display: none; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										97
									
								
								test.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								test.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,97 @@ | |||||||
|  | <!DOCTYPE html5> | ||||||
|  | <html> | ||||||
|  | <head> | ||||||
|  | 	<title>Card Conjurer</title> | ||||||
|  | 	<!-- Other things --> | ||||||
|  | 	<link rel="stylesheet" href="data/site/newStyles.css"> | ||||||
|  | 	<meta charset="UTF-8"> | ||||||
|  | 	<meta name="viewport" content="width=device-width, initial-scale=1"> | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  | 	<ul id="items"> | ||||||
|  | 		<li>item 1</li> | ||||||
|  | 		<li>item 2</li> | ||||||
|  | 		<li>item 3</li> | ||||||
|  | 	</ul> | ||||||
|  | 	<div class="mainDiv"> | ||||||
|  | 		<div class="pageTitle"> | ||||||
|  | 			Card Conjurer | ||||||
|  | 		</div> | ||||||
|  | 		<div class="mainGrid"> | ||||||
|  | 			<div class="canvasContainer"> | ||||||
|  | 				<canvas id="displayCanvas"></canvas> | ||||||
|  | 			</div> | ||||||
|  | 			<div class="cardMenu"> | ||||||
|  |                 <!-- Card editor tabs begin here! --> | ||||||
|  |                 <div class="tabMenu"> | ||||||
|  |                 	<div class="tabOption mainEditor tabOptionSelected" onclick="toggleTabs(event, 'frame', 'mainEditor')">Frame</div> | ||||||
|  |                 	<div class="tabOption mainEditor" onclick="toggleTabs(event, 'text', 'mainEditor')">Text</div> | ||||||
|  |                 	<div class="tabOption mainEditor" onclick="toggleTabs(event, 'art', 'mainEditor')">Art</div> | ||||||
|  |                 </div> | ||||||
|  |                 <div class="tabContent mainEditor tabVisible" id="frame"> | ||||||
|  |                 	oh boy the frames! | ||||||
|  |                 </div> | ||||||
|  |                 <div class="tabContent mainEditor" id="text"> | ||||||
|  |                 	oh cool some text! | ||||||
|  |                 </div> | ||||||
|  |                 <div class="tabContent mainEditor" id="art"> | ||||||
|  |                 	art stuff! | ||||||
|  |                 </div> | ||||||
|  |                 <!-- Card editor tabs end here! --> | ||||||
|  |                 <div class="bar"></div> | ||||||
|  | 				<div> | ||||||
|  | 					<div class="download"> | ||||||
|  | 						<a onclick="downloadCardImage(this)" id="downloadCardImage" href="" target="_blank" download="card.png">Download</a> | ||||||
|  | 					</div> | ||||||
|  | 				</div> | ||||||
|  | 			</div> | ||||||
|  | 		</div> | ||||||
|  | 		<div class="hidden"></div> | ||||||
|  | 		<div class="layer"> | ||||||
|  | 			<div class="title">Welcome to Card Conjurer!</div> | ||||||
|  | 			<div class="paragraph indent">Card Conjurer is a free program that helps you create custom Magic: The Gathering cards. There are already plenty of custom card makers out there, but what sets Card Conjurer apart from the rest is its live-edit capabilities. You can immediatly see the effects of any change you make, which makes card customization easier and overall a better experience.</div> | ||||||
|  | 		</div> | ||||||
|  | 		<div class="layer"> | ||||||
|  | 			<div class="title">About Me</div> | ||||||
|  | 			<div class="paragraph indent"> | ||||||
|  | 				Hi! My name is Kyle Burton and I am currently a high school student. I used to play Pokemon, but when a friend introduced me to Magic in 2013 I sold my pocket monsters and bought an M14 Intro Pack. Ever since that day Magic has been my all time favorite game. In addition to playing games, I've always <a href="https://www.youtube.com/watch?v=ERCzN91JicA" target="blank">loved technology</a>. During the 2017-18 school year I tought myself how to code Javascript, and a little bit of HTML and CSS. The following summer I created Kyle's Card Imager (<a href="https://scryfall.com/card/5dn/134/krark-clan-ironworks" target="blank">KCI</a>). It was pretty simple but I soon began to add more border images like Miracle or Nyx. After a few months I decided to share my creation, so I renamed it Card Conjurer and uploaded it to Github, and then in April of 2019 I bought the domain <a href="#" onclick="alert('You\'re already there, silly!')">cardconjurer.com</a>. | ||||||
|  | 			</div> | ||||||
|  | 		</div> | ||||||
|  | 		<div class="layer"> | ||||||
|  |             <div class="title">Want More Customization?</div> | ||||||
|  | 			<div class="paragraph indent"> | ||||||
|  |                 If you'd like to try out some more frames, scroll to the bottom of this page and check the box next to "Advanced Borders" - CardConjurer.com will remember this setting, so you only need to do this once per device. | ||||||
|  | 			</div> | ||||||
|  |             <div class="paragraph indent"> | ||||||
|  |                 This version of the website is currently a work in progress, so it doesn't have all the features the original Card Conjurer had. If you'd like to go back to the old version, <a href="old/index.html">click here</a>. | ||||||
|  |             </div> | ||||||
|  | 		</div> | ||||||
|  | 		<div class="layer"> | ||||||
|  | 			<div class="title">Have Any Questions?</div> | ||||||
|  | 			<div class="paragraph indent"> | ||||||
|  |                 If you have any questions please don't hesitate to email me at: <div class="truncate"><a href="https://mail.google.com/mail/u/0/?view=cm&fs=1&to=CardConjurerMTG@gmail.com&su=Card%20Conjurer&tf=1" target="_blank">CardConjurerMTG@gmail.com</a></div>Even if you made a cool card and want to share, I'd love to see it! | ||||||
|  | 			</div> | ||||||
|  | 		</div> | ||||||
|  | 	</div> | ||||||
|  | </body> | ||||||
|  | <footer> | ||||||
|  | 	<div class="footerGrid"> | ||||||
|  | 		<div> | ||||||
|  | 			Card Conjurer By Kyle Burton<br> | ||||||
|  | 		</div> | ||||||
|  | 		<div> | ||||||
|  | 			Navigation:<br> | ||||||
|  | 			<a href="index.html">Card Creator</a><br> | ||||||
|  | 			<a href="life.html">Life Counter</a> | ||||||
|  | 		</div> | ||||||
|  | 		<div> | ||||||
|  | 			Legal:<br> | ||||||
|  | 			<a href="disclaimer.html">Disclaimer</a><br> | ||||||
|  | 			<a href="termsOfUse.html">Terms of Use</a> | ||||||
|  | 		</div> | ||||||
|  | 	</div> | ||||||
|  | </footer> | ||||||
|  | <script src="data/scripts/colors.js"></script> | ||||||
|  | <!-- <script src="data/scripts/sortable.js" type="module"></script> --> | ||||||
|  | <script src="data/scripts/main.js" type="module"></script> | ||||||
|  | <html> | ||||||
		Reference in New Issue
	
	Block a user
	 Kyle
					Kyle