... |
... |
@@ -433,6 +433,8 @@ static grWin32Surface* |
433
|
433
|
gr_win32_surface_init( grWin32Surface* surface,
|
434
|
434
|
grBitmap* bitmap )
|
435
|
435
|
{
|
|
436
|
+ surface->root.bitmap.grays = bitmap->grays;
|
|
437
|
+
|
436
|
438
|
/* Set default mode */
|
437
|
439
|
if ( bitmap->mode == gr_pixel_mode_none )
|
438
|
440
|
{
|
... |
... |
@@ -446,19 +448,22 @@ gr_win32_surface_init( grWin32Surface* surface, |
446
|
448
|
switch ( bpp )
|
447
|
449
|
{
|
448
|
450
|
case 8:
|
449
|
|
- bitmap->mode = gr_pixel_mode_gray;
|
|
451
|
+ surface->root.bitmap.mode = gr_pixel_mode_gray;
|
450
|
452
|
break;
|
451
|
453
|
case 16:
|
452
|
|
- bitmap->mode = gr_pixel_mode_rgb565;
|
|
454
|
+ surface->root.bitmap.mode = gr_pixel_mode_rgb565;
|
453
|
455
|
break;
|
454
|
456
|
case 24:
|
455
|
|
- bitmap->mode = gr_pixel_mode_rgb24;
|
|
457
|
+ surface->root.bitmap.mode = gr_pixel_mode_rgb24;
|
456
|
458
|
break;
|
457
|
459
|
case 32:
|
458
|
460
|
default:
|
459
|
|
- bitmap->mode = gr_pixel_mode_rgb32;
|
|
461
|
+ surface->root.bitmap.mode = gr_pixel_mode_rgb32;
|
460
|
462
|
}
|
461
|
463
|
}
|
|
464
|
+ else
|
|
465
|
+ surface->root.bitmap.mode = bitmap->mode;
|
|
466
|
+
|
462
|
467
|
|
463
|
468
|
LOG(( "Win32: init_surface( %p, %p )\n", surface, bitmap ));
|
464
|
469
|
|
... |
... |
@@ -467,43 +472,12 @@ gr_win32_surface_init( grWin32Surface* surface, |
467
|
472
|
LOG(( " -- width = %d\n", bitmap->width ));
|
468
|
473
|
LOG(( " -- height = %d\n", bitmap->rows ));
|
469
|
474
|
|
470
|
|
- /* create the bitmap - under Win32, we support all modes as the GDI */
|
471
|
|
- /* handles all conversions automatically.. */
|
472
|
|
- if ( grNewBitmap( bitmap->mode,
|
473
|
|
- bitmap->grays,
|
474
|
|
- bitmap->width,
|
475
|
|
- bitmap->rows,
|
476
|
|
- bitmap ) )
|
477
|
|
- return 0;
|
478
|
|
-
|
479
|
|
- /* allocate the BGR shadow bitmap */
|
480
|
|
- if ( bitmap->mode == gr_pixel_mode_rgb24 )
|
481
|
|
- {
|
482
|
|
- if ( grNewBitmap( bitmap->mode,
|
483
|
|
- bitmap->grays,
|
484
|
|
- bitmap->width,
|
485
|
|
- bitmap->rows,
|
486
|
|
- &surface->shadow_bitmap ) )
|
487
|
|
- return 0;
|
488
|
|
-
|
489
|
|
-#ifdef SWIZZLE
|
490
|
|
- if ( grNewBitmap( bitmap->mode,
|
491
|
|
- bitmap->grays,
|
492
|
|
- bitmap->width,
|
493
|
|
- bitmap->rows,
|
494
|
|
- &surface->swizzle_bitmap ) )
|
495
|
|
- return 0;
|
496
|
|
-#endif
|
497
|
|
- }
|
498
|
|
- else
|
499
|
|
- surface->shadow_bitmap.buffer = bitmap->buffer;
|
|
475
|
+ gr_win32_surface_resize( surface, bitmap->width, bitmap->rows );
|
500
|
476
|
|
501
|
477
|
surface->bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
|
502
|
|
- surface->bmiHeader.biWidth = bitmap->width;
|
503
|
|
- surface->bmiHeader.biHeight = -bitmap->rows;
|
504
|
478
|
surface->bmiHeader.biPlanes = 1;
|
505
|
479
|
|
506
|
|
- switch ( bitmap->mode )
|
|
480
|
+ switch ( surface->root.bitmap.mode )
|
507
|
481
|
{
|
508
|
482
|
case gr_pixel_mode_mono:
|
509
|
483
|
surface->bmiHeader.biBitCount = 1;
|
... |
... |
@@ -595,7 +569,6 @@ gr_win32_surface_init( grWin32Surface* surface, |
595
|
569
|
|
596
|
570
|
ShowWindow( surface->window, SW_SHOWNORMAL );
|
597
|
571
|
|
598
|
|
- surface->root.bitmap = *bitmap;
|
599
|
572
|
surface->root.done = (grDoneSurfaceFunc) gr_win32_surface_done;
|
600
|
573
|
surface->root.refresh_rect = (grRefreshRectFunc) gr_win32_surface_refresh_rectangle;
|
601
|
574
|
surface->root.set_title = (grSetTitleFunc) gr_win32_surface_set_title;
|