kopia lustrzana https://github.com/backface/turtlestitch
add color settings
rodzic
dfb9e92fef
commit
bf071043f4
|
@ -154,6 +154,8 @@ IDE_Morph.prototype.applySavedTurtleStitchSettings = function () {
|
||||||
hidestitches = this.getSetting('hidestitches');
|
hidestitches = this.getSetting('hidestitches');
|
||||||
warnings = this.getSetting('ignoreWarning');
|
warnings = this.getSetting('ignoreWarning');
|
||||||
isImperial = this.getSetting('isImperial');
|
isImperial = this.getSetting('isImperial');
|
||||||
|
backgroundColor = this.getSetting('backgroundColor')
|
||||||
|
defaultPenColor = this.getSetting('defaultPenColor')
|
||||||
|
|
||||||
console.log("apply settings");
|
console.log("apply settings");
|
||||||
|
|
||||||
|
@ -201,6 +203,18 @@ IDE_Morph.prototype.applySavedTurtleStitchSettings = function () {
|
||||||
this.stage.turtleShepherd.sMetric = true;
|
this.stage.turtleShepherd.sMetric = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (backgroundColor) {
|
||||||
|
this.stage.renderer.setBackgroundColorHex(backgroundColor);
|
||||||
|
} else {
|
||||||
|
this.stage.renderer.setBackgroundColorHex('#fffffff');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defaultPenColor) {
|
||||||
|
this.stage.renderer.setDefaultPenColorHex(defaultPenColor);
|
||||||
|
this.currentSprite.setColor(StageMorph.prototype.defaultPenColor);
|
||||||
|
} else {
|
||||||
|
this.stage.renderer.setDefaultPenColorHex('#000000');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -830,8 +844,7 @@ IDE_Morph.prototype.turtlestitchMenu = function () {
|
||||||
},
|
},
|
||||||
!stage.turtleShepherd.isMetric() ,
|
!stage.turtleShepherd.isMetric() ,
|
||||||
'uncheck to display dimensions in millimeters',
|
'uncheck to display dimensions in millimeters',
|
||||||
'check to show dimensions in inch'
|
'check to show dimensions in inch', );
|
||||||
);
|
|
||||||
|
|
||||||
menu.addLine();
|
menu.addLine();
|
||||||
addPreference(
|
addPreference(
|
||||||
|
@ -903,14 +916,21 @@ IDE_Morph.prototype.turtlestitchMenu = function () {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
StageMorph.prototype.ignoreWarnings ,
|
StageMorph.prototype.ignoreWarnings ,
|
||||||
'uncheck to show embroidery specific warnings',
|
|
||||||
'check to ignore embroidery specific warnings',
|
'uncheck to show turtle',
|
||||||
|
'check to hide turtle',
|
||||||
);
|
);
|
||||||
|
menu.addLine();
|
||||||
|
menu.addItem('default background color...', 'userSetBackgroundColor');
|
||||||
|
menu.addItem('default pen color...', 'userSetPenColor');
|
||||||
|
|
||||||
|
|
||||||
menu.popup(world, pos);
|
menu.popup(world, pos);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
IDE_Morph.prototype.toggleAppMode = function (appMode) {
|
IDE_Morph.prototype.toggleAppMode = function (appMode) {
|
||||||
var world = this.world(),
|
var world = this.world(),
|
||||||
elements = [
|
elements = [
|
||||||
|
@ -2723,3 +2743,59 @@ ProjectDialogMorph.prototype.saveProject = function () {
|
||||||
|
|
||||||
this.saveProjectOrig();
|
this.saveProjectOrig();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
StageMorph.prototype.backgroundColor = new Color(255,255,255);
|
||||||
|
StageMorph.prototype.defaultPenColor = new Color(0,0,0,1);
|
||||||
|
|
||||||
|
IDE_Morph.prototype.userSetBackgroundColor = function () {
|
||||||
|
new DialogBoxMorph(
|
||||||
|
this,
|
||||||
|
function (value) {
|
||||||
|
this.stage.renderer.setBackgroundColorHex(value);
|
||||||
|
if (value != '#ffffff')
|
||||||
|
this.saveSetting('backgroundColor', value);
|
||||||
|
else {
|
||||||
|
this.removeSetting('backgroundColor');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
this
|
||||||
|
).prompt(
|
||||||
|
"Default background color",
|
||||||
|
new String("#" + ((1 << 24)
|
||||||
|
+ (Math.round(StageMorph.prototype.backgroundColor.r) << 16)
|
||||||
|
+ (Math.round(StageMorph.prototype.backgroundColor.g) << 8)
|
||||||
|
+ Math.round(StageMorph.prototype.backgroundColor.b)).toString(16).slice(1)),
|
||||||
|
this.world(),
|
||||||
|
null, // pic
|
||||||
|
null, // choices
|
||||||
|
null, // read only
|
||||||
|
false // numeric
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
IDE_Morph.prototype.userSetPenColor = function () {
|
||||||
|
new DialogBoxMorph(
|
||||||
|
this,
|
||||||
|
function (value) {
|
||||||
|
this.stage.renderer.setDefaultPenColorHex(value);
|
||||||
|
this.currentSprite.setColor(StageMorph.prototype.defaultPenColor);
|
||||||
|
if (value != '#000000')
|
||||||
|
this.saveSetting('defaultPenColor', value);
|
||||||
|
else {
|
||||||
|
this.removeSetting('defaultPenColor');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
this
|
||||||
|
).prompt(
|
||||||
|
"Default pen color",
|
||||||
|
new String("#" + ((1 << 24)
|
||||||
|
+ (Math.round(StageMorph.prototype.defaultPenColor.r) << 16)
|
||||||
|
+ (Math.round(StageMorph.prototype.defaultPenColor.g) << 8)
|
||||||
|
+ Math.round(StageMorph.prototype.defaultPenColor.b)).toString(16).slice(1)),
|
||||||
|
this.world(),
|
||||||
|
null, // pic
|
||||||
|
null, // choices
|
||||||
|
null, // read only
|
||||||
|
false // numeric
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
|
@ -40,7 +40,7 @@ SpriteMorph.prototype.init = function(globals) {
|
||||||
this.turtle = null;
|
this.turtle = null;
|
||||||
this.isDown = true;
|
this.isDown = true;
|
||||||
this.cache = new Cache;
|
this.cache = new Cache;
|
||||||
this.color = new Color(0,0,0,1);
|
this.color = StageMorph.prototype.defaultPenColor;
|
||||||
this.stitchtype = 0;
|
this.stitchtype = 0;
|
||||||
this.isRunning = false;
|
this.isRunning = false;
|
||||||
this.stitchoptions = {};
|
this.stitchoptions = {};
|
||||||
|
@ -1260,14 +1260,13 @@ SpriteMorph.prototype.resetAll = function () {
|
||||||
myself.stitchtype = 0;
|
myself.stitchtype = 0;
|
||||||
myself.stitchoptions = {};
|
myself.stitchoptions = {};
|
||||||
myself.isRunning = false;
|
myself.isRunning = false;
|
||||||
myself.setColor(new Color(0, 0, 0, 1.0));
|
myself.setColor(StageMorph.prototype.defaultPenColor);
|
||||||
myself.gotoXY(0,0);
|
myself.gotoXY(0,0);
|
||||||
myself.setHeading(90);
|
myself.setHeading(90);
|
||||||
myself.clear();
|
myself.clear();
|
||||||
myself.isDown = true;
|
myself.isDown = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SpriteMorph.prototype.resetStitchSettings = function () {
|
SpriteMorph.prototype.resetStitchSettings = function () {
|
||||||
var myself = this;
|
var myself = this;
|
||||||
myself.stitchoptions = {}
|
myself.stitchoptions = {}
|
||||||
|
@ -2225,6 +2224,10 @@ StageMorph.prototype.init = function (globals) {
|
||||||
var myself = this;
|
var myself = this;
|
||||||
|
|
||||||
console.log("init stage");
|
console.log("init stage");
|
||||||
|
this.turtleShepherd = new TurtleShepherd();
|
||||||
|
this.turtleShepherd.ignoreWarning = StageMorph.prototype.ignoreWarnings;
|
||||||
|
this.turtleShepherd.setDefaultColor(StageMorph.prototype.defaultPenColor);
|
||||||
|
|
||||||
this.originalInit(globals);
|
this.originalInit(globals);
|
||||||
this.initScene();
|
this.initScene();
|
||||||
this.initRenderer();
|
this.initRenderer();
|
||||||
|
@ -2252,8 +2255,6 @@ StageMorph.prototype.init = function (globals) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this.turtleShepherd = new TurtleShepherd();
|
|
||||||
this.turtleShepherd.ignoreWarning = StageMorph.prototype.ignoreWarnings;
|
|
||||||
this.scene.grid.draw();
|
this.scene.grid.draw();
|
||||||
this.myObjects = new THREE.Object3D();
|
this.myObjects = new THREE.Object3D();
|
||||||
this.myStitchPoints = new THREE.Object3D();
|
this.myStitchPoints = new THREE.Object3D();
|
||||||
|
@ -2386,7 +2387,7 @@ StageMorph.prototype.clearAll = function () {
|
||||||
StageMorph.prototype.initRenderer = function () {
|
StageMorph.prototype.initRenderer = function () {
|
||||||
var myself = this;
|
var myself = this;
|
||||||
|
|
||||||
console.log("set up renderer");
|
console.log("set up renderer");
|
||||||
|
|
||||||
if(!this.renderer) {
|
if(!this.renderer) {
|
||||||
if (Detector.webgl) {
|
if (Detector.webgl) {
|
||||||
|
@ -2405,13 +2406,17 @@ StageMorph.prototype.initRenderer = function () {
|
||||||
{canvas: this.penTrails()});
|
{canvas: this.penTrails()});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* console.log(myself);
|
|
||||||
this.renderer.setBackgroundColor(
|
|
||||||
myself.parentThatIsA(IDE_Morph).defaultStageColor
|
|
||||||
);
|
|
||||||
*/
|
|
||||||
|
|
||||||
this.renderer.setClearColor(0xffffff, 1);
|
this.renderer.setBackgroundColor = function(color) {
|
||||||
|
StageMorph.prototype.backgroundColor = color;
|
||||||
|
myself.turtleShepherd.setBackgroundColor(color);
|
||||||
|
myself.renderer.setClearColor(
|
||||||
|
new THREE.Color("rgb("+color.r + "," + color.g + "," + color.b + ")"),
|
||||||
|
1);
|
||||||
|
myself.reRender();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.renderer.setBackgroundColor(StageMorph.prototype.backgroundColor);
|
||||||
|
|
||||||
this.renderer.changed = false;
|
this.renderer.changed = false;
|
||||||
this.renderer.showingAxes = true;
|
this.renderer.showingAxes = true;
|
||||||
|
@ -2440,10 +2445,44 @@ StageMorph.prototype.initRenderer = function () {
|
||||||
myself.reRender();
|
myself.reRender();
|
||||||
};
|
};
|
||||||
|
|
||||||
this.renderer.setBackgroundColor = function(color) {
|
|
||||||
this.renderer.setClearColor(
|
this.renderer.setBackgroundColorHex = function(hex) {
|
||||||
new THREE.Color("rgb("+c.r + "," + c.g + "," + c.b + ")"),
|
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
|
||||||
1);
|
var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
|
||||||
|
|
||||||
|
hex = hex.replace(shorthandRegex, function(m, r, g, b) {
|
||||||
|
return r + r + g + g + b + b;
|
||||||
|
});
|
||||||
|
|
||||||
|
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
||||||
|
if (result) {
|
||||||
|
r = parseInt(result[1], 16);
|
||||||
|
g = parseInt(result[2], 16);
|
||||||
|
b = parseInt(result[3], 16);
|
||||||
|
StageMorph.prototype.backgroundColor = new Color(r, g, b);
|
||||||
|
myself.turtleShepherd.setBackgroundColor(StageMorph.prototype.backgroundColor);
|
||||||
|
myself.renderer.setBackgroundColor(StageMorph.prototype.backgroundColor);
|
||||||
|
}
|
||||||
|
myself.reRender();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.renderer.setDefaultPenColorHex = function(hex) {
|
||||||
|
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
|
||||||
|
var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
|
||||||
|
|
||||||
|
hex = hex.replace(shorthandRegex, function(m, r, g, b) {
|
||||||
|
return r + r + g + g + b + b;
|
||||||
|
});
|
||||||
|
|
||||||
|
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
||||||
|
if (result) {
|
||||||
|
r = parseInt(result[1], 16);
|
||||||
|
g = parseInt(result[2], 16);
|
||||||
|
b = parseInt(result[3], 16);
|
||||||
|
StageMorph.prototype.defaultPenColor = new Color(r, g, b);
|
||||||
|
myself.turtleShepherd.setDefaultColor(StageMorph.prototype.defaultPenColor);
|
||||||
|
}
|
||||||
|
myself.reRender();
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,6 +24,8 @@ TurtleShepherd.prototype.init = function() {
|
||||||
this.densityMax = 15;
|
this.densityMax = 15;
|
||||||
this.ignoreColors = false;
|
this.ignoreColors = false;
|
||||||
this.ignoreWarning = false;
|
this.ignoreWarning = false;
|
||||||
|
this.backgroundColor = {r:0,g:0,b:0,a:1};
|
||||||
|
this.defaultColor = {r:0,g:0,b:0,a:1};
|
||||||
};
|
};
|
||||||
|
|
||||||
TurtleShepherd.prototype.clear = function() {
|
TurtleShepherd.prototype.clear = function() {
|
||||||
|
@ -50,6 +52,7 @@ TurtleShepherd.prototype.clear = function() {
|
||||||
this.oldColor = 0;
|
this.oldColor = 0;
|
||||||
this.penSize = 1;
|
this.penSize = 1;
|
||||||
this.newPenSize = 0;
|
this.newPenSize = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
TurtleShepherd.prototype.toggleMetric = function() {
|
TurtleShepherd.prototype.toggleMetric = function() {
|
||||||
|
@ -164,7 +167,7 @@ TurtleShepherd.prototype.moveTo= function(x1, y1, x2, y2, penState) {
|
||||||
this.colors.push(this.newColor);
|
this.colors.push(this.newColor);
|
||||||
this.newColor = false;
|
this.newColor = false;
|
||||||
} else {
|
} else {
|
||||||
this.colors.push({r:0,g:0,b:0,a:1});
|
this.colors.push(this.defaultColor);
|
||||||
}
|
}
|
||||||
this.oldColor = this.colors[this.colors.length-1];
|
this.oldColor = this.colors[this.colors.length-1];
|
||||||
}
|
}
|
||||||
|
@ -230,6 +233,45 @@ TurtleShepherd.prototype.moveTo= function(x1, y1, x2, y2, penState) {
|
||||||
this.lastY = y2;
|
this.lastY = y2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TurtleShepherd.prototype.setDefaultColor= function(color) {
|
||||||
|
var c = {
|
||||||
|
r: Math.round(color.r),
|
||||||
|
g: Math.round(color.g),
|
||||||
|
b: Math.round(color.b),
|
||||||
|
a: color.a
|
||||||
|
};
|
||||||
|
this.defaultColor = c;
|
||||||
|
};
|
||||||
|
|
||||||
|
TurtleShepherd.prototype.getDefaultColorAsHex = function (){
|
||||||
|
return new String(
|
||||||
|
"#" + (
|
||||||
|
(1 << 24)
|
||||||
|
+ (Math.round(this.defaultColor.r) << 16)
|
||||||
|
+ (Math.round(this.defaultColor.g) << 8)
|
||||||
|
+ Math.round(this.defaultColor.b)
|
||||||
|
).toString(16).slice(1));
|
||||||
|
};
|
||||||
|
|
||||||
|
TurtleShepherd.prototype.setBackgroundColor= function(color) {
|
||||||
|
var c = {
|
||||||
|
r: Math.round(color.r),
|
||||||
|
g: Math.round(color.g),
|
||||||
|
b: Math.round(color.b),
|
||||||
|
a: color.a
|
||||||
|
};
|
||||||
|
this.backgroundColor = c;
|
||||||
|
};
|
||||||
|
|
||||||
|
TurtleShepherd.prototype.getBackgroundColorAsHex = function (){
|
||||||
|
return new String(
|
||||||
|
"#" + (
|
||||||
|
(1 << 24)
|
||||||
|
+ (Math.round(this.backgroundColor.r) << 16)
|
||||||
|
+ (Math.round(this.backgroundColor.g) << 8)
|
||||||
|
+ Math.round(this.backgroundColor.b)
|
||||||
|
).toString(16).slice(1));
|
||||||
|
}
|
||||||
|
|
||||||
TurtleShepherd.prototype.addColorChange= function(color) {
|
TurtleShepherd.prototype.addColorChange= function(color) {
|
||||||
var c = {
|
var c = {
|
||||||
|
@ -239,7 +281,6 @@ TurtleShepherd.prototype.addColorChange= function(color) {
|
||||||
a: color.a
|
a: color.a
|
||||||
};
|
};
|
||||||
this.newColor = c;
|
this.newColor = c;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
TurtleShepherd.prototype.pushColorChangeNow = function() {
|
TurtleShepherd.prototype.pushColorChangeNow = function() {
|
||||||
|
@ -307,7 +348,7 @@ TurtleShepherd.prototype.toSVG = function() {
|
||||||
var svgStr = "<?xml version=\"1.0\" standalone=\"no\"?>\n";
|
var svgStr = "<?xml version=\"1.0\" standalone=\"no\"?>\n";
|
||||||
svgStr += "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \n\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n";
|
svgStr += "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \n\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n";
|
||||||
svgStr += '<svg width="' + (this.w) + '" height="' + (this.h) + '"' +
|
svgStr += '<svg width="' + (this.w) + '" height="' + (this.h) + '"' +
|
||||||
' viewBox="0 0 ' + (this.w) + ' ' + (this.h) + '"';
|
' viewBox="0 0 ' + (this.w) + ' ' + (this.h) + '" style="background-color:' + this.getBackgroundColorAsHex() + '"';
|
||||||
svgStr += ' xmlns="http://www.w3.org/2000/svg" version="1.1">\n';
|
svgStr += ' xmlns="http://www.w3.org/2000/svg" version="1.1">\n';
|
||||||
svgStr += '<title>Embroidery export</title>\n';
|
svgStr += '<title>Embroidery export</title>\n';
|
||||||
|
|
||||||
|
@ -317,14 +358,14 @@ TurtleShepherd.prototype.toSVG = function() {
|
||||||
penSizeChanged = false;
|
penSizeChanged = false;
|
||||||
penSize = 1;
|
penSize = 1;
|
||||||
lastStitch = null;
|
lastStitch = null;
|
||||||
color = { r:0, g:0, b:0, a:1 };
|
color = this.defaultColor;
|
||||||
|
|
||||||
for (var i=0; i < this.cache.length; i++) {
|
for (var i=0; i < this.cache.length; i++) {
|
||||||
if (this.cache[i].cmd == "color" && !this.ignoreColors) {
|
if (this.cache[i].cmd == "color" && !this.ignoreColors) {
|
||||||
color = this.cache[i].color;
|
color = this.cache[i].color;
|
||||||
colorChanged = true;
|
colorChanged = true;
|
||||||
if (tagOpen) svgStr += '" />\n';
|
if (tagOpen) svgStr += '" />\n';
|
||||||
tagOpen = false;
|
tagOpen = false;
|
||||||
} else if (this.cache[i].cmd == "pensize") {
|
} else if (this.cache[i].cmd == "pensize") {
|
||||||
penSize = this.cache[i].pensize;
|
penSize = this.cache[i].pensize;
|
||||||
penSizeChanged = true;
|
penSizeChanged = true;
|
||||||
|
|
Ładowanie…
Reference in New Issue