Needs a lot of cleanup. Data has been de-duplicated, and where identical copies existed, one of them has been replaced with a symlink. Some files have been excluded, such as binaries, installers and debug dumps. Some of that may still be present.
325 lines
No EOL
9.6 KiB
JavaScript
325 lines
No EOL
9.6 KiB
JavaScript
//
|
|
// toolBars.js
|
|
// examples
|
|
//
|
|
// Created by Clément Brisset on 5/7/14.
|
|
// Copyright 2014 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
Overlay2D = function(properties, overlay) { // overlay is an optionnal variable
|
|
if (!(typeof(properties) === 'undefined')) {
|
|
if(typeof(overlay) === 'undefined') {
|
|
overlay = Overlays.addOverlay("image", properties);
|
|
} else {
|
|
Overlays.editOverlay(overlay, properties);
|
|
}
|
|
}
|
|
|
|
this.overlay = function() {
|
|
return overlay;
|
|
}
|
|
this.x = function() {
|
|
return properties.x;
|
|
}
|
|
this.y = function() {
|
|
return properties.y;
|
|
}
|
|
this.width = function() {
|
|
return properties.width;
|
|
}
|
|
this.height = function() {
|
|
return properties.height;
|
|
}
|
|
this.alpha = function() {
|
|
return properties.alpha;
|
|
}
|
|
this.visible = function() {
|
|
return properties.visible;
|
|
}
|
|
|
|
|
|
this.move = function(x, y) {
|
|
properties.x = x;
|
|
properties.y = y;
|
|
Overlays.editOverlay(overlay, { x: x, y: y });
|
|
}
|
|
this.resize = function(width, height) {
|
|
properties.width = width;
|
|
properties.height = height;
|
|
Overlays.editOverlay(overlay, { width: width, height: height });
|
|
}
|
|
this.setAlpha = function(alpha) {
|
|
properties.alpha = alpha;
|
|
Overlays.editOverlay(overlay, { alpha: alpha });
|
|
}
|
|
this.show = function(doShow) {
|
|
properties.visible = doShow;
|
|
Overlays.editOverlay(overlay, { visible: doShow });
|
|
}
|
|
|
|
this.clicked = function(clickedOverlay) {
|
|
return overlay === clickedOverlay;
|
|
}
|
|
|
|
this.cleanup = function() {
|
|
Overlays.deleteOverlay(overlay);
|
|
}
|
|
}
|
|
|
|
|
|
Tool = function(properties, selectable, selected) { // selectable and selected are optional variables.
|
|
Overlay2D.call(this, properties);
|
|
|
|
if(typeof(selectable)==='undefined') {
|
|
selectable = false;
|
|
if(typeof(selected)==='undefined') {
|
|
selected = false;
|
|
|
|
}
|
|
}
|
|
|
|
this.selectable = function() {
|
|
return selectable;
|
|
}
|
|
|
|
this.selected = function() {
|
|
return selected;
|
|
}
|
|
this.select = function(doSelect) {
|
|
if (!selectable) {
|
|
return;
|
|
}
|
|
|
|
selected = doSelect;
|
|
properties.subImage.y = (selected ? 2 : 1) * properties.subImage.height;
|
|
Overlays.editOverlay(this.overlay(), { subImage: properties.subImage });
|
|
}
|
|
this.toggle = function() {
|
|
if (!selectable) {
|
|
return;
|
|
}
|
|
selected = !selected;
|
|
properties.subImage.y = (selected ? 2 : 1) * properties.subImage.height;
|
|
Overlays.editOverlay(this.overlay(), { subImage: properties.subImage });
|
|
|
|
return selected;
|
|
}
|
|
|
|
this.select(selected);
|
|
|
|
this.baseClicked = this.clicked;
|
|
this.clicked = function(clickedOverlay, update) {
|
|
if (this.baseClicked(clickedOverlay)) {
|
|
if (selectable && update) {
|
|
this.toggle();
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
Tool.prototype = new Overlay2D;
|
|
Tool.IMAGE_HEIGHT = 50;
|
|
Tool.IMAGE_WIDTH = 50;
|
|
|
|
ToolBar = function(x, y, direction) {
|
|
this.tools = new Array();
|
|
this.x = x;
|
|
this.y = y;
|
|
this.width = 0;
|
|
this.height = 0;
|
|
this.back = this.back = Overlays.addOverlay("text", {
|
|
backgroundColor: { red: 255, green: 255, blue: 255 },
|
|
x: this.x,
|
|
y: this.y,
|
|
width: this.width,
|
|
height: this.height,
|
|
alpha: 1.0,
|
|
visible: false
|
|
});
|
|
this.spacing = [];
|
|
|
|
this.addTool = function(properties, selectable, selected) {
|
|
if (direction == ToolBar.HORIZONTAL) {
|
|
properties.x = this.x + this.width;
|
|
properties.y = this.y;
|
|
this.width += properties.width + ToolBar.SPACING;
|
|
this.height = Math.max(properties.height, this.height);
|
|
} else {
|
|
properties.x = this.x;
|
|
properties.y = this.y + this.height;
|
|
this.width = Math.max(properties.width, this.width);
|
|
this.height += properties.height + ToolBar.SPACING;
|
|
}
|
|
|
|
if (this.back != null) {
|
|
Overlays.editOverlay(this.back, {
|
|
width: this.width +
|
|
((direction == ToolBar.HORIZONTAL) ? 1 : 2) * ToolBar.SPACING,
|
|
height: this.height +
|
|
((direction == ToolBar.VERTICAL) ? 1 : 2) * ToolBar.SPACING,
|
|
});
|
|
}
|
|
|
|
this.tools.push(new Tool(properties, selectable, selected));
|
|
return ((this.tools.length) - 1);
|
|
}
|
|
|
|
this.addSpacing = function(size) {
|
|
if (direction == ToolBar.HORIZONTAL) {
|
|
this.width += size;
|
|
} else {
|
|
this.height += size;
|
|
}
|
|
this.spacing[this.tools.length] = size;
|
|
|
|
return (this.tools.length);
|
|
}
|
|
|
|
this.changeSpacing = function(size, id) {
|
|
if (this.spacing[id] === null) {
|
|
this.spacing[id] = 0;
|
|
}
|
|
var diff = size - this.spacing[id];
|
|
this.spacing[id] = size;
|
|
|
|
var dx = (direction == ToolBar.HORIZONTAL) ? diff : 0;
|
|
var dy = (direction == ToolBar.VERTICAL) ? diff : 0;
|
|
this.width += dx;
|
|
this.height += dy;
|
|
|
|
for(i = id; i < this.tools.length; i++) {
|
|
this.tools[i].move(this.tools[i].x() + dx,
|
|
this.tools[i].y() + dy);
|
|
}
|
|
if (this.back != null) {
|
|
Overlays.editOverlay(this.back, {
|
|
width: this.width +
|
|
((direction == ToolBar.HORIZONTAL) ? 1 : 2) * ToolBar.SPACING,
|
|
height: this.height +
|
|
((direction == ToolBar.VERTICAL) ? 1 : 2) * ToolBar.SPACING,
|
|
});
|
|
}
|
|
}
|
|
|
|
this.removeLastTool = function() {
|
|
this.tools.pop().cleanup();
|
|
|
|
if (direction == ToolBar.HORIZONTAL) {
|
|
this.width -= Tool.IMAGE_WIDTH + ToolBar.SPACING;
|
|
} else {
|
|
this.height -= Tool.IMAGE_HEIGHT + ToolBar.SPACING;
|
|
}
|
|
if (this.back != null) {
|
|
Overlays.editOverlay(this.back, {
|
|
width: this.width + 2 * ToolBar.SPACING,
|
|
height: this.height + 2 * ToolBar.SPACING
|
|
});
|
|
}
|
|
}
|
|
|
|
this.move = function(x, y) {
|
|
var dx = x - this.x;
|
|
var dy = y - this.y;
|
|
this.x = x;
|
|
this.y = y;
|
|
for(var tool in this.tools) {
|
|
this.tools[tool].move(this.tools[tool].x() + dx, this.tools[tool].y() + dy);
|
|
}
|
|
if (this.back != null) {
|
|
Overlays.editOverlay(this.back, {
|
|
x: x - ToolBar.SPACING,
|
|
y: y - ToolBar.SPACING
|
|
});
|
|
}
|
|
}
|
|
|
|
this.setAlpha = function(alpha, tool) {
|
|
if(typeof(tool) === 'undefined') {
|
|
for(var tool in this.tools) {
|
|
this.tools[tool].setAlpha(alpha);
|
|
}
|
|
if (this.back != null) {
|
|
Overlays.editOverlay(this.back, { alpha: alpha});
|
|
}
|
|
} else {
|
|
this.tools[tool].setAlpha(alpha);
|
|
}
|
|
}
|
|
|
|
this.setBack = function(color, alpha) {
|
|
if (color == null) {
|
|
Overlays.editOverlay(this.back, {
|
|
visible: false
|
|
});
|
|
} else {
|
|
Overlays.editOverlay(this.back, {
|
|
width: this.width +
|
|
((direction == ToolBar.HORIZONTAL) ? 1 : 2) * ToolBar.SPACING,
|
|
height: this.height +
|
|
((direction == ToolBar.VERTICAL) ? 1 : 2) * ToolBar.SPACING,
|
|
visible: true,
|
|
backgroundColor: color,
|
|
alpha: alpha
|
|
});
|
|
}
|
|
}
|
|
|
|
this.show = function(doShow) {
|
|
for(var tool in this.tools) {
|
|
this.tools[tool].show(doShow);
|
|
}
|
|
if (this.back != null) {
|
|
Overlays.editOverlay(this.back, { visible: doShow});
|
|
}
|
|
}
|
|
|
|
this.clicked = function(clickedOverlay, update) {
|
|
if(typeof(update) === 'undefined') {
|
|
update = true;
|
|
}
|
|
|
|
for(var tool in this.tools) {
|
|
if (this.tools[tool].visible() && this.tools[tool].clicked(clickedOverlay, update)) {
|
|
return parseInt(tool);
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
this.numberOfTools = function() {
|
|
return this.tools.length;
|
|
}
|
|
|
|
this.selectTool = function (tool, select) {
|
|
this.tools[tool].select(select);
|
|
}
|
|
|
|
this.toolSelected = function (tool) {
|
|
return this.tools[tool].selected();
|
|
}
|
|
|
|
this.cleanup = function() {
|
|
for(var tool in this.tools) {
|
|
this.tools[tool].cleanup();
|
|
delete this.tools[tool];
|
|
}
|
|
|
|
if (this.back != null) {
|
|
Overlays.deleteOverlay(this.back);
|
|
this.back = null;
|
|
}
|
|
|
|
this.tools = [];
|
|
this.x = x;
|
|
this.y = y;
|
|
this.width = 0;
|
|
this.height = 0;
|
|
}
|
|
}
|
|
ToolBar.SPACING = 4;
|
|
ToolBar.VERTICAL = 0;
|
|
ToolBar.HORIZONTAL = 1; |