summaryrefslogtreecommitdiffstats
path: root/private/mvdm/wow16/write/clipdisp.c
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/mvdm/wow16/write/clipdisp.c
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/mvdm/wow16/write/clipdisp.c')
-rw-r--r--private/mvdm/wow16/write/clipdisp.c281
1 files changed, 281 insertions, 0 deletions
diff --git a/private/mvdm/wow16/write/clipdisp.c b/private/mvdm/wow16/write/clipdisp.c
new file mode 100644
index 000000000..21770eb2d
--- /dev/null
+++ b/private/mvdm/wow16/write/clipdisp.c
@@ -0,0 +1,281 @@
+/************************************************************/
+/* Windows Write, Copyright 1985-1992 Microsoft Corporation */
+/************************************************************/
+
+/* clipdisp.c -- Clipboard display routines */
+/* This module only gets called in when the clipboard view window is up */
+
+#define NOVIRTUALKEYCODES
+#define NOWINSTYLES
+#define NOGDICAPMASKS
+#define NOSYSMETRICS
+#define NOMENUS
+#define NOCTLMGR
+#include "windows.h"
+
+#include "mw.h"
+#include "docdefs.h"
+#include "cmddefs.h"
+#include "str.h"
+#include "propdefs.h"
+#include "editdefs.h"
+#include "winddefs.h"
+#include "dispdefs.h"
+#include "wwdefs.h"
+#if defined(OLE)
+#include "obj.h"
+#endif
+
+#define SCRIBBLE
+#include "debug.h"
+
+extern int docCur; /* Document in current ww */
+extern int docScrap;
+extern struct WWD rgwwd [];
+
+
+int NEAR FGetClipboardDC( void );
+int NEAR SetupClipboardDC( void );
+int NEAR ReleaseClipboardDC( void );
+
+
+MdocPaintClipboard( hWnd, hPS )
+HWND hWnd;
+HANDLE hPS;
+{ /* Paint portion of clipboard window indicated by hPS */
+ LPPAINTSTRUCT lpps;
+
+ if (wwClipboard == wwNil)
+ return;
+
+ /* Must set the scroll bar range each time we get a PAINT message;
+ CLIPBRD.EXE resets it when it gets WM_DRAWCLIPBOARD */
+
+ SetScrollRange( wwdClipboard.wwptr, SB_VERT, 0, drMax-1, FALSE );
+ SetScrollRange( wwdClipboard.wwptr, SB_HORZ, 0, xpRightLim, FALSE );
+
+ if ( (lpps = (LPPAINTSTRUCT)GlobalLock( hPS )) != NULL )
+ { /* Paint the clipboard */
+ wwdClipboard.hDC = lpps->hdc;
+ SetupClipboardDC();
+ NewCurWw( wwClipboard, TRUE );
+ InvalBand( &wwdClipboard, lpps->rcPaint.top, lpps->rcPaint.bottom - 1 );
+ UpdateWw( wwClipboard, FALSE );
+ NewCurWw( wwDocument, TRUE );
+ GlobalUnlock( hPS );
+ }
+
+ /* Since the DC is no longer good, we'll set it to NULL */
+ wwdClipboard.hDC = NULL;
+
+#if 0
+#if defined(OLE)
+ /* gotta delete objects loaded from scrap document */
+ ObjEnumInDoc(docScrap,ObjDeleteObjectInDoc);
+#endif
+#endif
+}
+
+
+
+
+MdocSizeClipboard( hWnd, hRC )
+HWND hWnd;
+HANDLE hRC;
+{ /* Set clipboard window to be the rect in hRC */
+ /* If rectangle is 0 units high or wide, this means we're losing the
+ necessity for display until the next size message */
+ LPRECT lprc;
+ int dypRect;
+
+ if ( (lprc = (LPRECT)GlobalLock( hRC )) == NULL )
+ return;
+
+ if ( (dypRect = lprc->bottom - lprc->top) <= 0 )
+ { /* NULL rect, means lose display until we get a nonnull size */
+ if (wwClipboard != wwNil)
+ FreeWw( wwClipboard );
+ }
+ else if ( (wwClipboard != wwNil) ||
+ ((wwClipboard=WwAlloc( hWnd, docScrap )) != wwNil))
+ { /* Have WWD entry for clipboard, set its size */
+
+ wwdClipboard.wwptr = hWnd; /* Just in case clipboard
+ was closed, then re-opened */
+ wwdClipboard.xpMin = lprc->left;
+ wwdClipboard.xpMac = lprc->right;
+ wwdClipboard.ypMin = lprc->top;
+ wwdClipboard.ypMac = lprc->bottom;
+#ifdef WIN30
+ SetScrollPos(hWnd, SB_HORZ, 0, TRUE); /* suggested by sankar */
+#endif
+ }
+
+ GlobalUnlock( hRC );
+}
+
+
+
+
+MdocVScrollClipboard( hWnd, sbMessage, wNewThumb )
+HWND hWnd;
+int sbMessage;
+int wNewThumb;
+{
+ if ( hWnd != wwdClipboard.wwptr || wwClipboard == wwNil)
+ {
+ Assert( FALSE );
+ return;
+ }
+
+ if (!FGetClipboardDC())
+ /* Unable to create clipboard device context */
+ return;
+
+ NewCurWw( wwClipboard, TRUE );
+
+switch ( sbMessage )
+{
+case SB_THUMBPOSITION:
+ {
+ extern typeCP cpMacCur;
+
+ DirtyCache( wwdClipboard.cpFirst = (cpMacCur - wwdClipboard.cpMin) *
+ wNewThumb / (drMax - 1) + wwdClipboard.cpMin);
+ wwdClipboard.ichCpFirst = 0;
+ wwdClipboard.fCpBad = TRUE;
+ TrashWw( wwClipboard );
+ break;
+ }
+
+case SB_LINEUP:
+ ScrollUpCtr( 1 );
+ break;
+case SB_LINEDOWN:
+ ScrollDownCtr( 1 );
+ break;
+case SB_PAGEUP:
+ ScrollUpDypWw();
+ break;
+case SB_PAGEDOWN:
+ ScrollDownCtr( 100 ); /* 100 > tr's in a page */
+ break;
+}
+
+UpdateWw( wwClipboard, FALSE );
+
+NewCurWw( wwDocument, TRUE ); /* Frees the memory DC */
+ReleaseClipboardDC();
+}
+
+
+
+
+MdocHScrollClipboard( hWnd, sbMessage, wNewThumb )
+HWND hWnd;
+int sbMessage;
+int wNewThumb;
+{
+ if ( hWnd != wwdClipboard.wwptr || wwClipboard == wwNil)
+ {
+ Assert( FALSE );
+ return;
+ }
+
+ if (!FGetClipboardDC())
+ /* Unable to create clipboard device context */
+ return;
+
+ NewCurWw( wwClipboard, TRUE );
+
+ switch (sbMessage)
+ {
+ case SB_LINEUP: /* line left */
+ ScrollRight(xpMinScroll);
+ break;
+ case SB_LINEDOWN: /* line right */
+ ScrollLeft(xpMinScroll);
+ break;
+ case SB_PAGEUP: /* page left */
+ ScrollRight(wwdClipboard.xpMac - xpSelBar);
+ break;
+ case SB_PAGEDOWN: /* page right */
+ ScrollLeft(wwdClipboard.xpMac - xpSelBar);
+ break;
+ case SB_THUMBPOSITION:
+ /* position to posNew */
+ AdjWwHoriz( wNewThumb - wwdClipboard.xpMin );
+ break;
+ }
+
+UpdateWw( wwClipboard, FALSE );
+
+NewCurWw( wwDocument, TRUE ); /* Frees the memory DC */
+ReleaseClipboardDC();
+}
+
+
+
+
+MdocAskCBFormatName( lpchName, cchNameMax )
+LPCH lpchName;
+int cchNameMax;
+{ /* Copy the format name for the current contents of the clipboard
+ (of which we are the owner) to lpchName, copying no more than
+ cchNameMax characters */
+
+extern int vfOwnClipboard;
+extern int vfScrapIsPic;
+extern CHAR szWRITEText[];
+int cchCopy;
+
+Assert( vfOwnClipboard );
+
+/* Don't give a format name for pictures; the name is covered by the
+ standard types */
+
+if (!vfScrapIsPic)
+ {
+ if ( (cchCopy=CchSz( szWRITEText )) > cchNameMax )
+ {
+ lpchName[ cchCopy = cchNameMax - 1 ] = '\0';
+ }
+
+ bltbx( (LPSTR)szWRITEText, (LPSTR)lpchName, cchCopy );
+ }
+
+}
+
+
+
+
+int NEAR FGetClipboardDC()
+{ /* Get a DC for the clipboard window. Leave it in rgwwd [wwClipboard].
+ Call SetupClipboardDC to set up proper colors */
+
+ if ((wwdClipboard.hDC = GetDC( wwdClipboard.wwptr )) == NULL )
+ return FALSE;
+
+ SetupClipboardDC();
+ return TRUE;
+}
+
+int NEAR SetupClipboardDC()
+{ /* Select in the background brush for appropriate color behavior. */
+
+ extern long rgbBkgrnd;
+ extern long rgbText;
+ extern HBRUSH hbrBkgrnd;
+
+SelectObject( wwdClipboard.hDC, hbrBkgrnd );
+SetBkColor( wwdClipboard.hDC, rgbBkgrnd );
+SetTextColor( wwdClipboard.hDC, rgbText );
+}
+
+
+
+int NEAR ReleaseClipboardDC()
+{
+ReleaseDC( wwdClipboard.wwptr, wwdClipboard.hDC );
+wwdClipboard.hDC = NULL; /* Mark clipboard DC as invalid */
+}