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

📄 xcmssetget.c

📁 早期freebsd实现
💻 C
字号:
/* $XConsortium: XcmsSetGet.c,v 1.5 91/05/13 23:28:55 rws Exp $" *//* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * 	All Rights Reserved *  * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System.  Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation.  TekColor * is a trademark of Tektronix, Inc. *  * Tektronix makes no representation about the suitability of this software * for any purpose.  It is provided "as is" and with all faults. *  * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE.  IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * *	NAME *		XcmsSetGet.c * *	DESCRIPTION *		Source for _XcmsSetGetColors() * * *//* *      EXTERNAL INCLUDES *              Include files that must be exported to any package or *              program using this package. */#include "Xlibint.h"#include "Xcmsint.h"/* *      EXTERNS */extern void _XcmsRGB_to_XColor();extern void _XColor_to_XcmsRGB();/************************************************************************ *									* *			API PRIVATE ROUTINES				* *									* ************************************************************************//* *	NAME *		XcmsSetColors -  * *	SYNOPSIS */Status_XcmsSetGetColors(xColorProc, dpy, cmap, pColors_in_out, nColors,	result_format, pCompressed)    Status (*xColorProc)();    Display *dpy;    Colormap cmap;    XcmsColor *pColors_in_out;    unsigned int nColors;    XcmsColorFormat result_format;    Bool *pCompressed;/* *	DESCRIPTION *		Routine containing code common to: *			XcmsAllocColor *			XcmsQueryColor *			XcmsQueryColors *			XcmsStoreColor *			XcmsStoreColors * *	RETURNS *		XcmsFailure if failed; *		XcmsSuccess if it succeeded without gamut compression; *		XcmsSuccessWithCompression if it succeeded with gamut *			compression; */{    XcmsCCC ccc;    XColor *pXColors_in_out;    Status retval = XcmsSuccess;    /*     * Argument Checking     *	1. Assume xColorProc is correct     *	2. Insure ccc not NULL     *	3. Assume cmap correct (should be checked by Server)     *	4. Insure pColors_in_out valid     *	5. Assume method_in is valid (should be checked by Server)     *	6. Insure nColors > 0     */    if (dpy == NULL) {	return(XcmsFailure);    }    if (nColors == 0) {	return(XcmsSuccess);    }    if (result_format == XcmsUndefinedFormat) {	return(XcmsFailure);    }    if (!((*xColorProc == XAllocColor) || (*xColorProc == XStoreColor)	    || (*xColorProc == XStoreColors) || (*xColorProc == XQueryColor) 	    || (*xColorProc == XQueryColors))) {	return(XcmsFailure);    }    if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {	return(XcmsFailure);    }    if ((*xColorProc == XAllocColor) || (*xColorProc == XStoreColor)	    || (*xColorProc == XQueryColor)) {	nColors = 1;    }    /*     * Allocate space for XColors     */    if ((pXColors_in_out = (XColor *)Xcalloc(nColors, sizeof(XColor))) ==	    NULL) {	return(XcmsFailure);    }    if ((*xColorProc == XQueryColor) || (*xColorProc == XQueryColors)) {	goto Query;    }    /*     * Convert to RGB, adjusting for white point differences if necessary.     */    if ((retval = XcmsConvertColors(ccc, pColors_in_out, nColors, XcmsRGBFormat,	    pCompressed)) == XcmsFailure) {	return(XcmsFailure);    }Query:    /*     * Convert XcmsColor to XColor structures     */    _XcmsRGB_to_XColor(pColors_in_out, pXColors_in_out, nColors);    /*     * Now make appropriate X Call     */    if (*xColorProc == XAllocColor) {	if ((*xColorProc)(ccc->dpy, cmap, pXColors_in_out) == 0) {	    Xfree((char *)pXColors_in_out);	    return(XcmsFailure);	}    } else if ((*xColorProc == XQueryColor) || (*xColorProc == XStoreColor)) {	/* Note: XQueryColor and XStoreColor do not return any Status */	(*xColorProc)(ccc->dpy, cmap, pXColors_in_out);    } else if ((*xColorProc == XQueryColors) || (*xColorProc == XStoreColors)){	/* Note: XQueryColors and XStoreColors do not return any Status */	(*xColorProc)(ccc->dpy, cmap, pXColors_in_out, nColors);    } else {	Xfree((char *)pXColors_in_out);	return(XcmsFailure);    }    if ((*xColorProc == XStoreColor) || (*xColorProc == XStoreColors)) {	Xfree((char *)pXColors_in_out);	return(retval);    }    /*     * Now, convert returned XColor(i.e., rgb) to XcmsColor structures     */    _XColor_to_XcmsRGB(ccc, pXColors_in_out, pColors_in_out, nColors);    Xfree((char *)pXColors_in_out);    /*     * Then, convert XcmsColor structures to the original specification     *    format.  Note that we must use NULL instead of passing     *    pCompressed.     */    if (result_format != XcmsRGBFormat) {	if (XcmsConvertColors(ccc, pColors_in_out, nColors, result_format,		(Bool *) NULL) == XcmsFailure) {	    return(XcmsFailure);	}    }    return(retval);}

⌨️ 快捷键说明

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