锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品日韩久久,久久激情综合网,亚洲精品乱码久久久久久黑人http://www.shnenglu.com/lf426/category/6743.htmlGame Design Using C++ and SDLzh-cnMon, 19 May 2008 13:17:20 GMTMon, 19 May 2008 13:17:20 GMT60MixSoundClasshttp://www.shnenglu.com/lf426/archive/2008/04/20/47642.htmllf426lf426Sat, 19 Apr 2008 17:49:00 GMThttp://www.shnenglu.com/lf426/archive/2008/04/20/47642.htmlhttp://www.shnenglu.com/lf426/comments/47642.htmlhttp://www.shnenglu.com/lf426/archive/2008/04/20/47642.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/47642.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/47642.html
//UVi Soft ( 2008 )
//Long Fei ( lf426 ), E-mail: zbln426@163.com
//Laboratory of ZaiBieLiunNian
//http://www.shnenglu.com/lf426/

//FileName: MixSoundClass.hpp

#ifndef MIX_SOUND_CLASS_HPP
#define MIX_SOUND_CLASS_HPP

#include 
<iostream>
#include 
<string>
#include 
"SDL/SDL.h"
#include 
"SDL/SDL_mixer.h"

class BaseMixSound
{
private:
    
static int MixNUM;
protected:
    BaseMixSound();
public:
    
virtual ~BaseMixSound();
};

class EffectSound: public BaseMixSound
{
private:
    Mix_Chunk
* sound;
public:
    EffectSound(
const std::string& sound_fileName);
    
~EffectSound();
    
void play() const;
};

class MusicSound: public BaseMixSound
{
private:
    Mix_Music
* music;
public:
    MusicSound(
const std::string& music_fileName);
    
~MusicSound();
    
void play() const;
    
void stop() const;
};

#endif

//UVi Soft ( 2008 )
//Long Fei ( lf426 ), E-mail: zbln426@163.com
//Laboratory of ZaiBieLiunNian
//http://www.shnenglu.com/lf426/

#include 
"MixSoundClass.hpp"

//*******************************
//class BaseMixSound

int BaseMixSound::MixNUM = 0;

BaseMixSound::BaseMixSound()
{
    
if ( MixNUM == 0 ){
        
if( Mix_OpenAudio( 22050, MIX_DEFAULT_FORMAT, 24096 ) == -1 ){
            std::cerr 
<< "Mix_Open ERROR" << std::endl;
            exit(
-1);
        }
    }
    MixNUM
++;
}

BaseMixSound::
~BaseMixSound()
{
    MixNUM
--;
    
if ( MixNUM == 0 ){
        Mix_CloseAudio();
    }
}

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



//*******************************
//class EffectSound

EffectSound::EffectSound(
const std::string& sound_fileName)
{
    sound 
= Mix_LoadWAV(sound_fileName.c_str());
    
if ( sound == 0 ){
        std::cerr 
<< sound_fileName << " : load failed!" << std::endl;
    }
}

EffectSound::
~EffectSound()
{
    Mix_FreeChunk(sound);
}

void EffectSound::play() const
{
     
if( Mix_PlayChannel(-1, sound, 0== -1 ){
         std::cerr 
<< "Mix_PlayChannel() ERROR" << std::endl;
     }
}

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



//*******************************
//class MusicSound

MusicSound::MusicSound(
const std::string& music_fileName)
{
    music 
= Mix_LoadMUS(music_fileName.c_str());
    
if (  music == 0 ){
        std::cerr 
<< music_fileName << " : load failed!" << std::endl;
    }
}

MusicSound::
~MusicSound()
{
    Mix_FreeMusic(music);
}

void MusicSound::play() const
{
    
if( Mix_PlayingMusic() == false ){
        
if( Mix_PlayMusic( music, -1 ) == -1 ){
            std::cerr 
<< "Mix_PlayMusic() ERROR" << std::endl;
        }
    } 
else {
        
if( Mix_PausedMusic() == 1) {
            Mix_ResumeMusic();
        }
        
else {
            Mix_PauseMusic();
        }
    }
}

void MusicSound::stop() const
{
    Mix_HaltMusic();
}

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

lib: SDL.lib, SDLmain.lib
     SDL_mixer.lib

dll: SDL.dll
     libogg-0.dll, libvorbis-0.dll, libvorbisfile-3.dll, SDL_mixer.dll, smpeg.dll

last update: 2008-04-20

lf426 2008-04-20 01:49 鍙戣〃璇勮
]]>
ButtonClasshttp://www.shnenglu.com/lf426/archive/2008/04/15/47156.htmllf426lf426Tue, 15 Apr 2008 13:29:00 GMThttp://www.shnenglu.com/lf426/archive/2008/04/15/47156.htmlhttp://www.shnenglu.com/lf426/comments/47156.htmlhttp://www.shnenglu.com/lf426/archive/2008/04/15/47156.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/47156.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/47156.html闃呰鍏ㄦ枃

