[wadalabfont-kit] / jis2prim / PatMatch.h  

View of /jis2prim/PatMatch.h

Parent Directory | Revision Log
Revision: 1.3 - (download) (as text) (annotate)
Tue Mar 19 00:33:14 2002 UTC (22 years, 8 months ago) by ktanaka
Branch: MAIN
Changes since 1.2: +1 -1 lines
*** empty log message ***
#ifndef _PAT_MATCH_H
#define  _PAT_MATCH_H

#include <string>
#include "BitmapFont.h"
#include "Assumption.h"

/* @ : 黒 */
/* . : 白 */
/* else(?) : どちらでも */
class PatMatch{
  friend ostream& operator<<(ostream &os,const PatMatch &pm);
 protected:
  int width, height;
  string pat;
  Assumption assumption;
 public:
  PatMatch(int w,int h,string s,const Assumption &as) 
    :width(w), height(h), pat(s), assumption(as){
    assert(pat.length() == (unsigned int)width*height);
  }
  PatMatch(int w,int h,string s, const SimpleAssumption &sa) 
    :width(w), height(h), pat(s), assumption(){
    assumption.add(sa);
    assert(pat.length() == (unsigned int)width*height);
  }
  int get(int x,int y) const{
    return pat[y*width+x];
  }
  bool isMatch(const BitmapFont& bf, int x, int y) const{
    for(int i=0;i<width;i++)
      for(int j=0;j<height;j++){
	if(bf.get(x+i,y+j)){
	  if(get(i,j)=='.') return false;
	}
	else if(get(i,j)=='@') return false;
      }
    return true;
  }
  vector<pixel> getPixels(int x, int y) const{
    vector<pixel> pixels;
    for(int i=0;i<width;i++)
      for(int j=0;j<height;j++){
	if(get(i,j)=='@'){
	  pixels.push_back(pixel(x+i,y+j));
	}
      }
    return pixels;
  }
};
ostream& operator<<(ostream &os,const PatMatch &pm){
  return os << "PatMatch(width=" << pm.width << ",height=" << pm.height << 
    ",pat=" << pm.pat << "," << pm.assumption << ")";
}
#endif /* _PAT_MATCH_H */

ktanaka

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help