/*===========================================================================*/ /* Copyright (c) 1987 - 1988, Future Soft Engineering, Inc. */ /* Houston, Texas */ /*===========================================================================*/ #define NOLSTRING TRUE /* jtf win3 mod */ #include #include "port1632.h" #include "dcrc.h" #include "dynacomm.h" /*---------------------------------------------------------------------------*/ /* updateTermScrollBars() - [mbb] */ /*---------------------------------------------------------------------------*/ VOID updateTermScrollBars(BOOL bScroll) { INT saveScrollRange, offset; saveScrollRange = nScrollRange.y; if((offset = maxScreenLine - visScreenLine) < 0) offset = 0; if((nScrollRange.y = savTopLine + offset) < 0) nScrollRange.y = 0; if(((nScrollPos.y > 0) && (nScrollPos.y == saveScrollRange)) || (nScrollPos.y > nScrollRange.y)) nScrollPos.y = nScrollRange.y; if(!trmParams.fHideTermVSB) { SetScrollRange(hTermWnd, SB_VERT, 0, (nScrollRange.y > 0) ? nScrollRange.y : 1, FALSE); if (GetScrollPos(hTermWnd, SB_VERT) != nScrollPos.y) /* jtf 3.14 */ SetScrollPos(hTermWnd, SB_VERT, nScrollPos.y, TRUE); } else SetScrollRange(hTermWnd, SB_VERT, 0, 0, TRUE); if(!trmParams.fHideTermHSB) { SetScrollRange(hTermWnd, SB_HORZ, 0, (nScrollRange.x > 0) ? nScrollRange.x : 1, FALSE); if (GetScrollPos(hTermWnd, SB_HORZ) != nScrollPos.x) /* jtf 3.14 */ SetScrollPos(hTermWnd, SB_HORZ, nScrollPos.x, TRUE); } else SetScrollRange(hTermWnd, SB_HORZ, 0, 0, TRUE); if(bScroll) scrollBits(); } /*---------------------------------------------------------------------------*/ /* scrollTermWindow() - [mbb] */ /*---------------------------------------------------------------------------*/ proc scrollTermWindow(INT dh, INT dv) { ScrollWindow(hTermWnd, -dh*chrWidth, -dv*chrHeight, (LPRECT) &hTE.viewRect, (LPRECT) &hTE.viewRect); } /*---------------------------------------------------------------------------*/ /* scrollTermLine() - [mbb] */ /*---------------------------------------------------------------------------*/ proc scrollTermLine(INT newLine, INT dh, INT dv) { RECT r; getPort(); hTE.active = 0; if(dv > 0) r.top = hTE.viewRect.bottom - stdChrHeight; else r.top = 0; r.left = hTE.viewRect.left; r.bottom = r.top + stdChrHeight; r.right = hTE.viewRect.right; scrollTermWindow(dh, dv); ValidateRect(hTermWnd, (LPRECT) &r); reDrawTermLine(newLine, 0, maxChars); clipRect(&r); termActivate(&hTE); releasePort(); } /*---------------------------------------------------------------------------*/ /* scrollBits() - Move text on term. screen + some IT house keeping. [mbb] */ /*---------------------------------------------------------------------------*/ VOID scrollBits() { INT oldTopLine; INT oldLeftCol; INT dh, dv; INT offset; INT lin; oldLeftCol = curLeftCol; oldTopLine = curTopLine; curLeftCol = nScrollPos.x; curTopLine = nScrollPos.y; dh = curLeftCol - oldLeftCol; dv = curTopLine - oldTopLine; hideTermCursor(); if(dh != 0) { scrollTermWindow(dh, dv); UpdateWindow(hTermWnd); } else if(dv == 1) scrollTermLine(curTopLine-savTopLine+visScreenLine, dh, dv); else if(dv == -1) scrollTermLine(curTopLine-savTopLine, dh, dv); else if(dv != 0) { termDeactivate(&hTE); reDrawTermScreen(0, visScreenLine+1, curTopLine - savTopLine); /* mbbx 2.00: jtf disp2... */ termActivate(&hTE); } showTermCursor(); if((curTopLine + visScreenLine) > (savTopLine + maxScreenLine)) /* mbbx 2.00.06: jtf disp2... */ cleanRect(maxScreenLine+1, (visScreenLine + curTopLine) - (savTopLine + maxScreenLine)); } /*---------------------------------------------------------------------------*/ /* scrollUp() - */ /*---------------------------------------------------------------------------*/ VOID scrollUp(INT nBar, INT partCode, INT deltaLines) { LONG *pScrollPos; if(partCode == SB_LINEUP) { pScrollPos = ((nBar == SB_VERT) ? &nScrollPos.y : &nScrollPos.x); if(*pScrollPos > 0) { *pScrollPos -= deltaLines; updateTermScrollBars(TRUE); } } } /*---------------------------------------------------------------------------*/ /* scrollDown() - */ /*---------------------------------------------------------------------------*/ VOID scrollDown(INT nBar, INT partCode, INT deltaLines) { LONG *pScrollRange, *pScrollPos; if(partCode == SB_LINEDOWN) { if(nBar == SB_VERT) { pScrollRange = &nScrollRange.y; pScrollPos = &nScrollPos.y; } else { pScrollRange = &nScrollRange.x; pScrollPos = &nScrollPos.x; } if(*pScrollPos < *pScrollRange) { *pScrollPos += deltaLines; updateTermScrollBars(TRUE); } } } /*---------------------------------------------------------------------------*/ /* pageScroll() - */ /*---------------------------------------------------------------------------*/ VOID pageScroll(INT which) { if(which == SB_PAGEUP) { if((nScrollPos.y -= (visScreenLine + 1)) < 0) nScrollPos.y = 0; } else { if((nScrollPos.y += (visScreenLine + 1)) > nScrollRange.y) nScrollPos.y = nScrollRange.y; } updateTermScrollBars(TRUE); termCleanUp(); } /*---------------------------------------------------------------------------*/ /* hPageScroll() - */ /*---------------------------------------------------------------------------*/ VOID hPageScroll(INT which) { nScrollPos.x = ((which == SB_PAGEUP) ? 0 : nScrollRange.x); updateTermScrollBars(TRUE); termCleanUp(); /* mbbx 1.04: per jtfx */ } /*---------------------------------------------------------------------------*/ /* trackScroll() - [scf] */ /*---------------------------------------------------------------------------*/ VOID trackScroll(INT nBar, INT partCode) { LONG *pScrollRange, *pScrollPos; INT amount; if(nBar == SB_VERT) { pScrollRange = &nScrollRange.y; pScrollPos = &nScrollPos.y; } else { pScrollRange = &nScrollRange.x; pScrollPos = &nScrollPos.x; } amount = (((partCode == SB_LINEUP) || (partCode == SB_PAGEUP)) ? -1 : 1); if(((amount == -1) && (*pScrollPos > 0)) || ((amount == 1) && (*pScrollPos < *pScrollRange))) { if((partCode == SB_PAGEUP) || (partCode == SB_PAGEDOWN)) { if(nBar == SB_VERT) { if(amount == -1) { if((*pScrollPos -= ((hTE.viewRect.bottom - hTE.viewRect.top) / chrHeight)) < 0) *pScrollPos = 0; } else { if((*pScrollPos += ((hTE.viewRect.bottom - hTE.viewRect.top) / chrHeight)) > *pScrollRange) *pScrollPos = *pScrollRange; } } else *pScrollPos += ((amount == -1) ? 0 : *pScrollRange); } else *pScrollPos += amount; updateTermScrollBars(FALSE); } }