From 243dea1a1cc55e2b4cae447e217689bc43bda529 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 1 Oct 2015 11:03:25 +0200 Subject: [PATCH] :art: Move pixel-related code to LinesYardstick * :fire: Remove useless 'scoped char width' methods --- spec/fake-lines-yardstick.coffee | 15 +++++++++++++++ src/lines-yardstick.coffee | 15 +++++++++++++++ src/text-editor-component.coffee | 12 ++---------- src/text-editor-presenter.coffee | 15 ++++----------- src/text-editor.coffee | 9 --------- 5 files changed, 36 insertions(+), 30 deletions(-) diff --git a/spec/fake-lines-yardstick.coffee b/spec/fake-lines-yardstick.coffee index 821489e61..9934b1917 100644 --- a/spec/fake-lines-yardstick.coffee +++ b/spec/fake-lines-yardstick.coffee @@ -56,3 +56,18 @@ class FakeLinesYardstick column += charLength {top, left} + + pixelRectForScreenRange: (screenRange) -> + lineHeight = @model.getLineHeightInPixels() + + if screenRange.end.row > screenRange.start.row + top = @pixelPositionForScreenPosition(screenRange.start).top + left = 0 + height = (screenRange.end.row - screenRange.start.row + 1) * lineHeight + width = @presenter.getScrollWidth() + else + {top, left} = @pixelPositionForScreenPosition(screenRange.start, false) + height = lineHeight + width = @pixelPositionForScreenPosition(screenRange.end, false).left - left + + {top, left, width, height} diff --git a/src/lines-yardstick.coffee b/src/lines-yardstick.coffee index ba0f66ae2..2925c652d 100644 --- a/src/lines-yardstick.coffee +++ b/src/lines-yardstick.coffee @@ -165,3 +165,18 @@ class LinesYardstick @rangeForMeasurement.getBoundingClientRect().left position - lineNode.getBoundingClientRect().left + + pixelRectForScreenRange: (screenRange) -> + lineHeight = @model.getLineHeightInPixels() + + if screenRange.end.row > screenRange.start.row + top = @pixelPositionForScreenPosition(screenRange.start).top + left = 0 + height = (screenRange.end.row - screenRange.start.row + 1) * lineHeight + width = @presenter.getScrollWidth() + else + {top, left} = @pixelPositionForScreenPosition(screenRange.start, false) + height = lineHeight + width = @pixelPositionForScreenPosition(screenRange.end, false).left - left + + {top, left, width, height} diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index 235ab4a0e..e684805ec 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -418,21 +418,13 @@ class TextEditorComponent @presenter.getVisibleRowRange() pixelPositionForScreenPosition: (screenPosition) -> - position = @presenter.pixelPositionForScreenPosition(screenPosition) - position.top += @presenter.getScrollTop() - position.left += @presenter.getScrollLeft() - position + @linesYardstick.pixelPositionForScreenPosition(screenPosition) screenPositionForPixelPosition: (pixelPosition) -> @linesYardstick.screenPositionForPixelPosition(pixelPosition) pixelRectForScreenRange: (screenRange) -> - rect = @presenter.pixelRectForScreenRange(screenRange) - rect.top += @presenter.getScrollTop() - rect.bottom += @presenter.getScrollTop() - rect.left += @presenter.getScrollLeft() - rect.right += @presenter.getScrollLeft() - rect + @linesYardstick.pixelRectForScreenRange(screenRange) pixelRangeForScreenRange: (screenRange, clip=true) -> {start, end} = Range.fromObject(screenRange) diff --git a/src/text-editor-presenter.coffee b/src/text-editor-presenter.coffee index 3d7298bcf..6d3cee2f1 100644 --- a/src/text-editor-presenter.coffee +++ b/src/text-editor-presenter.coffee @@ -1133,17 +1133,10 @@ class TextEditorPresenter @hasPixelRectRequirements() and @boundingClientRect? and @windowWidth and @windowHeight pixelRectForScreenRange: (screenRange) -> - if screenRange.end.row > screenRange.start.row - top = @pixelPositionForScreenPosition(screenRange.start).top - left = 0 - height = (screenRange.end.row - screenRange.start.row + 1) * @lineHeight - width = @scrollWidth - else - {top, left} = @pixelPositionForScreenPosition(screenRange.start, false) - height = @lineHeight - width = @pixelPositionForScreenPosition(screenRange.end, false).left - left - - {top, left, width, height} + rect = @linesYardstick.pixelRectForScreenRange(screenRange) + rect.top -= @getScrollTop() + rect.left -= @getScrollLeft() + rect observeDecoration: (decoration) -> decorationDisposables = new CompositeDisposable diff --git a/src/text-editor.coffee b/src/text-editor.coffee index eb47484df..f2763f4e2 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -2966,15 +2966,6 @@ class TextEditor extends Model getLineHeightInPixels: -> @displayBuffer.getLineHeightInPixels() setLineHeightInPixels: (lineHeightInPixels) -> @displayBuffer.setLineHeightInPixels(lineHeightInPixels) - batchCharacterMeasurement: (fn) -> @displayBuffer.batchCharacterMeasurement(fn) - - getScopedCharWidth: (scopeNames, char) -> @displayBuffer.getScopedCharWidth(scopeNames, char) - setScopedCharWidth: (scopeNames, char, width) -> @displayBuffer.setScopedCharWidth(scopeNames, char, width) - - getScopedCharWidths: (scopeNames) -> @displayBuffer.getScopedCharWidths(scopeNames) - - clearScopedCharWidths: -> @displayBuffer.clearScopedCharWidths() - getDefaultCharWidth: -> @displayBuffer.getDefaultCharWidth() setDefaultCharWidth: (defaultCharWidth) -> @displayBuffer.setDefaultCharWidth(defaultCharWidth)