[wadalabfont-kit] / jis2prim / PatMatch.h  

View of /jis2prim/PatMatch.h

Parent Directory | Revision Log
Revision: 1.4 - (download) (as text) (annotate)
Tue Aug 6 06:30:44 2002 UTC (22 years, 3 months ago) by ktanaka
Branch: MAIN
Changes since 1.3: +23 -7 lines
*** empty log message ***
#ifndef _PAT_MATCH_H
#define  _PAT_MATCH_H

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

/* @ : 黒 */
/* . : 白 */
/* else(?) : どちらでも */
class PatMatch{
  friend std::ostream& operator<<(std::ostream &os,const PatMatch &pm);
 protected:
  int width, height;
  std::string pat;
  Assumption assumption;
 public:
  PatMatch(int w,int h,std::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,std::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];
  }
#if 0
  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;
  }
#endif
  int matchPenalty(const BitmapFont& bf, int x, int y) const{
    int penalty=0;
    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 -1;
	  else if(get(i,j)=='*') penalty++;
	}
	else if(get(i,j)=='@') return -1;
      }
    return penalty;
  }
  std::vector<pixel> getPixels(int x, int y) const{
    std::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;
  }
};
std::ostream& operator<<(std::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