bundles/org.eclipse.orion.client.editor/web/orion/editor/projectionTextModel.js
function(offset, baseOffset) {
			var projections = this._projections, delta = 0, i, projection;
			if (baseOffset) {
				for (i = 0; i < projections.length; i++) {
					projection = projections[i];
					if (projection.start > offset) { break; }
					if (projection.end > offset) { return -1; }
					delta += projection._model.getCharCount() - (projection.end - projection.start);
				}
				return offset + delta;
			}
			for (i = 0; i < projections.length; i++) {
				projection = projections[i];
				if (projection.start > offset - delta) { break; }
				var charCount = projection._model.getCharCount();
				if (projection.start + charCount > offset - delta) {
					return -1;
				}
				delta += charCount - (projection.end - projection.start);
			}
			return offset - delta;
		}
function(offset, baseOffset) {
			var projections = this._projections, delta = 0, i, projection;
			if (baseOffset) {
				for (i = 0; i < projections.length; i++) {
					projection = projections[i];
					if (projection.start > offset) { break; }
					if (projection.end > offset) { return -1; }
					delta += projection._model.getCharCount() - (projection.end - projection.start);
				}
				return offset + delta;
			}
			for (i = 0; i < projections.length; i++) {
				projection = projections[i];
				if (projection.start > offset - delta) { break; }
				var charCount = projection._model.getCharCount();
				if (projection.start + charCount > offset - delta) {
					return -1;
				}
				delta += charCount - (projection.end - projection.start);
			}
			return offset - delta;
		}
function ( offset , baseOffset ) { var projections = this . _projections , delta = 0 , i , projection ; if ( baseOffset ) { for ( i = 0 ; i < projections . length ; i ++ ) { projection = projections [ i ] ; if ( projection . start > offset ) { break ; } if ( projection . end > offset ) { return - 1 ; } delta += projection . _model . getCharCount ( ) - ( projection . end - projection . start ) ; } return offset + delta ; } for ( i = 0 ; i < projections . length ; i ++ ) { projection = projections [ i ] ; if ( projection . start > offset - delta ) { break ; } var charCount = projection . _model . getCharCount ( ) ; if ( projection . start + charCount > offset - delta ) { return - 1 ; } delta += charCount - ( projection . end - projection . start ) ; } return offset - delta ; }
Maps offsets between the projection model and its base model.

@param {Number} offset The offset to be mapped.
@param {Boolean} [baseOffset=false] <code>true</code> if <code>offset</code> is in base model and
should be mapped to the projection model.
@return {Number} The mapped offset
Maps offsets between the projection model and its base model .