[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master 1b0a3ed: [graph/win32] Explicitly use BITMAPINF
From: |
Alexei Podtelezhnikov |
Subject: |
[freetype2-demos] master 1b0a3ed: [graph/win32] Explicitly use BITMAPINFO. |
Date: |
Sun, 18 Oct 2020 23:10:21 -0400 (EDT) |
branch: master
commit 1b0a3edd0c9ff419b92366599f5f82ebbff724f9
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>
[graph/win32] Explicitly use BITMAPINFO.
* graph/win32/grwin32.c (grWin32Surface): Replace `pbmi' and `bmi'
with `bmiHeader' and `bmiColors'.
(gr_win32_surface_{init,resize}, Message_Process): Updated.
---
ChangeLog | 8 +++++++
graph/win32/grwin32.c | 66 ++++++++++++++++++++-------------------------------
2 files changed, 34 insertions(+), 40 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index a41fe82..5437153 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2020-10-18 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [graph/win32] Explicitly use BITMAPINFO.
+
+ * graph/win32/grwin32.c (grWin32Surface): Replace `pbmi' and `bmi'
+ with `bmiHeader' and `bmiColors'.
+ (gr_win32_surface_{init,resize}, Message_Process): Updated.
+
2020-10-17 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/strbuf.c (strbuf_init): Adjust to fix `FTDemo_Version'.
diff --git a/graph/win32/grwin32.c b/graph/win32/grwin32.c
index 4bc2cb9..cc1597e 100644
--- a/graph/win32/grwin32.c
+++ b/graph/win32/grwin32.c
@@ -61,8 +61,6 @@
/* Custom messages. */
#define WM_RESIZE WM_USER+517
-/* These values can be changed, but WIN_WIDTH should remain for now a */
-/* multiple of 32 to avoid padding issues. */
typedef struct Translator_
{
@@ -108,8 +106,8 @@
HWND window;
HICON sIcon;
HICON bIcon;
- LPBITMAPINFO pbmi;
- char bmi[ sizeof(BITMAPINFO) + 256*sizeof(RGBQUAD) ];
+ BITMAPINFOHEADER bmiHeader;
+ RGBQUAD bmiColors[256];
grBitmap bgrBitmap; /* windows wants data in BGR format !! */
#ifdef SWIZZLE
grBitmap swizzle_bitmap;
@@ -330,7 +328,6 @@ gr_win32_surface_resize( grWin32Surface* surface,
int height )
{
grBitmap* bitmap = &surface->root.bitmap;
- LPBITMAPINFO pbmi = surface->pbmi;
/* resize root bitmap */
if ( grNewBitmap( bitmap->mode,
@@ -364,8 +361,8 @@ gr_win32_surface_resize( grWin32Surface* surface,
#endif
/* update the header to appropriate values */
- pbmi->bmiHeader.biWidth = width;
- pbmi->bmiHeader.biHeight = height;
+ surface->bmiHeader.biWidth = width;
+ surface->bmiHeader.biHeight = height;
return surface;
}
@@ -442,7 +439,6 @@ gr_win32_surface_init( grWin32Surface* surface,
{
static RGBQUAD black = { 0, 0, 0, 0 };
static RGBQUAD white = { 0xFF, 0xFF, 0xFF, 0 };
- LPBITMAPINFO pbmi;
LOG(( "Win32: init_surface( %p, %p )\n", surface, bitmap ));
@@ -490,37 +486,31 @@ gr_win32_surface_init( grWin32Surface* surface,
LOG(( " -- width = %d\n", bitmap->width ));
LOG(( " -- height = %d\n", bitmap->rows ));
- /* find some memory for the bitmap header */
- surface->pbmi = pbmi = (LPBITMAPINFO) surface->bmi;
-
- /* initialize the header to appropriate values */
- memset( pbmi, 0, sizeof ( BITMAPINFO ) + sizeof ( RGBQUAD ) * 256 );
-
- pbmi->bmiHeader.biSize = sizeof ( BITMAPINFOHEADER );
- pbmi->bmiHeader.biWidth = bitmap->width;
- pbmi->bmiHeader.biHeight = bitmap->rows;
- pbmi->bmiHeader.biPlanes = 1;
+ surface->bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
+ surface->bmiHeader.biWidth = bitmap->width;
+ surface->bmiHeader.biHeight = bitmap->rows;
+ surface->bmiHeader.biPlanes = 1;
switch ( bitmap->mode )
{
case gr_pixel_mode_mono:
- pbmi->bmiHeader.biBitCount = 1;
- pbmi->bmiColors[0] = white;
- pbmi->bmiColors[1] = black;
+ surface->bmiHeader.biBitCount = 1;
+ surface->bmiColors[0] = white;
+ surface->bmiColors[1] = black;
break;
case gr_pixel_mode_rgb24:
- pbmi->bmiHeader.biBitCount = 24;
- pbmi->bmiHeader.biCompression = BI_RGB;
+ surface->bmiHeader.biBitCount = 24;
+ surface->bmiHeader.biCompression = BI_RGB;
break;
case gr_pixel_mode_gray:
- pbmi->bmiHeader.biBitCount = 8;
- pbmi->bmiHeader.biClrUsed = bitmap->grays;
+ surface->bmiHeader.biBitCount = 8;
+ surface->bmiHeader.biClrUsed = bitmap->grays;
{
int count = bitmap->grays;
int x;
- RGBQUAD* color = pbmi->bmiColors;
+ RGBQUAD* color = surface->bmiColors;
for ( x = 0; x < count; x++, color++ )
{
@@ -628,28 +618,24 @@ LRESULT CALLBACK Message_Process( HWND handle, UINT mess,
case WM_PAINT:
{
- HDC hDC;
- PAINTSTRUCT ps;
- LPBITMAPINFO pbmi = surface->pbmi;
+ HDC hDC;
+ PAINTSTRUCT ps;
- hDC = BeginPaint ( handle, &ps );
- if ( pbmi )
- {
+ hDC = BeginPaint ( handle, &ps );
SetDIBitsToDevice( hDC, 0, 0,
- pbmi->bmiHeader.biWidth,
- pbmi->bmiHeader.biHeight,
+ surface->bmiHeader.biWidth,
+ surface->bmiHeader.biHeight,
0, 0, 0,
- pbmi->bmiHeader.biHeight,
+ surface->bmiHeader.biHeight,
surface->bgrBitmap.buffer,
- pbmi,
+ (LPBITMAPINFO)&surface->bmiHeader,
DIB_RGB_COLORS );
- }
- EndPaint ( handle, &ps );
- return 0;
+ EndPaint ( handle, &ps );
+ return 0;
}
default:
- return DefWindowProc( handle, mess, wParam, lParam );
+ return DefWindowProc( handle, mess, wParam, lParam );
}
return 0;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 1b0a3ed: [graph/win32] Explicitly use BITMAPINFO.,
Alexei Podtelezhnikov <=