lf426 2008-04-15 21:29 鍙戣〃璇勮
]]>
StringDatahttp://www.shnenglu.com/lf426/archive/2008/04/14/47040.htmllf426lf426Mon, 14 Apr 2008 06:11:00 GMThttp://www.shnenglu.com/lf426/archive/2008/04/14/47040.htmlhttp://www.shnenglu.com/lf426/comments/47040.htmlhttp://www.shnenglu.com/lf426/archive/2008/04/14/47040.html#Feedback2http://www.shnenglu.com/lf426/comments/commentRss/47040.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/47040.html#ifndef STRING_DATA_HPP
#define STRING_DATA_HPP

#include 
<clocale>
#include 
<string>
#include 
<vector>
#include 
"GNU/libintl.h"

class StringData
{
private:
    std::vector
<std::string> data;
public:
    StringData(
const std::string& type);
    std::
string operator [](const unsigned int& n) const;
};

#endif
#include "StringData.hpp"

StringData::StringData(
const std::string& type)
{
    setlocale(LC_ALL, 
"");
    bindtextdomain(
"StringData""./po");
    textdomain(
"StringData");

    
if ( type == "type1" ){
        
//0, 
        data.push_back(gettext(" "));
        
//1
        data.push_back(gettext(" "));
        
//
    }
    
else if ( type == "type2" ){
        
//0, other
        data.push_back(gettext(" "));
        
//1
        data.push_back(gettext(" "));
        
//
    }
    
else if ( type == "type3" ){
        
//0
        data.push_back(gettext(" "));
        
//1
        data.push_back(gettext(" "));
        
//
    else {
        
//0
        data.push_back(gettext("NULL"));
    }
}

std::
string StringData::operator [](const unsigned int& n) const
{
    
if ( n >= data.size() )
        
return 0;
    
return data[n];
}

lib: libintl.lib

dll: libiconv2.dll, libintl3.dll

last update: 2008-04-14

lf426 2008-04-14 14:11 鍙戣〃璇勮
]]>
SurfaceClasshttp://www.shnenglu.com/lf426/archive/2008/04/14/47038.htmllf426lf426Mon, 14 Apr 2008 06:03:00 GMThttp://www.shnenglu.com/lf426/archive/2008/04/14/47038.htmlhttp://www.shnenglu.com/lf426/comments/47038.htmlhttp://www.shnenglu.com/lf426/archive/2008/04/14/47038.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/47038.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/47038.html闃呰鍏ㄦ枃

lf426 2008-04-14 14:03 鍙戣〃璇勮
]]>
SDL_render_Chinesehttp://www.shnenglu.com/lf426/archive/2008/04/14/47033.htmllf426lf426Mon, 14 Apr 2008 05:24:00 GMThttp://www.shnenglu.com/lf426/archive/2008/04/14/47033.htmlhttp://www.shnenglu.com/lf426/comments/47033.htmlhttp://www.shnenglu.com/lf426/archive/2008/04/14/47033.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/47033.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/47033.htmlWindows only. Linux needn't.

//UVi Soft ( 2008 )
//Long Fei ( lf426 ), E-mail: zbln426@163.com
//Laboratory of ZaiBieLiunNian
//http://www.shnenglu.com/lf426/

//FileName: SDL_render_Chinese.h
//For Windows only

#ifndef RENDER_CHINESE_H
#define RENDER_CHINESE_H

#include 
"gb2312_to_Unicode.h"
#include 
"SDL/SDL_ttf.h"

SDL_Surface
* myTTF_RenderString_Blended(TTF_Font* font, const std::string& str, SDL_Color fg);
SDL_Surface
* myTTF_RenderString_Solid(TTF_Font* font, const std::string& str, SDL_Color fg);
SDL_Surface
* myTTF_RenderString_Shaded(TTF_Font* font, const std::string& str, SDL_Color fg, SDL_Color bg);

#endif

//UVi Soft ( 2008 )
//Long Fei ( lf426 ), E-mail: zbln426@163.com
//Laboratory of ZaiBieLiunNian
//http://www.shnenglu.com/lf426/

