ReactOS  0.4.14-dev-376-gaedba84
graphics.c File Reference
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "mfdrv/metafiledrv.h"
#include "wine/debug.h"
Include dependency graph for graphics.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (metafile)
 
BOOL MFDRV_MoveTo (PHYSDEV dev, INT x, INT y)
 
BOOL MFDRV_LineTo (PHYSDEV dev, INT x, INT y)
 
BOOL MFDRV_Arc (PHYSDEV dev, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend)
 
BOOL MFDRV_Pie (PHYSDEV dev, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend)
 
BOOL MFDRV_Chord (PHYSDEV dev, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend)
 
BOOL MFDRV_Ellipse (PHYSDEV dev, INT left, INT top, INT right, INT bottom)
 
BOOL MFDRV_Rectangle (PHYSDEV dev, INT left, INT top, INT right, INT bottom)
 
BOOL MFDRV_RoundRect (PHYSDEV dev, INT left, INT top, INT right, INT bottom, INT ell_width, INT ell_height)
 
COLORREF MFDRV_SetPixel (PHYSDEV dev, INT x, INT y, COLORREF color)
 
static BOOL MFDRV_MetaPoly (PHYSDEV dev, short func, POINTS *pt, short count)
 
BOOL MFDRV_Polyline (PHYSDEV dev, const POINT *pt, INT count)
 
BOOL MFDRV_Polygon (PHYSDEV dev, const POINT *pt, INT count)
 
BOOL MFDRV_PolyPolygon (PHYSDEV dev, const POINT *pt, const INT *counts, UINT polygons)
 
BOOL MFDRV_ExtFloodFill (PHYSDEV dev, INT x, INT y, COLORREF color, UINT fillType)
 
static INT16 MFDRV_CreateRegion (PHYSDEV dev, HRGN hrgn)
 
BOOL MFDRV_PaintRgn (PHYSDEV dev, HRGN hrgn)
 
BOOL MFDRV_InvertRgn (PHYSDEV dev, HRGN hrgn)
 
BOOL MFDRV_FillRgn (PHYSDEV dev, HRGN hrgn, HBRUSH hbrush)
 
BOOL MFDRV_FrameRgn (PHYSDEV dev, HRGN hrgn, HBRUSH hbrush, INT x, INT y)
 
INT MFDRV_ExtSelectClipRgn (PHYSDEV dev, HRGN hrgn, INT mode)
 
BOOL MFDRV_PolyBezier (PHYSDEV dev, const POINT *pts, DWORD count)
 
BOOL MFDRV_PolyBezierTo (PHYSDEV dev, const POINT *pts, DWORD count)
 

Function Documentation

◆ MFDRV_Arc()

BOOL MFDRV_Arc ( PHYSDEV  dev,
INT  left,
INT  top,
INT  right,
INT  bottom,
INT  xstart,
INT  ystart,
INT  xend,
INT  yend 
)

Definition at line 53 of file graphics.c.

55 {
57  xstart, ystart, xend, yend);
58 }
BOOL MFDRV_MetaParam8(PHYSDEV dev, short func, short param1, short param2, short param3, short param4, short param5, short param6, short param7, short param8)
Definition: init.c:609
GLint GLint bottom
Definition: glext.h:7726
GLint left
Definition: glext.h:7726
GLdouble GLdouble right
Definition: glext.h:10859
#define META_ARC
Definition: wingdi.h:232
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859

◆ MFDRV_Chord()

BOOL MFDRV_Chord ( PHYSDEV  dev,
INT  left,
INT  top,
INT  right,
INT  bottom,
INT  xstart,
INT  ystart,
INT  xend,
INT  yend 
)

Definition at line 75 of file graphics.c.

77 {
79  xstart, ystart, xend, yend);
80 }
BOOL MFDRV_MetaParam8(PHYSDEV dev, short func, short param1, short param2, short param3, short param4, short param5, short param6, short param7, short param8)
Definition: init.c:609
GLint GLint bottom
Definition: glext.h:7726
GLint left
Definition: glext.h:7726
GLdouble GLdouble right
Definition: glext.h:10859
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
#define META_CHORD
Definition: wingdi.h:256

◆ MFDRV_CreateRegion()

static INT16 MFDRV_CreateRegion ( PHYSDEV  dev,
HRGN  hrgn 
)
static

Definition at line 257 of file graphics.c.

