⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gvcinit.c

📁 GSview 4.6 PostScript previewer。Ghostscript在MS-Windows, OS/2 and Unix下的图形化接口
💻 C
📖 第 1 页 / 共 2 页
字号:
    option.img_origin.x = CW_USEDEFAULT;
    option.img_origin.y = CW_USEDEFAULT;
    option.img_size.x = CW_USEDEFAULT;
    option.img_size.y = CW_USEDEFAULT;
    option.img_max = FALSE;
    option.drawmethod = IDM_DRAWDEF;
    option.update = 2;	/* Always do progressive update */
    option.unit = IDM_UNITPT;
    option.unitfine = 0;
    option.pstotext = IDM_PSTOTEXTNORM - IDM_PSTOTEXTMENU - 1;
    option.settings = TRUE;
    option.button_show = TRUE;
    option.fit_page = FALSE;	/* Changed after 2.1 */
    option.safer = TRUE;
    option.media = IDM_A4;
    strcpy(option.medianame, "A4");
    option.media_rotate = FALSE;
    option.user_width = 610;
    option.user_height = 792;
    option.epsf_clip = FALSE;
    option.epsf_warn = FALSE;
    option.ignore_dsc = FALSE;
    option.dsc_warn = IDM_DSC_WARN;
    option.show_bbox = FALSE;
    option.redisplay = TRUE;
    option.auto_orientation = TRUE;	/* Added after 2.1 */
    option.orientation = IDM_PORTRAIT;
    option.swap_landscape = FALSE;
    option.xdpi = DEFAULT_RESOLUTION;
    option.ydpi = DEFAULT_RESOLUTION;
    option.zoom_xdpi = 300;
    option.zoom_ydpi = 300;
    option.depth = 0;
    option.alpha_text = 4;
    option.alpha_graphics = 4;
    option.save_dir = TRUE;
    strcpy(option.printer_device, "djet500");
    strcpy(option.printer_resolution, "300");
    option.print_fixed_media = 1;
    option.print_gdi_depth = IDC_MONO;
    option.print_gdi_fixed_media = 1;
    strcpy(option.convert_device, "pdfwrite");
    strcpy(option.convert_resolution, "600");
    option.convert_fixed_media = 1;
    option.print_to_file = FALSE;
#ifdef _Windows
    option.print_method = PRINT_GDI;
#else
    option.print_method = PRINT_GS;
#endif
    option.print_reverse = FALSE;
    option.auto_bbox = TRUE;
    option.configured = FALSE;
    memset(usermedia, 0, sizeof(usermedia));
}

void
gsview_initc(int argc, char *argv[])
{
    gs_addmessf("%s %s %s\n", GSVIEW_PRODUCT, GSVIEW_DOT_VERSION, GSVIEW_DATE);
    if (debug) {
	int i;
	char filedir[MAXSTR];
	gs_addmess("Debugging ON\n");
	if (multithread)
	   gs_addmess("Multi Threaded\n");
	else
	   gs_addmess("Single Threaded\n");
	gs_addmess("Arguments:\n");
	for (i=0; i<argc; i++)
	    gs_addmessf(" %s\n", argv[i]);
	getcwd(filedir, sizeof(filedir));
	gs_addmess("Working directory: ");
	gs_addmess(filedir);
	gs_addmess("\n");
    }

    play_sound(SOUND_START);
}


void
init_check_menu(void)
{
    int i;
    char thismedia[32];
 
    /* Select the appropriate media */
    if (!stricmp(option.medianame, MEDIA_USERDEFINED)) {
	option.media = IDM_USERSIZE;
    }
    else {
	for (i=IDM_MEDIAFIRST; i<IDM_USERSIZE13; i++) {
	    if (get_menu_string(IDM_MEDIAMENU, i, thismedia, 
		sizeof(thismedia))) {
		if (!stricmp(thismedia, option.medianame)) {
		    option.media = i;
		    strncpy(option.medianame, thismedia, 
			sizeof(option.medianame));
		    break;
		}
	    }
	}
    }

    /* update menus */
    check_menu_item(IDM_UNITMENU, option.unit, TRUE);
    check_menu_item(IDM_UNITMENU, IDM_UNITFINE, option.unitfine);
    check_menu_item(IDM_LANGMENU, option.language, TRUE);
    check_menu_item(IDM_PSTOTEXTMENU, option.pstotext + IDM_PSTOTEXTMENU + 1, TRUE);
    if (option.auto_orientation)
        check_menu_item(IDM_ORIENTMENU, IDM_AUTOORIENT, TRUE);
    else 
        check_menu_item(IDM_ORIENTMENU, option.orientation, TRUE);
    check_menu_item(IDM_ORIENTMENU, IDM_SWAPLANDSCAPE, option.swap_landscape);
    check_menu_item(IDM_MEDIAMENU, option.media, TRUE);
    check_menu_item(IDM_MEDIAMENU, IDM_MEDIAROTATE, option.media_rotate);
#if defined(_Windows) || defined(OS2)
    check_menu_item(IDM_OPTIONMENU, IDM_FITPAGE, option.fit_page);
#endif
    check_menu_item(IDM_OPTIONMENU, IDM_SAVESETTINGS, option.settings);
    check_menu_item(IDM_OPTIONMENU, IDM_BUTTONSHOW, option.button_show);
    check_menu_item(IDM_OPTIONMENU, IDM_SAFER, option.safer);
    check_menu_item(IDM_OPTIONMENU, IDM_SAVEDIR, option.save_dir);
    check_menu_item(IDM_OPTIONMENU, IDM_AUTOREDISPLAY, option.redisplay);
    check_menu_item(IDM_OPTIONMENU, IDM_EPSFCLIP, option.epsf_clip);
    check_menu_item(IDM_OPTIONMENU, IDM_EPSFWARN, option.epsf_warn);
    check_menu_item(IDM_OPTIONMENU, IDM_IGNOREDSC, option.ignore_dsc);
    check_menu_item(IDM_DSCMENU, option.dsc_warn, TRUE);
    check_menu_item(IDM_OPTIONMENU, IDM_SHOWBBOX, option.show_bbox);
}

