1 #include "../../../../include/freenet/captcha/freeimage/font.h"
\r
12 Font::Font(const Bitmap &bmp)
\r
24 const Bitmap &Font::Char(const int num)
\r
26 if(num>=0 && num<256 && m_chars.size()>num)
\r
28 return m_chars[num];
\r
36 const bool Font::Load(const Bitmap &bmp)
\r
38 m_fontwidth=bmp.Width()/16;
\r
39 m_fontheight=bmp.Height()/14;
\r
42 m_chars.resize(256);
\r
45 for(int yy=0; yy<bmp.Height(); yy+=m_fontheight)
\r
47 for(int xx=0; xx<bmp.Width(); xx+=m_fontwidth)
\r
50 int width=m_fontwidth;
\r
51 int idx=bmp.GetPixelIndex(xx+m_fontwidth-1,yy);
\r
52 for(int x=xx+m_fontwidth-1; x>xx && found==false; x--)
\r
54 for(int y=yy; y<yy+m_fontheight && found==false; y++)
\r
56 if(bmp.GetPixelIndex(x,y)!=idx)
\r
66 width==0 ? width=1 : width=width;
\r
68 width>m_fontwidth ? width=m_fontwidth : false;
\r
69 m_chars[charnum].Create(width,m_fontheight,32);
\r
70 m_chars[charnum].Blit(bmp,0,0,xx,yy,width,m_fontheight,-1);
\r
71 m_chars[charnum].SetTransparent();
\r
72 RGBQUAD col=m_chars[charnum].GetPixel(m_chars[charnum].Width()-1,0);
\r
73 for(int y=0; y<m_chars[charnum].Height(); y++)
\r
75 for(int x=0; x<m_chars[charnum].Width(); x++)
\r
77 RGBQUAD col2=m_chars[charnum].GetPixel(x,y);
\r
78 if(col.rgbRed==col2.rgbRed && col.rgbGreen==col2.rgbGreen && col.rgbBlue==col2.rgbBlue)
\r
81 m_chars[charnum].PutPixel(x,y,col2);
\r
92 } // namespace FreeImage
\r