This commit is contained in:
Kyle
2019-11-29 17:33:12 -08:00
parent 5bbe1ead04
commit 4e8f664300
17 changed files with 842 additions and 842 deletions

View File

@@ -44,18 +44,9 @@
--clear-mid: #fff4;
--clear-dark: #fff6;
}
footer {
background-color: var(--dark-color);
padding: 2.5em;
font: 1.3em gothammedium;
color: var(--light-color);
}
body {
margin: 0px;
background-image: url(images/lowpoly.png);
background-attachment: fixed;
background-size: cover;
}
/*Background & Footer*/
html {
background-image: linear-gradient(to bottom right, var(--shifting-color-1), var(--shifting-color-1-light));
background-attachment: fixed;
@@ -66,9 +57,21 @@ html {
user-select: none;
font-size: 8pt;
}
.selectable {
user-select: all;
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;
@@ -78,6 +81,9 @@ canvas {
.canvasContainer {
text-align: center;
}
/*Grids*/
.mainGrid {
padding: 0.3em;
display: grid;
@@ -85,13 +91,36 @@ canvas {
grid-template-columns: auto;
font: 1.6em mplantin;
}
.imageGrid {
.splitGrid {
display: grid;
grid-template-columns: auto 9em;
min-height: 12.5em;
grid-template-columns: 50% 50%;
}
.imgPreview {
width: 100%;
.frameGrid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(4em, 1fr));
grid-auto-rows: min-content;
}
.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);
@@ -101,78 +130,55 @@ canvas {
width: 100%;
height: 1em;
}
.cardMenu > div > div:nth-child(1) {
/* border: 1px solid blue;*/
/* text-align: center;*/
/* font: 1.5em belerenbsc;*/
}
.twoGrid {
display: grid;
grid-template-columns: 50% auto;
}
.input, .textarea, .button, .select {
font: 1em mplantin;
background-color: var(--light-color);
border: 1px solid #aaae;
border-radius: 0.2em;
padding: 0px 0.2em;
outline: none;
}
.textarea {
min-height: 6em;
max-height: 18em;
resize: vertical;
}
.select {
background: #fafafa url(../images/manaSymbols/49.png) no-repeat calc(100% - 0.1em) 50%;
background-size: 1em 1em;
-webkit-appearance: none;
}
.autoGrid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(6em, 1fr));
grid-auto-rows: min-content;
}
.input.file {
padding: 0px;
height: 1.26em;
}
.tooltip {
position: relative;
}
.tooltip .tooltiptext {
visibility: hidden;
background-color: var(--dark-color);
color: var(--light-color);
text-align: center;
border-radius: 5px;
padding: 5px;
top: calc(100% + 5px);
left: 0px;
max-width: calc(100% - 10px);
width: auto;
position: absolute;
z-index: 1;
opacity: 0;
transition: opacity 0.5s;
}
.tooltip .tooltiptext::after {
content: " ";
position: absolute;
bottom: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent var(--dark-color) transparent;
}
.tooltip .tooltiptext:hover {
/*visibility: hidden;*/
opacity: 0;
}
div.tooltip > * {
.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;
}
@@ -185,63 +191,10 @@ footer a {
footer a:hover {
color: var(--shifting-color-1-light);
}
.hidden {
display: none;
}
.footerGrid {
display: grid;
grid-template-columns: auto;
grid-gap: 2em;
}
.layer {
padding: 2em 2em;
color: black;
font-size: 2em;
text-align: center;
margin-bottom: 3em;
}
.layer { /*:nth-child(even)*/
background-color: var(--light-color);
background-image: url(images/layerBackground.png);
background-position: center;
background-repeat: no-repeat;
}
.title {
text-align: center;
font: 1.5em belerenbsc;
}
.pageTitle {
font: 5em belerenbsc;
text-align: center;
padding-top: 0.3em;
}
.paragraph {
font: 1em mplantin;
text-align: left;
}
.indent {
text-indent: 2em;
}
.leftMargin {
margin-left: 2em;
}
.donate > div:hover {
text-decoration: underline;
}
.donate > div {
background-color: var(--clear-light);
border-radius: 2em;
font: 2em belerenbsc;
}
.donate > div > img {
height: 1em;
position: relative;
top: 0.15em;
left: 0.15em;
}
/*Controls the area taken by the canvas*/
@media screen and (min-width: 888pt) {
@media screen and (min-width: 905pt) {
/*Makes room for the canvas and controls to be side by side*/
.mainGrid {
padding: 1.5em;
@@ -262,7 +215,7 @@ footer a:hover {
}
}
/*These control tooltips for mobile devices vs. desktops/laptops*/
@media screen and (min-width: 1024px) {
/*@media screen and (min-width: 1024px) {
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
@@ -273,8 +226,8 @@ footer a:hover {
visibility: visible;
opacity: 1;
}
}
/*The footer can now fit horizontally!*/
}*/
/*Allows the footer to be displayed horizontally on Desktop*/
@media screen and (min-width: 375pt) {
.footerGrid {
display: grid;
@@ -284,106 +237,131 @@ footer a:hover {
}
/*WIP*/
.tab {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(6.5em, 1fr));
grid-auto-rows: min-content;
/*WIP (or I'm too lazy to sort these)*/
.tabMenu {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(8em, 1fr));
grid-auto-rows: min-content;
}
.tab.tabSelect {
grid-template-columns: repeat(auto-fit, minmax(8em, 1fr));
.tabOption, .textTabButton {
font: 1.5em belerenbsc;
text-align: center;
background-color: var(--clear-light);
border: 1px solid var(--light-color);
transition: 0.5s;
}
.tabButton.tabSelectButton {
font: 1em belerenb;
.tabOption:hover, .textTabButton:hover {
background-color: var(--clear-mid);
transition: 0s;
}
.tabButton {
text-align: center;
background: var(--clear-light);
border: 1px solid var(--light-color);
font: 1.2em belerenbsc;
padding: 0.1em 0em;
transition: 0.33s;
.tabOption.tabOptionSelected, .textTabButton.activeTextTab {
background-color: var(--clear-dark);
}
.tabButton:hover {
background-color: var(--clear-mid);
transition: 0s;
}
.tabButton.activeTab {
background: var(--clear-dark);
text-decoration: underline;
text-decoration-color: var(--shifting-color-1-light)
}
.tabContent {
display: none;
}
.tabContent.displayed {
display: block;
.tabContent:not(.tabVisible) {
display: none;
}
.download {
text-align: center;
font: 1.5em belerenbsc;
.cardMasterElement {
font: 1em belerenbsc;
background-color: var(--clear-light);
border: 1px solid var(--light-color);
border-radius: 0.25em;
padding: 0.5em;
margin-top: 0.25em;
}
.truncate {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
text-indent: 0em;
.cardMasterElement img {
max-height: 2em;
max-width: 2em;
position: absolute;
transform: translate(1em, -0.35em);
}
.tab, button, select, option {
cursor: pointer;
.cardmasterElement img.cardMasterElementMaskImage {
transform: translate(3.5em, -0.35em);
}
/*Custom Checkboxes*/
.realCheckboxContainer {
margin-top: 0.45em
.cardMasterElementMoving {
background-color: var(--clear-dark);
}
.checkboxContainer {
position: relative;
padding-left: 1.5em;
padding-top: 0.25em;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
.closeCardMasterElement {
cursor: pointer;
position: absolute;
/*top: 50%;*/
left: 96%;
/*padding: 12px 16px;*/
/*transform: translate(0%, -50%);*/
}
.checkboxContainer input {
position: absolute;
opacity: 0;
height: 0;
width: 0;
#framePicker, #maskPicker {
max-height: 260pt;
overflow-y: auto;
overflow-x: hidden;
border: 1px solid var(--light-color);
}
.checkmark {
position: absolute;
top: 0;
left: 0;
height: 1.2em;
width: 1.2em;
transition: 0.33s;
background-color: var(--clear-light);
border: 1px solid var(--light-color)
.frameOption {
height: 4em;
text-align: center;
width: 100%;
}
.checkboxContainer:hover input ~ .checkmark {
background-color: var(--clear-dark);
.frameOption img {
max-width: 4em;
max-height: 4em;
}
.checkboxContainer input:checked ~ .checkmark {
background-color: var(--dark-color);
.maskOption img {
max-width: 2em;
max-height: 2em;
}
.checkmark:after {
content: "X";
font: 1.2em gothammedium;
color: white;
position: absolute;
opacity: 0;
transition: 0.33s;
.frameOption.frameOptionSelected, .maskOption.maskOptionSelected {
background-color: var(--clear-dark);
}
.checkboxContainer input:checked ~ .checkmark:after {
opacity: 1;
.maskOption, .frameOption {
background-color: var(--clear-light);
border: 1px solid var(--light-color);
border-radius: 0.25em;
}
.checkboxContainer .checkmark:after {
left: 0.15em;
top: -0.1em;
.maskOption {
margin-left: 0.5em;
padding: 0.125em;
width: calc(100% - 1.4em);
}
.textarea {
width: 100%;
min-height: 8em;
max-height: 24em;
resize: vertical;
}
.textTabButton {
font-size: 1em;
}
.textTab {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(6em, 1fr));
grid-auto-rows: min-content;
}
.input, .textarea, .button, .select {
font: 1em mplantin;
background-color: var(--light-color);
border: 1px solid #aaa;
border-radius: 0.2em;
padding: 0px 0.2em;
outline: none;
width: 100%;
}
.inputOpacity {
font: 1em mplantin;
background-color: var(--light-color);
border: 1px solid #aaa;
border-radius: 0.2em;
padding: 0px 0.2em;
outline: none;
width: 2.9em;
}
#textCodeTutorial {
display: grid;
grid-template-columns: 6.5em auto;
@@ -398,3 +376,6 @@ footer a:hover {
}
input[type="checkbox"], .frameOption, .maskOption, .button {
cursor: pointer;
}

View File

@@ -14,95 +14,81 @@
</div>
<div class="mainGrid">
<div class="canvasContainer">
<canvas id="mainCanvas" class="canvas"></canvas>
<canvas id="displayCanvas"></canvas>
</div>
<div class="cardMenu">
<div class="tab">
<div class="tabButton editor activeTab" onclick="tabFunction(event, `editor`, `optionFrame`)">Frame</div>
<div class="tabButton editor" onclick="tabFunction(event, `editor`, `optionText`)">Text</div>
<div class="tabButton editor" onclick="tabFunction(event, `editor`, `optionArt`)">Art</div>
<div class="tabButton editor" onclick="tabFunction(event, `editor`, `optionInfo`)">Collector</div>
<div class="tabButton editor" onclick="tabFunction(event, `editor`, `optionSet`)">Set</div>
<div class="tabButton editor" onclick="tabFunction(event, `editor`, `optionWatermark`)">Watermark</div>
<!-- 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 class="tabOption mainEditor" onclick="toggleTabs(event, 'collector', 'mainEditor')">Collector</div>
<div class="tabOption mainEditor" onclick="toggleTabs(event, 'set', 'mainEditor')">Set Symbol</div>
<div class="tabOption mainEditor" onclick="toggleTabs(event, 'watermark', 'mainEditor')">Watermark</div>
</div>
<div class="bar"></div>
<div class="tabContent editor displayed" id="optionFrame">
Select the part of the card frame:<br>
<div class="tab tabSelect" id="frameType"></div>
<div class="realCheckboxContainer">
<label class="checkboxContainer">
Right Half
<input type="checkbox" id="checkboxSecondary">
<span class="checkmark"></span>
</label>
</div>
Select the color:<br>
<div class="tab tabSelect" id="tabSelectColor"></div><br>
<div class="imageGrid">
<div class="autoGrid">
<button class="button tooltip" onclick="userEnterImage()">Enter<span class="tooltiptext">Add the selected image to the card</span></button>
<button class="button tooltip" onclick="userRemoveImage()">Remove<span class="tooltiptext">Remove the select image type from the card</span></button>
</div>
<div>
<div class="tooltip"><img id="imgPreview" class="imgPreview"><span class="tooltiptext">Preview of the selected image</span></div>
</div>
</div>
<div class="autoGrid">
<div class="tooltip"><select class="select" id="inputImageTypeOpacity" onchange="loadOpacityValue()"></select><span class="tooltiptext">Select the part of the card frame</span></div>
<div class="tooltip"><input type="number" class="input number" id="inputOpacityValue" min="0" max="100" oninput="opacityValueUpdated()"><span class="tooltiptext">Enter the opacity for the selected part of the frame</span></div>
</div>
</div>
<div class="tabContent editor" id="optionText">
<div id="inputWhichTextTabs" class="tab"></div>
<div class="tooltip"><textarea class="textarea tooltip" id="inputText" placeholder="" oninput="updateText()"></textarea><span class="tooltiptext">Edit the selected text</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Mana Cost" id="inputManaCost" oninput="updateCardCanvas()" value=""><span class="tooltiptext">Enter the mana cost. Include spaces!</span></div>
<div class="tabContent mainEditor tabVisible" id="frame">
<div class="splitGrid">
<div id="framePicker" class="frameGrid"></div>
<div id="maskPicker"></div>
</div>
<div class="splitGrid">
<button onclick="addFrameToCardMaster()" class="button">Add</button>
<button onclick="addFrameToCardMaster(' - Right')" class="button">Add To Right Half</button>
</div>
<div id="selectedFramePreview">No frame selected</div>
<div id="cardMaster"></div>
</div>
<div class="tabContent mainEditor" id="text">
<div id="inputWhichTextTabs" class="textTab"></div>
<textarea class="textarea" id="inputText" placeholder="" oninput="updateText()"></textarea>
<input type="text" class="input text" placeholder="Mana Cost" id="inputManaCost" oninput="cardImageUpdated()" value="">
<div class="bar"></div>
<div class="title">How To Use Text Codes</div>
<div class="paragraph indent">
Remember to surround each code with curly brackets ("{" and "}"). The codes are not caps sensitive. The following is a list of available text codes and what they do:
</div>
<div id="textCodeTutorial"></div>
</div>
<div class="tabContent editor" id="optionArt">
<div class="autoGrid">
</div>
<div class="tabContent mainEditor" id="art">
<div class="splitGrid">
<div>
<div class="tooltip"><input type="file" class="input file" accept="image/*" onchange="uploadImage(event, cardArt)" placeholder="Via File Upload"><span class="tooltiptext">Upload an image for the card art</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Via URL" onchange="cardArt.src = 'https://cors-anywhere.herokuapp.com/' + this.value"><span class="tooltiptext">Enter a URL for the card art</span></div>
<div class="tooltip"><input type="text" class="input text" id="inputCardArtName" onchange="inputCardArtName(this.value)" placeholder="Via Card Name"><span class="tooltiptext">Enter a card name to use its art</span></div>
<div class="tooltip"><input type="number" class="input number" id="inputCardArtNameNumber" onchange="inputCardArtNameNumber(this.value)" value="" min="1" max="1" placeholder="Which Art From Card Name"><span class="tooltiptext">Select which art to use (from the entered card name)</span></div>
<input type="file" class="input file" accept="image/*" onchange="uploadImage(event, cardArt)" placeholder="Via File Upload">
<input type="text" class="input text" placeholder="Via URL" onchange="cardArt.src = 'https://cors-anywhere.herokuapp.com/' + this.value">
<input type="text" class="input text" id="inputCardArtName" onchange="inputCardArtName(this.value)" placeholder="Via Card Name">
<input type="number" class="input number" id="inputCardArtNameNumber" onchange="inputCardArtNameNumber(this.value)" value="" min="1" max="1" placeholder="Which Art From Card Name">
</div>
<div>
<div style="text-align: center; margin: 0.18em 0px">Placement &amp; Zoom:</div>
<div class="tooltip"><input type="number" class="input number" value="0" id="inputCardArtX" oninput="updateCardCanvas()"><span class="tooltiptext">Shift art to the right</span></div>
<div class="tooltip"><input type="number" class="input number" value="0" id="inputCardArtY" oninput="updateCardCanvas()"><span class="tooltiptext">Shift art down</span></div>
<div class="tooltip"><input type="number" class="input number" value="100" step="0.1" min="0" id="inputCardArtZoom" oninput="updateCardCanvas()"><span class="tooltiptext">Art zoom level</span></div>
<div style="text-align: center; margin: 0.18em 0px">X, Y, &amp; Zoom:</div>
<input type="number" class="input number" value="0" id="inputCardArtX" oninput="cardImageUpdated()">
<input type="number" class="input number" value="0" id="inputCardArtY" oninput="cardImageUpdated()">
<input type="number" class="input number" value="100" step="0.1" min="0" id="inputCardArtZoom" oninput="cardImageUpdated()">
</div>
</div>
</div>
<div class="tabContent editor" id="optionInfo">
<div class="autoGrid">
<div class="tooltip"><input type="text" class="input text" placeholder="Number" id="inputInfoNumber" oninput="updateBottomInfoCanvas()" value=""><span class="tooltiptext">Card Number</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Rarity" id="inputInfoRarity" oninput="updateBottomInfoCanvas()" value="P"><span class="tooltiptext">Rarity</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Set" id="inputInfoSet" oninput="updateBottomInfoCanvas()" value="MTG"><span class="tooltiptext">Set Code</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Language" id="inputInfoLanguage" oninput="updateBottomInfoCanvas()" value="EN"><span class="tooltiptext">Language</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Artist's Name" id="inputInfoArtist" oninput="updateBottomInfoCanvas()" value=""><span class="tooltiptext">Artist's Name<br>(necessary)</span></div>
</div>
<div class="tabContent mainEditor" id="collector">
<div class="autoGrid">
<input type="text" class="input text" placeholder="Number" id="inputInfoNumber" oninput="updateBottomInfoCanvas()" value="">
<input type="text" class="input text" placeholder="Rarity" id="inputInfoRarity" oninput="updateBottomInfoCanvas()" value="P">
<input type="text" class="input text" placeholder="Set" id="inputInfoSet" oninput="updateBottomInfoCanvas()" value="MTG">
<input type="text" class="input text" placeholder="Language" id="inputInfoLanguage" oninput="updateBottomInfoCanvas()" value="EN">
<input type="text" class="input text" placeholder="Artist's Name" id="inputInfoArtist" oninput="updateBottomInfoCanvas()" value="">
</div>
</div>
<div class="tabContent editor" id="optionSet">
<div class="autoGrid">
<div class="tooltip"><input type="file" class="input file" accept="image/*" onchange="uploadImage(event, setSymbol)" placeholder="Via File Upload"><span class="tooltiptext">Upload an image for the set symbol</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Via URL" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/' + this.value)"><span class="tooltiptext">Enter a URL for the set symbol</span></div>
<div class="tooltip"><input type="text" class="input text" id="inputSetCode" placeholder="Via Set Code" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + this.value + '&size=large&rarity=' + document.getElementById('inputSetRarity').value)"><span class="tooltiptext">Use a set code<br>(2-3 letters, as seen on the bottom of cards)</span></div>
<div class="tooltip"><input type="text" class="input text" id="inputSetRarity" placeholder="Rarity" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + document.getElementById('inputSetCode').value + '&size=large&rarity=' + this.value)"><span class="tooltiptext">C, U, R, M, or S<br>(Not every set has every rarity)</span></div>
<div class="tooltip"><button class="button" onclick="randomSet()">Random</button><span class="tooltiptext">Use a random set symbol and rarity</span></div>
</div>
<div class="tabContent mainEditor" id="set">
<div class="autoGrid">
<input type="file" class="input file" accept="image/*" onchange="uploadImage(event, setSymbol)" placeholder="Via File Upload">
<input type="text" class="input text" placeholder="Via URL" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/' + this.value)">
<input type="text" class="input text" id="inputSetCode" placeholder="Via Set Code" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + this.value + '&size=large&rarity=' + document.getElementById('inputSetRarity').value)">
<input type="text" class="input text" id="inputSetRarity" placeholder="Rarity" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + document.getElementById('inputSetCode').value + '&size=large&rarity=' + this.value)">
<button class="button" onclick="randomSet()">Random</button>
</div>
</div>
<div class="tabContent editor" id="optionWatermark">
<div class="autoGrid">
<div class="tooltip"><input type="file" class="input file" accept="image/*" onchange="uploadImage(event, watermark)" placeholder="Via File Upload"><span class="tooltiptext">Upload an image for the watermark</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Via URL" onchange="whiteToTransparent(watermark, 'https://cors-anywhere.herokuapp.com/' + this.value)"><span class="tooltiptext">Enter a URL for the watermark</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Via Set Code" onchange="whiteToTransparent(watermark, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + this.value + '&size=large')"><span class="tooltiptext">Use a set code<br>(2-3 letters, as seen on the bottom of cards)</span></div>
<div class="tooltip"><select class="select" id="inputWatermarkPrimary" onchange="updateWatermarkCanvas()">
</div>
<div class="tabContent mainEditor" id="watermark">
<div class="autoGrid">
<input type="file" class="input file" accept="image/*" onchange="uploadImage(event, watermark)" placeholder="Via File Upload">
<input type="text" class="input text" placeholder="Via URL" onchange="whiteToTransparent(watermark, 'https://cors-anywhere.herokuapp.com/' + this.value)">
<input type="text" class="input text" placeholder="Via Set Code" onchange="whiteToTransparent(watermark, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + this.value + '&size=large')">
<select class="select" id="inputWatermarkPrimary" onchange="updateWatermark()">
<option value="none">None</option>
<option value="default">Default</option>
<option value="#ccc8b1" selected="selected">White</option>
@@ -112,8 +98,8 @@
<option value="#b9c8b5">Green</option>
<option value="#e4d49b">Gold</option>
<option value="#cfc8be">Artifact/Colorless</option>
</select><span class="tooltiptext">Select the watermark color</span></div>
<div class="tooltip"><select class="select" id="inputWatermarkSecondary" onchange="updateWatermarkCanvas()">
</select>
<select class="select" id="inputWatermarkSecondary" onchange="updateWatermark()">
<option value="none">None</option>
<option value="default">Default</option>
<option value="#ccc8b1">White</option>
@@ -123,9 +109,10 @@
<option value="#b9c8b5">Green</option>
<option value="#e4d49b">Gold</option>
<option value="#cfc8be">Artifact/Colorless</option>
</select><span class="tooltiptext">Select the secondary watermark color</span></div>
</select>
</div>
</div>
</div>
<!-- Card editor tabs end here! -->
<div class="bar"></div>
<div>
<div class="download">
@@ -147,23 +134,13 @@
</div>
<div class="layer">
<div class="title">Want More Customization?</div>
<div class="paragraph indent">
<!-- <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> -->
<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">How You Can Help</div>-->
<!-- <div class="paragraph indent">-->
<!-- I hope that you found Card Conjurer useful! If you did, you can help me out tremendously by using one of the following referral links:-->
<!-- </div>-->
<!-- <div class="autoGrid donate">-->
<!-- <div onclick="window.open('https://pucatrade.com/invite/gift/186748', '_blank');" style="color:#3d213a;">PucaTrade<img src="data/site/icons/pucatrade.png"></div>-->
<!-- <div onclick="window.open('https://www.massdrop.com/?referer=LNWNLL', '_blank');" style="color:#ffffff;">Massdrop<img src="data/site/icons/massdrop.png"></div>-->
<!-- </div>-->
<!-- </div>-->
<div class="layer">
<div class="title">Have Any Questions?</div>
<div class="paragraph indent">
@@ -176,8 +153,6 @@
<div class="footerGrid">
<div>
Card Conjurer By Kyle Burton<br>
<input type="checkbox" checked="true" onchange="toggleTooltips(this.checked)" id="tooltipToggler"> Display tooltips<br>
<input type="checkbox" onchange="advancedBordersClicked()" id="checkboxAdvanced"> Advanced Borders<br>
</div>
<div>
Navigation:<br>
@@ -191,7 +166,8 @@
</div>
</div>
</footer>
<script src="data/scripts/colors.js"></script>
<script src="data/site/main.js"></script>
<script src="data/scripts/setCodeList.js"></script>
<script async src="data/scripts/sortable.js"></script>
<script async src="data/scripts/setCodeList.js"></script>
<script defer src="data/scripts/main.js"></script>
<script defer src="data/scripts/colors.js"></script>
<html>

View File

@@ -1,137 +1,137 @@
version,color,type,displayName,maskVersion,x,y,width,height,secondary,advanced
m15,W,Full,White,m15,0,0,1,1,TRUE,FALSE
m15,U,Full,Blue,m15,0,0,1,1,TRUE,FALSE
m15,B,Full,Black,m15,0,0,1,1,TRUE,FALSE
m15,R,Full,Red,m15,0,0,1,1,TRUE,FALSE
m15,G,Full,Green,m15,0,0,1,1,TRUE,FALSE
m15,M,Full,Multicolored,m15,0,0,1,1,TRUE,FALSE
m15,A,Full,Artifact,m15,0,0,1,1,TRUE,FALSE
m15,C,Full,Colorless,m15,0,0,1,1,TRUE,FALSE
m15,Mask,Frame,,m15,0,0,1,1,TRUE,FALSE
m15,Mask,Pinline,,m15,0,0,1,1,TRUE,FALSE
m15,Mask,Title,,m15,0,0,1,1,TRUE,FALSE
m15,Mask,Type,,m15,0,0,1,1,TRUE,FALSE
m15,Mask,Rules,,m15,0,0,1,1,TRUE,FALSE
none,Mask,Secondary,,none,0,0,1,1,TRUE,FALSE
m15,W,PT,White,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,U,PT,Blue,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,B,PT,Black,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,R,PT,Red,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,G,PT,Green,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,M,PT,Multicolored,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,A,PT,Artifact,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,C,PT,Colorless,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
none,Mask,Corners,,none,0.0267,0.0191,0.952,0.1771,FALSE,FALSE
m15,W,Legendary,White,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,U,Legendary,Blue,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,B,Legendary,Black,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,R,Legendary,Red,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,G,Legendary,Green,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,M,Legendary,Multicolored,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,A,Legendary,Artifact,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,C,Legendary,Colorless,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
none,Mask,Stamp,,none,0.4387,0.9039,0.12,0.0477,FALSE,FALSE
m15,W,RareStamp,White,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,U,RareStamp,Blue,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,B,RareStamp,Black,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,R,RareStamp,Red,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,G,RareStamp,Green,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,M,RareStamp,Multicolored,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,A,RareStamp,Artifact,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,C,RareStamp,Colorless,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,V,PT,Vehicle,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,V,Full,Vehicle,m15,0,0,1,1,TRUE,FALSE
m15,WL,Full,White Land,m15,0,0,1,1,TRUE,FALSE
m15,UL,Full,Blue Land,m15,0,0,1,1,TRUE,FALSE
m15,BL,Full,Black Land,m15,0,0,1,1,TRUE,FALSE
m15,RL,Full,Red Land,m15,0,0,1,1,TRUE,FALSE
m15,GL,Full,Green Land,m15,0,0,1,1,TRUE,FALSE
m15,ML,Full,Multicolored Land,m15,0,0,1,1,TRUE,FALSE
m15,CL,Full,Colorless Land,m15,0,0,1,1,TRUE,FALSE
m15,W,Miracle,White,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,U,Miracle,Blue,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,B,Miracle,Black,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,R,Miracle,Red,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,G,Miracle,Green,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,M,Miracle,Multicolored,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,C,Miracle,Colorless,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,A,Miracle,Artifact,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,W,Nyx,White,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,U,Nyx,Blue,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,B,Nyx,Black,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,R,Nyx,Red,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,G,Nyx,Green,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,M,Nyx,Multicolored,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,A,Nyx,Artifact,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,C,Nyx,Colorless,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,WL,Nyx,White Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,UL,Nyx,Blue Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,BL,Nyx,Black Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,RL,Nyx,Red Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,GL,Nyx,Green Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,ML,Nyx,Multicolored Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,CL,Nyx,Colorless Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,WD,Full,White (Dark),m15,0,0,1,1,TRUE,TRUE
m15,UD,Full,Blue (Dark),m15,0,0,1,1,TRUE,TRUE
m15,BD,Full,Black (Dark),m15,0,0,1,1,TRUE,TRUE
m15,RD,Full,Red (Dark),m15,0,0,1,1,TRUE,TRUE
m15,GD,Full,Green (Dark),m15,0,0,1,1,TRUE,TRUE
m15,MD,Full,Multicolored (Dark),m15,0,0,1,1,TRUE,TRUE
m15,AD,Full,Artifact (Dark),m15,0,0,1,1,TRUE,TRUE
m15,CD,Full,Colorless (Dark),m15,0,0,1,1,TRUE,TRUE
m15,WLD,Full,White Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,ULD,Full,Blue Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,BLD,Full,Black Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,RLD,Full,Red Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,GLD,Full,Green Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,MLD,Full,Multicolored Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,CLD,Full,Colorless Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,WD,PT,White (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,UD,PT,Blue (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,BD,PT,Black (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,RD,PT,Red (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,GD,PT,Green (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,MD,PT,Multicolored (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,AD,PT,Artifact (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,CD,PT,Colorless (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,W,FlipPT,White,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,U,FlipPT,Blue,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,B,FlipPT,Black,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,R,FlipPT,Red,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,G,FlipPT,Green,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,M,FlipPT,Multicolored,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,A,FlipPT,Artifact,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,C,FlipPT,Colorless,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,WL,FlipPT,White Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,UL,FlipPT,Blue Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,BL,FlipPT,Black Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,RL,FlipPT,Red Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,GL,FlipPT,Green Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,ML,FlipPT,Multicolorled Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,CL,FlipPT,Colorless Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,W,FlipCircle,White,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,U,FlipCircle,Blue,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,B,FlipCircle,Black,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,R,FlipCircle,Red,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,G,FlipCircle,Green,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,M,FlipCircle,Multicolored,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,A,FlipCircle,Artifact,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,C,FlipCircle,Colorless,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,Artifact,FlipIcon,Artifact,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Blank,FlipIcon,Blank,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Compass,FlipIcon,Compass,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Creature,FlipIcon,Creature,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Day,FlipIcon,Day,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Eldrazi,FlipIcon,Eldrazi,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Enchantment,FlipIcon,Enchantment,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Instant,FlipIcon,Instant,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Land,FlipIcon,Land,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Moon,FlipIcon,Moon,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Multitype,FlipIcon,Multitype,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Night,FlipIcon,Night,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Planeshift,FlipIcon,Planeshift,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Planeswalker,FlipIcon,Planeswalker,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Sorcery,FlipIcon,Sorcery,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Structure,FlipIcon,Structure,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Mask,Border,m15MaskBorder,m15,0,0,1,1,TRUE,FALSE
version,color,type,displayName,maskVersion,x,y,width,height,secondary,advanced
m15,W,Full,White,m15,0,0,1,1,TRUE,FALSE
m15,U,Full,Blue,m15,0,0,1,1,TRUE,FALSE
m15,B,Full,Black,m15,0,0,1,1,TRUE,FALSE
m15,R,Full,Red,m15,0,0,1,1,TRUE,FALSE
m15,G,Full,Green,m15,0,0,1,1,TRUE,FALSE
m15,M,Full,Multicolored,m15,0,0,1,1,TRUE,FALSE
m15,A,Full,Artifact,m15,0,0,1,1,TRUE,FALSE
m15,C,Full,Colorless,m15,0,0,1,1,TRUE,FALSE
m15,Mask,Frame,,m15,0,0,1,1,TRUE,FALSE
m15,Mask,Pinline,,m15,0,0,1,1,TRUE,FALSE
m15,Mask,Title,,m15,0,0,1,1,TRUE,FALSE
m15,Mask,Type,,m15,0,0,1,1,TRUE,FALSE
m15,Mask,Rules,,m15,0,0,1,1,TRUE,FALSE
none,Mask,Secondary,,none,0,0,1,1,TRUE,FALSE
m15,W,PT,White,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,U,PT,Blue,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,B,PT,Black,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,R,PT,Red,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,G,PT,Green,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,M,PT,Multicolored,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,A,PT,Artifact,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,C,PT,Colorless,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
none,Mask,Corners,,none,0.0267,0.0191,0.952,0.1771,FALSE,FALSE
m15,W,Legendary,White,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,U,Legendary,Blue,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,B,Legendary,Black,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,R,Legendary,Red,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,G,Legendary,Green,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,M,Legendary,Multicolored,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,A,Legendary,Artifact,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
m15,C,Legendary,Colorless,m15,0.0267,0.0191,0.952,0.1771,TRUE,FALSE
none,Mask,Stamp,,none,0.4387,0.9039,0.12,0.0477,FALSE,FALSE
m15,W,RareStamp,White,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,U,RareStamp,Blue,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,B,RareStamp,Black,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,R,RareStamp,Red,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,G,RareStamp,Green,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,M,RareStamp,Multicolored,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,A,RareStamp,Artifact,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,C,RareStamp,Colorless,m15,0.4387,0.9039,0.12,0.0477,TRUE,FALSE
m15,V,PT,Vehicle,m15,0.7613,0.8898,0.183,0.0734,FALSE,FALSE
m15,V,Full,Vehicle,m15,0,0,1,1,TRUE,FALSE
m15,WL,Full,White Land,m15,0,0,1,1,TRUE,FALSE
m15,UL,Full,Blue Land,m15,0,0,1,1,TRUE,FALSE
m15,BL,Full,Black Land,m15,0,0,1,1,TRUE,FALSE
m15,RL,Full,Red Land,m15,0,0,1,1,TRUE,FALSE
m15,GL,Full,Green Land,m15,0,0,1,1,TRUE,FALSE
m15,ML,Full,Multicolored Land,m15,0,0,1,1,TRUE,FALSE
m15,CL,Full,Colorless Land,m15,0,0,1,1,TRUE,FALSE
m15,W,Miracle,White,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,U,Miracle,Blue,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,B,Miracle,Black,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,R,Miracle,Red,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,G,Miracle,Green,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,M,Miracle,Multicolored,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,C,Miracle,Colorless,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,A,Miracle,Artifact,m15,0.04,0.0286,0.9187,0.4867,TRUE,TRUE
m15,W,Nyx,White,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,U,Nyx,Blue,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,B,Nyx,Black,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,R,Nyx,Red,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,G,Nyx,Green,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,M,Nyx,Multicolored,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,A,Nyx,Artifact,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,C,Nyx,Colorless,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,WL,Nyx,White Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,UL,Nyx,Blue Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,BL,Nyx,Black Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,RL,Nyx,Red Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,GL,Nyx,Green Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,ML,Nyx,Multicolored Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,CL,Nyx,Colorless Land,m15,0.04,0.0286,0.92,0.5581,TRUE,TRUE
m15,WD,Full,White (Dark),m15,0,0,1,1,TRUE,TRUE
m15,UD,Full,Blue (Dark),m15,0,0,1,1,TRUE,TRUE
m15,BD,Full,Black (Dark),m15,0,0,1,1,TRUE,TRUE
m15,RD,Full,Red (Dark),m15,0,0,1,1,TRUE,TRUE
m15,GD,Full,Green (Dark),m15,0,0,1,1,TRUE,TRUE
m15,MD,Full,Multicolored (Dark),m15,0,0,1,1,TRUE,TRUE
m15,AD,Full,Artifact (Dark),m15,0,0,1,1,TRUE,TRUE
m15,CD,Full,Colorless (Dark),m15,0,0,1,1,TRUE,TRUE
m15,WLD,Full,White Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,ULD,Full,Blue Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,BLD,Full,Black Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,RLD,Full,Red Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,GLD,Full,Green Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,MLD,Full,Multicolored Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,CLD,Full,Colorless Land (Dark),m15,0,0,1,1,TRUE,TRUE
m15,WD,PT,White (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,UD,PT,Blue (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,BD,PT,Black (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,RD,PT,Red (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,GD,PT,Green (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,MD,PT,Multicolored (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,AD,PT,Artifact (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,CD,PT,Colorless (Dark),m15,0.7613,0.8898,0.183,0.0734,FALSE,TRUE
m15,W,FlipPT,White,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,U,FlipPT,Blue,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,B,FlipPT,Black,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,R,FlipPT,Red,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,G,FlipPT,Green,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,M,FlipPT,Multicolored,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,A,FlipPT,Artifact,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,C,FlipPT,Colorless,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,WL,FlipPT,White Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,UL,FlipPT,Blue Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,BL,FlipPT,Black Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,RL,FlipPT,Red Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,GL,FlipPT,Green Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,ML,FlipPT,Multicolorled Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,CL,FlipPT,Colorless Land,m15,0.914,0.8352,0.048,0.0457,FALSE,TRUE
m15,W,FlipCircle,White,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,U,FlipCircle,Blue,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,B,FlipCircle,Black,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,R,FlipCircle,Red,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,G,FlipCircle,Green,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,M,FlipCircle,Multicolored,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,A,FlipCircle,Artifact,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,C,FlipCircle,Colorless,m15,0.0347,0.044,0.104,0.0676,FALSE,TRUE
m15,Artifact,FlipIcon,Artifact,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Blank,FlipIcon,Blank,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Compass,FlipIcon,Compass,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Creature,FlipIcon,Creature,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Day,FlipIcon,Day,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Eldrazi,FlipIcon,Eldrazi,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Enchantment,FlipIcon,Enchantment,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Instant,FlipIcon,Instant,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Land,FlipIcon,Land,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Moon,FlipIcon,Moon,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Multitype,FlipIcon,Multitype,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Night,FlipIcon,Night,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Planeshift,FlipIcon,Planeshift,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Planeswalker,FlipIcon,Planeswalker,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Sorcery,FlipIcon,Sorcery,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Structure,FlipIcon,Structure,m15,0.052,0.0486,0.08,0.0571,FALSE,TRUE
m15,Mask,Border,m15MaskBorder,m15,0,0,1,1,TRUE,FALSE
m15,Default,Border,m15DefaultBorder,m15,0,0,1,1,TRUE,FALSE
1 version color type displayName maskVersion x y width height secondary advanced
2 m15 W Full White m15 0 0 1 1 TRUE FALSE
3 m15 U Full Blue m15 0 0 1 1 TRUE FALSE
4 m15 B Full Black m15 0 0 1 1 TRUE FALSE
5 m15 R Full Red m15 0 0 1 1 TRUE FALSE
6 m15 G Full Green m15 0 0 1 1 TRUE FALSE
7 m15 M Full Multicolored m15 0 0 1 1 TRUE FALSE
8 m15 A Full Artifact m15 0 0 1 1 TRUE FALSE
9 m15 C Full Colorless m15 0 0 1 1 TRUE FALSE
10 m15 Mask Frame m15 0 0 1 1 TRUE FALSE
11 m15 Mask Pinline m15 0 0 1 1 TRUE FALSE
12 m15 Mask Title m15 0 0 1 1 TRUE FALSE
13 m15 Mask Type m15 0 0 1 1 TRUE FALSE
14 m15 Mask Rules m15 0 0 1 1 TRUE FALSE
15 none Mask Secondary none 0 0 1 1 TRUE FALSE
16 m15 W PT White m15 0.7613 0.8898 0.183 0.0734 FALSE FALSE
17 m15 U PT Blue m15 0.7613 0.8898 0.183 0.0734 FALSE FALSE
18 m15 B PT Black m15 0.7613 0.8898 0.183 0.0734 FALSE FALSE
19 m15 R PT Red m15 0.7613 0.8898 0.183 0.0734 FALSE FALSE
20 m15 G PT Green m15 0.7613 0.8898 0.183 0.0734 FALSE FALSE
21 m15 M PT Multicolored m15 0.7613 0.8898 0.183 0.0734 FALSE FALSE
22 m15 A PT Artifact m15 0.7613 0.8898 0.183 0.0734 FALSE FALSE
23 m15 C PT Colorless m15 0.7613 0.8898 0.183 0.0734 FALSE FALSE
24 none Mask Corners none 0.0267 0.0191 0.952 0.1771 FALSE FALSE
25 m15 W Legendary White m15 0.0267 0.0191 0.952 0.1771 TRUE FALSE
26 m15 U Legendary Blue m15 0.0267 0.0191 0.952 0.1771 TRUE FALSE
27 m15 B Legendary Black m15 0.0267 0.0191 0.952 0.1771 TRUE FALSE
28 m15 R Legendary Red m15 0.0267 0.0191 0.952 0.1771 TRUE FALSE
29 m15 G Legendary Green m15 0.0267 0.0191 0.952 0.1771 TRUE FALSE
30 m15 M Legendary Multicolored m15 0.0267 0.0191 0.952 0.1771 TRUE FALSE
31 m15 A Legendary Artifact m15 0.0267 0.0191 0.952 0.1771 TRUE FALSE
32 m15 C Legendary Colorless m15 0.0267 0.0191 0.952 0.1771 TRUE FALSE
33 none Mask Stamp none 0.4387 0.9039 0.12 0.0477 FALSE FALSE
34 m15 W RareStamp White m15 0.4387 0.9039 0.12 0.0477 TRUE FALSE
35 m15 U RareStamp Blue m15 0.4387 0.9039 0.12 0.0477 TRUE FALSE
36 m15 B RareStamp Black m15 0.4387 0.9039 0.12 0.0477 TRUE FALSE
37 m15 R RareStamp Red m15 0.4387 0.9039 0.12 0.0477 TRUE FALSE
38 m15 G RareStamp Green m15 0.4387 0.9039 0.12 0.0477 TRUE FALSE
39 m15 M RareStamp Multicolored m15 0.4387 0.9039 0.12 0.0477 TRUE FALSE
40 m15 A RareStamp Artifact m15 0.4387 0.9039 0.12 0.0477 TRUE FALSE
41 m15 C RareStamp Colorless m15 0.4387 0.9039 0.12 0.0477 TRUE FALSE
42 m15 V PT Vehicle m15 0.7613 0.8898 0.183 0.0734 FALSE FALSE
43 m15 V Full Vehicle m15 0 0 1 1 TRUE FALSE
44 m15 WL Full White Land m15 0 0 1 1 TRUE FALSE
45 m15 UL Full Blue Land m15 0 0 1 1 TRUE FALSE
46 m15 BL Full Black Land m15 0 0 1 1 TRUE FALSE
47 m15 RL Full Red Land m15 0 0 1 1 TRUE FALSE
48 m15 GL Full Green Land m15 0 0 1 1 TRUE FALSE
49 m15 ML Full Multicolored Land m15 0 0 1 1 TRUE FALSE
50 m15 CL Full Colorless Land m15 0 0 1 1 TRUE FALSE
51 m15 W Miracle White m15 0.04 0.0286 0.9187 0.4867 TRUE TRUE
52 m15 U Miracle Blue m15 0.04 0.0286 0.9187 0.4867 TRUE TRUE
53 m15 B Miracle Black m15 0.04 0.0286 0.9187 0.4867 TRUE TRUE
54 m15 R Miracle Red m15 0.04 0.0286 0.9187 0.4867 TRUE TRUE
55 m15 G Miracle Green m15 0.04 0.0286 0.9187 0.4867 TRUE TRUE
56 m15 M Miracle Multicolored m15 0.04 0.0286 0.9187 0.4867 TRUE TRUE
57 m15 C Miracle Colorless m15 0.04 0.0286 0.9187 0.4867 TRUE TRUE
58 m15 A Miracle Artifact m15 0.04 0.0286 0.9187 0.4867 TRUE TRUE
59 m15 W Nyx White m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
60 m15 U Nyx Blue m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
61 m15 B Nyx Black m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
62 m15 R Nyx Red m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
63 m15 G Nyx Green m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
64 m15 M Nyx Multicolored m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
65 m15 A Nyx Artifact m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
66 m15 C Nyx Colorless m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
67 m15 WL Nyx White Land m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
68 m15 UL Nyx Blue Land m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
69 m15 BL Nyx Black Land m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
70 m15 RL Nyx Red Land m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
71 m15 GL Nyx Green Land m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
72 m15 ML Nyx Multicolored Land m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
73 m15 CL Nyx Colorless Land m15 0.04 0.0286 0.92 0.5581 TRUE TRUE
74 m15 WD Full White (Dark) m15 0 0 1 1 TRUE TRUE
75 m15 UD Full Blue (Dark) m15 0 0 1 1 TRUE TRUE
76 m15 BD Full Black (Dark) m15 0 0 1 1 TRUE TRUE
77 m15 RD Full Red (Dark) m15 0 0 1 1 TRUE TRUE
78 m15 GD Full Green (Dark) m15 0 0 1 1 TRUE TRUE
79 m15 MD Full Multicolored (Dark) m15 0 0 1 1 TRUE TRUE
80 m15 AD Full Artifact (Dark) m15 0 0 1 1 TRUE TRUE
81 m15 CD Full Colorless (Dark) m15 0 0 1 1 TRUE TRUE
82 m15 WLD Full White Land (Dark) m15 0 0 1 1 TRUE TRUE
83 m15 ULD Full Blue Land (Dark) m15 0 0 1 1 TRUE TRUE
84 m15 BLD Full Black Land (Dark) m15 0 0 1 1 TRUE TRUE
85 m15 RLD Full Red Land (Dark) m15 0 0 1 1 TRUE TRUE
86 m15 GLD Full Green Land (Dark) m15 0 0 1 1 TRUE TRUE
87 m15 MLD Full Multicolored Land (Dark) m15 0 0 1 1 TRUE TRUE
88 m15 CLD Full Colorless Land (Dark) m15 0 0 1 1 TRUE TRUE
89 m15 WD PT White (Dark) m15 0.7613 0.8898 0.183 0.0734 FALSE TRUE
90 m15 UD PT Blue (Dark) m15 0.7613 0.8898 0.183 0.0734 FALSE TRUE
91 m15 BD PT Black (Dark) m15 0.7613 0.8898 0.183 0.0734 FALSE TRUE
92 m15 RD PT Red (Dark) m15 0.7613 0.8898 0.183 0.0734 FALSE TRUE
93 m15 GD PT Green (Dark) m15 0.7613 0.8898 0.183 0.0734 FALSE TRUE
94 m15 MD PT Multicolored (Dark) m15 0.7613 0.8898 0.183 0.0734 FALSE TRUE
95 m15 AD PT Artifact (Dark) m15 0.7613 0.8898 0.183 0.0734 FALSE TRUE
96 m15 CD PT Colorless (Dark) m15 0.7613 0.8898 0.183 0.0734 FALSE TRUE
97 m15 W FlipPT White m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
98 m15 U FlipPT Blue m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
99 m15 B FlipPT Black m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
100 m15 R FlipPT Red m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
101 m15 G FlipPT Green m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
102 m15 M FlipPT Multicolored m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
103 m15 A FlipPT Artifact m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
104 m15 C FlipPT Colorless m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
105 m15 WL FlipPT White Land m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
106 m15 UL FlipPT Blue Land m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
107 m15 BL FlipPT Black Land m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
108 m15 RL FlipPT Red Land m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
109 m15 GL FlipPT Green Land m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
110 m15 ML FlipPT Multicolorled Land m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
111 m15 CL FlipPT Colorless Land m15 0.914 0.8352 0.048 0.0457 FALSE TRUE
112 m15 W FlipCircle White m15 0.0347 0.044 0.104 0.0676 FALSE TRUE
113 m15 U FlipCircle Blue m15 0.0347 0.044 0.104 0.0676 FALSE TRUE
114 m15 B FlipCircle Black m15 0.0347 0.044 0.104 0.0676 FALSE TRUE
115 m15 R FlipCircle Red m15 0.0347 0.044 0.104 0.0676 FALSE TRUE
116 m15 G FlipCircle Green m15 0.0347 0.044 0.104 0.0676 FALSE TRUE
117 m15 M FlipCircle Multicolored m15 0.0347 0.044 0.104 0.0676 FALSE TRUE
118 m15 A FlipCircle Artifact m15 0.0347 0.044 0.104 0.0676 FALSE TRUE
119 m15 C FlipCircle Colorless m15 0.0347 0.044 0.104 0.0676 FALSE TRUE
120 m15 Artifact FlipIcon Artifact m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
121 m15 Blank FlipIcon Blank m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
122 m15 Compass FlipIcon Compass m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
123 m15 Creature FlipIcon Creature m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
124 m15 Day FlipIcon Day m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
125 m15 Eldrazi FlipIcon Eldrazi m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
126 m15 Enchantment FlipIcon Enchantment m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
127 m15 Instant FlipIcon Instant m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
128 m15 Land FlipIcon Land m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
129 m15 Moon FlipIcon Moon m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
130 m15 Multitype FlipIcon Multitype m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
131 m15 Night FlipIcon Night m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
132 m15 Planeshift FlipIcon Planeshift m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
133 m15 Planeswalker FlipIcon Planeswalker m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
134 m15 Sorcery FlipIcon Sorcery m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
135 m15 Structure FlipIcon Structure m15 0.052 0.0486 0.08 0.0571 FALSE TRUE
136 m15 Mask Border m15MaskBorder m15 0 0 1 1 TRUE FALSE
137 m15 Default Border m15DefaultBorder m15 0 0 1 1 TRUE FALSE

View File

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

197
old/3.0/index.html Normal file
View File

@@ -0,0 +1,197 @@
<!DOCTYPE html5>
<html>
<head>
<title>Card Conjurer</title>
<!-- Other things -->
<link rel="stylesheet" href="data/site/styles.css">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div class="mainDiv">
<div class="pageTitle">
Card Conjurer
</div>
<div class="mainGrid">
<div class="canvasContainer">
<canvas id="mainCanvas" class="canvas"></canvas>
</div>
<div class="cardMenu">
<div class="tab">
<div class="tabButton editor activeTab" onclick="tabFunction(event, `editor`, `optionFrame`)">Frame</div>
<div class="tabButton editor" onclick="tabFunction(event, `editor`, `optionText`)">Text</div>
<div class="tabButton editor" onclick="tabFunction(event, `editor`, `optionArt`)">Art</div>
<div class="tabButton editor" onclick="tabFunction(event, `editor`, `optionInfo`)">Collector</div>
<div class="tabButton editor" onclick="tabFunction(event, `editor`, `optionSet`)">Set</div>
<div class="tabButton editor" onclick="tabFunction(event, `editor`, `optionWatermark`)">Watermark</div>
</div>
<div class="bar"></div>
<div class="tabContent editor displayed" id="optionFrame">
Select the part of the card frame:<br>
<div class="tab tabSelect" id="frameType"></div>
<div class="realCheckboxContainer">
<label class="checkboxContainer">
Right Half
<input type="checkbox" id="checkboxSecondary">
<span class="checkmark"></span>
</label>
</div>
Select the color:<br>
<div class="tab tabSelect" id="tabSelectColor"></div><br>
<div class="imageGrid">
<div class="autoGrid">
<button class="button tooltip" onclick="userEnterImage()">Enter<span class="tooltiptext">Add the selected image to the card</span></button>
<button class="button tooltip" onclick="userRemoveImage()">Remove<span class="tooltiptext">Remove the select image type from the card</span></button>
</div>
<div>
<div class="tooltip"><img id="imgPreview" class="imgPreview"><span class="tooltiptext">Preview of the selected image</span></div>
</div>
</div>
<div class="autoGrid">
<div class="tooltip"><select class="select" id="inputImageTypeOpacity" onchange="loadOpacityValue()"></select><span class="tooltiptext">Select the part of the card frame</span></div>
<div class="tooltip"><input type="number" class="input number" id="inputOpacityValue" min="0" max="100" oninput="opacityValueUpdated()"><span class="tooltiptext">Enter the opacity for the selected part of the frame</span></div>
</div>
</div>
<div class="tabContent editor" id="optionText">
<div id="inputWhichTextTabs" class="tab"></div>
<div class="tooltip"><textarea class="textarea tooltip" id="inputText" placeholder="" oninput="updateText()"></textarea><span class="tooltiptext">Edit the selected text</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Mana Cost" id="inputManaCost" oninput="updateCardCanvas()" value=""><span class="tooltiptext">Enter the mana cost. Include spaces!</span></div>
<div class="bar"></div>
<div class="title">How To Use Text Codes</div>
<div class="paragraph indent">
Remember to surround each code with curly brackets ("{" and "}"). The codes are not caps sensitive. The following is a list of available text codes and what they do:
</div>
<div id="textCodeTutorial"></div>
</div>
<div class="tabContent editor" id="optionArt">
<div class="autoGrid">
<div>
<div class="tooltip"><input type="file" class="input file" accept="image/*" onchange="uploadImage(event, cardArt)" placeholder="Via File Upload"><span class="tooltiptext">Upload an image for the card art</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Via URL" onchange="cardArt.src = 'https://cors-anywhere.herokuapp.com/' + this.value"><span class="tooltiptext">Enter a URL for the card art</span></div>
<div class="tooltip"><input type="text" class="input text" id="inputCardArtName" onchange="inputCardArtName(this.value)" placeholder="Via Card Name"><span class="tooltiptext">Enter a card name to use its art</span></div>
<div class="tooltip"><input type="number" class="input number" id="inputCardArtNameNumber" onchange="inputCardArtNameNumber(this.value)" value="" min="1" max="1" placeholder="Which Art From Card Name"><span class="tooltiptext">Select which art to use (from the entered card name)</span></div>
</div>
<div>
<div style="text-align: center; margin: 0.18em 0px">Placement &amp; Zoom:</div>
<div class="tooltip"><input type="number" class="input number" value="0" id="inputCardArtX" oninput="updateCardCanvas()"><span class="tooltiptext">Shift art to the right</span></div>
<div class="tooltip"><input type="number" class="input number" value="0" id="inputCardArtY" oninput="updateCardCanvas()"><span class="tooltiptext">Shift art down</span></div>
<div class="tooltip"><input type="number" class="input number" value="100" step="0.1" min="0" id="inputCardArtZoom" oninput="updateCardCanvas()"><span class="tooltiptext">Art zoom level</span></div>
</div>
</div>
</div>
<div class="tabContent editor" id="optionInfo">
<div class="autoGrid">
<div class="tooltip"><input type="text" class="input text" placeholder="Number" id="inputInfoNumber" oninput="updateBottomInfoCanvas()" value=""><span class="tooltiptext">Card Number</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Rarity" id="inputInfoRarity" oninput="updateBottomInfoCanvas()" value="P"><span class="tooltiptext">Rarity</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Set" id="inputInfoSet" oninput="updateBottomInfoCanvas()" value="MTG"><span class="tooltiptext">Set Code</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Language" id="inputInfoLanguage" oninput="updateBottomInfoCanvas()" value="EN"><span class="tooltiptext">Language</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Artist's Name" id="inputInfoArtist" oninput="updateBottomInfoCanvas()" value=""><span class="tooltiptext">Artist's Name<br>(necessary)</span></div>
</div>
</div>
<div class="tabContent editor" id="optionSet">
<div class="autoGrid">
<div class="tooltip"><input type="file" class="input file" accept="image/*" onchange="uploadImage(event, setSymbol)" placeholder="Via File Upload"><span class="tooltiptext">Upload an image for the set symbol</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Via URL" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/' + this.value)"><span class="tooltiptext">Enter a URL for the set symbol</span></div>
<div class="tooltip"><input type="text" class="input text" id="inputSetCode" placeholder="Via Set Code" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + this.value + '&size=large&rarity=' + document.getElementById('inputSetRarity').value)"><span class="tooltiptext">Use a set code<br>(2-3 letters, as seen on the bottom of cards)</span></div>
<div class="tooltip"><input type="text" class="input text" id="inputSetRarity" placeholder="Rarity" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + document.getElementById('inputSetCode').value + '&size=large&rarity=' + this.value)"><span class="tooltiptext">C, U, R, M, or S<br>(Not every set has every rarity)</span></div>
<div class="tooltip"><button class="button" onclick="randomSet()">Random</button><span class="tooltiptext">Use a random set symbol and rarity</span></div>
</div>
</div>
<div class="tabContent editor" id="optionWatermark">
<div class="autoGrid">
<div class="tooltip"><input type="file" class="input file" accept="image/*" onchange="uploadImage(event, watermark)" placeholder="Via File Upload"><span class="tooltiptext">Upload an image for the watermark</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Via URL" onchange="whiteToTransparent(watermark, 'https://cors-anywhere.herokuapp.com/' + this.value)"><span class="tooltiptext">Enter a URL for the watermark</span></div>
<div class="tooltip"><input type="text" class="input text" placeholder="Via Set Code" onchange="whiteToTransparent(watermark, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + this.value + '&size=large')"><span class="tooltiptext">Use a set code<br>(2-3 letters, as seen on the bottom of cards)</span></div>
<div class="tooltip"><select class="select" id="inputWatermarkPrimary" onchange="updateWatermarkCanvas()">
<option value="none">None</option>
<option value="default">Default</option>
<option value="#ccc8b1" selected="selected">White</option>
<option value="#b0c3d5">Blue</option>
<option value="#b3b3b3">Black</option>
<option value="#ddac9b">Red</option>
<option value="#b9c8b5">Green</option>
<option value="#e4d49b">Gold</option>
<option value="#cfc8be">Artifact/Colorless</option>
</select><span class="tooltiptext">Select the watermark color</span></div>
<div class="tooltip"><select class="select" id="inputWatermarkSecondary" onchange="updateWatermarkCanvas()">
<option value="none">None</option>
<option value="default">Default</option>
<option value="#ccc8b1">White</option>
<option value="#b0c3d5">Blue</option>
<option value="#b3b3b3">Black</option>
<option value="#ddac9b">Red</option>
<option value="#b9c8b5">Green</option>
<option value="#e4d49b">Gold</option>
<option value="#cfc8be">Artifact/Colorless</option>
</select><span class="tooltiptext">Select the secondary watermark color</span></div>
</div>
</div>
<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">How You Can Help</div>-->
<!-- <div class="paragraph indent">-->
<!-- I hope that you found Card Conjurer useful! If you did, you can help me out tremendously by using one of the following referral links:-->
<!-- </div>-->
<!-- <div class="autoGrid donate">-->
<!-- <div onclick="window.open('https://pucatrade.com/invite/gift/186748', '_blank');" style="color:#3d213a;">PucaTrade<img src="data/site/icons/pucatrade.png"></div>-->
<!-- <div onclick="window.open('https://www.massdrop.com/?referer=LNWNLL', '_blank');" style="color:#ffffff;">Massdrop<img src="data/site/icons/massdrop.png"></div>-->
<!-- </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>
<input type="checkbox" checked="true" onchange="toggleTooltips(this.checked)" id="tooltipToggler"> Display tooltips<br>
<input type="checkbox" onchange="advancedBordersClicked()" id="checkboxAdvanced"> Advanced Borders<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/site/main.js"></script>
<script src="data/scripts/setCodeList.js"></script>
<html>

View File

@@ -44,9 +44,18 @@
--clear-mid: #fff4;
--clear-dark: #fff6;
}
/*Background & Footer*/
footer {
background-color: var(--dark-color);
padding: 2.5em;
font: 1.3em gothammedium;
color: var(--light-color);
}
body {
margin: 0px;
background-image: url(images/lowpoly.png);
background-attachment: fixed;
background-size: cover;
}
html {
background-image: linear-gradient(to bottom right, var(--shifting-color-1), var(--shifting-color-1-light));
background-attachment: fixed;
@@ -57,21 +66,9 @@ html {
user-select: none;
font-size: 8pt;
}
body {
margin: 0px;
background-image: url(images/lowpoly.png);
background-attachment: fixed;
background-size: cover;
.selectable {
user-select: all;
}
footer {
background-color: var(--dark-color);
padding: 2.5em;
font: 1.3em gothammedium;
color: var(--light-color);
}
/*Canvas*/
canvas {
width: calc(100%);
height: auto;
@@ -81,9 +78,6 @@ canvas {
.canvasContainer {
text-align: center;
}
/*Grids*/
.mainGrid {
padding: 0.3em;
display: grid;
@@ -91,36 +85,13 @@ canvas {
grid-template-columns: auto;
font: 1.6em mplantin;
}
.splitGrid {
.imageGrid {
display: grid;
grid-template-columns: 50% 50%;
grid-template-columns: auto 9em;
min-height: 12.5em;
}
.frameGrid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(4em, 1fr));
grid-auto-rows: min-content;
}
.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;
.imgPreview {
width: 100%;
}
.bar {
background-image: url(../images/manaSymbols/63.png);
@@ -130,55 +101,78 @@ canvas {
width: 100%;
height: 1em;
}
.imgPreview {
.cardMenu > div > div:nth-child(1) {
/* border: 1px solid blue;*/
/* text-align: center;*/
/* font: 1.5em belerenbsc;*/
}
.twoGrid {
display: grid;
grid-template-columns: 50% auto;
}
.input, .textarea, .button, .select {
font: 1em mplantin;
background-color: var(--light-color);
border: 1px solid #aaae;
border-radius: 0.2em;
padding: 0px 0.2em;
outline: none;
}
.textarea {
min-height: 6em;
max-height: 18em;
resize: vertical;
}
.select {
background: #fafafa url(../images/manaSymbols/49.png) no-repeat calc(100% - 0.1em) 50%;
background-size: 1em 1em;
-webkit-appearance: none;
}
.autoGrid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(6em, 1fr));
grid-auto-rows: min-content;
}
.input.file {
padding: 0px;
height: 1.26em;
}
.tooltip {
position: relative;
}
.tooltip .tooltiptext {
visibility: hidden;
background-color: var(--dark-color);
color: var(--light-color);
text-align: center;
border-radius: 5px;
padding: 5px;
top: calc(100% + 5px);
left: 0px;
max-width: calc(100% - 10px);
width: auto;
position: absolute;
z-index: 1;
opacity: 0;
transition: opacity 0.5s;
}
.tooltip .tooltiptext::after {
content: " ";
position: absolute;
bottom: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent var(--dark-color) transparent;
}
.tooltip .tooltiptext:hover {
/*visibility: hidden;*/
opacity: 0;
}
div.tooltip > * {
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;
}
@@ -191,10 +185,63 @@ footer a {
footer a:hover {
color: var(--shifting-color-1-light);
}
.hidden {
display: none;
}
.footerGrid {
display: grid;
grid-template-columns: auto;
grid-gap: 2em;
}
.layer {
padding: 2em 2em;
color: black;
font-size: 2em;
text-align: center;
margin-bottom: 3em;
}
.layer { /*:nth-child(even)*/
background-color: var(--light-color);
background-image: url(images/layerBackground.png);
background-position: center;
background-repeat: no-repeat;
}
.title {
text-align: center;
font: 1.5em belerenbsc;
}
.pageTitle {
font: 5em belerenbsc;
text-align: center;
padding-top: 0.3em;
}
.paragraph {
font: 1em mplantin;
text-align: left;
}
.indent {
text-indent: 2em;
}
.leftMargin {
margin-left: 2em;
}
.donate > div:hover {
text-decoration: underline;
}
.donate > div {
background-color: var(--clear-light);
border-radius: 2em;
font: 2em belerenbsc;
}
.donate > div > img {
height: 1em;
position: relative;
top: 0.15em;
left: 0.15em;
}
/*Controls the area taken by the canvas*/
@media screen and (min-width: 905pt) {
@media screen and (min-width: 888pt) {
/*Makes room for the canvas and controls to be side by side*/
.mainGrid {
padding: 1.5em;
@@ -215,7 +262,7 @@ footer a:hover {
}
}
/*These control tooltips for mobile devices vs. desktops/laptops*/
/*@media screen and (min-width: 1024px) {
@media screen and (min-width: 1024px) {
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
@@ -226,8 +273,8 @@ footer a:hover {
visibility: visible;
opacity: 1;
}
}*/
/*Allows the footer to be displayed horizontally on Desktop*/
}
/*The footer can now fit horizontally!*/
@media screen and (min-width: 375pt) {
.footerGrid {
display: grid;
@@ -237,131 +284,106 @@ footer a:hover {
}
/*WIP (or I'm too lazy to sort these)*/
.tabMenu {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(8em, 1fr));
grid-auto-rows: min-content;
/*WIP*/
.tab {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(6.5em, 1fr));
grid-auto-rows: min-content;
}
.tabOption, .textTabButton {
font: 1.5em belerenbsc;
text-align: center;
background-color: var(--clear-light);
border: 1px solid var(--light-color);
transition: 0.5s;
.tab.tabSelect {
grid-template-columns: repeat(auto-fit, minmax(8em, 1fr));
}
.tabOption:hover, .textTabButton:hover {
background-color: var(--clear-mid);
transition: 0s;
.tabButton.tabSelectButton {
font: 1em belerenb;
}
.tabOption.tabOptionSelected, .textTabButton.activeTextTab {
background-color: var(--clear-dark);
.tabButton {
text-align: center;
background: var(--clear-light);
border: 1px solid var(--light-color);
font: 1.2em belerenbsc;
padding: 0.1em 0em;
transition: 0.33s;
}
.tabContent:not(.tabVisible) {
display: none;
.tabButton:hover {
background-color: var(--clear-mid);
transition: 0s;
}
.tabButton.activeTab {
background: var(--clear-dark);
text-decoration: underline;
text-decoration-color: var(--shifting-color-1-light)
}
.tabContent {
display: none;
}
.tabContent.displayed {
display: block;
}
.cardMasterElement {
font: 1em belerenbsc;
background-color: var(--clear-light);
border: 1px solid var(--light-color);
border-radius: 0.25em;
padding: 0.5em;
margin-top: 0.25em;
.download {
text-align: center;
font: 1.5em belerenbsc;
}
.cardMasterElement img {
max-height: 2em;
max-width: 2em;
position: absolute;
transform: translate(1em, -0.35em);
.truncate {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
text-indent: 0em;
}
.cardmasterElement img.cardMasterElementMaskImage {
transform: translate(3.5em, -0.35em);
.tab, button, select, option {
cursor: pointer;
}
.cardMasterElementMoving {
background-color: var(--clear-dark);
/*Custom Checkboxes*/
.realCheckboxContainer {
margin-top: 0.45em
}
.closeCardMasterElement {
cursor: pointer;
position: absolute;
/*top: 50%;*/
left: 96%;
/*padding: 12px 16px;*/
/*transform: translate(0%, -50%);*/
.checkboxContainer {
position: relative;
padding-left: 1.5em;
padding-top: 0.25em;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#framePicker, #maskPicker {
max-height: 260pt;
overflow-y: auto;
overflow-x: hidden;
border: 1px solid var(--light-color);
.checkboxContainer input {
position: absolute;
opacity: 0;
height: 0;
width: 0;
}
.frameOption {
height: 4em;
text-align: center;
width: 100%;
.checkmark {
position: absolute;
top: 0;
left: 0;
height: 1.2em;
width: 1.2em;
transition: 0.33s;
background-color: var(--clear-light);
border: 1px solid var(--light-color)
}
.frameOption img {
max-width: 4em;
max-height: 4em;
.checkboxContainer:hover input ~ .checkmark {
background-color: var(--clear-dark);
}
.maskOption img {
max-width: 2em;
max-height: 2em;
.checkboxContainer input:checked ~ .checkmark {
background-color: var(--dark-color);
}
.frameOption.frameOptionSelected, .maskOption.maskOptionSelected {
background-color: var(--clear-dark);
.checkmark:after {
content: "X";
font: 1.2em gothammedium;
color: white;
position: absolute;
opacity: 0;
transition: 0.33s;
}
.maskOption, .frameOption {
background-color: var(--clear-light);
border: 1px solid var(--light-color);
border-radius: 0.25em;
.checkboxContainer input:checked ~ .checkmark:after {
opacity: 1;
}
.maskOption {
margin-left: 0.5em;
padding: 0.125em;
width: calc(100% - 1.4em);
.checkboxContainer .checkmark:after {
left: 0.15em;
top: -0.1em;
}
.textarea {
width: 100%;
min-height: 8em;
max-height: 24em;
resize: vertical;
}
.textTabButton {
font-size: 1em;
}
.textTab {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(6em, 1fr));
grid-auto-rows: min-content;
}
.input, .textarea, .button, .select {
font: 1em mplantin;
background-color: var(--light-color);
border: 1px solid #aaa;
border-radius: 0.2em;
padding: 0px 0.2em;
outline: none;
width: 100%;
}
.inputOpacity {
font: 1em mplantin;
background-color: var(--light-color);
border: 1px solid #aaa;
border-radius: 0.2em;
padding: 0px 0.2em;
outline: none;
width: 2.9em;
}
#textCodeTutorial {
display: grid;
grid-template-columns: 6.5em auto;
@@ -376,6 +398,3 @@ footer a:hover {
}
input[type="checkbox"], .frameOption, .maskOption, .button {
cursor: pointer;
}

173
test.html
View File

@@ -1,173 +0,0 @@
<!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>
<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 class="tabOption mainEditor" onclick="toggleTabs(event, 'collector', 'mainEditor')">Collector</div>
<div class="tabOption mainEditor" onclick="toggleTabs(event, 'set', 'mainEditor')">Set Symbol</div>
<div class="tabOption mainEditor" onclick="toggleTabs(event, 'watermark', 'mainEditor')">Watermark</div>
</div>
<div class="tabContent mainEditor tabVisible" id="frame">
<div class="splitGrid">
<div id="framePicker" class="frameGrid"></div>
<div id="maskPicker"></div>
</div>
<div class="splitGrid">
<button onclick="addFrameToCardMaster()" class="button">Add</button>
<button onclick="addFrameToCardMaster(' - Right')" class="button">Add To Right Half</button>
</div>
<div id="selectedFramePreview">No frame selected</div>
<div id="cardMaster"></div>
</div>
<div class="tabContent mainEditor" id="text">
<div id="inputWhichTextTabs" class="textTab"></div>
<textarea class="textarea" id="inputText" placeholder="" oninput="updateText()"></textarea>
<input type="text" class="input text" placeholder="Mana Cost" id="inputManaCost" oninput="cardImageUpdated()" value="">
<div class="bar"></div>
<div class="title">How To Use Text Codes</div>
<div class="paragraph indent">
Remember to surround each code with curly brackets ("{" and "}"). The codes are not caps sensitive. The following is a list of available text codes and what they do:
</div>
<div id="textCodeTutorial"></div>
</div>
<div class="tabContent mainEditor" id="art">
<div class="splitGrid">
<div>
<input type="file" class="input file" accept="image/*" onchange="uploadImage(event, cardArt)" placeholder="Via File Upload">
<input type="text" class="input text" placeholder="Via URL" onchange="cardArt.src = 'https://cors-anywhere.herokuapp.com/' + this.value">
<input type="text" class="input text" id="inputCardArtName" onchange="inputCardArtName(this.value)" placeholder="Via Card Name">
<input type="number" class="input number" id="inputCardArtNameNumber" onchange="inputCardArtNameNumber(this.value)" value="" min="1" max="1" placeholder="Which Art From Card Name">
</div>
<div>
<div style="text-align: center; margin: 0.18em 0px">X, Y, &amp; Zoom:</div>
<input type="number" class="input number" value="0" id="inputCardArtX" oninput="cardImageUpdated()">
<input type="number" class="input number" value="0" id="inputCardArtY" oninput="cardImageUpdated()">
<input type="number" class="input number" value="100" step="0.1" min="0" id="inputCardArtZoom" oninput="cardImageUpdated()">
</div>
</div>
</div>
<div class="tabContent mainEditor" id="collector">
<div class="autoGrid">
<input type="text" class="input text" placeholder="Number" id="inputInfoNumber" oninput="updateBottomInfoCanvas()" value="">
<input type="text" class="input text" placeholder="Rarity" id="inputInfoRarity" oninput="updateBottomInfoCanvas()" value="P">
<input type="text" class="input text" placeholder="Set" id="inputInfoSet" oninput="updateBottomInfoCanvas()" value="MTG">
<input type="text" class="input text" placeholder="Language" id="inputInfoLanguage" oninput="updateBottomInfoCanvas()" value="EN">
<input type="text" class="input text" placeholder="Artist's Name" id="inputInfoArtist" oninput="updateBottomInfoCanvas()" value="">
</div>
</div>
<div class="tabContent mainEditor" id="set">
<div class="autoGrid">
<input type="file" class="input file" accept="image/*" onchange="uploadImage(event, setSymbol)" placeholder="Via File Upload">
<input type="text" class="input text" placeholder="Via URL" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/' + this.value)">
<input type="text" class="input text" id="inputSetCode" placeholder="Via Set Code" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + this.value + '&size=large&rarity=' + document.getElementById('inputSetRarity').value)">
<input type="text" class="input text" id="inputSetRarity" placeholder="Rarity" onchange="whiteToTransparent(setSymbol, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + document.getElementById('inputSetCode').value + '&size=large&rarity=' + this.value)">
<button class="button" onclick="randomSet()">Random</button>
</div>
</div>
<div class="tabContent mainEditor" id="watermark">
<div class="autoGrid">
<input type="file" class="input file" accept="image/*" onchange="uploadImage(event, watermark)" placeholder="Via File Upload">
<input type="text" class="input text" placeholder="Via URL" onchange="whiteToTransparent(watermark, 'https://cors-anywhere.herokuapp.com/' + this.value)">
<input type="text" class="input text" placeholder="Via Set Code" onchange="whiteToTransparent(watermark, 'https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=' + this.value + '&size=large')">
<select class="select" id="inputWatermarkPrimary" onchange="updateWatermark()">
<option value="none">None</option>
<option value="default">Default</option>
<option value="#ccc8b1" selected="selected">White</option>
<option value="#b0c3d5">Blue</option>
<option value="#b3b3b3">Black</option>
<option value="#ddac9b">Red</option>
<option value="#b9c8b5">Green</option>
<option value="#e4d49b">Gold</option>
<option value="#cfc8be">Artifact/Colorless</option>
</select>
<select class="select" id="inputWatermarkSecondary" onchange="updateWatermark()">
<option value="none">None</option>
<option value="default">Default</option>
<option value="#ccc8b1">White</option>
<option value="#b0c3d5">Blue</option>
<option value="#b3b3b3">Black</option>
<option value="#ddac9b">Red</option>
<option value="#b9c8b5">Green</option>
<option value="#e4d49b">Gold</option>
<option value="#cfc8be">Artifact/Colorless</option>
</select>
</div>
</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 async src="data/scripts/sortable.js"></script>
<script async src="data/scripts/setCodeList.js"></script>
<script defer src="data/scripts/main.js"></script>
<script defer src="data/scripts/colors.js"></script>
<html>