void CHexViewView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar) {
  m_shift = shiftKeyPressed();
  switch(nSBCode) {
  case SB_TOP           :
    setLineOffset(0, false).setCaretX(0);
    break;
  case SB_BOTTOM        :
    setLineOffset(m_maxLineOffset, false).setCaretX(m_maxCaret.x);
    break;
  case SB_ENDSCROLL     :                     break;
  case SB_LINELEFT      : scrollHorz(-1);     break;
  case SB_LINERIGHT     : scrollHorz( 1);     break;
  case SB_PAGELEFT      : pageLeft(m_shift);  break;
  case SB_PAGERIGHT     : pageRight(m_shift); break;
  case SB_THUMBPOSITION :                     break;
  case SB_THUMBTRACK    :
    { // Dont use parameter nPos as it is only 16-bits int
      SCROLLINFO scrollInfo;
      GetScrollInfo(SB_HORZ,&scrollInfo);
      if(scrollInfo.nTrackPos >= 0 && scrollInfo.nTrackPos <= m_maxLineOffset) {
        setLineOffset(scrollInfo.nTrackPos);
      }
    }
    break;
  }
}
void CHexViewView::end(bool shift) {
  m_shift = shift;
  if(m_lineOffset < m_maxLineOffset) {
    setLineOffset(m_maxLineOffset, false).setCaretX(m_maxCaret.x);
  } else {
    setCaretX(m_maxCaret.x, false);
  }
}
void CHexViewView::home(bool shift) {
  m_shift = shift;
  if(m_lineOffset > 0 || m_caret.x > 0) {
    setLineOffset(0, false).setCaretX(0);
  } else {
    setCaretX(0, false);
  }
}
void CHexViewView::charRight(bool shift) {
  m_shift = shift;
  if(m_caret.x < m_maxCaret.x) {
    setCaretX(m_caret.x+1, false);
  } else if(m_lineOffset < m_maxLineOffset) {
    scrollHorz(1);
  } else if(getSettings().getWrapEndOfLine() && getCurrentAddr() < m_docSize - 1) {
    if(m_caret.y < m_maxCaret.y) {
      if(m_lineOffset > 0) {
        setLineOffset(0, false).setCaret(0, m_caret.y+1);
      } else {
        setCaret(0, m_caret.y+1, false);
      }
    } else {
      setTopLine(m_topLine+1, false).setLineOffset(0, false).setCaretX(0);
    }
  }
}
void CHexViewView::charLeft(bool shift) {
  m_shift = shift;
  if(m_caret.x > 0) {
    setCaretX(m_caret.x-1, false);
  } else if(m_lineOffset > 0) {
    scrollHorz(-1);
  } else if(getSettings().getWrapEndOfLine() && getCurrentAddr() > 0) {
    if(m_caret.y > 0) {
      if(m_lineOffset < m_maxLineOffset) {
        setLineOffset(m_maxLineOffset, false).setCaret(m_maxCaret.x, m_caret.y-1);
      } else {
        setCaret(m_maxCaret.x, m_caret.y-1, false);
      }
    } else {
      setTopLine(m_topLine-1, false).setLineOffset(m_maxLineOffset, false).setCaretX(m_maxCaret.x);
    }
  }
}
示例#6
0
void ossimNitfRpcBase::setLineOffset(ossim_uint32 lineOffset)
{
   ossimString os = ossimNitfCommon::convertToUIntString(lineOffset,
                                                         LINE_OFFSET_SIZE);
   setLineOffset(os);
}