aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rwxr-xr-xjs/data/pi/pi-data.js10
-rwxr-xr-xjs/document/mediators/template.js10
-rwxr-xr-xjs/lib/geom/brush-stroke.js1423
-rw-r--r--js/panels/resize-composer.js5
-rw-r--r--js/tools/BrushTool.js2
5 files changed, 762 insertions, 688 deletions
diff --git a/js/data/pi/pi-data.js b/js/data/pi/pi-data.js
index 157cbc64..92d70141 100755
--- a/js/data/pi/pi-data.js
+++ b/js/data/pi/pi-data.js
@@ -703,13 +703,14 @@ exports.PiData = Montage.create( Montage, {
703 { 703 {
704 type : "color", 704 type : "color",
705 prop: "border", 705 prop: "border",
706 id : "stroke" 706 id : "stroke",
707 visible: false
707 }, 708 },
708 { 709 {
709 type : "color", 710 type : "color",
710 id : "fill", 711 id : "fill",
711 prop: "background", 712 prop: "background",
712 visible : false, 713 visible : true,
713 divider : true 714 divider : true
714 } 715 }
715 ], 716 ],
@@ -761,7 +762,9 @@ exports.PiData = Montage.create( Montage, {
761 valueMutator: parseFloat, 762 valueMutator: parseFloat,
762 min : 0, 763 min : 0,
763 max : 100, 764 max : 100,
764 value : 0 765 value : 0,
766 acceptableUnits: [" "],
767 unit: " "
765 } 768 }
766 ] 769 ]
767 ] 770 ]
@@ -788,6 +791,7 @@ exports.PiData = Montage.create( Montage, {
788 min : -90, 791 min : -90,
789 max : 90, 792 max : 90,
790 value : 0, 793 value : 0,
794 acceptableUnits: ["deg."],
791 unit : "deg." 795 unit : "deg."
792 } 796 }
793 ] 797 ]
diff --git a/js/document/mediators/template.js b/js/document/mediators/template.js
index e04c16d9..4c72314a 100755
--- a/js/document/mediators/template.js
+++ b/js/document/mediators/template.js
@@ -93,9 +93,11 @@ exports.TemplateDocumentMediator = Montage.create(Component, {
93 hackTag = hackHtml.getElementsByTagName('ninjahtmlhack')[0]; 93 hackTag = hackHtml.getElementsByTagName('ninjahtmlhack')[0];
94 docHtmlTag = doc.getElementsByTagName('html')[0]; 94 docHtmlTag = doc.getElementsByTagName('html')[0];
95 //Looping through the attributes to copy them 95 //Looping through the attributes to copy them
96 for (var m in hackTag.attributes) { 96 if (hackTag) {
97 if (hackTag.attributes[m].value) { 97 for (var m in hackTag.attributes) {
98 docHtmlTag.setAttribute(hackTag.attributes[m].name.replace(/ninjahtmlhack/gi, 'html'), hackTag.attributes[m].value.replace(/ninjahtmlhack/gi, 'html')); 98 if (hackTag.attributes[m].value) {
99 docHtmlTag.setAttribute(hackTag.attributes[m].name.replace(/ninjahtmlhack/gi, 'html'), hackTag.attributes[m].value.replace(/ninjahtmlhack/gi, 'html'));
100 }
99 } 101 }
100 } 102 }
101 //Garbage collection 103 //Garbage collection
@@ -612,7 +614,7 @@ exports.TemplateDocumentMediator = Montage.create(Component, {
612 cleanHTML = template.file.content.document.documentElement.outerHTML.replace(/(\b(?:(?:https?|ftp|file|[A-Za-z]+):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$]))/gi, parseNinjaRootUrl.bind(this)); 614 cleanHTML = template.file.content.document.documentElement.outerHTML.replace(/(\b(?:(?:https?|ftp|file|[A-Za-z]+):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$]))/gi, parseNinjaRootUrl.bind(this));
613 } 615 }
614 //TODO: Remove, this is a temp hack 616 //TODO: Remove, this is a temp hack
615 cleanHTML = '<!DOCTYPE html>\n'+cleanHTML; 617 cleanHTML = cleanHTML;
616 // 618 //
617 function parseNinjaRootUrl(url) { 619 function parseNinjaRootUrl(url) {
618 if (url.indexOf(this.application.ninja.coreIoApi.rootUrl) !== -1) { 620 if (url.indexOf(this.application.ninja.coreIoApi.rootUrl) !== -1) {
diff --git a/js/lib/geom/brush-stroke.js b/js/lib/geom/brush-stroke.js
index 09a7023c..d9c2ab53 100755
--- a/js/lib/geom/brush-stroke.js
+++ b/js/lib/geom/brush-stroke.js
@@ -45,7 +45,7 @@ var BrushStroke = function GLBrushStroke() {
45 this._strokeAmountSmoothing = 0; 45 this._strokeAmountSmoothing = 0;
46 46
47 // currently, brush does not support a fill region 47 // currently, brush does not support a fill region
48 this.canFill = false; 48 this.canFill = true;
49 49
50 //threshold that tells us whether two samples are too far apart 50 //threshold that tells us whether two samples are too far apart
51 this._MAX_SAMPLE_DISTANCE_THRESHOLD = 5; 51 this._MAX_SAMPLE_DISTANCE_THRESHOLD = 5;
@@ -65,777 +65,840 @@ var BrushStroke = function GLBrushStroke() {
65 this._planeMatInv = null; 65 this._planeMatInv = null;
66 this._planeCenter = null; 66 this._planeCenter = null;
67 this._dragPlane = null; 67 this._dragPlane = null;
68}; //BrushStroke class defition
68 69
69 ///////////////////////////////////////////////////////// 70BrushStroke.prototype = Object.create(GeomObj, {});
70 // Property Accessors/Setters
71 /////////////////////////////////////////////////////////
72 this.setCanvas = function(c) {
73 this._canvas = c;
74 }
75
76 this.setWorld = function (world) {
77 this._world = world;
78 };
79
80 this.getWorld = function () {
81 return this._world;
82 };
83
84 this.geomType = function () {
85 return this.GEOM_TYPE_BRUSH_STROKE;
86 };
87
88 this.setDrawingTool = function (tool) {
89 this._drawingTool = tool;
90 };
91
92 this.getDrawingTool = function () {
93 return this._drawingTool;
94 };
95
96 this.setPlaneMatrix = function(planeMat){
97 this._planeMat = planeMat;
98 };
99
100 this.setPlaneMatrixInverse = function(planeMatInv){
101 this._planeMatInv = planeMatInv;
102 };
103
104 this.setPlaneCenter = function(pc){
105 this._planeCenter = pc;
106 };
107
108 this.setDragPlane = function(p){
109 this._dragPlane = p;
110 };
111
112 this.getNumPoints = function () {
113 if (this._LocalPoints.length)
114 return this._LocalPoints.length;
115 else
116 return this._Points.length;
117 };
118
119 this.getPoint = function (index) {
120 return this._Points[index].slice(0);
121 };
122 71
123 this.addPoint = function (pt) { 72/////////////////////////////////////////////////////////
124 //add the point only if it is some epsilon away from the previous point 73// Property Accessors/Setters
125 var numPoints = this._Points.length; 74/////////////////////////////////////////////////////////
126 if (numPoints>0) { 75BrushStroke.prototype.setCanvas = function(c) {
127 var threshold = this._MIN_SAMPLE_DISTANCE_THRESHOLD; 76 this._canvas = c;
128 var prevPt = this._Points[numPoints-1]; 77};
129 var diffPt = [prevPt[0]-pt[0], prevPt[1]-pt[1]]; 78
130 var diffPtMag = Math.sqrt(diffPt[0]*diffPt[0] + diffPt[1]*diffPt[1]); 79BrushStroke.prototype.setWorld = function (world) {
131 if (diffPtMag>threshold){ 80 this._world = world;
132 this._Points.push(pt); 81};
133 this._isDirty=true; 82
134 this._isInit = false; 83BrushStroke.prototype.getWorld = function () {
135 } 84 return this._world;
136 } else { 85};
86
87BrushStroke.prototype.geomType = function () {
88 return this.GEOM_TYPE_BRUSH_STROKE;
89};
90
91BrushStroke.prototype.setDrawingTool = function (tool) {
92 this._drawingTool = tool;
93};
94
95BrushStroke.prototype.getDrawingTool = function () {
96 return this._drawingTool;
97};
98
99BrushStroke.prototype.setPlaneMatrix = function(planeMat){
100 this._planeMat = planeMat;
101};
102
103BrushStroke.prototype.setPlaneMatrixInverse = function(planeMatInv){
104 this._planeMatInv = planeMatInv;
105};
106
107BrushStroke.prototype.setPlaneCenter = function(pc){
108 this._planeCenter = pc;
109};
110
111BrushStroke.prototype.setDragPlane = function(p){
112 this._dragPlane = p;
113};
114
115BrushStroke.prototype.getNumPoints = function () {
116 if (this._LocalPoints.length)
117 return this._LocalPoints.length;
118 else
119 return this._Points.length;
120};
121
122BrushStroke.prototype.getPoint = function (index) {
123 return this._Points[index].slice(0);
124};
125
126BrushStroke.prototype.addPoint = function (pt) {
127 //add the point only if it is some epsilon away from the previous point
128 var numPoints = this._Points.length;
129 if (numPoints>0) {
130 var threshold = this._MIN_SAMPLE_DISTANCE_THRESHOLD;
131 var prevPt = this._Points[numPoints-1];
132 var diffPt = [prevPt[0]-pt[0], prevPt[1]-pt[1]];
133 var diffPtMag = Math.sqrt(diffPt[0]*diffPt[0] + diffPt[1]*diffPt[1]);
134 if (diffPtMag>threshold){
137 this._Points.push(pt); 135 this._Points.push(pt);
138 this._isDirty=true; 136 this._isDirty=true;
139 this._isInit = false; 137 this._isInit = false;
140 } 138 }
141 }; 139 } else {
142 140 this._Points.push(pt);
143 this.insertPoint = function(pt, index){
144