freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft-devel] i can't view correctly my bitmap


From: David Turner
Subject: Re: [ft-devel] i can't view correctly my bitmap
Date: Tue, 22 Jan 2008 16:38:27 +0100

the bitmap returned by FreeType is either 1-bit monochrome or 8-bit gray-level
you will need to convert this to a supported DIB color format before being to display them

2008/1/22, Sebastien Gamel < address@hidden>:

HI

I search how view my bitmap

//=========================================================================================================================

 

 

                                   error = FT_Init_FreeType(&ftlib);

                                

                                   if(error) {

                                         printf("FT_init error.\n");

                                         exit(1);

                                   }

 

                                   fontname = "\\storage card\\arial.ttf";

 

                       

                                   error = FT_New_Face(ftlib, fontname, 0, &face);

 

                                   if(error == FT_Err_Unknown_File_Format) {

                                         printf("FT_face error.\n");

                                         exit(1);

                                   }

 

                                   error = FT_Set_Char_Size(face, 0, 20*64/*20pt*/, 72, 72);

 

                                   glyph_index = FT_Get_Char_Index(face, keysym); /* retrieve kerning

                             distance and move pen position */

                                

                                   error = FT_Load_Glyph(face, glyph_index, FT_LOAD_DEFAULT);

 

                            

 

                                   error = FT_Get_Glyph(face->glyph, &glyph);   // must be manually destroyed with FT_Done_Glyph(glyph)

 

                                   if(error) {

                                         printf("Error loading glyph.\n");

                                         exit(1);

                                   }

                                

                                   if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )

                                         if ( FT_Render_Glyph( face->glyph, FT_RENDER_MODE_NORMAL ) )

                                          exit( 1 );

 

                                

                             //  This fails if the character was a space: ascii 0x32

                                   error = FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1);    // destroy old previous glyph

                                

                                   BitmapGlyph= (FT_BitmapGlyph)glyph;

 

                            

 

                                   MyPaint(hwnd, message, wParam, lParam, &BitmapGlyph->bitmap);

 

//=========================================================================================================================

 

void MyPaint(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, FT_Bitmap  *bitmap)

{

    HDC hdc, hdcMemory;

    PAINTSTRUCT ps;

    HBITMAP hBmp, hOldBmp;

    BITMAP  bmp;

      BITMAPINFO format;

      char *ptr,*ptr1;

    int i, x, y, iCaptionHeight,ii;

 

    hdc = GetWindowDC(hWnd);

    hdcMemory = CreateCompatibleDC( hdc );

      format.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);

      format.bmiHeader.biWidth=bitmap->width;

      format.bmiHeader.biHeight=bitmap->rows;

      format.bmiHeader.biPlanes=1;

      format.bmiHeader.biBitCount=8;

      format.bmiHeader.biCompression=BI_RGB;

      hBmp=CreateDIBSection(hdc,&format,DIB_RGB_COLORS,(void**)&ptr1,NULL,NULL);

 

      memcpy(ptr1,bitmap->buffer,( format.bmiHeader.biWidth*(format.bmiHeader.biBitCount/8) )*format.bmiHeader.biHeight);

 

      hOldBmp = SelectObject( hdcMemory, hBmp );

      GetObject( hBmp, sizeof(BITMAP), &bmp );

      BitBlt(hdc, 50, 50,

                        bmp.bmWidth, bmp.bmHeight,

                        hdcMemory,

                        0, 0, SRCCOPY );

      DeleteObject( SelectObject( hdcMemory, hOldBmp ) );

      DeleteDC( hdcMemory );

      ReleaseDC(hWnd,hdc);

 

}

//=========================================================================================================================

 

 

I work on visual 2005 for WINCE if you can help please

 

Regards

 

Seb


_______________________________________________
Freetype-devel mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/freetype-devel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]