[wadalabfont-kit] / jis2prim / BitmapFont.h  

Diff of /jis2prim/BitmapFont.h

Parent Directory | Revision Log

version 1.5, Tue Aug 6 06:30:43 2002 UTC version 1.6, Tue Aug 20 11:10:36 2002 UTC
Line 15 
Line 15 
   std::vector<bool> bitmap;    std::vector<bool> bitmap;
   std::vector<pixel> pixels;    std::vector<pixel> pixels;
  public:   public:
   int getWidth() const { return width; }    int getWidth() const;
   int getHeight() const { return height; }    int getHeight() const;
   int getSize() const { return width*height; }    int getSize() const;
   int getPixelSize() const { return pixels.size(); }    int getPixelSize() const;
   pixel getPixelAt(int index) const { return pixels[index]; }    pixel getPixelAt(int index) const;
   BitmapFont(){}    BitmapFont();
   BitmapFont(const BitmapFont& b){    BitmapFont(const BitmapFont& b);
     width=b.width;    BitmapFont(int w,int h);
     height=b.height;    BitmapFont(int w,int h,const std::vector<pixel> &pxls);
     bitmap=b.bitmap;  
     pixels=b.pixels;  
   }  
   BitmapFont(int w,int h) :width(w),height(h),bitmap(w*h,false){  
   }  
   BitmapFont(int w,int h,const std::vector<pixel> &pxls)  
     :width(w),height(h),bitmap(w*h,false),pixels(pxls){  
     std::vector<pixel>::iterator it;  
     for(it=pixels.begin();it!=pixels.end();it++){  
       int x=it->first, y=it->second;  
       assert(0<= x && x<width && 0<=y && y<height);  
       bitmap[y*width+x]=true;  
     }  
   }  
   // 暗黙のうちに幅が4ビットの倍数だと仮定している。    // 暗黙のうちに幅が4ビットの倍数だと仮定している。
   BitmapFont(int w,int h,const std::string& hex) :width(w),height(h),bitmap(){    BitmapFont(int w,int h,const std::string& hex);
     for(std::string::const_iterator it=hex.begin();it!=hex.end();it++){    bool get(int x, int y) const;
       std::string s;    int getIndex(const pixel &px) const;
       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);  
       }  
     }  
     for(int y=0;y<height;y++)  
       for(int x=0;x<width;x++)  
         if(get(x,y))  
           pixels.push_back(std::pair<int,int>(x,y));  
   }  
   bool get(int x, int y) const{  
     if(x<0 || x>=width || y<0 || y>=height){  
       return false;  
     }  
     return bitmap[y*width+x];  
   }  
   int getIndex(const pixel &px) const{  
     std::vector<pixel>::const_iterator it=find(pixels.begin(),pixels.end(),px);  
     if(it!=pixels.end()){  
       return it-pixels.begin();  
     }  
     return -1;  
   }  
 };  };
 #endif /* _BITMAP_FONT_H */  #endif /* _BITMAP_FONT_H */


Generate output suitable for use with a patch program
Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

ktanaka

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help