//FileName: SDL_render_Chinese.cpp
//For Windows only

#include 
"SDL_render_Chinese.h"

SDL_Surface
* myTTF_RenderString_Blended(TTF_Font* font, const std::string& str, SDL_Color fg)
{
    SDL_Surface
* textbuf;
    
//Get Unicode
    std::vector<Uint16> unicodeUnit;
    
if ( getUnicode(str, unicodeUnit) == false )
        
return 0;
    
int arraySize = unicodeUnit.size();
    Uint16
* perOne = new Uint16[arraySize+1];
    
for ( int i = 0; i < arraySize; i++ )
        perOne[i] 
= unicodeUnit[i];
    perOne[arraySize] 
= 0;

    
    
//Render the new text
    textbuf = TTF_RenderUNICODE_Blended(font, perOne, fg);

    
//Free the text buffer and return
    delete [] perOne;
    
return textbuf;
}

SDL_Surface
* myTTF_RenderString_Solid(TTF_Font* font, const std::string& str, SDL_Color fg)
{
    SDL_Surface
* textbuf;
    
//Get Unicode
    std::vector<Uint16> unicodeUnit;
    
if ( getUnicode(str, unicodeUnit) == false )
        
return 0;
    
int arraySize = unicodeUnit.size();
    Uint16
* perOne = new Uint16[arraySize+1];
    
for ( int i = 0; i < arraySize; i++ )
        perOne[i] 
= unicodeUnit[i];
    perOne[arraySize] 
= 0;

    
    
//Render the new text
    textbuf = TTF_RenderUNICODE_Solid(font, perOne, fg);

    
//Free the text buffer and return
    delete [] perOne;
    
return textbuf;
}

SDL_Surface
* myTTF_RenderString_Shaded(TTF_Font* font, const std::string& str, SDL_Color fg, SDL_Color bg)
{
    SDL_Surface
* textbuf;
    
//Get Unicode
    std::vector<Uint16> unicodeUnit;
    
if ( getUnicode(str, unicodeUnit) == false )
        
return 0;
    
int arraySize = unicodeUnit.size();
    Uint16
* perOne = new Uint16[arraySize+1];
    
for ( int i = 0; i < arraySize; i++ )
        perOne[i] 
= unicodeUnit[i];
    perOne[arraySize] 
= 0;

    
    
//Render the new text
    textbuf = TTF_RenderUNICODE_Shaded(font, perOne, fg, bg);

    
//Free the text buffer and return
    delete [] perOne;
    
return textbuf;
}

lib: iconv.lib
     SDL_ttf.lib
     SDL.lib, SDLmain.lib

dll: iconv.dll
     SDL_ttf.dll, libfreetype-6.dll, zlib1.dll
     SDL.dll

last update: 2008-05-12

lf426 2008-04-14 13:24 鍙戣〃璇勮
]]>
gb2312_to_Unicodehttp://www.shnenglu.com/lf426/archive/2008/04/14/47032.htmllf426lf426Mon, 14 Apr 2008 05:23:00 GMThttp://www.shnenglu.com/lf426/archive/2008/04/14/47032.htmlhttp://www.shnenglu.com/lf426/comments/47032.htmlhttp://www.shnenglu.com/lf426/archive/2008/04/14/47032.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/47032.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/47032.htmlWindows only. Linux needn't.

//UVi Soft ( 2008 )
//Long Fei ( lf426 ), E-mail: zbln426@163.com
//Laboratory of ZaiBieLiunNian
//http://www.shnenglu.com/lf426/

//FileName: gb2312_to_Unicode.h
//For Windows only


#ifndef GB2312_TO_UNICODE_H_
#define GB2312_TO_UNICODE_H_

#include 
<iostream>
#include 
<vector>
#include 
"GNU/iconv.h"

//if not include "SDL/SDL.h"
#ifndef _SDL_H
typedef unsigned 
short int Uint16;
#endif

bool getUnicode(const std::string& str, std::vector<Uint16>& unicodeVectorArray);

#endif

//UVi Soft ( 2008 )
//Long Fei ( lf426 ), E-mail: zbln426@163.com
//Laboratory of ZaiBieLiunNian
//http://www.shnenglu.com/lf426/

//FileName: gb2312_to_Unicode.cpp
//For Windows only

#include 
"gb2312_to_Unicode.h"

int myUTF8_to_UNICODE(Uint16* unicode, unsigned char* utf8, int len);