258 {
259  DWORD len;
260  METARECORD *mr;
261  RGNDATA *rgndata;
262  RECT *pCurRect, *pEndRect;
263  WORD Bands = 0, MaxBands = 0;
264  WORD *Param, *StartBand;
265  BOOL ret;
266 
267  if (!(len = GetRegionData( hrgn, 0, NULL ))) return -1;
268  if( !(rgndata = HeapAlloc( GetProcessHeap(), 0, len )) ) {
269  WARN("Can't alloc rgndata buffer\n");
270  return -1;
271  }
272  GetRegionData( hrgn, len, rgndata );
273 
274  /* Overestimate of length:
275  * Assume every rect is a separate band -> 6 WORDs per rect
276  */
277  len = sizeof(METARECORD) + 20 + (rgndata->rdh.nCount * 12);
278  if( !(mr = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, len )) ) {
279  WARN("Can't alloc METARECORD buffer\n");
280  HeapFree( GetProcessHeap(), 0, rgndata );
281  return -1;
282  }
283 
284  Param = mr->rdParm + 11;
285  StartBand = NULL;
286 
287  pEndRect = (RECT *)rgndata->Buffer + rgndata->rdh.nCount;
288  for(pCurRect = (RECT *)rgndata->Buffer; pCurRect < pEndRect; pCurRect++)
289  {
290  if( StartBand && pCurRect->top == *(StartBand + 1) )
291  {
292  *Param++ = pCurRect->left;
293  *Param++ = pCurRect->right;
294  }
295  else
296  {
297  if(StartBand)
298  {
299  *StartBand = Param - StartBand - 3;
300  *Param++ = *StartBand;
301  if(*StartBand > MaxBands)
302  MaxBands = *StartBand;
303  Bands++;
304  }
305  StartBand = Param++;
306  *Param++ = pCurRect->top;
307  *Param++ = pCurRect->bottom;
308  *Param++ = pCurRect->left;
309  *Param++ = pCurRect->right;
310  }
311  }
312 
313  if (StartBand)
314  {
315  *StartBand = Param - StartBand - 3;
316  *Param++ = *StartBand;
317  if(*StartBand > MaxBands)
318  MaxBands = *StartBand;
319  Bands++;
320  }
321 
322  mr->rdParm[0] = 0;
323  mr->rdParm[1] = 6;
324  mr->rdParm[2] = 0x2f6;
325  mr->rdParm[3] = 0;
326  mr->rdParm[4] = (Param - &mr->rdFunction) * sizeof(WORD);
327  mr->rdParm[5] = Bands;
328  mr->rdParm[6] = MaxBands;
329  mr->rdParm[7] = rgndata->rdh.rcBound.left;
330  mr->rdParm[8] = rgndata->rdh.rcBound.top;
331  mr->rdParm[9] = rgndata->rdh.rcBound.right;
332  mr->rdParm[10] = rgndata->rdh.rcBound.bottom;
334  mr->rdSize = Param - (WORD *)mr;
335  ret = MFDRV_WriteRecord( dev, mr, mr->rdSize * 2 );
336  HeapFree( GetProcessHeap(), 0, mr );
337  HeapFree( GetProcessHeap(), 0, rgndata );
338  if(!ret)
339  {
340  WARN("MFDRV_WriteRecord failed\n");
341  return -1;
342  }
343  return MFDRV_AddHandle( dev, hrgn );
344 }
UINT MFDRV_AddHandle(PHYSDEV dev, HGDIOBJ obj) DECLSPEC_HIDDEN
Definition: objects.c:39
#define WARN(fmt,...)
Definition: debug.h:111
LONG top
Definition: windef.h:292
char Buffer[1]
Definition: axextend.idl:395
WORD rdFunction
Definition: wingdi.h:2341
LONG left
Definition: windef.h:291
struct tagMETARECORD METARECORD
LONG right
Definition: windef.h:293
DWORD rdSize
Definition: wingdi.h:2340
#define META_CREATEREGION
Definition: wingdi.h:277
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
static HRGN hrgn
Definition: win.c:55
GLenum GLsizei len
Definition: glext.h:6722
WORD rdParm[1]
Definition: wingdi.h:2342
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
RGNDATAHEADER rdh
Definition: axextend.idl:394
BOOL MFDRV_WriteRecord(PHYSDEV dev, METARECORD *mr, DWORD rlen)
Definition: init.c:475
LONG bottom
Definition: windef.h:294
DWORD WINAPI GetRegionData(_In_ HRGN hrgn, _In_ DWORD nCount, _Out_writes_bytes_to_opt_(nCount, return) LPRGNDATA lpRgnData)
#define HeapFree(x, y, z)
Definition: compat.h:402

