From b89a7ee8b956c96a1dcee995ea840feddc5d4b27 Mon Sep 17 00:00:00 2001 From: Pierre Frisch Date: Thu, 22 Dec 2011 07:25:50 -0800 Subject: First commit of Ninja to ninja-internal Signed-off-by: Valerio Virgillito --- js/tools/RectTool.js | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 js/tools/RectTool.js (limited to 'js/tools/RectTool.js') diff --git a/js/tools/RectTool.js b/js/tools/RectTool.js new file mode 100644 index 00000000..fbf1693e --- /dev/null +++ b/js/tools/RectTool.js @@ -0,0 +1,126 @@ +/* +This file contains proprietary software owned by Motorola Mobility, Inc.
+No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
+(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. +
*/ + +var Montage = require("montage/core/core").Montage, + ShapeTool = require("js/tools/ShapeTool").ShapeTool, + ShapesController = require("js/controllers/elements/shapes-controller").ShapesController; + +exports.RectTool = Montage.create(ShapeTool, { + + _toolID: { value: "rectTool" }, + _imageID: { value: "rectToolImg" }, + _toolImageClass: { value: "rectToolUp" }, + _selectedToolImageClass: { value: "rectToolDown" }, + _toolTipText : { value : "Rectangle Tool (R)" }, + _selectedSubTool :{value :"rect"}, + _ovalTool:{value:null,writable:true}, + _rectTool:{value:null,writable:true}, + _rectView:{value:null,writable:true}, + _ovalView:{value:null,writable:true}, + + _selectedToolClass:{value:"rectToolSpecificProperties"}, + _rectToolProperties:{enumerable:false , value:null,writable:true}, + _parentNode:{enumerable:false , value:null,writable:true}, + _toolsPropertiesContainer:{enumerable:false , value:null,writable:true}, + + _lockRadiusButton : { value: null, writable: true, enumerable: true, configurable: true }, + _tlRadiusHotText : { value: null, writable: true, enumerable: true, configurable: true }, + _trRadiusHotText : { value: null, writable: true, enumerable: true, configurable: true }, + _blRadiusHotText : { value: null, writable: true, enumerable: true, configurable: true }, + _brRadiusHotText : { value: null, writable: true, enumerable: true, configurable: true }, + + _lockRadius : { value: false, writable: true, enumerable: true, configurable: true }, + _buttons: {enumerable: false,value: { hexinput: [] , lockbutton: []}}, + + RenderShape: { + value: function (w, h, planeMat, midPt, canvas) + { + if( (Math.floor(w) === 0) || (Math.floor(h) === 0) ) + { + return; + } + + var left = Math.round(midPt[0] - 0.5*w); + var top = Math.round(midPt[1] - 0.5*h); + + var strokeStyleIndex = this.options.strokeStyleIndex; + var strokeStyle = this.options.strokeStyle; + + var strokeSize = ShapesController.GetValueInPixels(this.options.strokeSize.value, this.options.strokeSize.units, h); + + var tlRadius = ShapesController.GetValueInPixels(this.options.TLRadiusControl.value, this.options.TLRadiusControl.units, h); + var trRadius = ShapesController.GetValueInPixels(this.options.TRRadiusControl.value, this.options.TRRadiusControl.units, h); + var blRadius = ShapesController.GetValueInPixels(this.options.BLRadiusControl.value, this.options.BLRadiusControl.units, h); + var brRadius = ShapesController.GetValueInPixels(this.options.BRRadiusControl.value, this.options.BRRadiusControl.units, h); + + var strokeColor = this.application.ninja.colorController.colorToolbar.stroke.webGlColor; + var fillColor = this.application.ninja.colorController.colorToolbar.fill.webGlColor; + // for default stroke and fill/no materials + var strokeMaterial = null; + var fillMaterial = null; + + var strokeIndex = parseInt(this.options.strokeMaterial); + if(strokeIndex > 0) + { + strokeMaterial = Object.create(MaterialsLibrary.getMaterialAt(strokeIndex-1)); + } + + var fillIndex = parseInt(this.options.fillMaterial); + if(fillIndex > 0) + { + fillMaterial = Object.create(MaterialsLibrary.getMaterialAt(fillIndex-1)); + } + + var world = this.getGLWorld(canvas, this.options.use3D); + + var xOffset = ((left - canvas.offsetLeft + w/2) - canvas.width/2); + var yOffset = (canvas.height/2 - (top - canvas.offsetTop + h/2)); + + var rect = new GLRectangle(); + rect.init(world, xOffset, yOffset, w, h, strokeSize, strokeColor, fillColor, + tlRadius, trRadius, blRadius, brRadius, strokeMaterial, fillMaterial, strokeStyle); + + world.addObject(rect); + world.render(); + + canvas.elementModel.shapeModel.shapeCount++; + if(canvas.elementModel.shapeModel.shapeCount === 1) + { + canvas.elementModel.selection = "Rectangle"; + canvas.elementModel.pi = "RectanglePi"; + canvas.elementModel.shapeModel.strokeSize = this.options.strokeSize.value + " " + this.options.strokeSize.units; + canvas.elementModel.shapeModel.stroke = strokeColor; + canvas.elementModel.shapeModel.fill = fillColor; + + canvas.elementModel.shapeModel.tlRadius = this.options.TLRadiusControl.value + " " + this.options.TLRadiusControl.units; + canvas.elementModel.shapeModel.trRadius = this.options.TRRadiusControl.value + " " + this.options.TRRadiusControl.units; + canvas.elementModel.shapeModel.blRadius = this.options.BLRadiusControl.value + " " + this.options.BLRadiusControl.units; + canvas.elementModel.shapeModel.brRadius = this.options.BRRadiusControl.value + " " + this.options.BRRadiusControl.units; + + canvas.elementModel.shapeModel.strokeMaterial = strokeMaterial; + canvas.elementModel.shapeModel.fillMaterial = fillMaterial; + canvas.elementModel.shapeModel.strokeMaterialIndex = strokeIndex; + canvas.elementModel.shapeModel.fillMaterialIndex = fillIndex; + + canvas.elementModel.shapeModel.strokeStyleIndex = strokeStyleIndex; + canvas.elementModel.shapeModel.strokeStyle = strokeStyle; + + canvas.elementModel.shapeModel.GLGeomObj = rect; + } + else + { + // TODO - update the shape's info only. shapeModel will likely need an array of shapes. + } + + if(canvas.elementModel.isShape) + { + this.application.ninja.selectionController.selectElement(canvas); + } + + + } + } +}); \ No newline at end of file -- cgit v1.2.3