<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<!DOCTYPE html><html lang='en' class=''>
<head><script src='//production-assets.codepen.io/assets/editor/live/console_runner-079c09a0e3b9ff743e39ee2d5637b9216b3545af0de366d4b9aad9dc87e26bfd.js'></script><script src='//production-assets.codepen.io/assets/editor/live/events_runner-73716630c22bbc8cff4bd0f07b135f00a0bdc5d14629260c3ec49e5606f98fdd.js'></script><script src='//production-assets.codepen.io/assets/editor/live/css_live_reload_init-2c0dc5167d60a5af3ee189d570b1835129687ea2a61bee3513dee3a50c115a77.js'></script><meta charset='UTF-8'><meta name="robots" content="noindex"><link rel="shortcut icon" type="image/x-icon" href="//production-assets.codepen.io/assets/favicon/favicon-8ea04875e70c4b0bb41da869e81236e54394d63638a1ef12fa558a4a835f1164.ico" /><link rel="mask-icon" type="" href="//production-assets.codepen.io/assets/favicon/logo-pin-f2d2b6d2c61838f7e76325261b7195c27224080bc099486ddd6dccb469b8e8e6.svg" color="#111" /><link rel="canonical" href="https://codepen.io/NerdOrDie/pen/qNpZpQ?limit=all&page=4&q=discord" />
<link rel='stylesheet prefetch' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css'>
<style class="cp-pen-styles">body {
background: #fff;
}
#canvasHolder {
width: 320px;
height: 131px;
margin: 20px auto;
padding: 0;
position: relative;
font-family: 'Big Noodle' !important;
}
#hidePadding {
background: #fff;
width: 320px;
height: 15px;
position: absolute;
bottom: 0;
left: 0;
display: none;
}
#appContainer {
width: 100%;
margin: 0 auto;
}
#appContainer .row {
margin-top: 30px;
}
.additional {
margin-top: 15px;
}
label {
display: block;
}
#dlButton {
margin-bottom: 40px;
}
/***
Spectrum Colorpicker v1.8.0
https://github.com/bgrins/spectrum
Author: Brian Grinstead
License: MIT
***/
.sp-container {
position:absolute;
top:0;
left:0;
display:inline-block;
*display: inline;
*zoom: 1;
/* https://github.com/bgrins/spectrum/issues/40 */
z-index: 9999994;
overflow: hidden;
}
.sp-container.sp-flat {
position: relative;
}
/* Fix for * { box-sizing: border-box; } */
.sp-container,
.sp-container * {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
/* https://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */
.sp-top {
position:relative;
width: 100%;
display:inline-block;
}
.sp-top-inner {
position:absolute;
top:0;
left:0;
bottom:0;
right:0;
}
.sp-color {
position: absolute;
top:0;
left:0;
bottom:0;
right:20%;
}
.sp-hue {
position: absolute;
top:0;
right:0;
bottom:0;
left:84%;
height: 100%;
}
.sp-clear-enabled .sp-hue {
top:33px;
height: 77.5%;
}
.sp-fill {
padding-top: 80%;
}
.sp-sat, .sp-val {
position: absolute;
top:0;
left:0;
right:0;
bottom:0;
}
.sp-alpha-enabled .sp-top {
margin-bottom: 18px;
}
.sp-alpha-enabled .sp-alpha {
display: block;
}
.sp-alpha-handle {
position:absolute;
top:-4px;
bottom: -4px;
width: 6px;
left: 50%;
cursor: pointer;
border: 1px solid black;
background: white;
opacity: .8;
}
.sp-alpha {
display: none;
position: absolute;
bottom: -14px;
right: 0;
left: 0;
height: 8px;
}
.sp-alpha-inner {
border: solid 1px #333;
}
.sp-clear {
display: none;
}
.sp-clear.sp-clear-display {
background-position: center;
}
.sp-clear-enabled .sp-clear {
display: block;
position:absolute;
top:0px;
right:0;
bottom:0;
left:84%;
height: 28px;
}
/* Don't allow text selection */
.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button {
-webkit-user-select:none;
-moz-user-select: -moz-none;
-o-user-select:none;
user-select: none;
}
.sp-container.sp-input-disabled .sp-input-container {
display: none;
}
.sp-container.sp-buttons-disabled .sp-button-container {
display: none;
}
.sp-container.sp-palette-buttons-disabled .sp-palette-button-container {
display: none;
}
.sp-palette-only .sp-picker-container {
display: none;
}
.sp-palette-disabled .sp-palette-container {
display: none;
}
.sp-initial-disabled .sp-initial {
display: none;
}
/* Gradients for hue, saturation and value instead of images. Not pretty... but it works */
.sp-sat {
background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0)));
background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0));
background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0));
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)";
filter : progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81');
}
.sp-val {
background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0)));
background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));
background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0));
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)";
filter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000');
}
.sp-hue {
background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000));
background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
}
/* IE filters do not support multiple color stops.
Generate 6 divs, line them up, and do two color gradients for each.
Yes, really.
*/
.sp-1 {
height:17%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00');
}
.sp-2 {
height:16%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00');
}
.sp-3 {
height:17%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff');
}
.sp-4 {
height:17%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff');
}
.sp-5 {
height:16%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff');
}
.sp-6 {
height:17%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000');
}
.sp-hidden {
display: none !important;
}
/* Clearfix hack */
.sp-cf:before, .sp-cf:after { content: ""; display: table; }
.sp-cf:after { clear: both; }
.sp-cf { *zoom: 1; }
/* Mobile devices, make hue slider bigger so it is easier to slide */
@media (max-device-width: 480px) {
.sp-color { right: 40%; }
.sp-hue { left: 63%; }
.sp-fill { padding-top: 60%; }
}
.sp-dragger {
border-radius: 5px;
height: 5px;
width: 5px;
border: 1px solid #fff;
background: #000;
cursor: pointer;
position:absolute;
top:0;
left: 0;
}
.sp-slider {
position: absolute;
top:0;
cursor:pointer;
height: 3px;
left: -1px;
right: -1px;
border: 1px solid #000;
background: white;
opacity: .8;
}
/*
Theme authors:
Here are the basic themeable display options (colors, fonts, global widths).
See https://bgrins.github.io/spectrum/themes/ for instructions.
*/
.sp-container {
border-radius: 0;
background-color: #ECECEC;
border: solid 1px #f0c49B;
padding: 0;
}
.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear {
font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
.sp-top {
margin-bottom: 3px;
}
.sp-color, .sp-hue, .sp-clear {
border: solid 1px #666;
}
/* Input */
.sp-input-container {
float:right;
width: 100px;
margin-bottom: 4px;
}
.sp-initial-disabled .sp-input-container {
width: 100%;
}
.sp-input {
font-size: 12px !important;
border: 1px inset;
padding: 4px 5px;
margin: 0;
width: 100%;
background:transparent;
border-radius: 3px;
color: #222;
}
.sp-input:focus {
border: 1px solid orange;
}
.sp-input.sp-validation-error {
border: 1px solid red;
background: #fdd;
}
.sp-picker-container , .sp-palette-container {
float:left;
position: relative;
padding: 10px;
padding-bottom: 300px;
margin-bottom: -290px;
}
.sp-picker-container {
width: 172px;
border-left: solid 1px #fff;
}
/* Palettes */
.sp-palette-container {
border-right: solid 1px #ccc;
}
.sp-palette-only .sp-palette-container {
border: 0;
}
.sp-palette .sp-thumb-el {
display: block;
position:relative;
float:left;
width: 24px;
height: 15px;
margin: 3px;
cursor: pointer;
border:solid 2px transparent;
}
.sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active {
border-color: orange;
}
.sp-thumb-el {
position:relative;
}
/* Initial */
.sp-initial {
float: left;
border: solid 1px #333;
}
.sp-initial span {
width: 30px;
height: 25px;
border:none;
display:block;
float:left;
margin:0;
}
.sp-initial .sp-clear-display {
background-position: center;
}
/* Buttons */
.sp-palette-button-container,
.sp-button-container {
float: right;
}
/* Replacer (the little preview div that shows up instead of the <input>) */
.sp-replacer {
margin:0;
overflow:hidden;
cursor:pointer;
padding: 4px;
display:inline-block;
*zoom: 1;
*display: inline;
border: solid 1px #91765d;
background: #eee;
color: #333;
vertical-align: middle;
width: 100%;
}
.sp-replacer:hover, .sp-replacer.sp-active {
border-color: #F0C49B;
color: #111;
}
.sp-replacer.sp-disabled {
cursor:default;
border-color: silver;
color: silver;
}
.sp-dd {
padding: 2px 0;
height: 16px;
line-height: 16px;
float:left;
font-size:10px;
}
.sp-preview {
position:relative;
width:25px;
height: 20px;
border: solid 1px #222;
margin-right: 5px;
float:left;
z-index: 0;
width: 80%;
}
.sp-palette {
*width: 220px;
max-width: 220px;
}
.sp-palette .sp-thumb-el {
width:16px;
height: 16px;
margin:2px 1px;
border: solid 1px #d0d0d0;
}
.sp-container {
padding-bottom:0;
}
/* Buttons: http://hellohappy.org/css3-buttons/ */
.sp-container button {
background-color: #eeeeee;
background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc);
background-image: -moz-linear-gradient(top, #eeeeee, #cccccc);
background-image: -ms-linear-gradient(top, #eeeeee, #cccccc);
background-image: -o-linear-gradient(top, #eeeeee, #cccccc);
background-image: linear-gradient(to bottom, #eeeeee, #cccccc);
border: 1px solid #ccc;
border-bottom: 1px solid #bbb;
border-radius: 3px;
color: #333;
font-size: 14px;
line-height: 1;
padding: 5px 4px;
text-align: center;
text-shadow: 0 1px 0 #eee;
vertical-align: middle;
}
.sp-container button:hover {
background-color: #dddddd;
background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb);
background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb);
background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb);
background-image: -o-linear-gradient(top, #dddddd, #bbbbbb);
background-image: linear-gradient(to bottom, #dddddd, #bbbbbb);
border: 1px solid #bbb;
border-bottom: 1px solid #999;
cursor: pointer;
text-shadow: 0 1px 0 #ddd;
}
.sp-container button:active {
border: 1px solid #aaa;
border-bottom: 1px solid #888;
-webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
-moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
-ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
-o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
}
.sp-cancel {
font-size: 11px;
color: #d93f3f !important;
margin:0;
padding:2px;
margin-right: 5px;
vertical-align: middle;
text-decoration:none;
}
.sp-cancel:hover {
color: #d93f3f !important;
text-decoration: underline;
}
.sp-palette span:hover, .sp-palette span.sp-thumb-active {
border-color: #000;
}
.sp-preview, .sp-alpha, .sp-thumb-el {
position:relative;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);
}
.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner {
display:block;
position:absolute;
top:0;left:0;bottom:0;right:0;
}
.sp-palette .sp-thumb-inner {
background-position: 50% 50%;
background-repeat: no-repeat;
}
.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=);
}
.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=);
}
.sp-clear-display {
background-repeat:no-repeat;
background-position: center;
background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==);
}</style></head><body>
<div class="container">
<div id="canvasHolder">
<canvas id="canvas"></canvas>
<div id="hidePadding"></div>
</div>
<div id="appContainer">
<form>
<div class="row">
<div class="input-col col-xs-3">
<fieldset class="form-group">
<!-- this input updates text color -->
<label>Icon Color</label>
<input type="text" id="iconColorInput">
</fieldset>
</div>
<div class="input-col col-xs-3">
<fieldset class="form-group">
<!-- this input updates text color -->
<label>Text Color</label>
<input type="text" id="textColorInput" placeholder="Color for text" onkeyup="setTextColor(document.getElementById('textColorInput').value);">
</fieldset>
</div>
<div class="input-col col-xs-3">
<fieldset class="form-group">
<!-- this input updates text color -->
<label>Background Color</label>
<select class="form-control" id="bgColor" name="bgColor">
<option value="aquagreen">Aqua Green</option>
<option value="blue" selected="selected">Blue</option>
<option value="light">Light</option>
<option value="purple">Purple</option>
<option value="slate">Slate</option>
</select>
</fieldset>
</div>
<div class="input-col col-xs-3">
<fieldset class="form-group">
<label>Badge Color</label>
<select class="form-control" id="badgeColor" name="badgeColor">
<option value="blue">Blue</option>
<option value="bronze">Bronze</option>
<option value="silver" selected="selected">Silver</option>
<option value="gold">Gold</option>
<option value="green">Green</option>
<option value="purple">Purple</option>
</select>
</fieldset>
</div>
</div>
<div class="row">
<div class="input-col col-xs-3">
<fieldset class="form-group">
<label>Panel Text</label>
<input type="text" id="textHolder" class="form-control" placeholder="Enter Text Here" onkeyup="setText(document.getElementById('textHolder').value);">
</fieldset>
</div>
<div class="input-col col-xs-3">
<fieldset class="form-group">
<label>Icon</label>
<select class="form-control" id="imagelist" name="imagelist">
</select>
</fieldset>
</div>
<div class="input-col col-xs-3">
<fieldset class="form-group">
<label>Font Family</label>
<input type="text" id="fontHolder" class="form-control" placeholder="Oswald" value="Oswald" oninput="setFont(document.getElementById('fontHolder').value);">
</fieldset>
</div>
<div class="input-col col-xs-3">
<fieldset class="form-group">
<label>Font Style</label>
<select class="form-control" id="fontStyle" name="fontStyle">
<option value="bold">Bold</option>
<option value="bold italic">Bold Italic</option>
<option value="italic" selected="selected">Italic</option>
<option value="normal">Normal</option>
</select>
</fieldset>
</div>
</div>
<div class="row">
<div class="input-col col-xs-6">
<fieldset class="form-group">
<!-- this input updates text -->
<label>Text Size</label>
<input type="range" id="textRange" min="20" max="90" step="1" value="34" oninput="setTextSize(document.getElementById('textRange').value);">
<p>Current Size: <span id="textRangeNumber">34</span>px</p>
</fieldset>
</div>
<div class="input-col col-xs-6">
<fieldset class="form-group">
<label>Text Horizontal Align</label>
<input type="range" id="textHorzRange" min="100" max="200" step="1" value="130" oninput="setTextHorzSize(document.getElementById('textHorzRange').value);">
<p>Current Size: <span id="textHorzRangeNumber">130</span>px</p>
</fieldset>
</div>
</div>
<div class="row">
<div class="input-col col-xs-6">
<fieldset class="form-group">
<label>Text Vertical Align</label>
<input type="range" id="textVertRange" min="0" max="200" step="1" value="67" oninput="setTextVertSize(document.getElementById('textVertRange').value);">
<p>Current Size: <span id="textVertRangeNumber">67</span>px</p>
</fieldset>
</div>
</div>
</form>
<div class="row">
<div class="input-col col-xs-4">
<fieldset class="form-group">
<input class="form-control" type="text" id="fileName" placeholder="File Name">
<small>Enter name for file here, then click the download button.</small>
</fieldset>
</div>
<div class="input-col col-xs-4">
<button id="dlButton" class="btn btn-success" onclick="download()">Download</button>
</div>
</div>
<div class="row text-center">
<div class="input-col col-xs-6">
<a href="https://www.patreon.com/nerdordie" target="_blank">Support me on Patreon</a>
</div>
<div class="input-col col-xs-6">
<a href="https://twitter.com/NerdsPwn" target="_blank">Tweet your creations to @NerdsPwn</a>
</div>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.16/webfont.js"></script>
<script src='//production-assets.codepen.io/assets/common/stopExecutionOnTimeout-b2a7b3fe212eaa732349046d8416e00a9dec26eb7fd347590fbced3ab38af52e.js'></script><script src='//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script><script src='https://cdnjs.cloudflare.com/ajax/libs/spectrum/1.8.0/spectrum.min.js'></script><script src='//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js'></script>
<script >console.clear();
var imageObject, bgObject, badgeObject, index, len, selector, fontLoaded = false, imageLoaded = false;
WebFont.load({
google: {
families: ['Oswald']
},
active: function() {
fontLoaded = true;
if(imageLoaded) {
draw();
}
},
});
// Default Values
var font = "Oswald",
fontStyle = "italic",
textColor = "#FFF",
iconColor = "#FFF",
text = "BATTLE.NET",
textSize = 34,
textHorzAlign = 130,
textVertAlign = 67,
image = "image1",
canvas,
canvasHeight = 131,
ctx;
var colorPalette = [
["#fff", "#000"],
["#1abc9c", "#16a085", "#2ecc71", "#27ae60"],
["#3498db", "#2980b9", "#9b59b6", "#8e44ad"],
["#f1c40f", "#f39c12", "#e67e22", "#d35400"],
["#ecf0f1", "#95a5a6", "#bdc3c7", "#7f8c8d"]
];
var imageLocation = "http://nerdordie.com/apps/ow-panel-maker/icons/";
var images = {
"Battle.net" : imageLocation + "battlenet.png",
"Blank" : imageLocation + "blank.png",
"Chat" : imageLocation + "chat.png",
"Computer" : imageLocation + "computer.png",
"Controller" : imageLocation + "controller.png",
"Crown" : imageLocation + "crown.png",
"Deviant Art" : imageLocation + "deviantart.png",
"Discord" : imageLocation + "discord.png",
"Exclamation Mark" : imageLocation + "exclamation.png",
"Extra Life" : imageLocation + "extralife.png",
"Facebook" : imageLocation + "facebook.png",
"Gamewisp" : imageLocation + "gamewisp.png",
"Heart" : imageLocation + "heart.png",
"Instagram" : imageLocation + "instagram.png",
"Keyboard" : imageLocation + "keyboard.png",
"Money" : imageLocation + "money.png",
"Mouse" : imageLocation + "mouse.png",
"Music Notes" : imageLocation + "musicnotes.png",
"Network Icon" : imageLocation + "network.png",
"Nerd or Die" : imageLocation + "nod.png",
"Overwatch" : imageLocation + "overwatch.png",
"Patron" : imageLocation + "patreon.png",
"Paypal" : imageLocation + "paypal.png",
"Playstation" : imageLocation + "psn.png",
"Plus" : imageLocation + "plus.png",
"Pokemon" : imageLocation + "pokeball.png",
"Question Mark" : imageLocation + "questionmark.png",
"Robot" : imageLocation + "robot.png",
"Schedule" : imageLocation + "schedule.png",
"Snapchat" : imageLocation + "snapchat.png",
"Star" : imageLocation + "star.png",
"Steam" : imageLocation + "steam.png",
"Team Speak" : imageLocation + "teamspeak.png",
"Thumbs Up" : imageLocation + "thumbsup.png",
"Trophy" : imageLocation + "trophy.png",
"Tumblr" : imageLocation + "tumblr.png",
"Twitch" : imageLocation + "twitch.png",
"Twitter" : imageLocation + "twitter.png",
"Uplay" : imageLocation + "uplay.png",
"Wishlist - Amazon" : imageLocation + "amazon.png",
"Xbox" : imageLocation + "xbox.png",
"YouTube" : imageLocation + "youtube.png"
};
// Populate selector for images
var keys = Object.keys(images);
for (index = 0, len = keys.length; index < len; index++) {if (window.CP.shouldStopExecution(1)){break;}if (window.CP.shouldStopExecution(1)){break;}
var temp = keys[index];
var newoption = new Option(temp, images[temp]);
document.getElementById('imagelist').add(newoption);
}
window.CP.exitedLoop(1);
window.CP.exitedLoop(1);
// Initialize Canvas and Bind Events
function init() {
canvas = document.getElementById("canvas");
ctx = canvas.getContext("2d");
selector = document.getElementById("imagelist");
bgSelector = document.getElementById("bgColor");
fontStyleSelector = document.getElementById("fontStyle");
badgeSelector = document.getElementById("badgeColor");
// Load it with the default value
changeImage();
bgImage();
changeBadge();
selector.addEventListener("change", changeImage);
bgSelector.addEventListener("change", bgImage);
fontStyleSelector.addEventListener("change", changeFontStyle);
badgeSelector.addEventListener("change", changeBadge);
$("#textColorInput").spectrum({
color: textColor,
showInput: true,
className: "full-spectrum",
showInitial: true,
showPalette: true,
showSelectionPalette: true,
maxSelectionSize: 10,
preferredFormat: "hex",
localStorageKey: "spectrum.demo",
palette: colorPalette,
move: function(color) {
textColor = color.toHexString();
draw();
},
change: function(color) {
textColor = color.toHexString();
draw();
}
});
$("#iconColorInput").spectrum({
color: textColor,
showInput: true,
className: "full-spectrum",
showInitial: true,
showPalette: true,
showSelectionPalette: true,
maxSelectionSize: 10,
preferredFormat: "hex",
localStorageKey: "spectrum.demo",
palette: colorPalette,
move: function(color) {
iconColor = color.toHexString();
draw();
},
change: function(color) {
iconColor = color.toHexString();
draw();
}
});
} // end of init
function bgImage() {
imgVal = $("#bgColor").val();
imageURL = "http://nerdordie.com/apps/ow-panel-maker/img/OW_panel_" + imgVal + ".png";
// Create image
bgObject = new Image();
// When image loads, draw it
bgObject.onload = function() {
imageLoaded = true;
if(fontLoaded) {
draw();
}
};
// Load it
bgObject.src = imageURL;
}
function changeImage() {
imageURL = selector.value;
// Create image
imageObject = new Image();
// When image loads, draw it
imageObject.onload = function() {
imageLoaded = true;
if(fontLoaded) {
draw();
}
};
// Load it
imageObject.src = imageURL;
}
function changeBadge(){
badgeVal = $("#badgeColor").val();
imageURL = "http://nerdordie.com/apps/ow-panel-maker/img/" + badgeVal + "badge.png";
// Create image
badgeObject = new Image();
// When image loads, draw it
badgeObject.onload = function() {
imageLoaded = true;
if(fontLoaded) {
draw();
}
};
// Load it
badgeObject.src = imageURL;
}
function changeFontStyle() {
fontStyle = $("#fontStyle").val();
draw();
}
function setText(textInput) {
text = textInput;
draw();
}
function setFont(fontInput) {
font = fontInput;
draw();
}
function setTextSize(textSizeInput) {
textSize = textSizeInput;
draw();
var rangeNumber = document.getElementById("textRangeNumber");
rangeNumber.innerHTML = textSize;
}
function setTextHorzSize(textHorzSizeInput) {
textHorzAlign = textHorzSizeInput;
draw();
var rangeNumber = document.getElementById("textHorzRangeNumber");
rangeNumber.innerHTML = textHorzAlign;
}
function setTextVertSize(textVertSizeInput) {
textVertAlign = textVertSizeInput;
draw();
var rangeNumber = document.getElementById("textVertRangeNumber");
rangeNumber.innerHTML = textVertAlign;
}
// Draw Canvas Elements
function draw() {
ctx.canvas.width = 320;
ctx.canvas.height = canvasHeight;
// Clear Everything
ctx.clearRect(0,0, ctx.canvas.width, ctx.canvas.height);
ctx.save();
//background Image
ctx.drawImage(bgObject, 0, 0);
ctx.restore();
//Badge Image
ctx.drawImage(badgeObject, 0, 0);
// Text
ctx.save();
ctx.font = fontStyle + " " + textSize + "px '" + font + "'";
ctx.fillStyle = textColor;
ctx.textBaseline= "middle";
ctx.fillText(text, textHorzAlign, textVertAlign); // equation sets text to vertical middle of right box
ctx.restore();
var tmpCanvas = document.createElement("canvas");
var tmpCtx = tmpCanvas.getContext("2d");
tmpCtx.fillStyle = iconColor;
tmpCtx.fillRect(0, 0, 50, 50);
tmpCtx.globalCompositeOperation = "destination-atop";
tmpCtx.drawImage(imageObject, 0, 0);
// Icon Image
ctx.drawImage(tmpCanvas, 34, 41);
}
$( window ).resize(function() {
var ww = $( window ).width();
if (ww < 700) {
$("#appContainer .input-col").removeClass("col-xs-2 col-xs-3 col-xs-4 col-xs-6");
$("#appContainer .input-col").addClass("col-xs-12");
console.log("Smaller");
}
});
function download(){
var fileName = $("#fileName").val().replace(/[^a-z0-9+\s]+/gi, '');
var canvas = document.getElementById("canvas"), ctx = canvas.getContext("2d");
canvas.toBlob(function(blob) {
saveAs(blob, fileName + ".png");
});
}
// Launch on load
window.onload = init();
//# sourceURL=pen.js
</script>
</body></html>