Example #1
0
ablib::string Ghostscript::GetGSDir(){
	if(m_gsdir != _T(""))return m_gsdir;
	std::wregex reg;
	try{
		reg.assign(_T("(AFPL|GNU|GPL|ESP) Ghostscript (gs)?([0-9]*\\.[0-9]*)"));
	}catch(...){ASSERT(false);}
	std::vector<ablib::string> keys;
	if(!Registory::EnumKey(HKEY_LOCAL_MACHINE,_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"),keys))return _T("");
	for(auto &key : keys){
		std::wsmatch reg_results;
		if(std::regex_match(key,reg_results,reg)){
			ablib::string val = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\");
			val += key;
			ablib::string str;
			if(!Registory::ReadSZ(HKEY_LOCAL_MACHINE,val.c_str(),_T("UninstallString"),str))return _T("");
			bool dq = false;
			ablib::string::size_type p = 0;
			str = ExecToPath(str);
			if(str != _T("")){
				m_gsdir = str;
				m_gsdir.erase(m_gsdir.rfind(_T("\\")));
				m_gsdir += _T("\\");
				if(::GetFileAttributes((m_gsdir + _T("bin\\gswin32.exe")).c_str()) == -1){
					m_gsdir += _T("gs");
					m_gsdir += reg_results[3];
					m_gsdir += _T("\\");
				}
				DEBUGSTRING(_T("Install::GetGSDir : GSDir = %s"),m_gsdir.c_str());
				return m_gsdir;
			}
		}
	}
	return m_gsdir;
}
Example #2
0
void MGEOnProcessStart(HANDLE pipe) {
	// Set variables dependent on configuration
	switch (FogMode) {
		case 2:
			FogPixelMode = 0;
			FogVertexMode = 3;
			RangedFog = 1;
			break;
		case 1:
			FogPixelMode = 0;
			FogVertexMode = 3;
			RangedFog = 0;
			break;
		default:
			FogPixelMode = 3;
			FogVertexMode = 0;
			RangedFog = 0;
			break;
	}
	if (!(MGEFlags & REFLECTIVE_WATER)) {
		BitReset(&MGEFlags, REFLECT_NEAR_BIT);
		BitReset(&MGEFlags, REFLECT_FAR_BIT);
	}
	if (!(MGEFlags & REFLECT_NEAR)) {
		BitReset(&MGEFlags, REFLECT_FAR_BIT);
	}
	DL_WaterReflect = (BYTE)BitTst(&MGEFlags, REFLECTIVE_WATER_BIT) + (BYTE)BitTst(&MGEFlags, REFLECT_NEAR_BIT) + (BYTE)BitTst(&MGEFlags, REFLECT_FAR_BIT);
	Rotation *= PI / 180;
	ReactionSpeed = 1.0f / ReactionSpeed;
	DL_DrawDist *= 8192.0f;
	DL_NearStaticEnd *= 8192.0f;
	DL_FarStaticEnd *= 8192.0f;
	DL_VeryFarStaticEnd *= 8192.0f;
	DL_AboveWaterFogStart *= 8192.0f;
	DL_AboveWaterFogEnd *= 8192.0f;
	DL_BelowWaterFogStart *= 8192.0f;
	DL_BelowWaterFogEnd *= 8192.0f;
	DL_InteriorFogStart *= 8192.0f;
	DL_InteriorFogEnd *= 8192.0f;
	for (int fog = 0; fog <= 9; ++fog) DL_FgOD[fog] /= 100.0f;
	//zero all the structs
	//ZeroStruct(Cam3Offset);
	ZeroStruct(JointInfo);
	//ZeroStruct(Options);
	ZeroStruct(fpsString);
	ZeroStruct(ShaderStruct);
	ZeroStruct(RcpRes);
	ZeroStruct(SinVar);
	ZeroStruct(LinVar);
	ZeroStruct(EyeVec);
	ZeroStruct(EyePos);
	ZeroStruct(SunVec);
	ZeroStruct(SunCol);
	ZeroStruct(AmbCol);
	EyeVec.w=1;
	//Set some values for some structs
	fpsRect.bottom=35;
	fpsRect.right=600;
	fpsRect.left=5;
	fpsRect.top=20;
	StatusRect.bottom=50;
	StatusRect.right=635;
	StatusRect.left=5;
	StatusRect.top=5;
	fpsColor.a=255;
	fpsColor.r=255;
	fpsColor.b=255;
	fpsColor.g=255;
	fps=0;
	//Setup any global variables
	UsingDistantLand=false;
	UseDistantStatics=true;
	UseGrass=true;
	RealDevice=NULL;
	BackBuffer=NULL;
	DepthTexture=NULL;
	DepthBuffer=NULL;
	StateBlock=0;
	Font=NULL;
	StatusStringTime=0;
	//Scenecount
	SceneCount=0;
	HUDScene=-1;
	AlphaScene=2;
	SolarScene=-1;
	Indoors=false;
	UpdateScene=false;
	LastSceneCount=0;
	PixelShading=false;
	StencilEnabled=false;
	AlphaBlendEnabled=false;
	AlphaTestEnabled=false;
	SunEnabled=false;
	LightsSet=false;
	ShadowsDrawn=0;
	NumDrawCalls=0;
	WaterDrawn=false;
	FogAlreadySet=false;
	DlDoneHooking=false;
	//fps variables (Could make an fps structure I suppose)
	fpsLastTime=0;
	fpsFrames=0;
	fpsAdjusting=false;
	//These are variables used for graphics features which cant be set by MGEgui
	Zoom=false;
	//FOV=4.0f;
	FogRange=1.0f;
	FogStart=0;
	FogEnd=0;
	//Rotation=(PI*Options.Rotation)/2;
	D3DXMatrixRotationZ(&RotateMatrix,Rotation);
	//MaxViewRange=STDMAXVIEWDISTANCE;
	//MinViewRange=STDMINVIEWDISTANCE;
	//MWSE stuff
	//Lighting
	ZeroStruct(LightIDs);
	ActiveLights=0;
	//STANDARD stuff
	ZeroStruct(Objects);
	UsedMWSEobjects=0;
	ZeroStruct(HUDbits);
	UsedHUDbits=0;
	HUDsprite=NULL;
	ZeroStruct(LoadedTextures);
	LastTimer=0;
	UsedMWSEShaders=0;
	HookNextTexture=false;
	NextTexIsWater=false;
	NextHookIndex=0;
	ZeroStruct(HookedTextures);
	HookedShaderActive=0;
	ActiveHookedShader=0;
	for(int i=0;i<8;i++) SetHookedTextures[i]=255;
	//Camera shake
	CameraShake=false;
	CameraShakeAmp=0;
	CameraShakeChange=false;
	CameraShakeChangeRate=0;
	D3DXMatrixTranslation(&CameraShakeMatrix,0,0,0);
	//fps independent stuff
	FOVZooming=false;
	FOVZoomRate=0;
	FogZooming=false;
	FogZoomRate=0;
	RotSpinning=false;
	RotSpinRate=0;
	//Exterior lighting control
	SunManual=false;
	SunManColour=false;
	SunManDir=false;
	AmbientManual=false;
	FogManual=false;
	ClsManual=false;
	SkyManual=false;
	HUDManual=false;
	ZeroStruct(SunDirection);
	SunColour=D3DXCOLOR(0,0,0,0);
	AmbientColour=0;
	FogColour=0;
	ClsColour=0;
	SkyColour=0;
	HUDColour=0xFFFFFFFF;
	SunTexture=NULL;
	//Texture spamming
	TexRenderTarget=NULL;
	TexCopyTo=NULL;
	SufRenderTarget=NULL;
	SufCopyTo=NULL;
	ZeroStruct(TexDrawOrigin);
	ZeroStruct(TexDrawScale);
	//video stuff
	LoadedVideoCount=0;
	DistantLandActive=false; //phal
        //Now init some stuff
	//MWSE timer
	TimerFrequency=0;
	if(!QueryPerformanceFrequency((LARGE_INTEGER*)&TimerFrequency)) {
		TimerFrequency=0;
		DEBUGSTRING("Your computer has no high resolution performance counter available.\n"
			"Some MGE features or plugins will not function correctly.\n");
	}
	MWSEpipe=pipe;
}