2000-03-18 18:39:44 +00:00
|
|
|
/*
|
2003-05-18 17:16:18 +00:00
|
|
|
* ReactOS kernel
|
|
|
|
* Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
2009-10-27 10:34:16 +00:00
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
2003-05-18 17:16:18 +00:00
|
|
|
*/
|
2009-06-29 18:47:29 +00:00
|
|
|
/*
|
2000-03-18 18:39:44 +00:00
|
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
|
|
* PROJECT: ReactOS kernel
|
|
|
|
* PURPOSE: GDI Internal Objects
|
2015-11-10 17:41:55 +00:00
|
|
|
* FILE: win32ss/gdi/eng/engobjects.h
|
2000-03-18 18:39:44 +00:00
|
|
|
* PROGRAMER: Jason Filby
|
|
|
|
* REVISION HISTORY:
|
|
|
|
* 21/8/1999: Created
|
|
|
|
*/
|
2010-02-26 11:43:19 +00:00
|
|
|
|
|
|
|
#pragma once
|
2000-03-18 18:39:44 +00:00
|
|
|
|
2002-08-04 09:55:11 +00:00
|
|
|
/* Structure of internal gdi objects that win32k manages for ddi engine:
|
|
|
|
|---------------------------------|
|
|
|
|
| Public part |
|
|
|
|
| accessed from engine |
|
|
|
|
|---------------------------------|
|
|
|
|
| Private part |
|
|
|
|
| managed by gdi |
|
|
|
|
|_________________________________|
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
2017-07-13 01:59:41 +00:00
|
|
|
typedef struct _RWNDOBJ {
|
|
|
|
PVOID pvConsumer;
|
|
|
|
RECTL rclClient;
|
|
|
|
SURFOBJ *psoOwner;
|
|
|
|
} RWNDOBJ;
|
|
|
|
|
2022-11-12 11:27:50 +00:00
|
|
|
/*
|
|
|
|
* XCLIPOBJ structure --- EXtended CLip and Window Region Objects.
|
|
|
|
* See also: https://reactos.org/wiki/Techwiki:Win32k/XCLIPOBJ
|
|
|
|
*/
|
2015-03-25 22:32:22 +00:00
|
|
|
#ifdef __cplusplus
|
2017-07-13 01:59:41 +00:00
|
|
|
typedef struct _XCLIPOBJ : _CLIPOBJ, _RWNDOBJ
|
2015-03-25 22:32:22 +00:00
|
|
|
{
|
|
|
|
#else
|
2010-01-25 01:33:01 +00:00
|
|
|
typedef struct _XCLIPOBJ
|
|
|
|
{
|
2017-07-13 01:59:41 +00:00
|
|
|
CLIPOBJ;
|
|
|
|
RWNDOBJ;
|
2015-03-25 22:32:22 +00:00
|
|
|
#endif
|
2017-07-13 01:59:41 +00:00
|
|
|
struct _REGION *pClipRgn; /* prgnRao_ or (prgnVis_ if (prgnRao_ == z)) */
|
|
|
|
//
|
2010-01-25 01:33:01 +00:00
|
|
|
RECTL rclClipRgn;
|
2017-07-13 01:59:41 +00:00
|
|
|
//PVOID pscanClipRgn; /* Ptr to regions rect buffer based on iDirection. */
|
|
|
|
RECTL* Rects;
|
2010-01-25 01:33:01 +00:00
|
|
|
DWORD cScan;
|
|
|
|
DWORD reserved;
|
2017-07-13 01:59:41 +00:00
|
|
|
ULONG EnumPos;
|
2010-01-25 01:33:01 +00:00
|
|
|
LONG lscnSize;
|
2017-07-13 01:59:41 +00:00
|
|
|
ULONG EnumMax;
|
2010-01-25 01:33:01 +00:00
|
|
|
ULONG iDirection;
|
2017-07-13 01:59:41 +00:00
|
|
|
ULONG iType;
|
2010-01-25 01:33:01 +00:00
|
|
|
DWORD reserved1;
|
|
|
|
LONG lUpDown;
|
|
|
|
DWORD reserved2;
|
2017-07-13 01:59:41 +00:00
|
|
|
BOOL bAll;
|
|
|
|
//
|
|
|
|
DWORD RectCount; /* count/mode based on # of rect in regions scan. */
|
2010-01-25 01:33:01 +00:00
|
|
|
PVOID pDDA; /* Pointer to a large drawing structure. */
|
|
|
|
} XCLIPOBJ, *PXCLIPOBJ;
|
2017-07-13 01:59:41 +00:00
|
|
|
|
2010-01-25 01:33:01 +00:00
|
|
|
/*
|
2017-07-13 01:59:41 +00:00
|
|
|
EngCreateClip allocates XCLIPOBJ and REGION, pco->co.pClipRgn = &pco->ro.
|
2010-01-25 01:33:01 +00:00
|
|
|
{
|
|
|
|
XCLIPOBJ co;
|
2017-07-13 01:59:41 +00:00
|
|
|
REGION ro;
|
2010-01-25 01:33:01 +00:00
|
|
|
}
|
|
|
|
*/
|
2017-07-13 01:59:41 +00:00
|
|
|
|
|
|
|
extern XCLIPOBJ gxcoTrivial;
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
typedef struct _EWNDOBJ : _XCLIPOBJ
|
|
|
|
{
|
|
|
|
#else
|
|
|
|
typedef struct _EWNDOBJ
|
|
|
|
{
|
|
|
|
XCLIPOBJ;
|
|
|
|
#endif
|
|
|
|
/* Extended WNDOBJ part */
|
2014-07-26 15:41:08 +00:00
|
|
|
HWND Hwnd;
|
|
|
|
WNDOBJCHANGEPROC ChangeProc;
|
|
|
|
FLONG Flags;
|
|
|
|
int PixelFormat;
|
2017-07-13 01:59:41 +00:00
|
|
|
} EWNDOBJ, *PEWNDOBJ;
|
2012-07-31 18:53:17 +00:00
|
|
|
|
|
|
|
|
2002-08-04 09:55:11 +00:00
|
|
|
/*ei What is this for? */
|
2000-03-18 18:39:44 +00:00
|
|
|
typedef struct _DRVFUNCTIONSGDI {
|
2001-03-31 15:35:08 +00:00
|
|
|
HDEV hdev;
|
|
|
|
DRVFN Functions[INDEX_LAST];
|
2000-03-18 18:39:44 +00:00
|
|
|
} DRVFUNCTIONSGDI;
|
|
|
|
|
|
|
|
typedef struct _FLOATGDI {
|
2004-12-12 01:40:39 +00:00
|
|
|
ULONG Dummy;
|
2000-03-18 18:39:44 +00:00
|
|
|
} FLOATGDI;
|
|
|
|
|
2017-04-14 18:22:57 +00:00
|
|
|
typedef struct _SHARED_MEM {
|
|
|
|
PVOID Buffer;
|
|
|
|
ULONG BufferSize;
|
|
|
|
BOOL IsMapping;
|
|
|
|
LONG RefCount;
|
|
|
|
} SHARED_MEM, *PSHARED_MEM;
|
|
|
|
|
2017-05-20 18:59:00 +00:00
|
|
|
typedef struct _SHARED_FACE_CACHE {
|
|
|
|
UINT OutlineRequiredSize;
|
|
|
|
UNICODE_STRING FontFamily;
|
|
|
|
UNICODE_STRING FullName;
|
|
|
|
} SHARED_FACE_CACHE, *PSHARED_FACE_CACHE;
|
|
|
|
|
2017-02-25 10:10:25 +00:00
|
|
|
typedef struct _SHARED_FACE {
|
2017-04-14 18:22:57 +00:00
|
|
|
FT_Face Face;
|
|
|
|
LONG RefCount;
|
|
|
|
PSHARED_MEM Memory;
|
2017-05-20 18:59:00 +00:00
|
|
|
SHARED_FACE_CACHE EnglishUS;
|
|
|
|
SHARED_FACE_CACHE UserLanguage;
|
2017-02-25 10:10:25 +00:00
|
|
|
} SHARED_FACE, *PSHARED_FACE;
|
|
|
|
|
2000-03-18 18:39:44 +00:00
|
|
|
typedef struct _FONTGDI {
|
2017-02-25 10:10:25 +00:00
|
|
|
FONTOBJ FontObj;
|
|
|
|
ULONG iUnique;
|
|
|
|
FLONG flType;
|
|
|
|
|
|
|
|
DHPDEV dhpdev;
|
|
|
|
PSHARED_FACE SharedFace;
|
|
|
|
|
|
|
|
LONG lMaxNegA;
|
|
|
|
LONG lMaxNegC;
|
|
|
|
LONG lMinWidthD;
|
|
|
|
|
|
|
|
LPWSTR Filename;
|
|
|
|
BYTE RequestUnderline;
|
|
|
|
BYTE RequestStrikeOut;
|
|
|
|
BYTE RequestItalic;
|
|
|
|
LONG RequestWeight;
|
|
|
|
BYTE OriginalItalic;
|
|
|
|
LONG OriginalWeight;
|
|
|
|
BYTE CharSet;
|
2018-07-28 14:24:26 +00:00
|
|
|
|
|
|
|
/* Precomputed font metrics (supplements FreeType metrics) */
|
|
|
|
LONG tmHeight;
|
|
|
|
LONG tmAscent;
|
|
|
|
LONG tmDescent;
|
|
|
|
LONG tmInternalLeading;
|
2018-08-12 13:12:13 +00:00
|
|
|
LONG Magic;
|
2022-11-08 07:31:10 +00:00
|
|
|
LONG lfHeight;
|
2022-11-30 23:54:39 +00:00
|
|
|
LONG lfWidth;
|
2001-05-02 12:33:42 +00:00
|
|
|
} FONTGDI, *PFONTGDI;
|
2000-03-18 18:39:44 +00:00
|
|
|
|
2018-08-12 13:12:13 +00:00
|
|
|
/* The initialized 'Magic' value in FONTGDI */
|
|
|
|
#define FONTGDI_MAGIC 0x20110311
|
|
|
|
|
2000-03-18 18:39:44 +00:00
|
|
|
typedef struct _PATHGDI {
|
2004-12-12 01:40:39 +00:00
|
|
|
PATHOBJ PathObj;
|
2000-03-18 18:39:44 +00:00
|
|
|
} PATHGDI;
|
|
|
|
|
|
|
|
typedef struct _XFORMGDI {
|
2004-12-12 01:40:39 +00:00
|
|
|
ULONG Dummy;
|
2002-08-04 09:55:11 +00:00
|
|
|
/* XFORMOBJ has no public members */
|
2000-03-18 18:39:44 +00:00
|
|
|
} XFORMGDI;
|
|
|
|
|
2011-12-14 04:07:06 +00:00
|
|
|
/* As the *OBJ structures are located at the beginning of the *GDI structures
|
2004-12-12 01:40:39 +00:00
|
|
|
we can simply typecast the pointer */
|
|
|
|
#define ObjToGDI(ClipObj, Type) (Type##GDI *)(ClipObj)
|
|
|
|
#define GDIToObj(ClipGDI, Type) (Type##OBJ *)(ClipGDI)
|