📄 gvwdlg.c
字号:
option.auto_bbox = (int)SendDlgItemMessage(hDlg, PSTOEPS_AUTOBBOX, BM_GETCHECK, 0, 0);
EndDialog(hDlg, IDYES);
return TRUE;
case IDNO:
get_help();
case IDCANCEL:
EndDialog(hDlg, FALSE);
return TRUE;
}
break;
}
return FALSE;
}
BOOL
pstoeps_warn(void)
{
int flag;
nHelpTopic = IDS_TOPICPSTOEPS;
flag = DialogBoxParamL(hlanguage, MAKEINTRESOURCE(IDD_PSTOEPS), hwndimg,
PSTOEPSDlgProc, (LPARAM)NULL);
return (flag == IDYES);
}
#endif /* !VIEWONLY */
#ifdef __BORLANDC__
#pragma argsused
#endif
/* input string dialog box */
BOOL CALLBACK _export
InstallDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message) {
case WM_INITDIALOG:
SetDlgItemTextA(hDlg, INSTALL_DLL, option.gsdll);
SetDlgItemTextA(hDlg, INSTALL_INCLUDE, option.gsinclude);
SetDlgItemTextA(hDlg, INSTALL_OTHER, option.gsother);
return( TRUE);
case WM_COMMAND:
switch(LOWORD(wParam)) {
case ID_DEFAULT:
install_default(hDlg);
return(FALSE);
case ID_HELP:
get_help();
return(FALSE);
case IDOK:
/* do sanity check on the following strings */
GetDlgItemTextA(hDlg, INSTALL_DLL, option.gsdll, MAXSTR);
GetDlgItemTextA(hDlg, INSTALL_INCLUDE, option.gsinclude, MAXSTR);
GetDlgItemTextA(hDlg, INSTALL_OTHER, option.gsother, MAXSTR);
if (SendDlgItemMessage(hDlg, IDC_CONFIGADV_PRINTER,
BM_GETCHECK, 0, 0))
gsview_printer_profiles();
if (SendDlgItemMessage(hDlg, IDC_CONFIGADV_START,
BM_GETCHECK, 0, 0))
gsview_create_objects("Ghostgum");
{BOOL ps, pdf;
ps = SendDlgItemMessage(hDlg, IDC_CONFIGADV_PS,
BM_GETCHECK, 0, 0);
pdf = SendDlgItemMessage(hDlg, IDC_CONFIGADV_PDF,
BM_GETCHECK, 0, 0);
if (ps || pdf)
update_registry(ps, pdf);
}
EndDialog(hDlg, TRUE);
return(TRUE);
case IDCANCEL:
EndDialog(hDlg, FALSE);
return(TRUE);
default:
return(FALSE);
}
default:
return(FALSE);
}
}
BOOL
install_gsdll(void)
{
BOOL flag;
/*
nHelpTopic = IDS_TOPICINSTALL;
*/
nHelpTopic = IDS_TOPICADVANCEDCFG;
flag = DialogBoxParamL(hlanguage, MAKEINTRESOURCE(IDD_INSTALL),
hwndimg, InstallDlgProc, (LPARAM)NULL);
if (flag)
option.configured = TRUE;
return flag;
}
TCHAR *depthlist[] = {TEXT("Default"), TEXT("1"), TEXT("4"),
TEXT("8"), TEXT("24")};
int index_to_depth[] = { 0, 1, 4, 8, 24};
int depth_to_index(int depth)
{
int i;
for (i=0; i<sizeof(index_to_depth)/sizeof(int); i++)
if (index_to_depth[i] == depth)
return i;
return 0;
}
TCHAR *alphalist[] = {TEXT("1"), TEXT("2"), TEXT("4")};
int index_to_alpha[] = { 1, 2, 4};
int alpha_to_index(int alpha)
{
int i;
for (i=0; i<sizeof(index_to_alpha)/sizeof(int); i++)
if (index_to_alpha[i] == alpha)
return i;
return 0;
}
void
enable_alpha(HWND hDlg)
{
int i;
i = (int)SendDlgItemMessage(hDlg, DSET_DEPTH, CB_GETCURSEL, 0, 0L);
if (i == CB_ERR)
return;
i = real_depth(index_to_depth[i]);
i = (i >= 8);
EnableWindow(GetDlgItem(hDlg, DSET_TALPHA), i);
EnableWindow(GetDlgItem(hDlg, DSET_GALPHA), i);
}
/* dialog box for display settings */
#ifdef __BORLANDC__
#pragma argsused
#endif
BOOL CALLBACK _export
DisplaySettingsDlgProc(HWND hDlg, UINT wmsg, WPARAM wParam, LPARAM lParam)
{
char buf[128];
TCHAR wbuf[128];
int i;
WORD notify_message;
switch (wmsg) {
case WM_INITDIALOG:
if (option.xdpi == option.ydpi)
sprintf(buf,"%g", option.xdpi);
else
sprintf(buf,"%g %g", option.xdpi, option.ydpi);
SetDlgItemTextA(hDlg, DSET_RES, buf);
if (option.zoom_xdpi == option.zoom_ydpi)
sprintf(buf,"%g", option.zoom_xdpi);
else
sprintf(buf,"%g %g", option.zoom_xdpi, option.zoom_ydpi);
SetDlgItemTextA(hDlg, DSET_ZOOMRES, buf);
SendDlgItemMessage(hDlg, DSET_DEPTH, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0);
for (i=0; i<sizeof(depthlist)/sizeof(TCHAR *); i++) {
lstrcpy(wbuf, depthlist[i]);
if (lstrcmp(wbuf, TEXT("Default"))==0)
load_string(IDS_DEFAULT, wbuf,
sizeof(wbuf)/sizeof(TCHAR)-1);
SendDlgItemMessageL(hDlg, DSET_DEPTH, CB_ADDSTRING, 0,
(LPARAM)((LPTSTR)wbuf));
}
SendDlgItemMessage(hDlg, DSET_DEPTH, CB_SETCURSEL, depth_to_index(option.depth), (LPARAM)0);
SendDlgItemMessage(hDlg, DSET_TALPHA, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0);
SendDlgItemMessage(hDlg, DSET_GALPHA, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0);
for (i=0; i<sizeof(alphalist)/sizeof(TCHAR *); i++) {
SendDlgItemMessageL(hDlg, DSET_TALPHA, CB_ADDSTRING, 0,
(LPARAM)((LPSTR)alphalist[i]));
SendDlgItemMessageL(hDlg, DSET_GALPHA, CB_ADDSTRING, 0,
(LPARAM)((LPSTR)alphalist[i]));
}
enable_alpha(hDlg);
SendDlgItemMessage(hDlg, DSET_TALPHA, CB_SETCURSEL, alpha_to_index(option.alpha_text), (LPARAM)0);
SendDlgItemMessage(hDlg, DSET_GALPHA, CB_SETCURSEL, alpha_to_index(option.alpha_graphics), (LPARAM)0);
return TRUE;
case WM_COMMAND:
notify_message = GetNotification(wParam,lParam);
switch (LOWORD(wParam)) {
case ID_HELP:
nHelpTopic = IDS_TOPICDSET;
get_help();
return FALSE;
case DSET_DEPTH:
if (notify_message == CBN_SELCHANGE)
enable_alpha(hDlg);
return FALSE;
case IDOK:
{
BOOL unzoom = FALSE;
BOOL resize = FALSE;
BOOL restart = FALSE;
float x, y;
GetDlgItemTextA(hDlg, DSET_RES, buf, sizeof(buf)-2);
switch (sscanf(buf,"%f %f", &x, &y)) {
case EOF:
case 0:
break;
case 1:
y = x;
case 2:
if (x==0.0)
x= DEFAULT_RESOLUTION;
if (y==0.0)
y= DEFAULT_RESOLUTION;
if ( (x != option.xdpi) || (y != option.ydpi) ) {
option.xdpi = x;
option.ydpi = y;
resize = TRUE;
unzoom = TRUE;
}
}
GetDlgItemTextA(hDlg, DSET_ZOOMRES, buf, sizeof(buf)-2);
switch (sscanf(buf,"%f %f", &x, &y)) {
case EOF:
case 0:
break;
case 1:
y = x;
case 2:
if (x==0.0)
x= DEFAULT_RESOLUTION;
if (y==0.0)
y= DEFAULT_RESOLUTION;
if ( (x != option.zoom_xdpi) || (y != option.zoom_ydpi) ) {
option.zoom_xdpi = x;
option.zoom_ydpi = y;
resize = TRUE;
unzoom = TRUE;
}
}
i = (int)SendDlgItemMessage(hDlg, DSET_DEPTH, CB_GETCURSEL, 0, 0L);
i = index_to_depth[i];
if (i != option.depth) {
option.depth = i;
restart = TRUE;
resize = TRUE;
unzoom = TRUE;
}
i = (int)SendDlgItemMessage(hDlg, DSET_TALPHA, CB_GETCURSEL, 0, 0L);
i = index_to_alpha[i];
if (i != option.alpha_text) {
option.alpha_text = i;
restart = TRUE;
resize = TRUE;
unzoom = TRUE;
}
i = (int)SendDlgItemMessage(hDlg, DSET_GALPHA, CB_GETCURSEL, 0, 0L);
i = index_to_alpha[i];
if (i != option.alpha_graphics) {
option.alpha_graphics = i;
/* restart = TRUE; */
resize = TRUE;
unzoom = TRUE;
}
if (resize) {
if (unzoom)
gsview_unzoom();
if (gsdll.state != GS_UNINIT) {
/* gs_resize has this check
if (option.redisplay && (gsdll.state == GS_PAGE) && (psfile.dsc != (CDSC *)NULL))
*/
gs_resize();
/* for those that can't be changed with a */
/* postscript command so must close gs */
if (restart)
pending.restart = TRUE;
}
}
EndDialog(hDlg, TRUE);
}
return TRUE;
case IDCANCEL:
EndDialog(hDlg, FALSE);
return TRUE;
}
break;
}
return FALSE;
}
void
display_settings()
{
DialogBoxParamL(hlanguage, MAKEINTRESOURCE(IDD_DSET), hwndimg,
DisplaySettingsDlgProc, (LPARAM)NULL);
}
/* Text Window for Ghostscript Messages */
/* uses MS-Windows multiline edit field */
#ifdef __WIN32__
#define TWLENGTH 61440
#else
#define TWLENGTH 16384
#endif
#define TWSCROLL 2048
char twbuf[TWLENGTH];
int twend;
#ifdef __BORLANDC__
#pragma argsused
#endif
BOOL CALLBACK _export
TextDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message) {
case WM_INITDIALOG:
/* Never translate this one */
SetDlgItemTextA(hDlg, TEXTWIN_MLE, twbuf);
{
DWORD linecount;
/* EM_SETSEL, followed by EM_SCROLLCARET doesn't work */
linecount = SendDlgItemMessage(hDlg, TEXTWIN_MLE, EM_GETLINECOUNT, (WPARAM)0, (LPARAM)0);
SendDlgItemMessage(hDlg, TEXTWIN_MLE, EM_LINESCROLL, (WPARAM)0, (LPARAM)linecount-18);
}
return(TRUE);
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDCANCEL:
EndDialog(hDlg, FALSE);
return(TRUE);
case IDOK:
EndDialog(hDlg, TRUE);
return(TRUE);
case ID_HELP:
get_help();
return(FALSE);
case TEXTWIN_COPY:
{HGLOBAL hglobal;
LPSTR p;
DWORD result;
int start, end;
result = SendDlgItemMessage(hDlg, TEXTWIN_MLE, EM_GETSEL, (WPARAM)0, (LPARAM)0);
start = LOWORD(result);
end = HIWORD(result);
if (start == end) {
start = 0;
end = twend;
}
hglobal = GlobalAlloc(GHND | GMEM_SHARE, end-start+1);
if (hglobal == (HGLOBAL)NULL) {
MessageBeep(-1);
return(FALSE);
}
p = (LPSTR)GlobalLock(hglobal);
if (p == (LPSTR)NULL) {
MessageBeep(-1);
return(FALSE);
}
strncpy(p, twbuf+start, end-start);
GlobalUnlock(hglobal);
OpenClipboard(hwndimg);
EmptyClipboard();
SetClipboardData(CF_TEXT, hglobal);
CloseClipboard();
}
default:
return(FALSE);
}
default:
return(FALSE);
}
}
/* display dialog box with multiline edit control */
void
gs_showmess(void)
{
nHelpTopic = IDS_TOPICMESS;
DialogBoxParamL(hlanguage, MAKEINTRESOURCE(IDD_TEXTWIN), hwndimg,
TextDlgProc, (LPARAM)NULL);
}
/* Add string for Ghostscript message window */
void
gs_addmess_count(const char *str, int count)
{
char *p;
const char *s;
int i, lfcount;
/* if debugging, write to a log file */
if (debug & DEBUG_LOG) {
FILE *f = fopen("c:\\gsview.txt", "a");
if (f != (FILE *)NULL) {
fwrite(str, 1, count, f);
fclose(f);
}
}
/* we need to add \r after each \n, so count the \n's */
lfcount = 0;
s = str;
for (i=0; i<count; i++) {
if (*s == '\n')
lfcount++;
s++;
}
if (count + lfcount >= TWSCROLL)
return; /* too large */
if (count + lfcount + twend >= TWLENGTH-1) {
/* scroll buffer */
twend -= TWSCROLL;
memmove(twbuf, twbuf+TWSCROLL, twend);
}
p = twbuf+twend;
for (i=0; i<count; i++) {
if (*str == '\n') {
*p++ = '\r';
}
if (*str == '\0') {
*p++ = ' '; /* ignore null characters */
str++;
}
else
*p++ = *str++;
}
twend += (count + lfcount);
*(twbuf+twend) = '\0';
}
void
gs_addmess(const char *str)
{
gs_addmess_count(str, strlen(str));
}
#ifdef __BORLANDC__
#pragma argsused
#endif
BOOL CALLBACK _export
DSCErrorDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message) {
case WM_INITDIALOG:
SetDlgItemTextA(hDlg, DSC_STATIC_TEXT, (char *)lParam);
centre_dialog(hDlg);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDOK:
EndDialog(hDlg, CDSC_RESPONSE_OK);
return(TRUE);
case IDCANCEL:
EndDialog(hDlg, CDSC_RESPONSE_CANCEL);
return(TRUE);
case DSC_IGNORE_ALL:
EndDialog(hDlg, CDSC_RESPONSE_IGNORE_ALL);
return(TRUE);
case ID_HELP:
get_help();
return(FALSE);
default:
return(FALSE);
}
default:
return(FALSE);
}
}
int
get_dsc_response(char *message)
{
nHelpTopic = IDS_TOPICDSCWARN;
return DialogBoxParamL(hlanguage, MAKEINTRESOURCE(IDD_DSCERROR), hwndimg,
DSCErrorDlgProc, (LPARAM)message);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -