[ros-dev] [ros-diffs] [jimtabor] 51835: [Win32k|User32] - Move creation of the scrollbar Gray brush from user32 to win32k. - Noticed a color and pattern (patchy white pattern) difference when using GreCreateBitmap and i...
Adam
geekdundee at gmail.com
Sun May 22 06:20:58 UTC 2011
But still you'd want maximum portability right? And it isn't that much
harm, IMO either.
On Sun, 22 May 2011 16:17:58 +1000, Timo Kreuzer <timo.kreuzer at web.de>
wrote:
>
> We don't need that on LE architectures since the pixel size doesn't
> change and the upper 16 bits are simply padding.
> If we ever ported this to a BE architecture (maybe ppc?), we would in
> fact need that. Or use WORD and add padding words between the pixel
> words.
>
>
>
> Am 21.05.2011 15:26, schrieb Adam:
>> I was thinking that should actually be:
>>
>>
>> + static const DWORD wPattern55AA[] = { 0x55555555, 0xAAAAAAAA,
>> 0x55555555, 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA
>> };
>>
>>
>> Note that you need 8 hex digits for 32-bit numbers.
>>
>>
>> On Sat, 21 May 2011 23:23:01 +1000, Timo Kreuzer <timo.kreuzer at web.de>
>> wrote:
>>
>>> Hi,
>>>
>>> I suspect its an alignment issue, since GreCreateBitmap requires 32bit
>>> alignment, while CreateBitmap uses 16 bit alignment.
>>> So changing
>>>
>>> + static const WORD wPattern55AA[] = { 0x5555, 0xaaaa, 0x5555,
>>> 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa };
>>>
>>> to
>>>
>>> + static const DWORD wPattern55AA[] = { 0x5555, 0xaaaa, 0x5555,
>>> 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa };
>>>
>>> Should do the trick.
>>>
>>>
>>> Am 21.05.2011 08:34, schrieb jimtabor at svn.reactos.org:
>>>> Author: jimtabor
>>>> Date: Sat May 21 06:34:02 2011
>>>> New Revision: 51835
>>>>
>>>> URL: http://svn.reactos.org/svn/reactos?rev=51835&view=rev
>>>> Log:
>>>> [Win32k|User32]
>>>> - Move creation of the scrollbar Gray brush from user32 to win32k.
>>>> - Noticed a color and pattern (patchy white pattern) difference when
>>>> using GreCreateBitmap and it did not work the same as the main
>>>> function. Correcting this fixed the Gray brush. Someone from YAROTOWS
>>>> needs to look into this.
>>>>
>>>> Modified:
>>>> trunk/reactos/dll/win32/user32/windows/defwnd.c
>>>> trunk/reactos/subsystems/win32/win32k/include/brush.h
>>>> trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c
>>>> trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c
>>>> trunk/reactos/subsystems/win32/win32k/objects/brush.c
>>>>
>>>> Modified: trunk/reactos/dll/win32/user32/windows/defwnd.c
>>>> URL:
>>>> http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/defwnd.c?rev=51835&r1=51834&r2=51835&view=diff
>>>> ==============================================================================
>>>> --- trunk/reactos/dll/win32/user32/windows/defwnd.c [iso-8859-1]
>>>> (original)
>>>> +++ trunk/reactos/dll/win32/user32/windows/defwnd.c [iso-8859-1] Sat
>>>> May 21 06:34:02 2011
>>>> @@ -927,8 +927,8 @@
>>>> HBRUSH
>>>> DefWndControlColor(HDC hDC, UINT ctlType)
>>>> {
>>>> - if (CTLCOLOR_SCROLLBAR == ctlType)
>>>> - {
>>>> + if (ctlType == CTLCOLOR_SCROLLBAR)
>>>> + {
>>>> HBRUSH hb = GetSysColorBrush(COLOR_SCROLLBAR);
>>>> COLORREF bk = GetSysColor(COLOR_3DHILIGHT);
>>>> SetTextColor(hDC, GetSysColor(COLOR_3DFACE));
>>>> @@ -938,37 +938,24 @@
>>>> * we better use 0x55aa bitmap brush to make scrollbar's
>>>> background
>>>> * look different from the window background.
>>>> */
>>>> - if (bk == GetSysColor(COLOR_WINDOW))
>>>> - {
>>>> - static const WORD wPattern55AA[] =
>>>> - {
>>>> - 0x5555, 0xaaaa, 0x5555, 0xaaaa,
>>>> - 0x5555, 0xaaaa, 0x5555, 0xaaaa
>>>> - };
>>>> - static HBITMAP hPattern55AABitmap = NULL;
>>>> - static HBRUSH hPattern55AABrush = NULL;
>>>> - if (hPattern55AABrush == NULL)
>>>> - {
>>>> - hPattern55AABitmap = CreateBitmap(8, 8, 1, 1,
>>>> wPattern55AA);
>>>> - hPattern55AABrush =
>>>> CreatePatternBrush(hPattern55AABitmap);
>>>> - }
>>>> - return hPattern55AABrush;
>>>> - }
>>>> - UnrealizeObject(hb);
>>>> + if ( bk == GetSysColor(COLOR_WINDOW))
>>>> + return gpsi->hbrGray;
>>>> +
>>>> + UnrealizeObject( hb );
>>>> return hb;
>>>> - }
>>>> + }
>>>>
>>>> SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT));
>>>>
>>>> - if ((CTLCOLOR_EDIT == ctlType) || (CTLCOLOR_LISTBOX == ctlType))
>>>> - {
>>>> + if ((ctlType == CTLCOLOR_EDIT) || (ctlType == CTLCOLOR_LISTBOX))
>>>> + {
>>>> SetBkColor(hDC, GetSysColor(COLOR_WINDOW));
>>>> - }
>>>> + }
>>>> else
>>>> - {
>>>> + {
>>>> SetBkColor(hDC, GetSysColor(COLOR_3DFACE));
>>>> return GetSysColorBrush(COLOR_3DFACE);
>>>> - }
>>>> + }
>>>>
>>>> return GetSysColorBrush(COLOR_WINDOW);
>>>> }
>>>>
>>>> Modified: trunk/reactos/subsystems/win32/win32k/include/brush.h
>>>> URL:
>>>> http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/include/brush.h?rev=51835&r1=51834&r2=51835&view=diff
>>>> ==============================================================================
>>>> --- trunk/reactos/subsystems/win32/win32k/include/brush.h
>>>> [iso-8859-1] (original)
>>>> +++ trunk/reactos/subsystems/win32/win32k/include/brush.h
>>>> [iso-8859-1] Sat May 21 06:34:02 2011
>>>> @@ -129,3 +129,5 @@
>>>> VOID FASTCALL FreeObjectAttr(PVOID);
>>>>
>>>> BOOL FASTCALL IntGdiSetBrushOwner(PBRUSH,DWORD);
>>>> +BOOL FASTCALL GreSetBrushOwner(HBRUSH,DWORD);
>>>> +
>>>>
>>>> Modified: trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c
>>>> URL:
>>>> http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c?rev=51835&r1=51834&r2=51835&view=diff
>>>> ==============================================================================
>>>> --- trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c
>>>> [iso-8859-1] (original)
>>>> +++ trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c
>>>> [iso-8859-1] Sat May 21 06:34:02 2011
>>>> @@ -92,6 +92,8 @@
>>>> HANDLE hPowerRequestEvent,
>>>> HANDLE hMediaRequestEvent)
>>>> {
>>>> + static const WORD wPattern55AA[] = { 0x5555, 0xaaaa, 0x5555,
>>>> 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa };
>>>> + HBITMAP hPattern55AABitmap = NULL;
>>>> NTSTATUS Status;
>>>>
>>>> // Set W32PF_Flags |= (W32PF_READSCREENACCESSGRANTED |
>>>> W32PF_IOWINSTA)
>>>> @@ -125,6 +127,14 @@
>>>>
>>>> CsrInit();
>>>>
>>>> + if (gpsi->hbrGray == NULL)
>>>> + {
>>>> + hPattern55AABitmap = GreCreateBitmap(8, 8, 1, 1,
>>>> (LPBYTE)wPattern55AA);
>>>> + gpsi->hbrGray = IntGdiCreatePatternBrush(hPattern55AABitmap);
>>>> + GreDeleteObject(hPattern55AABitmap);
>>>> + GreSetBrushOwner(gpsi->hbrGray, GDI_OBJ_HMGR_PUBLIC);
>>>> + }
>>>> +
>>>> return STATUS_SUCCESS;
>>>> }
>>>>
>>>>
>>>> Modified: trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c
>>>> URL:
>>>> http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c?rev=51835&r1=51834&r2=51835&view=diff
>>>> ==============================================================================
>>>> --- trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c
>>>> [iso-8859-1] (original)
>>>> +++ trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c
>>>> [iso-8859-1] Sat May 21 06:34:02 2011
>>>> @@ -154,15 +154,23 @@
>>>> IN UINT cBitsPixel,
>>>> IN OPTIONAL PVOID pvBits)
>>>> {
>>>> + HBITMAP hbmp;
>>>> /* Call the extended function */
>>>> - return GreCreateBitmapEx(nWidth,
>>>> + hbmp = GreCreateBitmapEx(nWidth,
>>>> nHeight,
>>>> 0, /* auto width */
>>>> BitmapFormat(cBitsPixel * cPlanes,
>>>> BI_RGB),
>>>> 0, /* no bitmap flags */
>>>> 0, /* auto size */
>>>> - pvBits,
>>>> - DDB_SURFACE /* DDB */);
>>>> + NULL,
>>>> + DDB_SURFACE /* DDB */);
>>>> + if (pvBits&& hbmp)
>>>> + {
>>>> + PSURFACE psurf = SURFACE_ShareLockSurface(hbmp);
>>>> + UnsafeSetBitmapBits(psurf, 0, pvBits);
>>>> + SURFACE_ShareUnlockSurface(psurf);
>>>> + }
>>>> + return hbmp;
>>>> }
>>>>
>>>> HBITMAP
>>>>
>>>> Modified: trunk/reactos/subsystems/win32/win32k/objects/brush.c
>>>> URL:
>>>> http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/objects/brush.c?rev=51835&r1=51834&r2=51835&view=diff
>>>> ==============================================================================
>>>> --- trunk/reactos/subsystems/win32/win32k/objects/brush.c
>>>> [iso-8859-1] (original)
>>>> +++ trunk/reactos/subsystems/win32/win32k/objects/brush.c
>>>> [iso-8859-1] Sat May 21 06:34:02 2011
>>>> @@ -59,6 +59,19 @@
>>>> GDIOBJ_vSetObjectOwner(&pbr->BaseObject, ulOwner);
>>>>
>>>> return TRUE;
>>>> +}
>>>> +
>>>> +BOOL
>>>> +FASTCALL
>>>> +GreSetBrushOwner(HBRUSH hBrush, ULONG ulOwner)
>>>> +{
>>>> + BOOL Ret;
>>>> + PBRUSH pbrush;
>>>> +
>>>> + pbrush = BRUSH_ShareLockBrush(hBrush);
>>>> + Ret = IntGdiSetBrushOwner(pbrush, ulOwner);
>>>> + BRUSH_ShareUnlockBrush(pbrush);
>>>> + return Ret;
>>>> }
>>>>
>>>> BOOL
>>>>
>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> Ros-dev mailing list
>>> Ros-dev at reactos.org
>>> http://www.reactos.org/mailman/listinfo/ros-dev
>>
>>
>
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Ros-dev
mailing list