summaryrefslogtreecommitdiffstats
path: root/src/windows/wintel/edit.c
diff options
context:
space:
mode:
authorKeith Vetter <keithv@fusion.com>1995-04-27 20:14:25 +0000
committerKeith Vetter <keithv@fusion.com>1995-04-27 20:14:25 +0000
commit086a3eabb9f68c61bc44755a68edb4307a153f08 (patch)
tree89ea771a2329bbbc43c37f3126f275b776790297 /src/windows/wintel/edit.c
parentcdd394f225858b85a43796386fdab6a41a463039 (diff)
downloadkrb5-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.c841
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 */