diff options
author | Keith Vetter <keithv@fusion.com> | 1995-04-27 20:14:25 +0000 |
---|---|---|
committer | Keith Vetter <keithv@fusion.com> | 1995-04-27 20:14:25 +0000 |
commit | 086a3eabb9f68c61bc44755a68edb4307a153f08 (patch) | |
tree | 89ea771a2329bbbc43c37f3126f275b776790297 /src/windows/wintel/edit.c | |
parent | cdd394f225858b85a43796386fdab6a41a463039 (diff) | |
download | krb5-086a3eabb9f68c61bc44755a68edb4307a153f08.tar.gz krb5-086a3eabb9f68c61bc44755a68edb4307a153f08.tar.xz krb5-086a3eabb9f68c61bc44755a68edb4307a153f08.zip |
Clean up of Windows telnet source
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5569 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/windows/wintel/edit.c')
-rw-r--r-- | src/windows/wintel/edit.c | 841 |
1 files changed, 431 insertions, 410 deletions
diff --git a/src/windows/wintel/edit.c b/src/windows/wintel/edit.c index 16ac28c248..02de7bea1d 100644 --- a/src/windows/wintel/edit.c +++ b/src/windows/wintel/edit.c @@ -1,419 +1,440 @@ +/* edit.c */ + #include <windows.h> #include <commdlg.h> #include <ctype.h> +#include <assert.h> #include "screen.h" char *cInvertedArray; -int bMouseDown=FALSE; -int iLocStart,iLocEnd,bSelection; - -void Edit_LbuttonDown(HWND hWnd,LPARAM lParam) { - SCREEN *fpScr; - HGLOBAL hgScr; - HMENU hMenu; - int iTmp,iXlocStart,iYlocStart; - HDC hDC; - - hgScr=(HGLOBAL)GetWindowWord(hWnd,SCREEN_HANDLE); - if (hgScr == NULL) OutputDebugString("Hosed #1.\r\n"); - fpScr=(SCREEN *)GlobalLock(hgScr); - if (fpScr == NULL) OutputDebugString("Hosed #2.\r\n"); - - hDC=GetDC(hWnd); - for (iTmp=0; iTmp < fpScr->width*fpScr->height; iTmp++) { - if (cInvertedArray[iTmp]) { - PatBlt(hDC,(iTmp%fpScr->width)*fpScr->cxChar,(int)(iTmp/fpScr->width)*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp]=0; - } - } - bSelection=FALSE; - hMenu=GetMenu(hWnd); - EnableMenuItem(hMenu,IDM_COPY,MF_GRAYED); - ReleaseDC(hWnd,hDC); - iXlocStart=(int)LOWORD(lParam)/fpScr->cxChar; - if (iXlocStart >= fpScr->width) - iXlocStart = fpScr->width - 1; - iYlocStart=(int)HIWORD(lParam)/fpScr->cyChar; - if (iYlocStart >= fpScr->height) - iYlocStart = fpScr->height - 1; - iLocStart=iXlocStart+(iYlocStart*fpScr->width); - bMouseDown=TRUE; - GlobalUnlock(hgScr); -} - -void Edit_LbuttonUp(HWND hWnd, LPARAM lParam) { - SCREEN *fpScr; - HGLOBAL hgScr; - int iTmp,iTmp2; - HMENU hMenu; - - bMouseDown=FALSE; - if (bSelection) return; - bSelection=TRUE; - hgScr=(HGLOBAL)GetWindowWord(hWnd,SCREEN_HANDLE); - if (hgScr == NULL) OutputDebugString("Hosed #1.\r\n"); - fpScr=(SCREEN *)GlobalLock(hgScr); - if (fpScr == NULL) OutputDebugString("Hosed #2.\r\n"); - iTmp=(int)LOWORD(lParam)/fpScr->cxChar; - if (iTmp >= fpScr->width) - iTmp = fpScr->width - 1; - iTmp2=(int)HIWORD(lParam)/fpScr->cyChar; - if (iTmp2 >= fpScr->height) - iTmp2 = fpScr->height - 1; - GlobalUnlock(hgScr); - iLocEnd=iTmp+(iTmp2*fpScr->width); - if (iLocEnd==iLocStart) { - bSelection=FALSE; - } else { - hMenu=GetMenu(hWnd); - EnableMenuItem(hMenu,IDM_COPY,MF_ENABLED); - } -} - +int bMouseDown = FALSE; +int bSelection; + +static int iLocStart; +static int iLocEnd; + +void Edit_LbuttonDown( + HWND hWnd, + LPARAM lParam) +{ + SCREEN *pScr; + HMENU hMenu; + int iTmp; + int iXlocStart; + int iYlocStart; + HDC hDC; + + pScr = (SCREEN *) GetWindowLong(hWnd, SCREEN_HANDLE); + assert(pScr != NULL); + + hDC = GetDC(hWnd); + for (iTmp = 0; iTmp < pScr->width * pScr->height; iTmp++) { + if (cInvertedArray[iTmp]) { + PatBlt(hDC, iTmp % pScr->width * pScr->cxChar, + (int) (iTmp / pScr->width) * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp] = 0; + } + } + bSelection = FALSE; + hMenu = GetMenu(hWnd); + EnableMenuItem(hMenu, IDM_COPY, MF_GRAYED); + ReleaseDC(hWnd, hDC); + iXlocStart = (int) LOWORD(lParam) / pScr->cxChar; + if (iXlocStart >= pScr->width) + iXlocStart = pScr->width - 1; + iYlocStart = (int) HIWORD(lParam) / pScr->cyChar; + if (iYlocStart >= pScr->height) + iYlocStart = pScr->height - 1; + iLocStart = iXlocStart + iYlocStart * pScr->width; + bMouseDown = TRUE; + +} /* Edit_LbuttonDown */ + + +void Edit_LbuttonUp( + HWND hWnd, + LPARAM lParam) +{ + SCREEN *pScr; + int iTmp; + int iTmp2; + HMENU hMenu; + + bMouseDown = FALSE; + if (bSelection) + return; + bSelection = TRUE; + + pScr = (SCREEN *) GetWindowLong(hWnd, SCREEN_HANDLE); + assert(pScr != NULL); + + iTmp = (int) LOWORD(lParam) / pScr->cxChar; + if (iTmp >= pScr->width) + iTmp = pScr->width - 1; + iTmp2 = (int) HIWORD(lParam) / pScr->cyChar; + if (iTmp2 >= pScr->height) + iTmp2 = pScr->height - 1; + iLocEnd = iTmp + iTmp2 * pScr->width; + if (iLocEnd == iLocStart) { + bSelection = FALSE; + } + else { + hMenu = GetMenu(hWnd); + EnableMenuItem(hMenu, IDM_COPY, MF_ENABLED); + } + +} /* Edit_LbuttonUp */ + + void Edit_MouseMove(HWND hWnd, LPARAM lParam){ - SCREEN *fpScr; - HGLOBAL hgScr; - int iTmp,iTmp2,iXlocCurr,iYlocCurr,iLocCurr,iX,iX2,iY,iY2; - HSCREENLINE hgScrLine; - SCREENLINE *fpScrLine; - HDC hDC; - - hgScr=(HGLOBAL)GetWindowWord(hWnd,SCREEN_HANDLE); - if (hgScr == NULL) OutputDebugString("Hosed #1.\r\n"); - fpScr=(SCREEN *)GlobalLock(hgScr); - if (fpScr == NULL) OutputDebugString("Hosed #2.\r\n"); - hDC = GetDC(hWnd); - iXlocCurr=(int)LOWORD(lParam)/fpScr->cxChar; - if (iXlocCurr >= fpScr->width) - iXlocCurr = fpScr->width - 1; - iYlocCurr=(int)HIWORD(lParam)/fpScr->cyChar; - if (iYlocCurr >= fpScr->height) - iYlocCurr = fpScr->height - 1; - iLocCurr=iXlocCurr+(iYlocCurr*fpScr->width); - if (iLocCurr > iLocStart) { - for (iTmp=0; iTmp < iLocStart; iTmp++) { - if (cInvertedArray[iTmp]) { - PatBlt(hDC,(iTmp%fpScr->width)*fpScr->cxChar,(int)(iTmp/fpScr->width)*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp]=0; - } - } - iX=(iLocStart%fpScr->width); - iY=(int)(iLocStart/fpScr->width); - iX2=(iLocCurr%fpScr->width); - iY2=(int)(iLocCurr/fpScr->width); - if (iY==iY2) { - hgScrLine=GetScreenLineFromY(fpScr,iY); - fpScrLine=(SCREENLINE *)LINE_MEM_LOCK(hgScrLine); - for (iTmp2= iX; iTmp2 < iX2; iTmp2++) { - if ((!cInvertedArray[iTmp2+(fpScr->width*iY)])&& fpScrLine->text[iTmp2]) { - PatBlt(hDC,(iTmp2)*fpScr->cxChar,iY*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp2+(fpScr->width*iY)]=fpScrLine->text[iTmp2]; - } - } - LINE_MEM_UNLOCK(hgScrLine); - } - else { - hgScrLine=GetScreenLineFromY(fpScr,iY); - fpScrLine=(SCREENLINE *)LINE_MEM_LOCK(hgScrLine); - for (iTmp2= iX; iTmp2 < fpScr->width; iTmp2++) { - if ((!cInvertedArray[iTmp2+(fpScr->width*iY)])&& fpScrLine->text[iTmp2]) { - PatBlt(hDC,(iTmp2)*fpScr->cxChar,iY*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp2+(fpScr->width*iY)]=fpScrLine->text[iTmp2]; - } - } - for (iTmp=iY+1; iTmp < iY2; iTmp++) { - hgScrLine=GetScreenLineFromY(fpScr,iTmp); - fpScrLine=(SCREENLINE *)LINE_MEM_LOCK(hgScrLine); - for (iTmp2= 0; iTmp2 < fpScr->width; iTmp2++) { - if ((!cInvertedArray[iTmp2+(fpScr->width*iTmp)])&& fpScrLine->text[iTmp2]) { - PatBlt(hDC,(iTmp2)*fpScr->cxChar,iTmp*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp2+(fpScr->width*iTmp)]=fpScrLine->text[iTmp2]; - } - } - LINE_MEM_UNLOCK(hgScrLine); - } - if (!(iY2==iY)) { - hgScrLine=GetScreenLineFromY(fpScr,iY2); - fpScrLine=(SCREENLINE *)LINE_MEM_LOCK(hgScrLine); - for (iTmp2= 0; iTmp2 < iX2; iTmp2++) { - if ((!cInvertedArray[iTmp2+(fpScr->width*iY2)])&& fpScrLine->text[iTmp2]) { - PatBlt(hDC,(iTmp2)*fpScr->cxChar,iY2*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp2+(fpScr->width*iY2)]=fpScrLine->text[iTmp2]; - } - } - LINE_MEM_UNLOCK(hgScrLine); - } - - } - for (iTmp=iLocCurr; iTmp < fpScr->width*fpScr->height; iTmp++) { - if (cInvertedArray[iTmp]) { - PatBlt(hDC,(iTmp%fpScr->width)*fpScr->cxChar,(int)(iTmp/fpScr->width)*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp]=0; - } - } - } else { /* going backwards */ - for (iTmp=0; iTmp < iLocCurr; iTmp++) { - if (cInvertedArray[iTmp]) { - PatBlt(hDC,(iTmp%fpScr->width)*fpScr->cxChar,(int)(iTmp/fpScr->width)*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp]=0; - } - } - iX=(iLocCurr%fpScr->width); - iY=(int)(iLocCurr/fpScr->width); - iX2=(iLocStart%fpScr->width); - iY2=(int)(iLocStart/fpScr->width); - if (iY==iY2) { - hgScrLine=GetScreenLineFromY(fpScr,iY); - fpScrLine=(SCREENLINE *)LINE_MEM_LOCK(hgScrLine); - for (iTmp2= iX; iTmp2 < iX2; iTmp2++) { - if ((!cInvertedArray[iTmp2+(fpScr->width*iY)])&& fpScrLine->text[iTmp2]) { - PatBlt(hDC,(iTmp2)*fpScr->cxChar,iY*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp2+(fpScr->width*iY)]=fpScrLine->text[iTmp2]; - } - } - LINE_MEM_UNLOCK(hgScrLine); - } - else { - hgScrLine=GetScreenLineFromY(fpScr,iY); - fpScrLine=(SCREENLINE *)LINE_MEM_LOCK(hgScrLine); - for (iTmp2= iX; iTmp2 < fpScr->width; iTmp2++) { - if ((!cInvertedArray[iTmp2+(fpScr->width*iY)])&& fpScrLine->text[iTmp2]) { - PatBlt(hDC,(iTmp2)*fpScr->cxChar,iY*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp2+(fpScr->width*iY)]=fpScrLine->text[iTmp2]; - } - } - for (iTmp=iY+1; iTmp < iY2; iTmp++) { - hgScrLine=GetScreenLineFromY(fpScr,iTmp); - fpScrLine=(SCREENLINE *)LINE_MEM_LOCK(hgScrLine); - for (iTmp2= 0; iTmp2 < fpScr->width; iTmp2++) { - if ((!cInvertedArray[iTmp2+(fpScr->width*iTmp)])&& fpScrLine->text[iTmp2]) { - PatBlt(hDC,(iTmp2)*fpScr->cxChar,iTmp*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp2+(fpScr->width*iTmp)]=fpScrLine->text[iTmp2]; - } - } - LINE_MEM_UNLOCK(hgScrLine); - } - if (!(iY2==iY)) { - hgScrLine=GetScreenLineFromY(fpScr,iY2); - fpScrLine=(SCREENLINE *)LINE_MEM_LOCK(hgScrLine); - for (iTmp2= 0; iTmp2 < iX2; iTmp2++) { - if ((!cInvertedArray[iTmp2+(fpScr->width*iY2)])&& fpScrLine->text[iTmp2]) { - PatBlt(hDC,(iTmp2)*fpScr->cxChar,iY2*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp2+(fpScr->width*iY2)]=fpScrLine->text[iTmp2]; - } - } - LINE_MEM_UNLOCK(hgScrLine); - } - - } - for (iTmp=iLocStart; iTmp < fpScr->width*fpScr->height; iTmp++) { - if (cInvertedArray[iTmp]) { - PatBlt(hDC,(iTmp%fpScr->width)*fpScr->cxChar,(int)(iTmp/fpScr->width)*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp]=0; - } - } - - } - ReleaseDC(hWnd,hDC); - GlobalUnlock(hgScr); -} - -void Edit_ClearSelection(SCREEN *fpScr) { - int iTmp; - HDC hDC; - HMENU hMenu; - - hDC=GetDC(fpScr->hWnd); - for (iTmp=0; iTmp < fpScr->width*fpScr->height; iTmp++) { - if (cInvertedArray[iTmp]) { - PatBlt(hDC,(iTmp%fpScr->width)*fpScr->cxChar,(int)(iTmp/fpScr->width)*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp]=0; - } - } - bSelection=FALSE; - hMenu=GetMenu(fpScr->hWnd); - EnableMenuItem(hMenu,IDM_COPY,MF_GRAYED); - ReleaseDC(fpScr->hWnd,hDC); -} - -void Edit_Copy(HWND hWnd) { - int iTmp,iIdx; - HGLOBAL hCutBuffer; - LPSTR lpCutBuffer; - SCREEN *fpScr; - HGLOBAL hgScr; - - hgScr=(HGLOBAL)GetWindowWord(hWnd,SCREEN_HANDLE); - if (hgScr == NULL) OutputDebugString("Hosed #1.\r\n"); - fpScr=(SCREEN *)GlobalLock(hgScr); - - hCutBuffer= GlobalAlloc(GHND,(DWORD)(fpScr->width*fpScr->height+1)); - lpCutBuffer= GlobalLock(hCutBuffer); - - if (iLocStart > iLocEnd) { /* swap variables */ - iTmp=iLocStart; - iLocStart=iLocEnd; - iLocEnd=iLocStart; - } - iTmp=iLocStart; - iIdx=0; - while (iTmp < iLocEnd) { - if (!cInvertedArray[iTmp]) { - lpCutBuffer[iIdx++]='\r'; - lpCutBuffer[iIdx++]='\n'; - iTmp= (((int)(iTmp/fpScr->width))+1)*fpScr->width; - continue; - } - lpCutBuffer[iIdx++]=cInvertedArray[iTmp++]; - } - lpCutBuffer[iIdx]=0; - GlobalUnlock(hCutBuffer); - OpenClipboard(hWnd); - EmptyClipboard(); - SetClipboardData(CF_TEXT,hCutBuffer); - CloseClipboard(); -} - -void Edit_Paste(HWND hWnd) { - HGLOBAL hClipMemory; - static HGLOBAL hMyClipBuffer; - LPSTR lpClipMemory,lpMyClipBuffer; - HGLOBAL hgScr; - SCREEN *fpScr; - - if (hMyClipBuffer) GlobalFree(hMyClipBuffer); - OpenClipboard(hWnd); - hClipMemory = GetClipboardData(CF_TEXT); - hMyClipBuffer = GlobalAlloc(GHND,GlobalSize(hClipMemory)); - lpMyClipBuffer= GlobalLock(hMyClipBuffer); - lpClipMemory= GlobalLock(hClipMemory); - - hgScr=(HGLOBAL)GetWindowWord(hWnd,SCREEN_HANDLE); - if (hgScr == NULL) OutputDebugString("Hosed #1.\r\n"); - fpScr=(SCREEN *)GlobalLock(hgScr); - if (fpScr == NULL) OutputDebugString("Hosed #2.\r\n"); - - lstrcpy(lpMyClipBuffer,lpClipMemory); + SCREEN *pScr; + int iTmp; + int iTmp2; + int iXlocCurr; + int iYlocCurr; + int iLocCurr; + int iX; + int iX2; + int iY; + int iY2; + SCREENLINE *pScrLine; + HDC hDC; + + pScr = (SCREEN *) GetWindowLong(hWnd, SCREEN_HANDLE); + assert(pScr != NULL); + + hDC = GetDC(hWnd); + iXlocCurr = (int) LOWORD(lParam) / pScr->cxChar; + if (iXlocCurr >= pScr->width) + iXlocCurr = pScr->width - 1; + iYlocCurr = (int) HIWORD(lParam) / pScr->cyChar; + if (iYlocCurr >= pScr->height) + iYlocCurr = pScr->height - 1; + iLocCurr = iXlocCurr + (iYlocCurr * pScr->width); + if (iLocCurr > iLocStart) { + for (iTmp=0; iTmp < iLocStart; iTmp++) { + if (cInvertedArray[iTmp]) { + PatBlt(hDC, (iTmp % pScr->width) * pScr->cxChar, + (int) (iTmp / pScr->width) * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp] = 0; + } + } + iX = iLocStart % pScr->width; + iY = (int) (iLocStart / pScr->width); + iX2 = iLocCurr % pScr->width; + iY2 = (int) (iLocCurr / pScr->width); + if (iY == iY2) { + pScrLine = GetScreenLineFromY(pScr, iY); + for (iTmp2 = iX; iTmp2 < iX2; iTmp2++) { + if ((!cInvertedArray[iTmp2 + (pScr->width * iY)]) && pScrLine->text[iTmp2]) { + PatBlt(hDC, iTmp2 * pScr->cxChar, iY * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp2 + (pScr->width * iY)] = pScrLine->text[iTmp2]; + } + } + } + else { + pScrLine = GetScreenLineFromY(pScr, iY); + + for (iTmp2 = iX; iTmp2 < pScr->width; iTmp2++) { + if ((!cInvertedArray[iTmp2 + (pScr->width * iY)]) && pScrLine->text[iTmp2]) { + PatBlt(hDC, iTmp2 * pScr->cxChar, iY * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp2 + (pScr->width * iY)] = pScrLine->text[iTmp2]; + } + } + + for (iTmp = iY + 1; iTmp < iY2; iTmp++) { + pScrLine = GetScreenLineFromY(pScr, iTmp); + for (iTmp2 = 0; iTmp2 < pScr->width; iTmp2++) { + if ((!cInvertedArray[iTmp2 + (pScr->width * iTmp)]) && pScrLine->text[iTmp2]) { + PatBlt(hDC, iTmp2 * pScr->cxChar, iTmp * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp2 + (pScr->width * iTmp)] = pScrLine->text[iTmp2]; + } + } + } + + if (iY2 != iY) { + pScrLine = GetScreenLineFromY(pScr, iY2); + for (iTmp2 = 0; iTmp2 < iX2; iTmp2++) { + if ((!cInvertedArray[iTmp2 + (pScr->width * iY2)]) && pScrLine->text[iTmp2]) { + PatBlt(hDC, iTmp2 * pScr->cxChar, iY2 * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp2 + (pScr->width * iY2)] = pScrLine->text[iTmp2]; + } + } + } + } + + for (iTmp = iLocCurr; iTmp < pScr->width * pScr->height; iTmp++) { + if (cInvertedArray[iTmp]) { + PatBlt(hDC, (iTmp % pScr->width) * pScr->cxChar, (int) (iTmp / pScr->width) * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp] = 0; + } + } + } + else { /* going backwards */ + for (iTmp = 0; iTmp < iLocCurr; iTmp++) { + if (cInvertedArray[iTmp]) { + PatBlt(hDC, (iTmp % pScr->width) * pScr->cxChar, (int) (iTmp / pScr->width) * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp] = 0; + } + } + iX = iLocCurr % pScr->width; + iY = (int) (iLocCurr / pScr->width); + iX2 = (iLocStart % pScr->width); + iY2 = (int) (iLocStart / pScr->width); + if (iY == iY2) { + pScrLine = GetScreenLineFromY(pScr, iY); + for (iTmp2= iX; iTmp2 < iX2; iTmp2++) { + if ((!cInvertedArray[iTmp2 + (pScr->width * iY)]) && pScrLine->text[iTmp2]) { + PatBlt(hDC, iTmp2 * pScr->cxChar, iY * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp2 + (pScr->width * iY)] = pScrLine->text[iTmp2]; + } + } + } + else { + pScrLine = GetScreenLineFromY(pScr, iY); + for (iTmp2 = iX; iTmp2 < pScr->width; iTmp2++) { + if ((!cInvertedArray[iTmp2 + (pScr->width * iY)]) && pScrLine->text[iTmp2]) { + PatBlt(hDC, iTmp2 * pScr->cxChar, iY * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp2 + (pScr->width * iY)] = pScrLine->text[iTmp2]; + } + } + for (iTmp = iY + 1; iTmp < iY2; iTmp++) { + pScrLine = GetScreenLineFromY(pScr, iTmp); + for (iTmp2 = 0; iTmp2 < pScr->width; iTmp2++) { + if ((!cInvertedArray[iTmp2 + (pScr->width * iTmp)]) && pScrLine->text[iTmp2]) { + PatBlt(hDC, iTmp2 * pScr->cxChar, iTmp * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp2 + (pScr->width * iTmp)] = pScrLine->text[iTmp2]; + } + } + } + if (iY2 != iY) { + pScrLine = GetScreenLineFromY(pScr, iY2); + for (iTmp2 = 0; iTmp2 < iX2; iTmp2++) { + if ((!cInvertedArray[iTmp2 + (pScr->width * iY2)]) && pScrLine->text[iTmp2]) { + PatBlt(hDC, iTmp2 * pScr->cxChar, iY2 * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp2 + (pScr->width * iY2)] = pScrLine->text[iTmp2]; + } + } + } + } + for (iTmp = iLocStart; iTmp < pScr->width * pScr->height; iTmp++) { + if (cInvertedArray[iTmp]) { + PatBlt(hDC, (iTmp % pScr->width) * pScr->cxChar, (int) (iTmp / pScr->width) * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp] = 0; + } + } + } + ReleaseDC(hWnd, hDC); +} /* Edit_MouseMove */ + + +void Edit_ClearSelection( + SCREEN *pScr) +{ + int iTmp; + HDC hDC; + HMENU hMenu; + + hDC = GetDC(pScr->hWnd); + for (iTmp = 0; iTmp < pScr->width * pScr->height; iTmp++) { + if (cInvertedArray[iTmp]) { + PatBlt(hDC, (iTmp % pScr->width) * pScr->cxChar, + (int) (iTmp / pScr->width) * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp] = 0; + } + } + bSelection = FALSE; + hMenu=GetMenu(pScr->hWnd); + EnableMenuItem(hMenu, IDM_COPY, MF_GRAYED); + ReleaseDC(pScr->hWnd, hDC); +} /* Edit_ClearSelection */ + + +void Edit_Copy( + HWND hWnd) +{ + int iTmp,iIdx; + HGLOBAL hCutBuffer; + LPSTR lpCutBuffer; + SCREEN *pScr; + + pScr = (SCREEN *) GetWindowLong(hWnd, SCREEN_HANDLE); + assert(pScr != NULL); + + hCutBuffer= GlobalAlloc(GHND, (DWORD) (pScr->width * pScr->height + 1)); + lpCutBuffer= GlobalLock(hCutBuffer); + + if (iLocStart > iLocEnd) { /* swap variables */ + iTmp = iLocStart; + iLocStart = iLocEnd; + iLocEnd = iLocStart; + } + iTmp = iLocStart; + iIdx = 0; + while (iTmp < iLocEnd) { + if (!cInvertedArray[iTmp]) { + lpCutBuffer[iIdx++] = '\r'; + lpCutBuffer[iIdx++] = '\n'; + iTmp = (((int) (iTmp / pScr->width)) + 1) * pScr->width; + continue; + } + lpCutBuffer[iIdx++] = cInvertedArray[iTmp++]; + } + lpCutBuffer[iIdx] = 0; + GlobalUnlock(hCutBuffer); + OpenClipboard(hWnd); + EmptyClipboard(); + SetClipboardData(CF_TEXT, hCutBuffer); + CloseClipboard(); + +} /* Edit_Copy */ + + +void Edit_Paste( + HWND hWnd) +{ + HGLOBAL hClipMemory; + static HGLOBAL hMyClipBuffer; + LPSTR lpClipMemory; + LPSTR lpMyClipBuffer; + SCREEN *pScr; + + if (hMyClipBuffer) + GlobalFree(hMyClipBuffer); + OpenClipboard(hWnd); + hClipMemory = GetClipboardData(CF_TEXT); + hMyClipBuffer = GlobalAlloc(GHND, GlobalSize(hClipMemory)); + lpMyClipBuffer = GlobalLock(hMyClipBuffer); + lpClipMemory= GlobalLock(hClipMemory); + + pScr = (SCREEN *) GetWindowLong(hWnd, SCREEN_HANDLE); + assert(pScr != NULL); + + lstrcpy(lpMyClipBuffer, lpClipMemory); // OutputDebugString(lpMyClipBuffer); - PostMessage(fpScr->hwndTel,WM_MYSCREENBLOCK,(WPARAM)hMyClipBuffer, - (HSCREEN)hgScr); - CloseClipboard(); - GlobalUnlock(hClipMemory); - GlobalUnlock(hMyClipBuffer); -} - -void Edit_LbuttonDblclk(HWND hWnd,LPARAM lParam) { - HDC hDC; - SCREEN *fpScr; - HGLOBAL hgScr; - int iTmp,iTmp2,iXlocStart,iYloc; - HSCREENLINE hgScrLine; - SCREENLINE *fpScrLine; - - hgScr=(HGLOBAL)GetWindowWord(hWnd,SCREEN_HANDLE); - if (hgScr == NULL) OutputDebugString("Hosed #1.\r\n"); - fpScr=(SCREEN *)GlobalLock(hgScr); - if (fpScr == NULL) OutputDebugString("Hosed #2.\r\n"); - - hDC=GetDC(hWnd); - for (iTmp=0; iTmp < fpScr->width*fpScr->height; iTmp++) { - if (cInvertedArray[iTmp]) { - PatBlt(hDC,(iTmp%fpScr->width)*fpScr->cxChar,(int)(iTmp/fpScr->width)*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp]=0; - } - } - bSelection=FALSE; - iXlocStart=(int)LOWORD(lParam)/fpScr->cxChar; - if (iXlocStart >= fpScr->width) - iXlocStart = fpScr->width - 1; - iYloc=(int)HIWORD(lParam)/fpScr->cyChar; - if (iYloc >= fpScr->height) - iYloc = fpScr->height - 1; - iLocStart=iXlocStart+(iYloc*fpScr->width); - - hgScrLine=GetScreenLineFromY(fpScr,iYloc); - fpScrLine=(SCREENLINE *)LINE_MEM_LOCK(hgScrLine); - - iTmp=iXlocStart; - while (isalnum((int)fpScrLine->text[iTmp])) { - PatBlt(hDC,iTmp*fpScr->cxChar,iYloc*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp+(iYloc*fpScr->width)]=fpScrLine->text[iTmp]; - iTmp++; - } - iTmp2=iXlocStart-1; - while (isalnum((int)fpScrLine->text[iTmp2])) { - PatBlt(hDC,iTmp2*fpScr->cxChar,iYloc*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp2+(iYloc*fpScr->width)]=fpScrLine->text[iTmp2]; - iTmp2--; - } - iLocStart=(iTmp2+1)+(iYloc*fpScr->width); - iLocEnd=(iTmp)+(iYloc*fpScr->width); - - bSelection=TRUE; - ReleaseDC(hWnd,hDC); - LINE_MEM_UNLOCK(hgScrLine); - GlobalUnlock(hgScr); -} - -void Edit_TripleClick(HWND hWnd,LPARAM lParam) { - HDC hDC; - SCREEN *fpScr; - HGLOBAL hgScr; - int iTmp,iYloc; - HSCREENLINE hgScrLine; - SCREENLINE *fpScrLine; - + PostMessage(pScr->hwndTel, WM_MYSCREENBLOCK, (WPARAM) hMyClipBuffer, (LPARAM) pScr); + CloseClipboard(); + GlobalUnlock(hClipMemory); + GlobalUnlock(hMyClipBuffer); + +} /* Edit_Paste */ + + +void Edit_LbuttonDblclk( + HWND hWnd, + LPARAM lParam) +{ + HDC hDC; + SCREEN *pScr; + int iTmp; + int iTmp2; + int iXlocStart; + int iYloc; + SCREENLINE *pScrLine; + + pScr = (SCREEN *) GetWindowLong(hWnd, SCREEN_HANDLE); + assert(pScr != NULL); + + hDC = GetDC(hWnd); + for (iTmp = 0; iTmp < pScr->width * pScr->height; iTmp++) { + if (cInvertedArray[iTmp]) { + PatBlt(hDC, (iTmp % pScr->width) * pScr->cxChar, + (int) (iTmp / pScr->width) * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp] = 0; + } + } + bSelection = FALSE; + iXlocStart = (int) LOWORD(lParam) / pScr->cxChar; + if (iXlocStart >= pScr->width) + iXlocStart = pScr->width - 1; + iYloc = (int) HIWORD(lParam) / pScr->cyChar; + if (iYloc >= pScr->height) + iYloc = pScr->height - 1; + iLocStart = iXlocStart + (iYloc * pScr->width); + + pScrLine = GetScreenLineFromY(pScr, iYloc); + + iTmp = iXlocStart; + while (isalnum((int) pScrLine->text[iTmp])) { + PatBlt(hDC, iTmp * pScr->cxChar, iYloc * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp + (iYloc * pScr->width)] = pScrLine->text[iTmp]; + iTmp++; + } + iTmp2 = iXlocStart - 1; + while (isalnum((int) pScrLine->text[iTmp2])) { + PatBlt(hDC, iTmp2 * pScr->cxChar, iYloc * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp2 + (iYloc * pScr->width)] = pScrLine->text[iTmp2]; + iTmp2--; + } + iLocStart = (iTmp2 + 1) + (iYloc * pScr->width); + iLocEnd = iTmp + (iYloc * pScr->width); + + bSelection = TRUE; + ReleaseDC(hWnd, hDC); + +} /* Edit_LbuttonDblclk */ + + +void Edit_TripleClick( + HWND hWnd, + LPARAM lParam) +{ + HDC hDC; + SCREEN *pScr; + int iTmp; + int iYloc; + SCREENLINE *pScrLine; + // OutputDebugString("Triple Click \r\n"); - hgScr=(HGLOBAL)GetWindowWord(hWnd,SCREEN_HANDLE); - if (hgScr == NULL) OutputDebugString("Hosed #1.\r\n"); - fpScr=(SCREEN *)GlobalLock(hgScr); - if (fpScr == NULL) OutputDebugString("Hosed #2.\r\n"); - - hDC=GetDC(hWnd); - for (iTmp=0; iTmp < fpScr->width*fpScr->height; iTmp++) { - if (cInvertedArray[iTmp]) { - PatBlt(hDC,(iTmp%fpScr->width)*fpScr->cxChar,(int)(iTmp/fpScr->width)*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp]=0; - } - } - bSelection=FALSE; - iYloc=(int)HIWORD(lParam)/fpScr->cyChar; - if (iYloc >= fpScr->height) - iYloc = fpScr->height - 1; - iLocStart=(iYloc*fpScr->width); - - hgScrLine=GetScreenLineFromY(fpScr,iYloc); - fpScrLine=(SCREENLINE *)LINE_MEM_LOCK(hgScrLine); - - for (iTmp=0; iTmp<fpScr->width; iTmp++) { - if (fpScrLine->text[iTmp]) { - PatBlt(hDC,iTmp*fpScr->cxChar,iYloc*fpScr->cyChar, - fpScr->cxChar,fpScr->cyChar,DSTINVERT); - cInvertedArray[iTmp+(iYloc*fpScr->width)]=fpScrLine->text[iTmp]; - } else break; - } - iLocEnd=(iTmp+(iYloc*fpScr->width)); - - bSelection=TRUE; - ReleaseDC(hWnd,hDC); - LINE_MEM_UNLOCK(hgScrLine); - GlobalUnlock(hgScr); -} + pScr = (SCREEN *) GetWindowLong(hWnd, SCREEN_HANDLE); + assert(pScr != NULL); + + hDC = GetDC(hWnd); + for (iTmp = 0; iTmp < pScr->width * pScr->height; iTmp++) { + if (cInvertedArray[iTmp]) { + PatBlt(hDC, (iTmp % pScr->width) * pScr->cxChar, + (int) (iTmp / pScr->width) * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp] = 0; + } + } + bSelection = FALSE; + iYloc = (int) HIWORD(lParam) / pScr->cyChar; + if (iYloc >= pScr->height) + iYloc = pScr->height - 1; + iLocStart = iYloc * pScr->width; + + pScrLine = GetScreenLineFromY(pScr, iYloc); + + for (iTmp = 0; iTmp < pScr->width; iTmp++) { + if (pScrLine->text[iTmp]) { + PatBlt(hDC, iTmp * pScr->cxChar, iYloc * pScr->cyChar, + pScr->cxChar, pScr->cyChar, DSTINVERT); + cInvertedArray[iTmp + (iYloc * pScr->width)] = pScrLine->text[iTmp]; + } + else + break; + } + iLocEnd = iTmp + (iYloc * pScr->width); + + bSelection = TRUE; + ReleaseDC(hWnd, hDC); + +} /* Edit_TripleClick */ |