Referenced by MFDRV_ExtSelectClipRgn(), MFDRV_FillRgn(), MFDRV_FrameRgn(), MFDRV_InvertRgn(), and MFDRV_PaintRgn().

◆ MFDRV_Ellipse()

BOOL MFDRV_Ellipse ( PHYSDEV  dev,
INT  left,
INT  top,
INT  right,
INT  bottom 
)

Definition at line 85 of file graphics.c.

86 {
88 }
GLint GLint bottom
Definition: glext.h:7726
GLint left
Definition: glext.h:7726
GLdouble GLdouble right
Definition: glext.h:10859
#define META_ELLIPSE
Definition: wingdi.h:233
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
BOOL MFDRV_MetaParam4(PHYSDEV dev, short func, short param1, short param2, short param3, short param4)
Definition: init.c:566

◆ MFDRV_ExtFloodFill()

BOOL MFDRV_ExtFloodFill ( PHYSDEV  dev,
INT  x,
INT  y,
COLORREF  color,
UINT  fillType 
)

Definition at line 244 of file graphics.c.

245 {
247  LOWORD(color));
248 }
#define META_FLOODFILL
Definition: wingdi.h:234
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLuint color
Definition: glext.h:6243
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
#define HIWORD(l)
Definition: typedefs.h:246
BOOL MFDRV_MetaParam4(PHYSDEV dev, short func, short param1, short param2, short param3, short param4)
Definition: init.c:566
#define LOWORD(l)
Definition: pedump.c:82

◆ MFDRV_ExtSelectClipRgn()

INT MFDRV_ExtSelectClipRgn ( PHYSDEV  dev,
HRGN  hrgn,
INT  mode 
)

Definition at line 407 of file graphics.c.

408 {
409  INT16 iRgn;
410  INT ret;
411 
412  if (mode != RGN_COPY) return ERROR;
413  if (!hrgn) return NULLREGION;
414  iRgn = MFDRV_CreateRegion( dev, hrgn );
415  if(iRgn == -1) return ERROR;
418  MFDRV_RemoveHandle( dev, iRgn );
419  return ret;
420 }
static INT16 MFDRV_CreateRegion(PHYSDEV dev, HRGN hrgn)
Definition: graphics.c:257
#define ERROR(name)
Definition: error_private.h:53
#define NULLREGION
Definition: wingdi.h:360
int32_t INT
Definition: typedefs.h:56
BOOL MFDRV_MetaParam1(PHYSDEV dev, short func, short param1)
Definition: init.c:532
BOOL MFDRV_RemoveHandle(PHYSDEV dev, UINT index) DECLSPEC_HIDDEN
Definition: objects.c:64
int ret
static HRGN hrgn
Definition: win.c:55
GLenum mode
Definition: glext.h:6217
#define RGN_COPY
Definition: wingdi.h:356
#define META_DELETEOBJECT
Definition: wingdi.h:271
#define META_SELECTOBJECT
Definition: wingdi.h:254
signed short INT16

◆ MFDRV_FillRgn()

BOOL MFDRV_FillRgn ( PHYSDEV  dev,
HRGN  hrgn,
HBRUSH  hbrush 
)

Definition at line 376 of file graphics.c.

377 {
378  INT16 iRgn, iBrush;
379  iRgn = MFDRV_CreateRegion( dev, hrgn );
380  if(iRgn == -1)
381  return FALSE;
382  iBrush = MFDRV_CreateBrushIndirect( dev, hbrush );
383  if(!iBrush)
384  return FALSE;
385  return MFDRV_MetaParam2( dev, META_FILLREGION, iRgn, iBrush );
386 }
static INT16 MFDRV_CreateRegion(PHYSDEV dev, HRGN hrgn)
Definition: graphics.c:257
static HBRUSH hbrush
INT16 MFDRV_CreateBrushIndirect(PHYSDEV dev, HBRUSH hBrush) DECLSPEC_HIDDEN
Definition: objects.c:149
#define META_FILLREGION
Definition: wingdi.h:249
static HRGN hrgn
Definition: win.c:55
BOOL MFDRV_MetaParam2(PHYSDEV dev, short func, short param1, short param2)
Definition: init.c:548
signed short INT16

◆ MFDRV_FrameRgn()

