mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 05:37:44 +00:00
More code for win32k.sys
svn path=/trunk/; revision=522
This commit is contained in:
parent
662c77c00c
commit
9377d51b1a
131
reactos/subsys/win32k/dc/dc.c
Normal file
131
reactos/subsys/win32k/dc/dc.c
Normal file
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
* DC.C - Device context functions
|
||||
*
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <ddk/ntddk.h>
|
||||
#include <win32k/dc.h>
|
||||
|
||||
// --------------------------------------------------------- File Statics
|
||||
|
||||
/* FIXME: these should probably be placed in an object in the future */
|
||||
HANDLE gDriverHandle = NULL;
|
||||
DRVENABLEDATA gDED;
|
||||
typedef struct _DC
|
||||
{
|
||||
DHPDEV PDev;
|
||||
DEVMODEW DMW;
|
||||
HSURF FillPatternSurfaces[HS_DDI_MAX];
|
||||
GDIINFO GDIInfo;
|
||||
DEVINFO DevInfo;
|
||||
HSURF Surface = NULL;
|
||||
} DC, *PDC;
|
||||
|
||||
DC gSurfaceDC;
|
||||
|
||||
// ----------------------------------------------------- Public Functions
|
||||
|
||||
BOOL W32kCancelDC(HDC DC)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS W32kCreateDC(HDC *DC,
|
||||
LPCWSTR Driver,
|
||||
LPCWSTR Device,
|
||||
CONST PDEVMODE InitData)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
UNICODE_STRING DeviceName, ErrorMsg;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
|
||||
/* Is this a request for a printer DC? */
|
||||
if (wcsicmp(Driver, L"DISPLAY"))
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/* Initialize driver pair here on first call for display DC. */
|
||||
if (gDriverHandle == NULL)
|
||||
{
|
||||
/* FIXME: should get the device name from the registry */
|
||||
RtlInitUnicodeString(&DeviceName, L"\\Device\\DISPLAY");
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&DeviceName,
|
||||
0,
|
||||
NULL,
|
||||
NULL);
|
||||
Status = ZwOpenFile(&gDriverHandle,
|
||||
FILE_ALL_ACCESS,
|
||||
&ObjectAttributes,
|
||||
NULL,
|
||||
0,
|
||||
FILE_SYNCHRONOUS_IO_ALERT);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint("Failed to open display device\n");
|
||||
DbgGetErrorText(Status, &ErrorMsg, 0xf);
|
||||
DbgPrint("%W\n", &ErrorMsg);
|
||||
RtlFreeUnicodeString(&ErrorMsg);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Call DrvEnableDriver */
|
||||
RtlZeroMemory(&gDED, sizeof(gDED));
|
||||
if (!DrvEnableDriver(DDI_DRIVER_VERSION, sizeof(gDED), &gDED))
|
||||
{
|
||||
DbgPrint("DrvEnableDriver failed\n");
|
||||
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Allocate a phyical device handle from the driver */
|
||||
if (gSurfaceDC.PDev == NULL)
|
||||
{
|
||||
RtlZeroMemory(&gSurfaceDC, sizeof(gSurfaceDC));
|
||||
/* FIXME: get mode selection information from somewhere */
|
||||
if (Device != NULL)
|
||||
{
|
||||
wcsncpy(gDMW.dmDeviceName, Device, DMMAXDEVICENAME);
|
||||
}
|
||||
gSurfaceDC.DMW.dmSize = sizeof(gSurfaceDC.DMW);
|
||||
gSurfaceDC.DMW.dmFields = 0x000fc000;
|
||||
gSurfaceDC.DMW.dmLogPixels = 96;
|
||||
gSurfaceDC.DMW.BitsPerPel = 8;
|
||||
gSurfaceDC.DMW.dmPelsWidth = 640;
|
||||
gSurfaceDC.DMW.dmPelsHeight = 480;
|
||||
gSurfaceDC.DMW.dmDisplayFlags = 0;
|
||||
gSurfaceDC.DMW.dmDisplayFrequency = 0;
|
||||
gSurfaceDC.PDev = DrvEnablePDEV(&gSurfaceDC.DMW,
|
||||
L"",
|
||||
HS_DDI_MAX,
|
||||
gSurfaceDC.FillPatternSurfaces,
|
||||
sizeof(gSurfaceDC.GDIInfo),
|
||||
&gSurfaceDC.GDIInfo,
|
||||
sizeof(gSurfaceDC.DevInfo),
|
||||
&gSurfaceDC.DevInfo,
|
||||
NULL,
|
||||
L"",
|
||||
gDriverHandle);
|
||||
if (gSurfaceDC.PDev == NULL)
|
||||
{
|
||||
DbgPrint("DrvEnablePDEV failed\n");
|
||||
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
DrvCompletePDEV(gSurfaceDC.PDev, gSurfaceDC);
|
||||
gSurfaceDC.Surface = DrvEnableSurface(gSurfaceDC.PDev);
|
||||
}
|
||||
*DC = &SurfaceDC;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
NTSTATUS W32kDeleteDC(HDC DC)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
|
@ -5,9 +5,294 @@
|
|||
#include <windows.h>
|
||||
#include <ddk/ntddk.h>
|
||||
|
||||
WINBOOL STDCALL DllMain(HANDLE hInst,
|
||||
ULONG ul_reason_for_call,
|
||||
LPVOID lpReserved)
|
||||
#include "../include/vectors.h"
|
||||
|
||||
PFN Win32kVectors[] =
|
||||
{
|
||||
(PFN) W32kAbortDoc,
|
||||
(PFN) W32kAbortPath,
|
||||
(PFN) W32kAddFontResource,
|
||||
(PFN) W32kAngleArc,
|
||||
(PFN) W32kAnimatePalette,
|
||||
(PFN) W32kArc,
|
||||
(PFN) W32kArcTo,
|
||||
(PFN) W32kBeginPath,
|
||||
(PFN) W32kBitBlt,
|
||||
(PFN) W32kCancelDC,
|
||||
(PFN) W32kCheckColorsInGamut,
|
||||
(PFN) W32kChoosePixelFormat,
|
||||
(PFN) W32kChord,
|
||||
(PFN) W32kCloseEnhMetaFile,
|
||||
(PFN) W32kCloseFigure,
|
||||
(PFN) W32kCloseMetaFile,
|
||||
(PFN) W32kColorMatchToTarget,
|
||||
(PFN) W32kCombineRgn,
|
||||
(PFN) W32kCombineTransform,
|
||||
(PFN) W32kCopyEnhMetaFile,
|
||||
(PFN) W32kCopyMetaFile,
|
||||
(PFN) W32kCreateBitmap,
|
||||
(PFN) W32kCreateBitmapIndirect,
|
||||
(PFN) W32kCreateBrushIndirect,
|
||||
(PFN) W32kCreateColorSpace,
|
||||
(PFN) W32kCreateCompatibleBitmap,
|
||||
(PFN) W32kCreateCompatibleDC,
|
||||
(PFN) W32kCreateDC,
|
||||
(PFN) W32kCreateDIBPatternBrush,
|
||||
(PFN) W32kCreateDIBPatternBrushPt,
|
||||
(PFN) W32kCreateDIBSection,
|
||||
(PFN) W32kCreateDIBitmap,
|
||||
(PFN) W32kCreateDiscardableBitmap,
|
||||
(PFN) W32kCreateEllipticRgn,
|
||||
(PFN) W32kCreateEllipticRgnIndirect,
|
||||
(PFN) W32kCreateEnhMetaFile,
|
||||
(PFN) W32kCreateFontIndirect,
|
||||
(PFN) W32kCreateFont,
|
||||
(PFN) W32kCreateHalftonePalette,
|
||||
(PFN) W32kCreateHatchBrush,
|
||||
(PFN) W32kCreateIC,
|
||||
(PFN) W32kCreateMetaFile,
|
||||
(PFN) W32kCreatePalette,
|
||||
(PFN) W32kCreatePatternBrush,
|
||||
(PFN) W32kCreatePen,
|
||||
(PFN) W32kCreatePenIndirect,
|
||||
(PFN) W32kCreatePolyPolygonRgn,
|
||||
(PFN) W32kCreatePolygonRgn,
|
||||
(PFN) W32kCreateRectRgn,
|
||||
(PFN) W32kCreateRectRgnIndirect,
|
||||
(PFN) W32kCreateRoundRectRgn,
|
||||
(PFN) W32kCreateScalableFontResource,
|
||||
(PFN) W32kCreateSolidBrush,
|
||||
(PFN) W32kDPtoLP,
|
||||
(PFN) W32kDeleteColorSpace,
|
||||
(PFN) W32kDeleteDC,
|
||||
(PFN) W32kDeleteEnhMetaFile,
|
||||
(PFN) W32kDeleteMetaFile,
|
||||
(PFN) W32kDeleteObject,
|
||||
(PFN) W32kDescribePixelFormat,
|
||||
(PFN) W32kDeviceCapabilitiesEx,
|
||||
(PFN) W32kDrawEscape,
|
||||
(PFN) W32kEllipse,
|
||||
(PFN) W32kEndDoc,
|
||||
(PFN) W32kEndPage,
|
||||
(PFN) W32kEndPath,
|
||||
(PFN) W32kEnumEnhMetaFile,
|
||||
(PFN) W32kEnumFontFamiliesEx,
|
||||
(PFN) W32kEnumFontFamilies,
|
||||
(PFN) W32kEnumFonts,
|
||||
(PFN) W32kEnumICMProfiles,
|
||||
(PFN) W32kEnumMetaFile,
|
||||
(PFN) W32kEnumObjects,
|
||||
(PFN) W32kEqualRgn,
|
||||
(PFN) W32kEscape,
|
||||
(PFN) W32kExcludeClipRect,
|
||||
(PFN) W32kExtCreatePen,
|
||||
(PFN) W32kExtCreateRegion,
|
||||
(PFN) W32kExtEscape,
|
||||
(PFN) W32kExtFloodFill,
|
||||
(PFN) W32kExtSelectClipRgn,
|
||||
(PFN) W32kExtTextOut,
|
||||
(PFN) W32kFillPath,
|
||||
(PFN) W32kFillRgn,
|
||||
(PFN) W32kFixBrushOrgEx,
|
||||
(PFN) W32kFlattenPath,
|
||||
(PFN) W32kFloodFill,
|
||||
(PFN) W32kFrameRgn,
|
||||
(PFN) W32kGdiComment,
|
||||
(PFN) W32kGdiFlush,
|
||||
(PFN) W32kGdiGetBatchLimit,
|
||||
(PFN) W32kGdiPlayDCScript,
|
||||
(PFN) W32kGdiPlayJournal,
|
||||
(PFN) W32kGdiPlayScript,
|
||||
(PFN) W32kGdiSetBatchLimit,
|
||||
(PFN) W32kGetArcDirection,
|
||||
(PFN) W32kGetAspectRatioFilterEx,
|
||||
(PFN) W32kGetBitmapBits,
|
||||
(PFN) W32kGetBitmapDimensionEx,
|
||||
(PFN) W32kGetBkColor,
|
||||
(PFN) W32kGetBkMode,
|
||||
(PFN) W32kGetBoundsRect,
|
||||
(PFN) W32kGetBrushOrgEx,
|
||||
(PFN) W32kGetCharABCWidthsFloat,
|
||||
(PFN) W32kGetCharABCWidths,
|
||||
(PFN) W32kGetCharWidth32,
|
||||
(PFN) W32kGetCharWidthFloat,
|
||||
(PFN) W32kGetCharWidth,
|
||||
(PFN) W32kGetCharacterPlacement,
|
||||
(PFN) W32kGetClipBox,
|
||||
(PFN) W32kGetClipRgn,
|
||||
(PFN) W32kGetColorAdjustment,
|
||||
(PFN) W32kGetColorSpace,
|
||||
(PFN) W32kGetCurrentObject,
|
||||
(PFN) W32kGetCurrentPositionEx,
|
||||
(PFN) W32kGetDCOrgEx,
|
||||
(PFN) W32kGetDIBColorTable,
|
||||
(PFN) W32kGetDIBits,
|
||||
(PFN) W32kGetDeviceCaps,
|
||||
(PFN) W32kGetDeviceGammaRamp,
|
||||
(PFN) W32kGetEnhMetaFileBits,
|
||||
(PFN) W32kGetEnhMetaFileDescription,
|
||||
(PFN) W32kGetEnhMetaFileHeader,
|
||||
(PFN) W32kGetEnhMetaFilePaletteEntries,
|
||||
(PFN) W32kGetEnhMetaFilePixelFormat,
|
||||
(PFN) W32kGetEnhMetaFile,
|
||||
(PFN) W32kGetFontLanguageInfo,
|
||||
(PFN) W32kGetFontResourceInfo,
|
||||
(PFN) W32kGetGlyphOutline,
|
||||
(PFN) W32kGetGlyphOutlineWow,
|
||||
(PFN) W32kGetGraphicsMode,
|
||||
(PFN) W32kGetICMProfile,
|
||||
(PFN) W32kGetKerningPairs,
|
||||
(PFN) W32kGetLogColorSpace,
|
||||
(PFN) W32kGetMapMode,
|
||||
(PFN) W32kGetMetaFileBitsEx,
|
||||
(PFN) W32kGetMetaFile,
|
||||
(PFN) W32kGetMetaRgn,
|
||||
(PFN) W32kGetMiterLimit,
|
||||
(PFN) W32kGetNearestColor,
|
||||
(PFN) W32kGetNearestPaletteIndex,
|
||||
(PFN) W32kGetObjectType,
|
||||
(PFN) W32kGetObject,
|
||||
(PFN) W32kGetOutlineTextMetrics,
|
||||
(PFN) W32kGetPaletteEntries,
|
||||
(PFN) W32kGetPath,
|
||||
(PFN) W32kGetPixel,
|
||||
(PFN) W32kGetPixelFormat,
|
||||
(PFN) W32kGetPolyFillMode,
|
||||
(PFN) W32kGetROP2,
|
||||
(PFN) W32kGetRandomRgn,
|
||||
(PFN) W32kGetRasterizerCaps,
|
||||
(PFN) W32kGetRelAbs,
|
||||
(PFN) W32kGetRgnBox,
|
||||
(PFN) W32kGetStockObject,
|
||||
(PFN) W32kGetStretchBltMode,
|
||||
(PFN) W32kGetSystemPaletteEntries,
|
||||
(PFN) W32kGetSystemPaletteUse,
|
||||
(PFN) W32kGetTextAlign,
|
||||
(PFN) W32kGetTextCharset,
|
||||
(PFN) W32kGetTextCharsetInfo,
|
||||
(PFN) W32kGetTextColor,
|
||||
(PFN) W32kGetTextExtentExPoint,
|
||||
(PFN) W32kGetTextExtentPoint32,
|
||||
(PFN) W32kGetTextExtentPoint,
|
||||
(PFN) W32kGetTextFace,
|
||||
(PFN) W32kGetTextMetrics,
|
||||
(PFN) W32kGetViewportExtEx,
|
||||
(PFN) W32kGetViewportOrgEx,
|
||||
(PFN) W32kGetWinMetaFileBits,
|
||||
(PFN) W32kGetWindowExtEx,
|
||||
(PFN) W32kGetWindowOrgEx,
|
||||
(PFN) W32kGetWorldTransform,
|
||||
(PFN) W32kIntersectClipRect,
|
||||
(PFN) W32kInvertRgn,
|
||||
(PFN) W32kLPtoDP,
|
||||
(PFN) W32kLineTo,
|
||||
(PFN) W32kMaskBlt,
|
||||
(PFN) W32kModifyWorldTransform,
|
||||
(PFN) W32kMoveToEx,
|
||||
(PFN) W32kOffsetClipRgn,
|
||||
(PFN) W32kOffsetRgn,
|
||||
(PFN) W32kOffsetViewportOrgEx,
|
||||
(PFN) W32kOffsetWindowOrgEx,
|
||||
(PFN) W32kPaintRgn,
|
||||
(PFN) W32kPatBlt,
|
||||
(PFN) W32kPathToRegion,
|
||||
(PFN) W32kPie,
|
||||
(PFN) W32kPlayEnhMetaFile,
|
||||
(PFN) W32kPlayEnhMetaFileRecord,
|
||||
(PFN) W32kPlayMetaFile,
|
||||
(PFN) W32kPlayMetaFileRecord,
|
||||
(PFN) W32kPlgBlt,
|
||||
(PFN) W32kPolyBezier,
|
||||
(PFN) W32kPolyBezierTo,
|
||||
(PFN) W32kPolyDraw,
|
||||
(PFN) W32kPolyPolygon,
|
||||
(PFN) W32kPolyPolyline,
|
||||
(PFN) W32kPolyTextOut,
|
||||
(PFN) W32kPolygon,
|
||||
(PFN) W32kPolyline,
|
||||
(PFN) W32kPolylineTo,
|
||||
(PFN) W32kPtInRegion,
|
||||
(PFN) W32kPtVisible,
|
||||
(PFN) W32kRealizePalette,
|
||||
(PFN) W32kRectInRegion,
|
||||
(PFN) W32kRectVisible,
|
||||
(PFN) W32kRectangle,
|
||||
(PFN) W32kRemoveFontResource,
|
||||
(PFN) W32kResetDC,
|
||||
(PFN) W32kResizePalette,
|
||||
(PFN) W32kRestoreDC,
|
||||
(PFN) W32kRoundRect,
|
||||
(PFN) W32kSaveDC,
|
||||
(PFN) W32kScaleViewportExtEx,
|
||||
(PFN) W32kScaleWindowExtEx,
|
||||
(PFN) W32kSelectBrushLocal,
|
||||
(PFN) W32kSelectClipPath,
|
||||
(PFN) W32kSelectClipRgn,
|
||||
(PFN) W32kSelectFontLocal,
|
||||
(PFN) W32kSelectObject,
|
||||
(PFN) W32kSelectPalette,
|
||||
(PFN) W32kSetAbortProc,
|
||||
(PFN) W32kSetArcDirection,
|
||||
(PFN) W32kSetBitmapBits,
|
||||
(PFN) W32kSetBitmapDimensionEx,
|
||||
(PFN) W32kSetBkColor,
|
||||
(PFN) W32kSetBkMode,
|
||||
(PFN) W32kSetBoundsRect,
|
||||
(PFN) W32kSetBrushOrgEx,
|
||||
(PFN) W32kSetColorAdjustment,
|
||||
(PFN) W32kSetColorSpace,
|
||||
(PFN) W32kSetDIBColorTable,
|
||||
(PFN) W32kSetDIBits,
|
||||
(PFN) W32kSetDIBitsToDevice,
|
||||
(PFN) W32kSetDeviceGammaRamp,
|
||||
(PFN) W32kSetEnhMetaFileBits,
|
||||
(PFN) W32kSetFontEnumeration,
|
||||
(PFN) W32kSetGraphicsMode,
|
||||
(PFN) W32kSetICMMode,
|
||||
(PFN) W32kSetICMProfile,
|
||||
(PFN) W32kSetMapMode,
|
||||
(PFN) W32kSetMapperFlags,
|
||||
(PFN) W32kSetMetaFileBitsEx,
|
||||
(PFN) W32kSetMetaRgn,
|
||||
(PFN) W32kSetMiterLimit,
|
||||
(PFN) W32kSetPaletteEntries,
|
||||
(PFN) W32kSetPixel,
|
||||
(PFN) W32kSetPixelFormat,
|
||||
(PFN) W32kSetPixelV,
|
||||
(PFN) W32kSetPolyFillMode,
|
||||
(PFN) W32kSetROP2,
|
||||
(PFN) W32kSetRectRgn,
|
||||
(PFN) W32kSetRelAbs,
|
||||
(PFN) W32kSetStretchBltMode,
|
||||
(PFN) W32kSetSystemPaletteUse,
|
||||
(PFN) W32kSetTextAlign,
|
||||
(PFN) W32kSetTextColor,
|
||||
(PFN) W32kSetTextJustification,
|
||||
(PFN) W32kSetViewportExtEx,
|
||||
(PFN) W32kSetViewportOrgEx,
|
||||
(PFN) W32kSetWinMetaFileBits,
|
||||
(PFN) W32kSetWindowExtEx,
|
||||
(PFN) W32kSetWindowOrgEx,
|
||||
(PFN) W32kSetWorldTransform,
|
||||
(PFN) W32kStartDoc,
|
||||
(PFN) W32kStartPage,
|
||||
(PFN) W32kStretchBlt,
|
||||
(PFN) W32kStretchDIBits,
|
||||
(PFN) W32kStrokeAndFillPath,
|
||||
(PFN) W32kStrokePath,
|
||||
(PFN) W32kSwapBuffers,
|
||||
(PFN) W32kTextOut,
|
||||
(PFN) W32kTranslateCharsetInfo,
|
||||
(PFN) W32kUnrealizeObject,
|
||||
(PFN) W32kUpdateColors,
|
||||
(PFN) W32kUpdateICMRegKey,
|
||||
(PFN) W32kWidenPath,
|
||||
(PFN) W32kgdiPlaySpoolStream
|
||||
};
|
||||
|
||||
WINBOOL STDCALL DllMain(HANDLE hInst,
|
||||
ULONG ul_reason_for_call,
|
||||
LPVOID lpReserved)
|
||||
{
|
||||
DbgPrint("win32k:DllMain(hInst %x, ul_reason_for_call %d)\n",
|
||||
hInst,
|
||||
|
@ -16,11 +301,8 @@ WINBOOL STDCALL DllMain(HANDLE hInst,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
#if 0
|
||||
HDC GDICreateDC(LPCWSTR Driver,
|
||||
LPCWSTR Device,
|
||||
CONST PDEVMODE InitData)
|
||||
PVOID W32kGetVectors(VOID)
|
||||
{
|
||||
/* %%% initialize device driver here on first call for display DC. */
|
||||
return Win32kVectors;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: win32k.def,v 1.2 1999/05/22 23:55:56 rex Exp $
|
||||
; $Id: win32k.def,v 1.3 1999/05/27 23:08:13 rex Exp $
|
||||
;
|
||||
; win32k.def
|
||||
;
|
||||
|
@ -6,6 +6,7 @@
|
|||
;
|
||||
LIBRARY win32k
|
||||
EXPORTS
|
||||
W32kGetVectors
|
||||
BRUSHOBJ_pvAllocRbrush
|
||||
BRUSHOBJ_pvGetRbrush
|
||||
BRUSHOBJ_ulGetBrushColor
|
||||
|
|
Loading…
Reference in a new issue