|
From: | José Carlos García Rufino |
Subject: | [Devel] Letter as cursive |
Date: | Thu, 30 Jan 2003 12:47:29 +0100 |
I'm trying to print any string in the
screen.
I use FT_Load_Char for rendering the characters one
to one.
The problem is that the characters apears
leaning to the right and the part of the character that disaperars for the right
then apears for the left of the next line.
The contents of the buffer is the correct because
the contents of the file generated in the function Voltear_Buffer is
right.
Some characters are draw right, but they are not
always the same. It's depends of the size of the font that I
select.
This is my code:
void my_draw_bitmap(HDC hDC,FT_Bitmap *b, int posx,
int posy, int zoom, int bitmap_top, int bitmap_left)
{ BITMAPINFO *bmi;
int i,filas,columnas,tam; filas=b->rows; columnas=b->width; tam=filas*columnas; Voltear_Buffer(b->buffer,filas,columnas);
bmi = (BITMAPINFO *) malloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)); BITMAPINFOHEADER *pBI=(BITMAPINFOHEADER *) bmi;
pBI->biSize =
sizeof(BITMAPINFOHEADER);
pBI->biWidth = columnas; pBI->biHeight = -filas; // top-down image pBI->biPlanes = 1; pBI->biBitCount = 8; pBI->biCompression = BI_RGB; pBI->biSizeImage = tam; pBI->biXPelsPerMeter = 0; pBI->biYPelsPerMeter = 0; pBI->biClrUsed = 0; pBI->biClrImportant = 0; RGBQUAD *paleta=(LPRGBQUAD)(((BYTE *)(bmi))
+ sizeof(BITMAPINFOHEADER)); for (i = 0; i < 256; i++) { paleta->rgbBlue = paleta->rgbGreen = paleta->rgbRed = (BYTE) i; paleta->rgbReserved = 0; paleta++; } StretchDIBits(hDC, posx, // x destino posy, // y destino columnas*zoom, // ancho destino filas*zoom, // alto destino 0, // x fuente 0, // y fuente columnas, // ancho fuente filas, // alto fuente b->buffer, // puntero a los bits bmi, // BITMAPINFO DIB_RGB_COLORS, // options SRCCOPY); // rop free(bmi);
} void Voltear_Buffer(unsigned char *buf, int filas, int
columnas)
{ int i; int tam=filas*columnas; FILE *pf=fopen("equis.txt","a"); for(i=0;i<tam;i++) { if(i%columnas==0 && i!=0) fprintf(pf,"\n"); if(buf[i]>127) fprintf(pf,"X"); else fprintf(pf," "); } fprintf(pf,"\n\n"); fclose(pf); |
[Prev in Thread] | Current Thread | [Next in Thread] |