code: function(start, end) {
  			var tv = this._view;
  			var curLine = tv.getLineAtOffset(start);
  			var endLine = tv.getLineAtOffset(end);
  			
  			var height, viewRect;
  			
  			if (curLine !== endLine) {
  				var y = tv.getLocationAtOffset(start).y;
  				height = 0;
  				var maxX = 0;
  				while (curLine <= endLine){
  					height += tv.getLineHeight(curLine);
  					var lineEnd = tv.getModel().getLineEnd(curLine);
  					var possibleEnd = tv.getLocationAtOffset(lineEnd).x;
  					if (possibleEnd > end){
  						maxX = possibleEnd;
  					}
  					curLine++;
  				}
  				var lineStart = tv.getModel().getLineStart(endLine);
  				var x = tv.getLocationAtOffset(lineStart).x;
  				
  				viewRect = { x: x, y: y, width: maxX - x, height: height};
  				
  			} else {
  				var startPos = tv.getLocationAtOffset(start);
  				var endPos = tv.getLocationAtOffset(end);
  				height = tv.getLineHeight(curLine);
  				viewRect = { x: startPos.x, y: startPos.y, 
  							width: endPos.x - startPos.x, height: height};
  			}
  								
  			viewRect = this._view.convert(viewRect, "document", "page"); //$NON-NLS-1$ //$NON-NLS-2$
  			return {left: viewRect.x, top: viewRect.y, width: viewRect.width, height: viewRect.height};
  		}
docs: Note that the offsets passed here must already be mapped to the base model being displayed (i.e. reduced by collapsed comments)