BOOL MFDRV_FrameRgn ( PHYSDEV  dev,
HRGN  hrgn,
HBRUSH  hbrush,
INT  x,
INT  y 
)

Definition at line 391 of file graphics.c.

392 {
393  INT16 iRgn, iBrush;
394  iRgn = MFDRV_CreateRegion( dev, hrgn );
395  if(iRgn == -1)
396  return FALSE;
397  iBrush = MFDRV_CreateBrushIndirect( dev, hbrush );
398  if(!iBrush)
399  return FALSE;
400  return MFDRV_MetaParam4( dev, META_FRAMEREGION, iRgn, iBrush, x, y );
401 }
static INT16 MFDRV_CreateRegion(PHYSDEV dev, HRGN hrgn)
Definition: graphics.c:257
static HBRUSH hbrush
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
INT16 MFDRV_CreateBrushIndirect(PHYSDEV dev, HBRUSH hBrush) DECLSPEC_HIDDEN
Definition: objects.c:149
#define META_FRAMEREGION
Definition: wingdi.h:250
static HRGN hrgn
Definition: win.c:55
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
BOOL MFDRV_MetaParam4(PHYSDEV dev, short func, short param1, short param2, short param3, short param4)
Definition: init.c:566
signed short INT16

◆ MFDRV_InvertRgn()

BOOL MFDRV_InvertRgn ( PHYSDEV  dev,
HRGN  hrgn 
)

Definition at line 363 of file graphics.c.

364 {
365  INT16 index;
367  if(index == -1)
368  return FALSE;
370 }
static INT16 MFDRV_CreateRegion(PHYSDEV dev, HRGN hrgn)
Definition: graphics.c:257
#define META_INVERTREGION
Definition: wingdi.h:251
BOOL MFDRV_MetaParam1(PHYSDEV dev, short func, short param1)
Definition: init.c:532
GLuint index
Definition: glext.h:6031
#define index(s, c)
Definition: various.h:29
static HRGN hrgn
Definition: win.c:55
signed short INT16

◆ MFDRV_LineTo()

BOOL MFDRV_LineTo ( PHYSDEV  dev,
INT  x,
INT  y 
)

Definition at line 44 of file graphics.c.

45 {
46  return MFDRV_MetaParam2(dev, META_LINETO, x, y);
47 }
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define META_LINETO
Definition: wingdi.h:228
BOOL MFDRV_MetaParam2(PHYSDEV dev, short func, short param1, short param2)
Definition: init.c:548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548

◆ MFDRV_MetaPoly()

static BOOL MFDRV_MetaPoly ( PHYSDEV  dev,
short  func,
POINTS pt,
short  count 
)
static

Definition at line 121 of file graphics.c.

122 {
123  BOOL ret;
124  DWORD len;
125  METARECORD *mr;
126 
127  len = sizeof(METARECORD) + (count * 4);
128  if (!(mr = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, len )))
129  return FALSE;
130 
131  mr->rdSize = len / 2;
132  mr->rdFunction = func;
133  *(mr->rdParm) = count;
134  memcpy(mr->rdParm + 1, pt, count * 4);
135  ret = MFDRV_WriteRecord( dev, mr, mr->rdSize * 2);
136  HeapFree( GetProcessHeap(), 0, mr);
137  return ret;
138 }
GLenum func
Definition: glext.h:6028
#define pt(x, y)
Definition: drawing.c:79
GLuint GLuint GLsizei count
Definition: gl.h:1545
WORD rdFunction
Definition: wingdi.h:2341
struct tagMETARECORD METARECORD
DWORD rdSize
Definition: wingdi.h:2340
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
WORD rdParm[1]
Definition: wingdi.h:2342
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
BOOL MFDRV_WriteRecord(PHYSDEV dev, METARECORD *mr, DWORD rlen)
Definition: init.c:475
#define HeapFree(x, y, z)
Definition: compat.h:402

Referenced by MFDRV_Polygon(), and MFDRV_Polyline().

◆ MFDRV_MoveTo()

BOOL MFDRV_MoveTo ( PHYSDEV  dev,
INT  x,
INT  y 
)

Definition at line 36 of file graphics.c.

37 {
39 }
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define META_MOVETO
Definition: wingdi.h:229
BOOL MFDRV_MetaParam2(PHYSDEV dev, short func, short param1, short param2)
Definition: init.c:548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548

◆ MFDRV_PaintRgn()