#if UNIX
void
default_gsdll(char *buf)
{
    strcpy(buf, GS_DLLNAME);
}

void
default_gsexe(char *buf)
{
    strcpy(buf, GS_EXENAME);
}

void
default_gsinclude(char *buf)
{
    buf[0] = '\0';
}

#else
void
default_gsdir(char *buf)
{
char *p;
    /* assume that GS is in the adjacent directory */
    convert_widechar(buf, szExePath, MAXSTR-1);
    p = buf + strlen(buf) - 1;	/* remove trailing slash */
    if (*p == '\\')
	*p = '\0';
    p = strrchr(buf, '\\');	/* remove trailing gsview */
    if (p)
	*(++p) = '\0';
    sprintf(buf+strlen(buf), "gs%d.%02d", 
	    option.gsversion / 100, option.gsversion % 100);
}

void
default_gsdll(char *buf)
{
    if (get_gs_string(option.gsversion, "GS_DLL", buf, MAXSTR))
	return;
    default_gsdir(buf);
    strncat(buf, "\\bin\\", MAXSTR-1-strlen(buf));
    strncat(buf, GS_DLLNAME, MAXSTR-1-strlen(buf));
}

void
default_gsexe(char *buf)
{
    char *p;
    if (get_gs_string(option.gsversion, "GS_DLL", buf, MAXSTR)) {
	p = strrchr(buf, '\\');	/* remove trailing dll name */
	if (p) {
	    *(++p) = '\0';
	    strcat(buf, GS_EXENAME);
	    return;
	}
    }

    default_gsdir(buf);
    strncat(buf, "\\bin\\", MAXSTR-1-strlen(buf));
    strncat(buf, GS_EXENAME, MAXSTR-1-strlen(buf));
}


void
default_gsinclude(char *buf)
{
char destdir[MAXSTR];
    if (get_gs_string(option.gsversion, "GS_LIB", buf, MAXSTR))
	return;
    default_gsdir(destdir);
    default_gsinclude_from_path(buf, destdir);
}

/* return GS fontpath in buf, based on Ghostscript path in gspath */
/* Handles different paths pre/post GS 5.93 */
void
default_gsinclude_from_path(char *buf, char *gspath)
{
char temp[MAXSTR];
    strcpy(buf, gspath);
    if (option.gsversion >= 593)
        strncat(buf, "\\lib", MAXSTR-2-strlen(buf));
    strcat(buf, ";");

    if (option.gsversion >= 810) {
        strncat(buf, gspath, MAXSTR-2-strlen(buf));
        strncat(buf, "\\Resource", MAXSTR-2-strlen(buf));
        strcat(buf, ";");
    }

    strncat(buf, gspath, MAXSTR-1-strlen(buf));
    if (option.gsversion >= 593) {
	char *p;
	p = strrchr(buf, '\\');	/* remove trailing \\gsN.NN */
	if (p)
	    *p = '\0';
    }
    strncat(buf, "\\fonts", MAXSTR-1-strlen(buf));

    gs_getcwd(temp, sizeof(temp)-1);
    if (!gs_chdir("c:\\psfonts")) {
	strncat(buf, ";", MAXSTR-1-strlen(buf));
	strncat(buf, "c:\\psfonts", MAXSTR-1-strlen(buf));
    }
    gs_chdir(temp);
}

void
install_default(HWND hwnd)
{
char buf[MAXSTR];

    default_gsdll(buf);
    SetDlgItemTextA(hwnd, INSTALL_DLL, buf);

    default_gsinclude(buf);
    SetDlgItemTextA(hwnd, INSTALL_INCLUDE, buf);

    strcpy(buf, "-dNOPLATFONTS -sFONTPATH=\042c:\\psfonts\042");
    SetDlgItemTextA(hwnd, INSTALL_OTHER, buf);
}
#endif

int
gsview_changed(void)
{
char sysini[MAXSTR];

#ifndef UNIX
    if (!getenv("TEMP")) {
	gserror(IDS_NEEDTEMP, NULL, 0, 0);
	putenv("TEMP=c:\\");   /* just in case the user ignores us */
    }
#endif

    if (option.configured) {
	if (beta())
	    return 1;	/* don't run if expired */
	post_args();
	return 0;
    }

    if (beta_warn())
	return 1;	/* don't run */

    /* check if the system administrator has pre-configured GSview */
#ifdef UNIX
    strncpy(sysini, szEtcPath, sizeof(sysini)-1);
#else
    convert_widechar(sysini, szExePath, sizeof(sysini)-1);
#endif
    strncat(sysini, INIFILE, sizeof(sysini)-1-strlen(sysini));
    read_profile(sysini);
    if (option.configured) {
	/* pre configured INI file was found */
	gsview_printer_profiles();	/* trust sys admin to have it correct */
	/* don't bother running the configure wizard */
	post_args();
	return 0;
    }
    /* revert back to our copy of INI file */
    read_profile(szIniFile);

    check_language();	/* offer to change language if doesn't match WIN.INI */

    if (config_wizard(FALSE) == 0)
	post_args();
    
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -