Package limelight.ui.model.text.offsetting

Source Code of limelight.ui.model.text.offsetting.CenteredXOffsetStrategy

//- Copyright © 2008-2011 8th Light, Inc. All Rights Reserved.
//- Limelight and all included source files are distributed under terms of the MIT License.

package limelight.ui.model.text.offsetting;

import limelight.util.Box;

public class CenteredXOffsetStrategy implements XOffsetStrategy
{
  public int calculateXOffset(limelight.ui.model.text.TextModel model)
  {
    int xOffset = model.getXOffset();
    Box boundingBox = model.getContainer().getConsumableBounds();
    int absoluteCaretX = model.getAbsoluteX(model.getCaretLocation());
    int relativeCaretX = absoluteCaretX + xOffset;

    if(relativeCaretX >= boundingBox.width || relativeCaretX < 0)
    {
      xOffset = (absoluteCaretX - boundingBox.width / 2) * -1;

      int maxOffset = boundingBox.width - model.getTextDimensions().width - model.getCaretWidth();

      if(xOffset < maxOffset)
        xOffset = maxOffset;
      else if(xOffset > 0)
        xOffset = 0;

      relativeCaretX = absoluteCaretX + xOffset;
      if(relativeCaretX == boundingBox.width)
        xOffset -= model.getCaretWidth();
    }
    return xOffset;
  }
}
TOP

Related Classes of limelight.ui.model.text.offsetting.CenteredXOffsetStrategy

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.