BOOL MFDRV_PaintRgn ( PHYSDEV  dev,
HRGN  hrgn 
)

Definition at line 350 of file graphics.c.

351 {
352  INT16 index;
354  if(index == -1)
355  return FALSE;
357 }
static INT16 MFDRV_CreateRegion(PHYSDEV dev, HRGN hrgn)
Definition: graphics.c:257
#define META_PAINTREGION
Definition: wingdi.h:252
BOOL MFDRV_MetaParam1(PHYSDEV dev, short func, short param1)
Definition: init.c:532
GLuint index
Definition: glext.h:6031
#define index(s, c)
Definition: various.h:29
static HRGN hrgn
Definition: win.c:55
signed short INT16

◆ MFDRV_Pie()

BOOL MFDRV_Pie ( PHYSDEV  dev,
INT  left,
INT  top,
INT  right,
INT  bottom,
INT  xstart,
INT  ystart,
INT  xend,
INT  yend 
)

Definition at line 64 of file graphics.c.

66 {
68  xstart, ystart, xend, yend);
69 }
BOOL MFDRV_MetaParam8(PHYSDEV dev, short func, short param1, short param2, short param3, short param4, short param5, short param6, short param7, short param8)
Definition: init.c:609
GLint GLint bottom
Definition: glext.h:7726
GLint left
Definition: glext.h:7726
GLdouble GLdouble right
Definition: glext.h:10859
#define META_PIE
Definition: wingdi.h:235
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859

◆ MFDRV_PolyBezier()

BOOL MFDRV_PolyBezier ( PHYSDEV  dev,
const POINT pts,
DWORD  count 
)

Definition at line 428 of file graphics.c.

429 {
430  return FALSE;
431 }

◆ MFDRV_PolyBezierTo()

BOOL MFDRV_PolyBezierTo ( PHYSDEV  dev,
const POINT pts,
DWORD  count 
)

Definition at line 438 of file graphics.c.

439 {
440  return FALSE;
441 }

◆ MFDRV_Polygon()

BOOL MFDRV_Polygon ( PHYSDEV  dev,
const POINT pt,
INT  count 
)

Definition at line 167 of file graphics.c.

168 {
169  int i;
170  POINTS *pts;
171  BOOL ret;
172 
173  pts = HeapAlloc( GetProcessHeap(), 0, sizeof(POINTS)*count );
174  if(!pts) return FALSE;
175  for (i=count;i--;)
176  {
177  pts[i].x = pt[i].x;
178  pts[i].y = pt[i].y;
179  }
181 
182  HeapFree( GetProcessHeap(), 0, pts );
183  return ret;
184 }
#define pt(x, y)
Definition: drawing.c:79
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
SHORT x
Definition: windef.h:327
#define META_POLYGON
Definition: wingdi.h:245
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
int ret
SHORT y
Definition: windef.h:328
static BOOL MFDRV_MetaPoly(PHYSDEV dev, short func, POINTS *pt, short count)
Definition: graphics.c:121
#define HeapFree(x, y, z)
Definition: compat.h:402

◆ MFDRV_Polyline()

BOOL MFDRV_Polyline ( PHYSDEV  dev,
const POINT pt,
INT  count 
)

Definition at line 144 of file graphics.c.

145 {
146  int i;
147  POINTS *pts;
148  BOOL ret;
149 
150  pts = HeapAlloc( GetProcessHeap(), 0, sizeof(POINTS)*count );
151  if(!pts) return FALSE;
152  for (i=count;i--;)
153  {
154  pts[i].x = pt[i].x;
155  pts[i].y = pt[i].y;
156  }
158 
159  HeapFree( GetProcessHeap(), 0, pts );
160  return ret;
161 }
#define pt(x, y)
Definition: drawing.c:79
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
SHORT x
Definition: windef.h:327
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define META_POLYLINE
Definition: wingdi.h:246
int ret
SHORT y
Definition: windef.h:328
static BOOL MFDRV_MetaPoly(PHYSDEV dev, short func, POINTS *pt, short count)
Definition: graphics.c:121
#define HeapFree(x, y, z)
Definition: compat.h:402

◆ MFDRV_PolyPolygon()

BOOL MFDRV_PolyPolygon ( PHYSDEV  dev,
const POINT pt,
const INT counts,
UINT  polygons 
)

Definition at line 190 of file graphics.c.

