[wadalabfont-kit] / jis2prim / BitmapFont.h  

Diff of /jis2prim/BitmapFont.h

Parent Directory | Revision Log

version 1.3, Mon Mar 4 00:44:36 2002 UTC version 1.5, Tue Aug 6 06:30:43 2002 UTC
Line 4 
Line 4 
 #include <vector>  #include <vector>
 #include <string>  #include <string>
 #include <algorithm>  #include <algorithm>
   #include <cassert>
   
 typedef pair<int,int> pixel;  typedef std::pair<int,int> pixel;
   
 class BitmapFont{  class BitmapFont{
   friend ostream& operator<<(ostream &os,const BitmapFont &bf);    friend std::ostream& operator<<(std::ostream &os,const BitmapFont &bf);
  private:   private:
   int width, height;    int width, height;
   vector<bool> bitmap;    std::vector<bool> bitmap;
   vector<pixel> pixels;    std::vector<pixel> pixels;
  public:   public:
   int getWidth() const { return width; }    int getWidth() const { return width; }
   int getHeight() const { return height; }    int getHeight() const { return height; }
   int getSize() const { return width*height; }    int getSize() const { return width*height; }
   int getPixelSize() const { return pixels.size(); }    int getPixelSize() const { return pixels.size(); }
     pixel getPixelAt(int index) const { return pixels[index]; }
   BitmapFont(){}    BitmapFont(){}
   BitmapFont(const BitmapFont& b){    BitmapFont(const BitmapFont& b){
     width=b.width;      width=b.width;
Line 27 
Line 29 
   }    }
   BitmapFont(int w,int h) :width(w),height(h),bitmap(w*h,false){    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 string& hex) :width(w),height(h),bitmap(){    BitmapFont(int w,int h,const std::string& hex) :width(w),height(h),bitmap(){
     for(string::const_iterator it=hex.begin();it!=hex.end();it++){      for(std::string::const_iterator it=hex.begin();it!=hex.end();it++){
       string s;        std::string s;
       s+= *it;        s+= *it;
       long val=strtol(s.c_str(),0,16);        long val=strtol(s.c_str(),0,16);
       assert(val>=0 && val<16);        assert(val>=0 && val<16);
Line 45 
Line 56 
     for(int y=0;y<height;y++)      for(int y=0;y<height;y++)
       for(int x=0;x<width;x++)        for(int x=0;x<width;x++)
         if(get(x,y))          if(get(x,y))
           pixels.push_back(pair<int,int>(x,y));            pixels.push_back(std::pair<int,int>(x,y));
   }    }
   bool get(int x, int y) const{    bool get(int x, int y) const{
     if(x<0 || x>=width || y<0 || y>=height){      if(x<0 || x>=width || y<0 || y>=height){
Line 54 
Line 65 
     return bitmap[y*width+x];      return bitmap[y*width+x];
   }    }
   int getIndex(const pixel &px) const{    int getIndex(const pixel &px) const{
     vector<pixel>::const_iterator it=find(pixels.begin(),pixels.end(),px);      std::vector<pixel>::const_iterator it=find(pixels.begin(),pixels.end(),px);
     if(it!=pixels.end()){      if(it!=pixels.end()){
       return it-pixels.begin();        return it-pixels.begin();
     }      }


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

ktanaka

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help