#ifndef _BITMAP_FONT_H #define _BITMAP_FONT_H #include #include class BitmapFont{ friend ostream& operator<<(ostream &os,const BitmapFont &bf); private: int width, height; vector bitmap; public: int getWidth() const { return width; } int getHeight() const { return height; } BitmapFont(){} BitmapFont(const BitmapFont& b){ width=b.width; height=b.height; bitmap=b.bitmap; } BitmapFont(int w,int h) :width(w),height(h),bitmap(w*h,false){ } // 暗黙のうちに幅が4ビットの倍数だと仮定している。 BitmapFont(int w,int h,const string& hex) :width(w),height(h),bitmap(){ for(string::const_iterator it=hex.begin();it!=hex.end();it++){ string s; s+= *it; long val=strtol(s.c_str(),0,16); assert(val>=0 && val<16); for(int i=0;i<4;i++){ bool pixel=false; if((val&(1<<(3-i)))!=0) pixel=true; bitmap.push_back(pixel); } } } bool get(int x, int y) const{ if(x<0 || x>=width || y<0 || y>=height){ return false; } return bitmap[y*width+x]; } }; #endif /* _BITMAP_FONT_H */