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

📄 device.h

📁 下载来的一个看图软件的源代码
💻 H
字号:
/* libwmf ("ipa/fig/device.h"): library for wmf conversion   Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources   The libwmf Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Library General Public License as   published by the Free Software Foundation; either version 2 of the   License, or (at your option) any later version.   The libwmf Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Library General Public License for more details.   You should have received a copy of the GNU Library General Public   License along with the libwmf Library; see the file COPYING.  If not,   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,   Boston, MA 02111-1307, USA.  *//* This is called by wmf_play() the *first* time the meta file is played */static void wmf_fig_device_open (wmfAPI* API){	wmf_fig_t* ddata = WMF_FIG_GetData (API);	WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]device_open");	}/* This is called by wmf_api_destroy() */static void wmf_fig_device_close (wmfAPI* API){	wmf_fig_t* ddata = WMF_FIG_GetData (API);	WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]device_close");	}/* This is called from the beginning of each play for initial page setup */static void wmf_fig_device_begin (wmfAPI* API){	wmf_fig_t* ddata = WMF_FIG_GetData (API);	wmfStream* out = ddata->out;	unsigned int page_width;	unsigned int page_height;	float def_width;	float def_height;	float ratio_def;	float ratio_page;	float Ox;	float Oy;	float xScale;	float yScale;		int i;		int zero;	int colno;	char clr[10];	char c;	time_t t;	float fu;		WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]device_begin");	if (out == 0) return;	if ((out->reset (out->context)) && ((API->flags & WMF_OPT_IGNORE_NONFATAL) == 0))	{	WMF_ERROR (API,"unable to reset output stream!");		API->err = wmf_E_DeviceError;		return;	}	if ((ddata->bbox.BR.x <= ddata->bbox.TL.x) || (ddata->bbox.BR.y <= ddata->bbox.TL.y))	{	WMF_ERROR (API,"bounding box has null or negative size!");		API->err = wmf_E_Glitch;		return;	}	if (ddata->dpi == 0)	{	WMF_ERROR (API,"Glitch! dpi = 0?");		API->err = wmf_E_Glitch;		return;	}	if ((ddata->fig_width == 0) || (ddata->fig_height == 0))	{	wmf_size (API,&def_width,&def_height);		if (ddata->flags & WMF_FIG_LANDSCAPE)		{	page_width  = wmf_ipa_page_height (API,ddata->format);			page_height = wmf_ipa_page_width  (API,ddata->format);		}		else		{	page_width  = wmf_ipa_page_width  (API,ddata->format);			page_height = wmf_ipa_page_height (API,ddata->format);		}		if (ERR (API))		{	WMF_DEBUG (API,"bailing...");			return;		}		ddata->fig_width  = (unsigned int) ceil (def_width );		ddata->fig_height = (unsigned int) ceil (def_height);		if ((ddata->flags & WMF_FIG_NO_MARGINS) == 0)		{	ddata->fig_x = 72; /* 1 inch margin */			ddata->fig_y = 72;			page_width  -= 144;			page_height -= 144;		}		if ((ddata->fig_width > page_width) || (ddata->fig_height > page_height) || WMF_FIG_MAXPECT)		{	ratio_def = def_height / def_width;			ratio_page = (float) page_height / (float) page_width;			if (ratio_def > ratio_page)			{	ddata->fig_height = page_height;				ddata->fig_width  = (unsigned int) ((float) page_height / ratio_def);			}			else			{	ddata->fig_width  = page_width;				ddata->fig_height = (unsigned int) ((float) page_width  * ratio_def);			}		}		ddata->fig_x += ((int) page_width  - (int) ddata->fig_width ) / 2;		ddata->fig_y += ((int) page_height - (int) ddata->fig_height) / 2;		ddata->fig_x = (ddata->fig_x * ddata->dpi) / 72;		ddata->fig_y = (ddata->fig_y * ddata->dpi) / 72;		ddata->fig_width  = (ddata->fig_width  * ddata->dpi) / 72;		ddata->fig_height = (ddata->fig_height * ddata->dpi) / 72;	}	ddata->depth = 999; /* This overrides user settings ?? */		wmf_stream_printf (API,out,"#FIG 3.2\n");	if (ddata->flags & WMF_FIG_LANDSCAPE)	{	wmf_stream_printf (API,out,"Landscape\n");	}	else	{	wmf_stream_printf (API,out,"Portrait\n");	}	wmf_stream_printf (API,out,"Center\n");	wmf_stream_printf (API,out,"Metric\n");	wmf_stream_printf (API,out,"%s\n",wmf_ipa_page_format (API,ddata->format));	wmf_stream_printf (API,out,"100.0\n");	wmf_stream_printf (API,out,"Single\n");	wmf_stream_printf (API,out,"-2\n");	wmf_stream_printf (API,out,"%u 2\n",ddata->dpi);	if (ddata->Title)	{	wmf_stream_printf (API,out,"# Title: ");		wmf_stream_printf (API,out,"%s\n",ddata->Title);	}	if (ddata->Creator)	{	wmf_stream_printf (API,out,"# Creator: ");		wmf_stream_printf (API,out,"%s\n",ddata->Creator);	}	if (ddata->Date)	{	wmf_stream_printf (API,out,"# Date: ");		wmf_stream_printf (API,out,"%s\n",ddata->Date);	}	else 	{	t = time (0);		wmf_stream_printf (API,out,"# Date: ");		wmf_stream_printf (API,out,"%s\n",ctime (&t));	}	if (ddata->For)	{	wmf_stream_printf (API,out,"# For: ");		wmf_stream_printf (API,out,"%s\n",ddata->For);	}	/* Write colour pseudo-objects to file	 */	fig_color_to_file (API,out);}/* This is called from the end of each play for page termination */static void wmf_fig_device_end (wmfAPI* API){	wmf_fig_t* ddata = WMF_FIG_GetData (API);	wmfStream* out = ddata->out;	WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]device_end");	if (out == 0) return;		wmf_stream_printf (API,out,"# end device_end\n");}/* translation & scaling functions */static figPoint fig_translate (wmfAPI* API,wmfD_Coord d_pt){	wmf_fig_t* ddata = WMF_FIG_GetData (API);	figPoint fig_pt;	double x;	double y;	x = ((double) d_pt.x - (double) ddata->bbox.TL.x);	x /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x);	x *= (double) ddata->fig_width;	y = ((double) d_pt.y - (double) ddata->bbox.TL.y);	y /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y);	y *= (double) ddata->fig_height;	fig_pt.x = (int) ddata->fig_x + (int) floor (x);	fig_pt.y = (int) ddata->fig_y + (int) floor (y);	return (fig_pt);}static int fig_width (wmfAPI* API,float wmf_width){	wmf_fig_t* ddata = WMF_FIG_GetData (API);	double width;	width = (double) wmf_width * (double) ddata->fig_width;	width /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x);	return ((int) ceil (ABS (width)));}static int fig_height (wmfAPI* API,float wmf_height){	wmf_fig_t* ddata = WMF_FIG_GetData (API);	double height;	height = (double) wmf_height * (double) ddata->fig_height;	height /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y);	return ((int) ceil (ABS (height)));}

⌨️ 快捷键说明

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