191 {
192  BOOL ret;
193  DWORD len;
194  METARECORD *mr;
195  unsigned int i,j;
196  POINTS *pts;
197  INT16 totalpoint16 = 0;
198  INT16 * pointcounts;
199 
200  for (i=0;i<polygons;i++) {
201  totalpoint16 += counts[i];
202  }
203 
204  /* allocate space for all points */
205  pts=HeapAlloc( GetProcessHeap(), 0, sizeof(POINTS) * totalpoint16 );
206  pointcounts = HeapAlloc( GetProcessHeap(), 0, sizeof(INT16) * totalpoint16 );
207 
208  /* copy point counts */
209  for (i=0;i<polygons;i++) {
210  pointcounts[i] = counts[i];
211  }
212 
213  /* convert all points */
214  for (j = totalpoint16; j--;){
215  pts[j].x = pt[j].x;
216  pts[j].y = pt[j].y;
217  }
218 
219  len = sizeof(METARECORD) + sizeof(WORD) + polygons*sizeof(INT16) + totalpoint16*sizeof(*pts);
220 
221  if (!(mr = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, len ))) {
222  HeapFree( GetProcessHeap(), 0, pts );
223  HeapFree( GetProcessHeap(), 0, pointcounts );
224  return FALSE;
225  }
226 
227  mr->rdSize = len /2;
229  *(mr->rdParm) = polygons;
230  memcpy(mr->rdParm + 1, pointcounts, polygons*sizeof(INT16));
231  memcpy(mr->rdParm + 1+polygons, pts , totalpoint16*sizeof(*pts));
232  ret = MFDRV_WriteRecord( dev, mr, mr->rdSize * 2);
233 
234  HeapFree( GetProcessHeap(), 0, pts );
235  HeapFree( GetProcessHeap(), 0, pointcounts );
236  HeapFree( GetProcessHeap(), 0, mr);
237  return ret;
238 }
#define pt(x, y)
Definition: drawing.c:79
WORD rdFunction
Definition: wingdi.h:2341
struct tagMETARECORD METARECORD
DWORD rdSize
Definition: wingdi.h:2340
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
SHORT x
Definition: windef.h:327
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
#define META_POLYPOLYGON
Definition: wingdi.h:264
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
WORD rdParm[1]
Definition: wingdi.h:2342
SHORT y
Definition: windef.h:328
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
BOOL MFDRV_WriteRecord(PHYSDEV dev, METARECORD *mr, DWORD rlen)
Definition: init.c:475
#define HeapFree(x, y, z)
Definition: compat.h:402
signed short INT16

◆ MFDRV_Rectangle()

BOOL MFDRV_Rectangle ( PHYSDEV  dev,
INT  left,
INT  top,
INT  right,
INT  bottom 
)

Definition at line 93 of file graphics.c.

94 {
96 }
#define META_RECTANGLE
Definition: wingdi.h:236
GLint GLint bottom
Definition: glext.h:7726
GLint left
Definition: glext.h:7726
GLdouble GLdouble right
Definition: glext.h:10859
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
BOOL MFDRV_MetaParam4(PHYSDEV dev, short func, short param1, short param2, short param3, short param4)
Definition: init.c:566

◆ MFDRV_RoundRect()

BOOL MFDRV_RoundRect ( PHYSDEV  dev,
INT  left,
INT  top,
INT  right,
INT  bottom,
INT  ell_width,
INT  ell_height 
)

Definition at line 101 of file graphics.c.

103 {
105  ell_width, ell_height);
106 }
GLint GLint bottom
Definition: glext.h:7726
BOOL MFDRV_MetaParam6(PHYSDEV dev, short func, short param1, short param2, short param3, short param4, short param5, short param6)
Definition: init.c:587
GLint left
Definition: glext.h:7726
GLdouble GLdouble right
Definition: glext.h:10859
#define META_ROUNDRECT
Definition: wingdi.h:237
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859

◆ MFDRV_SetPixel()

COLORREF MFDRV_SetPixel ( PHYSDEV  dev,
INT  x,
INT  y,
COLORREF  color 
)

Definition at line 111 of file graphics.c.

112 {
114  LOWORD(color));
115 }
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLuint color
Definition: glext.h:6243
#define META_SETPIXEL
Definition: wingdi.h:240
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
#define HIWORD(l)
Definition: typedefs.h:246
BOOL MFDRV_MetaParam4(PHYSDEV dev, short func, short param1, short param2, short param3, short param4)
Definition: init.c:566
#define LOWORD(l)
Definition: pedump.c:82

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( metafile  )