<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/LNEQmz?depth=everything&order=popularity&page=61&q=chat&show_forks=false" />
<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;
background: url("http://nerdordie.com/apps/panels/img/canvasBg.png") repeat;
height: 95px;
margin: 60px auto;
padding: 0;
position: relative;
}
#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;
}
/***
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;
}
.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;
}
.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-4">
<fieldset class="form-group">
<!-- this input updates left side color -->
<label>Left Side Color</label>
<input type="text" id="leftColorInput" placeholder="Color for left side" onkeyup="setLeftColor(document.getElementById('leftColorInput').value);">
</fieldset>
</div>
<div class="input-col col-xs-4">
<fieldset class="form-group">
<!-- this input updates right side color -->
<label>Right Side Color</label>
<input type="text" id="rightColorInput" placeholder="Color for right side" onkeyup="setRightColor(document.getElementById('rightColorInput').value);">
</fieldset>
</div>
<div class="input-col col-xs-4">
<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>
<div class="row">
<div class="input-col col-xs-6">
<fieldset class="form-group">
<!-- this input updates text -->
<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-6">
<!-- this select updates image -->
<fieldset class="form-group">
<label for="exampleSelect2">Icon</label>
<select class="form-control" id="imagelist" name="imagelist">
</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="50" oninput="setTextSize(document.getElementById('textRange').value);">
<p>Current Size: <span id="textRangeNumber">50</span>px</p>
</fieldset>
</div>
<div class="input-col col-xs-6">
<fieldset class="form-group">
<!-- this input updates text -->
<label>Text Vertical Align</label>
<input type="range" id="textVertRange" min="0" max="80" step="1" value="40" oninput="setTextVertSize(document.getElementById('textVertRange').value);">
<p>Current Size: <span id="textVertRangeNumber">40</span>px</p>
</fieldset>
</div>
</div>
<div class="row">
<div class="input-col col-xs-6">
<fieldset class="form-group">
<!-- this input adds padding -->
<label>Add Padding</label><br>
<input id="yesPadding" type="radio" value="95" name="addPadding" onclick="changeCanvasSize(95);" checked>
<label for="yesPadding">Yes</label>
<br>
<input id="noPadding" type="radio" value="80" name="addPadding" onclick="changeCanvasSize(80);">
<label for="noPadding">No</label>
</fieldset>
</div>
<div class="input-col col-xs-6">
<fieldset class="form-group">
<!-- this input updates text -->
<label>Font Family</label>
<input type="text" id="fontHolder" class="form-control" placeholder="Oswald" value="Oswald" onkeyup="setFont(document.getElementById('fontHolder').value);">
<div class="additional">
<small>This must match a font name that you have installed on your local machine to work properly.</small>
</div>
</fieldset>
</div>
</div>
</form>
<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 >var imageObject, index, len, selector, fontLoaded = false, imageLoaded = false;
WebFont.load({
google: {
families: ['Oswald']
},
active: function() {
fontLoaded = true;
if(imageLoaded) {
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
}
},
});
// Default Values
var leftColor = "rgb(35, 184, 94)",
rightColor = "rgb(16, 18, 32)",
font = "Oswald",
textColor = "#FFF",
text = "Battle.net",
textSize = 50,
textVertAlign = 40,
image = "image1",
canvas,
canvasHeight = 95,
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/panels/icons/";
var images = {
"Battle.net" : imageLocation + "battlenet.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",
"G2A" : imageLocation + "g2a.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",
"Patron" : imageLocation + "patreon.png",
"Paypal" : imageLocation + "paypal.png",
"Playstation" : imageLocation + "psn.png",
"Plays.tv" : imageLocation + "playstv.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");
// Load it with the default value
changeImage();
selector.addEventListener("change", changeImage);
$("#leftColorInput").spectrum({
color: leftColor,
showInput: true,
className: "full-spectrum",
showInitial: true,
showPalette: true,
showSelectionPalette: true,
maxSelectionSize: 10,
preferredFormat: "hex",
localStorageKey: "spectrum.demo",
palette: colorPalette,
move: function(color) {
leftColor = color.toHexString();
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
},
change: function(color) {
leftColor = color.toHexString();
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
}
});
$("#rightColorInput").spectrum({
color: rightColor,
showInput: true,
className: "full-spectrum",
showInitial: true,
showPalette: true,
showSelectionPalette: true,
maxSelectionSize: 10,
preferredFormat: "hex",
localStorageKey: "spectrum.demo",
palette: colorPalette,
move: function(color) {
rightColor = color.toHexString();
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
},
change: function(color) {
rightColor = color.toHexString();
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
}
});
$("#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(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
},
change: function(color) {
textColor = color.toHexString();
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
}
});
} // end of init
function changeImage() {
imageURL = selector.value;
// Create image
imageObject = new Image();
// When image loads, draw it
imageObject.onload = function() {
imageLoaded = true;
if(fontLoaded) {
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
}
};
// Load it
imageObject.src = imageURL;
}
function setLeftColor(color) {
leftColor = color;
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
}
function setRightColor(color) {
rightColor = color;
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
}
function setText(textInput) {
text = textInput;
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
}
function setFont(fontInput) {
font = fontInput;
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
}
function setTextSize(textSizeInput) {
textSize = textSizeInput;
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
var rangeNumber = document.getElementById("textRangeNumber");
rangeNumber.innerHTML = textSize;
}
function setTextVertSize(textVertSizeInput) {
textVertAlign = textVertSizeInput;
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
var rangeNumber = document.getElementById("textVertRangeNumber");
rangeNumber.innerHTML = textVertAlign;
}
function changeCanvasSize(canvasSize) {
canvasHeight = canvasSize;
draw(ctx, leftColor, rightColor, font, textColor, text, image, textSize, textVertAlign);
if(canvasHeight == 80) {
$("#hidePadding").show();
} else if (canvasHeight == 95) {
$("#hidePadding").hide();
}
}
// Draw Canvas Elements
function draw(ctx, lcolor, rcolor, panelfont, fontcolor, paneltext, icon, panelsize, vertalign) {
ctx.canvas.width = 320;
ctx.canvas.height = canvasHeight;
// Clear Everything
ctx.clearRect(0,0, ctx.canvas.width, ctx.canvas.height);
// Left Rectangle
ctx.beginPath();
ctx.moveTo(80, 80);
ctx.lineTo(0, 80);
ctx.lineTo(0, 0);
ctx.lineTo(80, 0);
ctx.lineTo(80, 80);
ctx.closePath();
ctx.fillStyle = lcolor;
ctx.fill();
ctx.closePath();
// Right Rectangle
ctx.beginPath();
ctx.moveTo(320, 80);
ctx.lineTo(80, 80);
ctx.lineTo(80, 0);
ctx.lineTo(320, 0);
ctx.lineTo(320, 80);
ctx.closePath();
ctx.fillStyle = rcolor;
ctx.fill();
ctx.closePath();
// Text
ctx.save();
ctx.font = panelsize + "px '" + panelfont + "'";
ctx.fillStyle = fontcolor;
ctx.textBaseline= "middle";
ctx.fillText(paneltext, 90, vertalign); // equation sets text to vertical middle of right box
ctx.restore();
// Icon Image
ctx.save();
ctx.drawImage(imageObject, 0, 0);
ctx.restore();
}
$( window ).resize(function() {
var ww = $( window ).width();
if (ww < 700) {
$("#appContainer .input-col").removeClass("col-xs-4 col-xs-6");
$("#appContainer .input-col").addClass("col-xs-12");
console.log("Smaller");
} else if (ww >= 700) {
console.log("Bigger");
}
});
// Launch on load
window.onload = init();
//# sourceURL=pen.js
</script>
</body></html>