X-Git-Url: http://git.jankratochvil.net/?p=reactos.git;a=blobdiff_plain;f=drivers%2Fdd%2Fvga%2Fdisplay%2Fmain%2Fenable.c;h=a0dfb606b26949f1d192af884a6b2167465b0f2a;hp=0a932a2023a0aee36eff2cda76e36e7ab54fa0b5;hb=HEAD;hpb=7c0db166f81fbe8c8b913d7f26048e337d383605 diff --git a/drivers/dd/vga/display/main/enable.c b/drivers/dd/vga/display/main/enable.c index 0a932a2..a0dfb60 100644 --- a/drivers/dd/vga/display/main/enable.c +++ b/drivers/dd/vga/display/main/enable.c @@ -7,7 +7,7 @@ * */ -#include "gdiinfo.h" +#include "../vgaddi.h" #include "../vgavideo/vgavideo.h" #define NDEBUG #include @@ -61,13 +61,131 @@ DRVFN FuncList[] = #endif }; +GDIINFO gaulCap = { + GDI_DRIVER_VERSION, + DT_RASDISPLAY, // ulTechnology + 0, // ulHorzSize + 0, // ulVertSize + 0, // ulHorzRes (filled in at initialization) + 0, // ulVertRes (filled in at initialization) + 4, // cBitsPixel + 1, // cPlanes + 16, // ulNumColors + 0, // flRaster (DDI reserved field) + + 96, // ulLogPixelsX (must be set to 96 according to MSDN) + 96, // ulLogPixelsY (must be set to 96 according to MSDN) + + TC_RA_ABLE | TC_SCROLLBLT, // flTextCaps + + 6, // ulDACRed + 6, // ulDACGree + 6, // ulDACBlue + + 0x0024, // ulAspectX (one-to-one aspect ratio) + 0x0024, // ulAspectY + 0x0033, // ulAspectXY + + 1, // xStyleStep + 1, // yStyleSte; + 3, // denStyleStep + + { 0, 0 }, // ptlPhysOffset + { 0, 0 }, // szlPhysSize + + 0, // ulNumPalReg (win3.1 16 color drivers say 0 too) + +// These fields are for halftone initialization. + + { // ciDevice, ColorInfo + { 6700, 3300, 0 }, // Red + { 2100, 7100, 0 }, // Green + { 1400, 800, 0 }, // Blue + { 1750, 3950, 0 }, // Cyan + { 4050, 2050, 0 }, // Magenta + { 4400, 5200, 0 }, // Yellow + { 3127, 3290, 0 }, // AlignmentWhite + 20000, // RedGamma + 20000, // GreenGamma + 20000, // BlueGamma + 0, 0, 0, 0, 0, 0 + }, + + 0, // ulDevicePelsDPI + PRIMARY_ORDER_CBA, // ulPrimaryOrder + HT_PATSIZE_4x4_M, // ulHTPatternSize + HT_FORMAT_4BPP_IRGB, // ulHTOutputFormat + HT_FLAG_ADDITIVE_PRIMS, // flHTFlags + + 0, // ulVRefresh + 8, // ulBltAlignment + 0, // ulPanningHorzRes + 0, // ulPanningVertRes +}; + +// Palette for VGA + +typedef struct _VGALOGPALETTE +{ + USHORT ident; + USHORT NumEntries; + PALETTEENTRY PaletteEntry[16]; +} VGALOGPALETTE; + +const VGALOGPALETTE VGApalette = +{ + +0x400, // driver version +16, // num entries +{ + { 0x00, 0x00, 0x00, 0x00 }, // 0 + { 0x80, 0x00, 0x00, 0x00 }, // 1 + { 0x00, 0x80, 0x00, 0x00 }, // 2 + { 0x80, 0x80, 0x00, 0x00 }, // 3 + { 0x00, 0x00, 0x80, 0x00 }, // 4 + { 0x80, 0x00, 0x80, 0x00 }, // 5 + { 0x00, 0x80, 0x80, 0x00 }, // 6 + { 0x80, 0x80, 0x80, 0x00 }, // 7 + { 0xc0, 0xc0, 0xc0, 0x00 }, // 8 + { 0xff, 0x00, 0x00, 0x00 }, // 9 + { 0x00, 0xff, 0x00, 0x00 }, // 10 + { 0xff, 0xff, 0x00, 0x00 }, // 11 + { 0x00, 0x00, 0xff, 0x00 }, // 12 + { 0xff, 0x00, 0xff, 0x00 }, // 13 + { 0x00, 0xff, 0xff, 0x00 }, // 14 + { 0xff, 0xff, 0xff, 0x00 } // 15 +} +}; + +// Devinfo structure passed back to the engine in DrvEnablePDEV + +#define SYSTM_LOGFONT {16,7,0,0,700,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,VARIABLE_PITCH | FF_DONTCARE, L"System"} +#define HELVE_LOGFONT {12,9,0,0,400,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_STROKE_PRECIS,PROOF_QUALITY,VARIABLE_PITCH | FF_DONTCARE, L"MS Sans Serif"} +#define COURI_LOGFONT {12,9,0,0,400,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_STROKE_PRECIS,PROOF_QUALITY,FIXED_PITCH | FF_DONTCARE, L"Courier"} + +DEVINFO devinfoVGA = +{ + (GCAPS_OPAQUERECT | GCAPS_HORIZSTRIKE | GCAPS_ALTERNATEFILL | GCAPS_MONO_DITHER | GCAPS_COLOR_DITHER | + GCAPS_WINDINGFILL | GCAPS_DITHERONREALIZE + ), // Graphics capabilities + + SYSTM_LOGFONT, // Default font description + HELVE_LOGFONT, // ANSI variable font description + COURI_LOGFONT, // ANSI fixed font description + 0, // Count of device fonts + BMF_4BPP, // preferred DIB format + 8, // Width of color dither + 8, // Height of color dither + 0 // Default palette to use for this device +}; + BOOL STDCALL DrvEnableDriver(IN ULONG EngineVersion, IN ULONG SizeOfDED, OUT PDRVENABLEDATA DriveEnableData) { - EngDebugPrint("VGADDI", "DrvEnableDriver called...\n", 0); +/* EngDebugPrint("VGADDI", "DrvEnableDriver called...\n", 0); */ vgaPreCalc(); @@ -110,10 +228,10 @@ DrvDisableDriver(VOID) // IN LPWSTR LogAddress // IN ULONG PatternCount number of patterns expected // OUT HSURF * SurfPatterns array to contain pattern handles -// IN ULONG CapsSize the size of the DevCaps object passed in -// OUT ULONG * DevCaps Device Capabilities object +// IN ULONG GDIInfoSize the size of the GDIInfo object passed in +// OUT GDIINFO * GDIInfo GDI Info object // IN ULONG DevInfoSize the size of the DevInfo object passed in -// OUT DEVINFO * DI Device Info object +// OUT DEVINFO * DevInfo Device Info object // IN LPWSTR DevDataFile ignore // IN LPWSTR DeviceName Device name // IN HANDLE Driver handle to KM driver @@ -125,10 +243,10 @@ DrvEnablePDEV(IN DEVMODEW *DM, IN LPWSTR LogAddress, IN ULONG PatternCount, OUT HSURF *SurfPatterns, - IN ULONG CapsSize, - OUT ULONG *DevCaps, + IN ULONG GDIInfoSize, + OUT GDIINFO *GDIInfo, IN ULONG DevInfoSize, - OUT DEVINFO *DI, + OUT DEVINFO *DevInfo, IN LPWSTR DevDataFile, IN LPWSTR DeviceName, IN HANDLE Driver) @@ -149,13 +267,21 @@ DrvEnablePDEV(IN DEVMODEW *DM, PDev->ptlExtent.y = 0; PDev->cExtent = 0; PDev->flCursor = CURSOR_DOWN; - // FIXME: fill out DevCaps - // FIXME: full out DevInfo - devinfoVGA.hpalDefault = EngCreatePalette(PAL_INDEXED, 16, (PULONG *)VGApalette.PaletteEntry, 0, 0, 0); -DPRINT("Palette from Driver: %u\n", devinfoVGA.hpalDefault); - *DI = devinfoVGA; -DPRINT("Palette from Driver 2: %u and DI is %08x\n", DI->hpalDefault, DI); + gaulCap.ulHorzRes = 640; + gaulCap.ulVertRes = 480; + if (sizeof(GDIINFO) < GDIInfoSize) + { + GDIInfoSize = sizeof(GDIINFO); + } + memcpy(GDIInfo, &gaulCap, GDIInfoSize); + + devinfoVGA.hpalDefault = EngCreatePalette(PAL_INDEXED, 16, (ULONG *) VGApalette.PaletteEntry, 0, 0, 0); + if (sizeof(DEVINFO) < DevInfoSize) + { + DevInfoSize = sizeof(DEVINFO); + } + memcpy(DevInfo, &devinfoVGA, DevInfoSize); return(PDev); } @@ -330,7 +456,7 @@ DrvEnableSurface(IN DHPDEV PDev) DHSURF dhsurf; HSURF hsurf; - DPRINT1("DrvEnableSurface() called\n"); + DPRINT("DrvEnableSurface() called\n"); // Initialize the VGA if (!VGAInitialized) @@ -341,7 +467,6 @@ DrvEnableSurface(IN DHPDEV PDev) } VGAInitialized = TRUE; } -CHECKPOINT1; // dhsurf is of type DEVSURF, which is the drivers specialized surface type dhsurf = (DHSURF)EngAllocMem(0, sizeof(DEVSURF), ALLOC_TAG); @@ -389,7 +514,7 @@ CHECKPOINT1; if (EngAssociateSurface(hsurf, ppdev->GDIDevHandle, HOOK_BITBLT | HOOK_PAINT | HOOK_LINETO | HOOK_COPYBITS | HOOK_TRANSPARENTBLT)) { - EngDebugPrint("VGADDI:", "Successfully associated surface\n", 0); +/* EngDebugPrint("VGADDI:", "Successfully associated surface\n", 0); */ ppdev->SurfHandle = hsurf; ppdev->AssociatedSurf = pdsurf;