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

📄 commonfuncs.h

📁 游戏音频程序设计-Beginning.Game.Audio.Programming
💻 H
字号:
/*
#############################################################################

  CommonFuncs.h - a library of common windows functions.

#############################################################################
*/
#if !defined(AFX_COMMONFUNCS_H__DC47117F_2750_4C69_A954_184DB6487700__INCLUDED_)
#define AFX_COMMONFUNCS_H__DC47117F_2750_4C69_A954_184DB6487700__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <string>
#include <d3dx8.h>

#define SAFE_DELETE(p)       { if(p) { delete (p);     (p)=NULL; } }
#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p);   (p)=NULL; } }
#define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }
#define SAFE_UNACQUIRE(p)    { if(p) { (p)->Unacquire();         } }

#define PI 3.14159
#define TORADIANS(p) ((p)/180.0*PI)

// Helper function to stuff a FLOAT into a DWORD argument
inline DWORD FtoDW( FLOAT f ) { return *((DWORD*)&f); }

// stuffs a file into a string
extern bool LoadFileIntoString(const char *strFilename, std::string &str);

// centers a window on the screen
extern void CenterWindow(HWND hwnd); 

// gets the last error and converts it to a string.
extern void ConvertLastErrorToString(LPSTR szDest, int nMaxStrLen);

// returns true if the given number is a power of 2.
extern bool IsPowerOf2(int n);

// returns the lowest power of two >= the given number.
extern int GetLowestPowerOf2(int n);

// given a field delimiter, takes the first field off string and puts it in dest
extern void PluckFirstField(char *str, char *dest, int maxlen, const char *delim);


// returns a random number between min and max            
int RandomNumber(int iMin, int iMax);
float RandomNumber(float fMin, float fMax);

inline void MakeUpperCase(std::string &str) {
  for (std::string::iterator i = str.begin(); i != str.end(); i++) {
    *i = toupper(*i);
  }
}

inline std::string RemoveQuotes(std::string &str) {
  for (std::string::iterator i = str.begin(); i != str.end(); i++) {
    if (*i == '\"') {
      i = str.erase(i); if (i == str.end()) break;
    }
  }
  return(str);
}

/****************************************************************************

 Noise2D/Noise3D: random number generators, originally from Hugo Elias, and
 from Kim Pallister's Procedural Clouds demo.  These are used by the sample
 programs for Chapter 15.

 ****************************************************************************/
inline float Noise2D(int x, int y)
{
  int n = x + y * 57;
  n = (n<<13) ^ n;
  return ( 1.0f - ( (n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0f);    
}
 
inline float Noise3D(int x, int y, int z)
{
  int n = x + y * 57 + z * 131;
  n = (n<<13) ^ n;
  return ( 1.0f - ( (n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff) 
	* 0.000000000931322574615478515625f);    
}

#endif

⌨️ 快捷键说明

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