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

📄 ddlog.c

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 C
字号:
/******************************************************************************                        Mesa 3-D graphics library*                        Direct3D Driver Interface**  ========================================================================**   Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.**   Permission is hereby granted, free of charge, to any person obtaining a*   copy of this software and associated documentation files (the "Software"),*   to deal in the Software without restriction, including without limitation*   the rights to use, copy, modify, merge, publish, distribute, sublicense,*   and/or sell copies of the Software, and to permit persons to whom the*   Software is furnished to do so, subject to the following conditions:**   The above copyright notice and this permission notice shall be included*   in all copies or substantial portions of the Software.**   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS*   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,*   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL*   SCITECH SOFTWARE INC BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,*   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF*   OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE*   SOFTWARE.**  ======================================================================** Language:     ANSI C* Environment:  Windows 9x (Win32)** Description:  Logging functions.*****************************************************************************/#define STRICT#include <windows.h>#include "ddlog.h"#include "gld_driver.h"// ***********************************************************************static char						ddlogbuf[256];static FILE*					fpDDLog = NULL; // Log file pointerstatic char						szDDLogName[_MAX_PATH] = {"gldirect.log"}; 	// Filename of the logstatic DDLOG_loggingMethodType	ddlogLoggingMethod = DDLOG_NONE; 	// Default to No Loggingstatic DDLOG_severityType		ddlogDebugLevel;static BOOL						bUIWarning = FALSE;	// MessageBox warning ?// ***********************************************************************void ddlogOpen(	DDLOG_loggingMethodType LoggingMethod,	DDLOG_severityType Severity){	if (fpDDLog != NULL) {		// Tried to re-open the log		ddlogMessage(DDLOG_WARN, "Tried to re-open the log file\n");		return;	}	ddlogLoggingMethod = LoggingMethod;	ddlogDebugLevel = Severity;	if (ddlogLoggingMethod == DDLOG_NORMAL) {		fpDDLog = fopen(szDDLogName, "wt");        if (fpDDLog == NULL)            return;    }	ddlogMessage(DDLOG_SYSTEM, "\n");	ddlogMessage(DDLOG_SYSTEM, "-> Logging Started\n");}// ***********************************************************************void ddlogClose(){	// Determine whether the log is already closed	if (fpDDLog == NULL && ddlogLoggingMethod == DDLOG_NORMAL)		return; // Nothing to do.	ddlogMessage(DDLOG_SYSTEM, "<- Logging Ended\n");	if (ddlogLoggingMethod == DDLOG_NORMAL) {		fclose(fpDDLog);		fpDDLog = NULL;	}}// ***********************************************************************void ddlogMessage(	DDLOG_severityType severity,	LPSTR message){	char buf[256];	// Bail if logging is disabled	if (ddlogLoggingMethod == DDLOG_NONE)		return;	if (ddlogLoggingMethod == DDLOG_CRASHPROOF)		fpDDLog = fopen(szDDLogName, "at");	if (fpDDLog == NULL)		return;	if (severity >= ddlogDebugLevel) {		sprintf(buf, "DDLog: (%s) %s", ddlogSeverityMessages[severity], message);		fputs(buf, fpDDLog); // Write string to file		OutputDebugString(buf); // Echo to debugger	}	if (ddlogLoggingMethod == DDLOG_CRASHPROOF) {		fflush(fpDDLog); // Write info to disk		fclose(fpDDLog);		fpDDLog = NULL;	}	// Popup message box if critical error	if (bUIWarning && severity == DDLOG_CRITICAL) {		MessageBox(NULL, buf, "GLDirect", MB_OK | MB_ICONWARNING | MB_TASKMODAL);	}}// ***********************************************************************// Write a string value to the log filevoid ddlogError(	DDLOG_severityType severity,	LPSTR message,	HRESULT hResult){#ifdef _USE_GLD3_WGL	char dxErrStr[1024];	_gldDriver.GetDXErrorString(hResult, &dxErrStr[0], sizeof(dxErrStr));	if (FAILED(hResult)) {		sprintf(ddlogbuf, "DDLog: %s %8x:[ %s ]\n", message, hResult, dxErrStr);	} else		sprintf(ddlogbuf, "DDLog: %s\n", message);#else	if (FAILED(hResult)) {		sprintf(ddlogbuf, "DDLog: %s %8x:[ %s ]\n", message, hResult, DDErrorToString(hResult));	} else		sprintf(ddlogbuf, "DDLog: %s\n", message);#endif	ddlogMessage(severity, ddlogbuf);}// ***********************************************************************void ddlogPrintf(	DDLOG_severityType severity,	LPSTR message,	...){	va_list args;	va_start(args, message);	vsprintf(ddlogbuf, message, args);	va_end(args);	lstrcat(ddlogbuf, "\n");	ddlogMessage(severity, ddlogbuf);}// ***********************************************************************void ddlogWarnOption(	BOOL bWarnOption){	bUIWarning = bWarnOption;}// ***********************************************************************void ddlogPathOption(	LPSTR szPath){	char szPathName[_MAX_PATH];	strcpy(szPathName, szPath);    strcat(szPathName, "\\");    strcat(szPathName, szDDLogName);    strcpy(szDDLogName, szPathName);}// ***********************************************************************

⌨️ 快捷键说明

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