2020-05-06 10:03:04 +00:00
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<link rel="stylesheet" href="../../css/spectre.min.css">
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div class="container">
|
|
|
|
<div class="columns">
|
2022-07-28 14:15:06 +00:00
|
|
|
Please wait...
|
2020-05-06 10:03:04 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2020-08-24 10:59:52 +00:00
|
|
|
<script src="../../core/lib/customize.js"></script>
|
2022-11-21 12:16:27 +00:00
|
|
|
<script src="../../webtools/imageconverter.js"></script>
|
2020-05-06 10:03:04 +00:00
|
|
|
|
|
|
|
<script>
|
2022-07-28 14:15:06 +00:00
|
|
|
var faces = [];
|
|
|
|
const FACES_BANGLE1 = [
|
2020-05-12 00:58:31 +00:00
|
|
|
{ img:"122240.png", bpp : 8, x:56, y:20, align: 1, col:"#FFFFFF", name:"Cityscape", attrib:"getwallpapers.com", attribLink:"http://getwallpapers.com/collection/8-bit-wallpaper", description:"" },
|
|
|
|
{ img:"122271.png", bpp : 8, x:10, y:125, align: -1, col:"#FFFFFF", name:"Sunset", attrib:"getwallpapers.com", attribLink:"http://getwallpapers.com/collection/8-bit-wallpaper", description:"" },
|
|
|
|
{ img:"thisisfine.png", bpp : 8, x:53, y:5, align: 0, col:"#000000", name:"This is fine.", attrib:"Gunshow #648", attribLink:"https://knowyourmeme.com/memes/this-is-fine", description:"" },
|
2020-07-16 14:58:06 +00:00
|
|
|
{ img:"explode.png", bpp : 8, x:0, y:145, align: 0, col:"#FFFFFF", name:"Boom.", attrib:"", attribLink:"", description:"" },
|
2020-05-06 10:03:04 +00:00
|
|
|
];
|
2022-07-28 14:15:06 +00:00
|
|
|
const FACES_BANGLE2 = [
|
|
|
|
{ img:"b2_122240.png", bpp : 8, x:2, y:5, align: 1, col:"#FFFFFF", name:"Cityscape", attrib:"getwallpapers.com", attribLink:"http://getwallpapers.com/collection/8-bit-wallpaper", description:"" },
|
|
|
|
{ img:"b2_122271.png", bpp : 8, x:2, y:115, align: -1, col:"#FFFFFF", name:"Sunset", attrib:"getwallpapers.com", attribLink:"http://getwallpapers.com/collection/8-bit-wallpaper", description:"" },
|
2022-07-28 16:05:44 +00:00
|
|
|
{ img:"b2_thisisfine.png", bpp : 8, x:10, y:0, align: 0, col:"#000000", name:"This is fine.", attrib:"Gunshow #648", attribLink:"https://knowyourmeme.com/memes/this-is-fine", description:"" },
|
2022-07-28 14:15:06 +00:00
|
|
|
{ img:"b2_explode.png", bpp : 8, x:2, y:115, align: 0, col:"#FFFFFF", name:"Boom.", attrib:"", attribLink:"", description:"" },
|
|
|
|
];
|
|
|
|
|
|
|
|
var recommendedUploadStyle = "...";
|
|
|
|
var defaultBPP = 8;
|
|
|
|
var defaultImageMode = "...";
|
|
|
|
var defaultPositions = {};
|
|
|
|
|
|
|
|
function onInit(device) {
|
|
|
|
if (device && device.id=="BANGLEJS2") {
|
|
|
|
faces = FACES_BANGLE2;
|
2024-01-02 15:05:46 +00:00
|
|
|
recommendedUploadStyle = "176x152 or 176x176(hidden widgets) 3bpp (8 color)";
|
2022-07-28 16:05:44 +00:00
|
|
|
defaultBPP = 8;
|
|
|
|
defaultImageMode = "web";
|
2022-07-28 14:15:06 +00:00
|
|
|
defaultPositions = {
|
|
|
|
"2,5,-1":"Top",
|
|
|
|
"2,115,-1":"Bottom",
|
|
|
|
};
|
|
|
|
} else {
|
|
|
|
faces = FACES_BANGLE1;
|
2024-01-02 15:05:46 +00:00
|
|
|
recommendedUploadStyle = "240x192 or 240x216 8bpp web palette";
|
2022-07-28 14:15:06 +00:00
|
|
|
defaultBPP = 8;
|
|
|
|
defaultImageMode = "web";
|
|
|
|
defaultPositions = {
|
|
|
|
"16,16,-1":"Top Left",
|
|
|
|
"50,16,1":"Top Right",
|
|
|
|
"16,131,-1":"Bottom Left",
|
|
|
|
"50,131,1":"Bottom Right"
|
|
|
|
};
|
|
|
|
}
|
|
|
|
updateFaces();
|
|
|
|
}
|
2024-01-02 15:05:46 +00:00
|
|
|
hazel
|
2022-07-28 14:15:06 +00:00
|
|
|
function updateFaces() {
|
2020-05-06 10:03:04 +00:00
|
|
|
document.querySelector(".columns").innerHTML = faces.map((face,facenumber)=>`
|
|
|
|
<div class="column col-6 col-xs-12">
|
|
|
|
<div class="card">
|
|
|
|
<div class="card-image">
|
|
|
|
<img src="${face.img}" face="${facenumber}" class="img-responsive">
|
|
|
|
</div>
|
|
|
|
<div class="card-header">
|
|
|
|
<div class="card-title h5">${face.name}</div>
|
|
|
|
<div class="card-subtitle text-gray"><a href="${face.attribLink}" target="_blank">${face.attrib}</a></div>
|
|
|
|
</div>
|
|
|
|
<div class="card-body">${face.description}</div>
|
|
|
|
<div class="card-footer">
|
|
|
|
<button class="btn btn-primary uploadbutton" face="${facenumber}">Upload</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
2020-05-07 08:27:28 +00:00
|
|
|
</div>`).join("\n")+`
|
|
|
|
<div class="column col-6 col-xs-12">
|
|
|
|
<div class="card">
|
|
|
|
<div class="card-image">
|
|
|
|
<img id="customimage" src="" face="custom" class="img-responsive">
|
|
|
|
</div>
|
|
|
|
<div class="card-header">
|
|
|
|
<div class="card-title h5">Custom</div>
|
2024-01-02 15:05:46 +00:00
|
|
|
<div class="card-subtitle text-gray">${recommendedUploadStyle}</div>
|
2020-05-07 08:27:28 +00:00
|
|
|
</div>
|
|
|
|
<div class="card-body">
|
|
|
|
<div class="form-group">
|
|
|
|
<div class="col-3">
|
|
|
|
<label class="form-label" for="customfile">Upload</label>
|
|
|
|
</div>
|
|
|
|
<div class="col-9">
|
|
|
|
<input class="form-input" id="customfile" type="file">
|
|
|
|
</div>
|
|
|
|
</div>
|
2020-05-07 09:20:09 +00:00
|
|
|
<div class="form-group">
|
2024-01-02 15:05:46 +00:00
|
|
|
<label class="form-switch">
|
|
|
|
<input type="checkbox" id="custom16bit">
|
|
|
|
<i class="form-icon"></i> 16 bit images (look better, slower, not recommended)
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label class="form-switch">
|
|
|
|
<input type="checkbox" id="hideWidgets">
|
|
|
|
<i class="form-icon"></i> Hide Widgets (use a square image)
|
|
|
|
</label>
|
|
|
|
</div>
|
2020-05-07 08:27:28 +00:00
|
|
|
<div class="form-group">
|
|
|
|
<label class="form-label" for="customcolor">Clock color</label>
|
|
|
|
<select class="form-select" id="customcolor">
|
|
|
|
<option value="#ffffff">White</option>
|
|
|
|
<option value="#000000">Black</option>
|
|
|
|
</select>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label class="form-label" for="customlocation">Clock location</label>
|
|
|
|
<select class="form-select" id="customlocation">
|
2022-07-28 14:15:06 +00:00
|
|
|
${Object.keys(defaultPositions).map(k=>`<option value="${k}">${defaultPositions[k]}</option>`).join("")}
|
2020-05-07 08:27:28 +00:00
|
|
|
</select>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="card-footer">
|
|
|
|
<button id="customupload" class="btn btn-primary uploadbutton disabled" face="custom">Upload</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
`;
|
2020-05-06 10:03:04 +00:00
|
|
|
|
|
|
|
var btns = document.getElementsByClassName("uploadbutton");
|
|
|
|
for (var i=0;i<btns.length;i++) {
|
|
|
|
// When the 'upload' button is clicked...
|
|
|
|
btns[i].addEventListener("click", function(btn) {
|
|
|
|
// build app text
|
|
|
|
var facenumber = btn.target.getAttribute("face");
|
2020-05-07 08:27:28 +00:00
|
|
|
var face;
|
2024-01-02 15:05:46 +00:00
|
|
|
var hideWidgets = true;
|
2020-05-07 08:27:28 +00:00
|
|
|
if (facenumber=="custom") {
|
|
|
|
var select = document.getElementById("customlocation");
|
|
|
|
var pos = select.options[select.selectedIndex].value.split(",").map(x=>parseInt(x));
|
|
|
|
select = document.getElementById("customcolor");
|
|
|
|
var col = select.options[select.selectedIndex].value;
|
2024-01-02 15:05:46 +00:00
|
|
|
hideWidgets = document.getElementById('hideWidgets').checked;
|
2020-05-07 08:27:28 +00:00
|
|
|
face = {
|
|
|
|
x : pos[0],
|
|
|
|
y : pos[1],
|
2020-05-12 00:58:31 +00:00
|
|
|
align: pos[2],
|
2024-01-02 15:05:46 +00:00
|
|
|
bpp : document.getElementById('custom16bit').checked ? 16 : defaultBPP,
|
2020-05-07 08:27:28 +00:00
|
|
|
col : col
|
|
|
|
};
|
|
|
|
} else {
|
|
|
|
face = faces[facenumber];
|
|
|
|
}
|
2020-05-06 10:03:04 +00:00
|
|
|
var faceInfo = {
|
|
|
|
bpp : face.bpp,
|
|
|
|
x : face.x,
|
2020-05-06 12:53:22 +00:00
|
|
|
y : face.y,
|
2020-05-12 00:58:31 +00:00
|
|
|
align : face.align,
|
2024-01-02 15:05:46 +00:00
|
|
|
col : face.col,
|
|
|
|
hideWidgets : hideWidgets
|
2020-05-06 10:03:04 +00:00
|
|
|
};
|
2022-07-28 14:15:06 +00:00
|
|
|
var imgMode = faceInfo.bpp==16 ? "rgb565" : defaultImageMode;
|
2020-05-06 10:03:04 +00:00
|
|
|
var img = document.querySelector(`img[face='${facenumber}']`);
|
2020-05-07 09:20:09 +00:00
|
|
|
var imgString = imageconverter.imagetoString(img, {mode:imgMode, output:"raw", compression:false});
|
2020-05-06 10:03:04 +00:00
|
|
|
// send finished app
|
|
|
|
sendCustomizedApp({
|
|
|
|
storage:[
|
|
|
|
{name:"imgclock.face.img", content:imgString},
|
|
|
|
{name:"imgclock.face.json", content:JSON.stringify(faceInfo)},
|
|
|
|
]
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
2020-05-07 08:27:28 +00:00
|
|
|
// Custom image upload
|
|
|
|
document.getElementById('customfile').onchange = function (evt) {
|
|
|
|
var tgt = evt.target || window.event.srcElement, files = tgt.files;
|
|
|
|
if (FileReader && files && files.length) {
|
|
|
|
var fr = new FileReader();
|
|
|
|
fr.onload = function () {
|
|
|
|
document.getElementById("customimage").src = fr.result;
|
|
|
|
document.getElementById('customupload').classList.remove("disabled");
|
|
|
|
}
|
|
|
|
fr.readAsDataURL(files[0]);
|
|
|
|
}
|
|
|
|
}
|
2022-07-28 14:15:06 +00:00
|
|
|
}
|
2020-05-06 10:03:04 +00:00
|
|
|
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|