bool getUnicode(const std::string& str, std::vector<Uint16>& unicodeVectorArray)
{
    
const int CHAR_SIZE = 256;
    
//GB2312 src
    const unsigned char* src = (const unsigned char*)(str.c_str());
    size_t src_len 
= strlen((char*)src);
    
//Unicode dst to get
    unsigned char dst[CHAR_SIZE] = {0};
    size_t dst_len 
= sizeof(dst);
    
//iconv arg
    const unsigned char* in = src;
    unsigned 
char* out = dst;

    iconv_t cd;
    
//GB2312 to UTF-8
    cd = iconv_open("UTF-8""GB2312");
    
if ((iconv_t)-1 == cd){
        
return false;
    }
    
//conversion
    iconv(cd, (const char**)&in&src_len, (char**)&out&dst_len);

    
//UTF-8 to Unicode
    int utf8Len = strlen((char*)dst);
    Uint16 unicodeData[CHAR_SIZE] 
= {0};
    
int unicodeLen = myUTF8_to_UNICODE(unicodeData, dst, utf8Len);
    
for (int i = 0; i < unicodeLen; i++) {
        unicodeVectorArray.push_back(unicodeData[i]);
    }
    
    iconv_close(cd); 
    
return true;
}

int myUTF8_to_UNICODE(Uint16* unicode, unsigned char* utf8, int len)
{
    
int length;
    unsigned 
char* t = utf8;

    length 
= 0;
    
while (utf8 - t < len){
        
//one byte.ASCII as a, b, c, 1, 2, 3 ect
        if ( *(unsigned char *) utf8 <= 0x7f ) {
            
//expand with 0s.
            *unicode++ = *utf8++;
        }
        
//2 byte.
        else if ( *(unsigned char *) utf8 <= 0xdf ) {
            
*unicode++ = ((*(unsigned char *) utf8 & 0x1f<< 6+ ((*(unsigned char *) (utf8 + 1)) & 0x3f);
            utf8 
+= 2;
        }
        
//3 byte.Chinese may use 3 byte.
        else {
            
*unicode++ = ((int) (*(unsigned char *) utf8 & 0x0f<< 12+
                ((
*(unsigned char *) (utf8 + 1& 0x3f<< 6+
                (
*(unsigned char *) (utf8 + 2& 0x3f);
            utf8 
+= 3;
        }
        length
++;
    }

    
*unicode = 0;
    
    
return (length);
}

lib: iconv.lib
dll: iconv.dll

last update: 2008-05-12

lf426 2008-04-14 13:23 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线不卡| 欧美成人a∨高清免费观看| 一区二区三区欧美激情| 欧美日韩成人综合| 午夜精品一区二区三区电影天堂| 在线综合亚洲欧美在线视频| 国产精品家教| 久久精品视频网| 久久久久久久欧美精品| 在线视频成人| 夜夜嗨av一区二区三区四季av| 国产精品vip| 久久久久久穴| 欧美成人官网二区| 亚洲一区二区三区中文字幕在线| 亚洲视频综合| 亚洲电影免费| 一区二区久久久久久| 国产视频一区二区三区在线观看| 欧美96在线丨欧| 欧美午夜精品久久久| 久久久久久久久久久久久9999 | 亚洲精品1区2区| 国产精品qvod| 美国成人毛片| 欧美日韩亚洲一区| 免费成人性网站| 欧美日韩午夜在线| 久久精品在线| 欧美日韩国产成人| 久久久久久久精| 欧美日韩免费观看中文| 久久三级视频| 国产精品久久久久永久免费观看| 免费视频最近日韩| 国产嫩草影院久久久久| 亚洲大黄网站| 一区精品久久| 亚洲欧美不卡| 亚洲在线观看| 欧美精品97| 欧美成人小视频| 国模私拍视频一区| 亚洲男人第一网站| 亚洲午夜精品一区二区| 女生裸体视频一区二区三区| 久久成人精品| 国产精品综合av一区二区国产馆| 亚洲国产小视频在线观看| 红桃视频一区| 香蕉av777xxx色综合一区| 亚洲在线视频网站| 欧美三级日本三级少妇99| 亚洲福利一区| 91久久极品少妇xxxxⅹ软件| 久久香蕉国产线看观看av| 久久狠狠婷婷| 国产一区二区三区在线观看免费| 在线视频精品| 亚洲欧美美女| 国产精品五区| 亚洲男人av电影| 欧美亚洲视频| 国产一区91| 久久久欧美精品sm网站| 久久香蕉国产线看观看av| 国产综合色在线| 久久成人人人人精品欧| 另类人畜视频在线| 亚洲国产cao| 免费视频最近日韩| 亚洲高清一区二区三区| 亚洲精品国产精品乱码不99| 男人的天堂亚洲| 亚洲激情电影在线| 一本色道久久综合亚洲精品按摩| 欧美日韩一区二区三区视频 | 久久久久一区二区三区| 国产亚洲日本欧美韩国| 久久精品国产99国产精品| 久久亚洲影音av资源网| 亚洲欧洲日本国产| 欧美日韩亚洲综合在线| 亚洲午夜女主播在线直播| 欧美在线视频一区二区三区| 国产亚洲精品久久久久婷婷瑜伽| 久久久久久尹人网香蕉| 亚洲国产一区二区三区青草影视| 一本大道av伊人久久综合| 国产精品国产亚洲精品看不卡15| 亚洲一区二区三区精品视频| 久久免费视频一区| 91久久线看在观草草青青| 欧美日本在线| 欧美一区2区视频在线观看| 欧美激情亚洲一区| 亚洲欧美国产一区二区三区| 激情小说另类小说亚洲欧美| 欧美日本国产精品| 欧美亚洲视频一区二区| 亚洲国产精品成人一区二区| 亚洲一区欧美二区| 曰本成人黄色| 国产精品久久久久久久第一福利| 久久久久久色| 一区二区激情| 免费在线成人| 亚洲欧美日产图| 亚洲国产三级网| 国产欧美日韩亚洲一区二区三区| 久久婷婷人人澡人人喊人人爽| 亚洲免费高清| 欧美ab在线视频| 欧美在线高清视频| 一本大道久久a久久精品综合| 国产最新精品精品你懂的| 欧美精品一区二区三区在线看午夜 | 欧美在线看片| 亚洲免费观看高清完整版在线观看熊 | 亚洲高清一区二区三区| 久久精品99国产精品| 一区二区福利| 91久久久久久国产精品| 国产视频亚洲精品| 国产精品国产三级国产专播品爱网| 久久在线免费观看| 欧美一区二区免费| 亚洲欧美日韩一区二区在线| 亚洲精品美女免费| 亚洲国产激情| 欧美成人69| 欧美大成色www永久网站婷| 欧美一站二站| 羞羞漫画18久久大片| 亚洲伊人伊色伊影伊综合网| 一区二区三区色| 夜夜夜久久久| 一区二区三区福利| 一区二区激情视频| 99在线精品视频在线观看| 亚洲国产精品成人一区二区| 国内精品久久久久久久果冻传媒 | 麻豆成人av| 麻豆精品视频在线观看| 久久婷婷国产综合精品青草| 久久激情网站| 久久久久国产一区二区三区四区| 久久精品官网| 久久精品免费播放| 久久久久这里只有精品| 麻豆精品精华液| 欧美精彩视频一区二区三区| 欧美成人免费一级人片100| 欧美激情第10页| 欧美日本一区二区高清播放视频| 欧美激情综合网| 欧美天堂亚洲电影院在线观看 | 国产有码一区二区| 国内精品久久久久久久果冻传媒 | 欧美一区二区三区视频在线| 欧美在线视频在线播放完整版免费观看| 小处雏高清一区二区三区| 欧美一级视频| 免费av成人在线| 亚洲卡通欧美制服中文| 亚洲午夜久久久久久久久电影院| 西瓜成人精品人成网站| 久久久人人人| 欧美视频一区二区| 国产一区二区三区久久久久久久久 | 欧美国产国产综合| 国产精品福利av| 狠狠色狠狠色综合日日91app| 91久久国产综合久久91精品网站| 一片黄亚洲嫩模| 久久av资源网站| 亚洲激情第一页| 午夜久久福利| 欧美日本二区| 韩国欧美国产1区| 在线一区观看| 免费观看国产成人| 一本不卡影院| 免费一级欧美片在线播放| 国产精品久久久99| 亚洲国产精品女人久久久| 亚洲一区二区三区国产| 女女同性女同一区二区三区91| 一区二区三区精品国产| 久久在精品线影院精品国产| 国产精品久久久久久久浪潮网站| 怡红院av一区二区三区| 香蕉免费一区二区三区在线观看| 欧美肥婆bbw| 性欧美暴力猛交另类hd| 欧美日韩国产黄| 亚洲国产成人在线视频| 久久国产精品亚洲va麻豆| 亚洲精品少妇30p| 牛牛影视久久网|