- Rewrite NtGdiGetDIBitsInternal, with WINE as a reference.
- Get back DIB Section creation to classic BITMAPINFO.
This si the beginnig of the end for all this BITMAPV5INFO stuff.
It is horrible, BITMAPCOREINFO->BITMAPINFO is already made in user mode, and V4 and V5 features are not used so often.
svn path=/branches/reactos-yarotows/; revision=48359
- More BITMAPINFO->BITMAPV5INFO
- Do not use PAL_BITFIELDS when creating the DIB palette and we know that it's RGB
- PSEH-ize NtGdiCreateDIBSection
svn path=/branches/reactos-yarotows/; revision=48248
- exchange mask and color bitmaps if needed in CreateIconIndirect
[WIN32K]
- Simplify a bit UserDrawIconEx
svn path=/branches/reactos-yarotows/; revision=48026
- DIB data is not mandatory in CreateDIBitmap
[WIN32K]
- Simplify GreCreateDIBitmap
- Surface data should be 16 bits aligned
svn path=/branches/reactos-yarotows/; revision=47735
- Split NtGdiCreateDIBitmapInternal with its Gre Counterpart
- Set bV5ImageSize if it was not already set
- Probe bits we're given in NtGdiSetDIBits
- SEHize clipboard image data access
svn path=/branches/reactos-yarotows/; revision=47733
- check for the type of the DC to restore to decide whether we should restore the surface
Fixes yarotows specific FF3 bug
svn path=/branches/reactos-yarotows/; revision=47731
- Improve readability in SetBMIColor
- Only when BitCount is <= 8, calculate the number of colors in the table
- Fixes a crash with VBox driver
svn path=/branches/reactos-yarotows/; revision=47724
If pbmiSrc->bmiHeader.bV5ClrUsed is 0, calculate the number of colors from the bit depth. Fixes black taskbar icons with vbox driver on 8 bpp
svn path=/branches/reactos-yarotows/; revision=47719
Small bug big effects: Use the correct offset when copying the BITMAPINFO, fixes taskbar icons regression.
svn path=/branches/reactos-yarotows/; revision=47709
- Initialize the palettes before creating any bitmaps.
- Replace SURFACE_vSetDefaultPalette with an array of default palettes.
- Check iFormat in SURFACE_AllocSurface
svn path=/branches/reactos-yarotows/; revision=47703
- More BITMAPV5INFO fun
- Probe max size we are asked for when converting to V5 Info
[USER32] [WIN32K]
- CreateDIBitmap : Move safety handling to win32k, where it belongs. More code cleanness!
svn path=/branches/reactos-yarotows/; revision=47701
NtGdiGetDIBitsInternal: don't use the unsafe usermode pointer after the BITMAPINFO has been converted and protect writing back the result with SEH.
svn path=/branches/reactos-yarotows/; revision=47692
- remove duplicate prototypes.
- Add missing trail to debug print
- replace some now superfluous checks on bitmap palette with sanity ASSERTS
- begin using BITMAPV5HEADER as a default bitmap format, and introduce conversion to and from everything prior that.
Congratulations to BITMAPCOREHEADER, for its backward compatibility personal failure.
svn path=/branches/reactos-yarotows/; revision=47690
Introduce GreCreateBitmapEx, which has the extended functionality needed by some callers, GreCreateBitmap calls GreCreateBitmapEx to keep the simple syntax. Use it in DIB_CreateDIBSection to fix build. Also pass the size of the image (still ignored), which is needed for compressed bitmaps (we currently assume that RLEs take as much space as an uncompressed bitmap)
svn path=/branches/reactos-yarotows/; revision=47663
Rewrite the bitmap API. There were a lot of bugs. NtGdiCreateBitmap allowed a negative height, leading to either topdown or bottomup bitmaps, a behaviour that Windows doesn't have. The function copied the bitmap bits directly from the caller to the bitmap using RtlCopyMemory, ignoring different scanline length and direction (resulting in bitmaps being upside down), not SEH protected. This function (IntSetBitmapBits) is replaced by a better solution UnsafeSetBitmapBits, that takes these things into account. The name is chosen to give a hint that the function can/should be SEH protected. IntSetBitmapBits is still there, as its retarded behaviour is actually required in some places. There were also IntCreateBitmap and IntGdiCreateBitmap, now both being replaced by GreCreateBitmap. The code that set the palette is removed, as it's already done in SURFACE_AllocSurface, here gpalRGB is replaced with gpalBGR, fixing some inverted color issues. The alignment correction in SURFACE_bSetBitmapBits is reapplied, now that the callers are behaving as they are supposed to do.
svn path=/branches/reactos-yarotows/; revision=47641
Make the bitmap data for the extpens (making extpens bitmaps is a bad idea anyway) 4 bytes long instead of 3, to fulfill alignment requirements.
svn path=/branches/reactos-yarotows/; revision=47638
- Move RLE specific code to it's own file (rlecomp.c)
- Relace BitsPerFormat function with an array of UCHARs
- Rewrite surface creation. Surfaces are now allocated from one central function SURFACE_AllocSurface, which sets the size, iType, iUniq, the handle and the default palette.
- Implement SURFACE_vSetDefaultPalette, which sets the default RGB palette, based on bit depth.
- Implement SURFACE_bSetBitmapBits, wich sets cjBits, pvBits, pvScan0 and lDelta and allocates memory if neccessary.
- Use these functions for EngCreateBitmap, EngCreateDeviceBitmap, EngCreateDeviceSurface and IntCreateBitmap
svn path=/branches/reactos-yarotows/; revision=47612
Do not free the memory for the bitmap bits, when you have not allocated them. Fixes bugcheck with VBox driver.
svn path=/branches/reactos-yarotows/; revision=47609
- Allocate bitmaps as kernel sections, instead of from paged pool, like it's done in windows.
- Fix SURFACE_Cleanup. It was only freeing the memory for API_BITMAPs. If memory was allocated by a driver it never got freed.
- Add BMF_RLE_HACK flag to free decompressed RLE bits
- Support FL_ZERO_MEMORY in EngAllocSectionMem
- Set SURFOBJ::iType when creating a surface
svn path=/branches/reactos-yarotows/; revision=47606
- Simplify the logic of the mapping functions a bit, by using either FILEVIEW or ENGSECTION, not both.
- Set FILEVIEW::LastWriteTime
svn path=/branches/reactos-yarotows/; revision=47591
- There is no need to recalculate size of the Icon, we already have this piece of information
- Draw monochrome cursor/icons, not only their mask.
svn path=/branches/reactos-yarotows/; revision=47495
- Simplify UserDrawIconEx
- NtUserCreateCursorIconHandle : Get Information from bitmaps even on indirect creation and fix calculation of icon height in case of monochrome icons.
Fixes ~15 user32:cursoricon winetests.
svn path=/branches/reactos-yarotows/; revision=47451
- Change ChangeDisplaySettingsExA to look more like wine's one
[WIN32K]
- Return correct value if buffer is to small in UserChangeDisplaySettings (wine tests)
- Do not set an invalid size to the devmode we're passing ti UserChangeDisplaySettings, we might access garbage
Now all ChangeDisplaySettings related wine tests pass.
svn path=/branches/reactos-yarotows/; revision=47386
- Set right flags when reading display modes from registry
- Implement UserEnumRegistryDisplaySettings
svn path=/branches/reactos-yarotows/; revision=47356
- Check devmode size in NtUserChangeDisplaySettings
- Copy memory instead of setting fields in UserEnumDisplaySettings, so we don't lost anything.
svn path=/branches/reactos-yarotows/; revision=47355
- UserChangeDisplaySettings : add some checks and fixes to what was passed to us
More wine tests pass.
svn path=/branches/reactos-yarotows/; revision=47354
- Set DISPLAY_DEVICE_PRIMARY_DEVICE to Graphics device object when creating the primary device object
- switch state flags of the graphics device objects when switching mode
- Only compare valid fields when searching for a device mode in a device object
- implement CDS_TEST flag in NtUserSetDisplaySettings
svn path=/branches/reactos-yarotows/; revision=47353