[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master acf418a 1/2: [graph/win32] Improve surface init
From: |
Werner Lemberg |
Subject: |
[freetype2-demos] master acf418a 1/2: [graph/win32] Improve surface initialization. |
Date: |
Fri, 31 Dec 2021 09:29:43 -0500 (EST) |
branch: master
commit acf418a66101be9d626bd1a068b2512c4b24e4c6
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>
[graph/win32] Improve surface initialization.
* graph/win32/grwin32.c (gr_win32_surface_init): Allocate bitmaps by
calling `gr_win32_surface_resize`.
---
graph/win32/grwin32.c | 49 +++++++++++--------------------------------------
1 file changed, 11 insertions(+), 38 deletions(-)
diff --git a/graph/win32/grwin32.c b/graph/win32/grwin32.c
index 02f1a93..bfee8a6 100644
--- a/graph/win32/grwin32.c
+++ b/graph/win32/grwin32.c
@@ -433,6 +433,8 @@ static grWin32Surface*
gr_win32_surface_init( grWin32Surface* surface,
grBitmap* bitmap )
{
+ surface->root.bitmap.grays = bitmap->grays;
+
/* Set default mode */
if ( bitmap->mode == gr_pixel_mode_none )
{
@@ -446,19 +448,22 @@ gr_win32_surface_init( grWin32Surface* surface,
switch ( bpp )
{
case 8:
- bitmap->mode = gr_pixel_mode_gray;
+ surface->root.bitmap.mode = gr_pixel_mode_gray;
break;
case 16:
- bitmap->mode = gr_pixel_mode_rgb565;
+ surface->root.bitmap.mode = gr_pixel_mode_rgb565;
break;
case 24:
- bitmap->mode = gr_pixel_mode_rgb24;
+ surface->root.bitmap.mode = gr_pixel_mode_rgb24;
break;
case 32:
default:
- bitmap->mode = gr_pixel_mode_rgb32;
+ surface->root.bitmap.mode = gr_pixel_mode_rgb32;
}
}
+ else
+ surface->root.bitmap.mode = bitmap->mode;
+
LOG(( "Win32: init_surface( %p, %p )\n", surface, bitmap ));
@@ -467,43 +472,12 @@ gr_win32_surface_init( grWin32Surface* surface,
LOG(( " -- width = %d\n", bitmap->width ));
LOG(( " -- height = %d\n", bitmap->rows ));
- /* create the bitmap - under Win32, we support all modes as the GDI */
- /* handles all conversions automatically.. */
- if ( grNewBitmap( bitmap->mode,
- bitmap->grays,
- bitmap->width,
- bitmap->rows,
- bitmap ) )
- return 0;
-
- /* allocate the BGR shadow bitmap */
- if ( bitmap->mode == gr_pixel_mode_rgb24 )
- {
- if ( grNewBitmap( bitmap->mode,
- bitmap->grays,
- bitmap->width,
- bitmap->rows,
- &surface->shadow_bitmap ) )
- return 0;
-
-#ifdef SWIZZLE
- if ( grNewBitmap( bitmap->mode,
- bitmap->grays,
- bitmap->width,
- bitmap->rows,
- &surface->swizzle_bitmap ) )
- return 0;
-#endif
- }
- else
- surface->shadow_bitmap.buffer = bitmap->buffer;
+ gr_win32_surface_resize( surface, bitmap->width, bitmap->rows );
surface->bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
- surface->bmiHeader.biWidth = bitmap->width;
- surface->bmiHeader.biHeight = -bitmap->rows;
surface->bmiHeader.biPlanes = 1;
- switch ( bitmap->mode )
+ switch ( surface->root.bitmap.mode )
{
case gr_pixel_mode_mono:
surface->bmiHeader.biBitCount = 1;
@@ -595,7 +569,6 @@ gr_win32_surface_init( grWin32Surface* surface,
ShowWindow( surface->window, SW_SHOWNORMAL );
- surface->root.bitmap = *bitmap;
surface->root.done = (grDoneSurfaceFunc) gr_win32_surface_done;
surface->root.refresh_rect = (grRefreshRectFunc)
gr_win32_surface_refresh_rectangle;
surface->root.set_title = (grSetTitleFunc) gr_win32_surface_set_title;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master acf418a 1/2: [graph/win32] Improve surface initialization.,
Werner Lemberg <=