27#include "wine/unicode.h"
57#define GDIP_CONTID_STEP 64
59#define GDIP_GET_NEW_CONTID_FOR(pGpGraphics) \
60 (UINT)(InterlockedExchangeAdd(&g_priv_contid,GDIP_CONTID_STEP))
67#define ANCHOR_WIDTH (2.0)
91 ERR(
"Bad point type\n");
122 argb =
line->startcolor;
132 FIXME(
"unhandled brush type %d\n", brush->
bt);
146 bmih.
biSize =
sizeof(bmih);
157 const char *hatch_data;
161 for (
y = 0;
y < 8;
y++)
163 for (
x = 0;
x < 8;
x++)
165 if (hatch_data[
y] & (0x80 >>
x))
176 for (
y = 0;
y < 64;
y++)
212 FIXME(
"unhandled brush type %d\n", brush->
bt);
249 INT save_state,
i, numdashes;
286 TRACE(
"dashes are: ");
287 for(
i = 0;
i < numdashes;
i++){
289 TRACE(
"%d, ", dash_array[
i]);
291 TRACE(
"\n and the pen style is %x\n", pen->
style);
295 numdashes, dash_array);
332 TRACE(
"alpha blending not supported by device, fallback to StretchBlt\n");
334 StretchBlt(graphics->
hdc, dst_x, dst_y, dst_width, dst_height,
335 hdc, src_x, src_y, src_width, src_height,
SRCCOPY);
347 hdc, src_x, src_y, src_width, src_height, bf);
398 for (
y=0;
y<src_height;
y++)
400 for (
x=0;
x<src_width;
x++)
402 ARGB dst_color, src_color;
403 src_color = ((
ARGB*)(
src + src_stride *
y))[
x];
405 if (!(src_color & 0xff000000))
442 (
void**)&temp_bits,
NULL, 0);
447 memcpy(temp_bits,
src, src_width * src_height * 4);
450 4 * src_width,
src, src_stride);
454 hdc, 0, 0, src_width, src_height);
472 HRGN
hrgn, visible_rgn;
496 rgndata = heap_alloc_zero(
size);
510 &
src[(rects[
i].
left - dst_x) * 4 + (rects[
i].
top - dst_y) * src_stride],
523 ERR(
"This should not be used for metafiles; fix caller\n");
544 src_height, src_stride,
fmt);
563 UINT pos = position * 255.0f + 0.5f;
565 (((((
start >> 24) ) << 8) + (((
end >> 24) ) - ((
start >> 24) )) *
pos) >> 8) << 24 |
566 (((((
start >> 16) & 0xff) << 8) + (((
end >> 16) & 0xff) - ((
start >> 16) & 0xff)) *
pos) >> 8) << 16 |
567 (((((
start >> 8) & 0xff) << 8) + (((
end >> 8) & 0xff) - ((
start >> 8) & 0xff)) *
pos) >> 8) << 8 |
568 (((((
start ) & 0xff) << 8) + (((
end ) & 0xff) - ((
start ) & 0xff)) *
pos) >> 8);
573 INT start_a, end_a, final_a;
576 pos = (
INT)(position * 255.0f + 0.5f);
578 start_a = ((
start >> 24) & 0xff) * (
pos ^ 0xff);
579 end_a = ((
end >> 24) & 0xff) *
pos;
581 final_a = start_a + end_a;
583 if (final_a < 0xff)
return 0;
585 return (final_a / 0xff) << 24 |
586 ((((
start >> 16) & 0xff) * start_a + (((
end >> 16) & 0xff) * end_a)) / final_a) << 16 |
587 ((((
start >> 8) & 0xff) * start_a + (((
end >> 8) & 0xff) * end_a)) / final_a) << 8 |
588 (((
start & 0xff) * start_a + ((
end & 0xff) * end_a)) / final_a);
599 position =
fmodf(position, 1.0f);
600 if (position < 0.0f) position += 1.0f;
604 position =
fmodf(position, 2.0f);
605 if (position < 0.0f) position += 2.0f;
606 if (position > 1.0f) position = 2.0f - position;
614 REAL left_blendpos, left_blendfac, right_blendpos, right_blendfac;
626 range = right_blendpos - left_blendpos;
627 blendfac = (left_blendfac * (right_blendpos - position) +
628 right_blendfac * (position - left_blendpos)) /
range;
636 ARGB left_blendcolor, right_blendcolor;
637 REAL left_blendpos, right_blendpos;
648 blendfac = (blendfac - left_blendpos) / (right_blendpos - left_blendpos);
649 return blend_colors(left_blendcolor, right_blendcolor, blendfac);
674 unsigned char a,
r,
g,
b;
695 return (
a << 24) | (
r << 16) | (
g << 8) |
b;
700 unsigned char r,
g,
b;
706 return (
r ==
g) && (
g ==
b);
725 BYTE min_blue, min_green, min_red;
726 BYTE max_blue, max_green, max_red;
736 min_blue =
key->low&0xff;
737 min_green = (
key->low>>8)&0xff;
738 min_red = (
key->low>>16)&0xff;
740 max_blue =
key->high&0xff;
741 max_green = (
key->high>>8)&0xff;
742 max_red = (
key->high>>16)&0xff;
750 blue = *src_color&0xff;
751 green = (*src_color>>8)&0xff;
752 red = (*src_color>>16)&0xff;
753 if (
blue >= min_blue &&
green >= min_green &&
red >= min_red &&
754 blue <= max_blue &&
green <= max_green &&
red <= max_red)
755 *src_color = 0x00000000;
779 if (*src_color ==
table->colormap[
i].oldColor.Argb)
781 *src_color =
table->colormap[
i].newColor.Argb;
793 int gray_matrix[5][5];
852 blue = *src_color&0xff;
853 green = (*src_color>>8)&0xff;
854 red = (*src_color>>16)&0xff;
861 *src_color = (*src_color & 0xff000000) | (
red << 16) | (
green << 8) |
blue;
876 switch (interpolation)
942 return attributes->outside_color;
973 if (x < src_rect->
X || y < src_rect->
Y ||
x >= src_rect->X + src_rect->Width ||
y >= src_rect->Y + src_rect->Height)
975 ERR(
"out of range pixel requested\n");
979 return ((
DWORD*)(
bits))[(
x - src_rect->X) + (
y - src_rect->Y) * src_rect->Width];
984 return f - (
int)
f > 0.0f ?
f + 1.0f :
f;
993 switch (interpolation)
997 FIXME(
"Unimplemented interpolation %i\n", interpolation);
1002 INT leftx, rightx, topy, bottomy;
1003 ARGB topleft, topright, bottomleft, bottomright;
1008 leftxf = (
REAL)leftx;
1014 if (leftx == rightx && topy == bottomy)
1016 leftx, topy, attributes);
1019 leftx, topy, attributes);
1021 rightx, topy, attributes);
1023 leftx, bottomy, attributes);
1025 rightx, bottomy, attributes);
1027 x_offset =
point->X - leftxf;
1036 switch (offset_mode)
1062 switch (interpolation)
1066 FIXME(
"Unimplemented interpolation %i\n", interpolation);
1071 INT leftx, rightx, topy, bottomy;
1072 ARGB topleft, topright, bottomleft, bottomright;
1077 leftxf = (
REAL)leftx;
1083 if (leftx == rightx && topy == bottomy)
1085 leftx, topy, attributes);
1088 leftx, topy, attributes);
1090 rightx, topy, attributes);
1092 leftx, bottomy, attributes);
1094 rightx, bottomy, attributes);
1096 x_offset =
point->X - leftxf;
1105 switch (offset_mode)
1127 return (p1->
X - p2->
X) * (p2->
Y -
y) / (p2->
Y - p1->
Y) + p2->
X;
1148 return ((hatch->
forecol & 0xff000000) == 0xff000000) &&
1149 ((hatch->
backcol & 0xff000000) == 0xff000000);
1204 HBRUSH gdibrush, old_brush;
1250 argb_pixels[
x +
y*cdwStride] =
fill->color;
1257 const char *hatch_data;
1268 hx = (
x + fill_area->
X) % 8;
1269 hy = (
y + fill_area->
Y) % 8;
1271 if ((hatch_data[7-hy] & (0x80 >> hx)) != 0)
1272 argb_pixels[
x +
y*cdwStride] =
fill->forecol;
1274 argb_pixels[
x +
y*cdwStride] =
fill->backcol;
1286 draw_points[0].
X = fill_area->
X;
1287 draw_points[0].
Y = fill_area->
Y;
1288 draw_points[1].
X = fill_area->
X+1;
1289 draw_points[1].
Y = fill_area->
Y;
1290 draw_points[2].
X = fill_area->
X;
1291 draw_points[2].
Y = fill_area->
Y+1;
1310 REAL x_delta = draw_points[1].
X - draw_points[0].
X;
1311 REAL y_delta = draw_points[2].
X - draw_points[0].
X;
1317 REAL pos = draw_points[0].
X +
x * x_delta +
y * y_delta;
1338 FIXME(
"metafile texture brushes not implemented\n");
1345 src_area.
X = src_area.
Y = 0;
1349 draw_points[0].
X = fill_area->
X;
1350 draw_points[0].
Y = fill_area->
Y;
1351 draw_points[1].
X = fill_area->
X+1;
1352 draw_points[1].
Y = fill_area->
Y;
1353 draw_points[2].
X = fill_area->
X;
1354 draw_points[2].
Y = fill_area->
Y+1;
1374 if (!
fill->bitmap_bits)
1381 lockeddata.
Stride = src_stride;
1406 REAL x_dx = draw_points[1].
X - draw_points[0].
X;
1407 REAL x_dy = draw_points[1].
Y - draw_points[0].
Y;
1408 REAL y_dx = draw_points[2].
X - draw_points[0].
X;
1409 REAL y_dy = draw_points[2].
Y - draw_points[0].
Y;
1416 point.X = draw_points[0].
X +
x * x_dx +
y * y_dx;
1417 point.Y = draw_points[0].
Y +
y * x_dy +
y * y_dy;
1435 int i, figure_start=0;
1436 GpPointF start_point, end_point, center_point;
1438 REAL min_yf, max_yf, line1_xf, line2_xf;
1439 INT min_y, max_y, min_x, max_x;
1442 static BOOL transform_fixme_once;
1444 if (
fill->focus.X != 0.0 ||
fill->focus.Y != 0.0)
1448 FIXME(
"path gradient focus not implemented\n");
1455 FIXME(
"path gradient gamma correction not implemented\n");
1458 if (
fill->blendcount)
1462 FIXME(
"path gradient blend not implemented\n");
1465 if (
fill->pblendcount)
1469 FIXME(
"path gradient preset blend not implemented\n");
1472 if (!transform_fixme_once)
1478 FIXME(
"path gradient transform not implemented\n");
1479 transform_fixme_once =
TRUE;
1496 center_point =
fill->center;
1512 int start_center_line=0, end_center_line=0;
1514 REAL center_distance;
1515 ARGB start_color, end_color;
1525 start_color =
fill->surroundcolors[
min(
i,
fill->surroundcolorcount-1)];
1530 end_color =
fill->surroundcolors[
min(figure_start,
fill->surroundcolorcount-1)];
1535 end_color =
fill->surroundcolors[
min(
i+1,
fill->surroundcolorcount-1)];
1540 outer_color = start_color;
1542 min_yf = center_point.
Y;
1543 if (min_yf > start_point.
Y) min_yf = start_point.
Y;
1544 if (min_yf > end_point.
Y) min_yf = end_point.
Y;
1546 if (min_yf < fill_area->
Y)
1547 min_y = fill_area->
Y;
1551 max_yf = center_point.
Y;
1552 if (max_yf < start_point.
Y) max_yf = start_point.
Y;
1553 if (max_yf < end_point.
Y) max_yf = end_point.
Y;
1555 if (max_yf > fill_area->
Y + fill_area->
Height)
1556 max_y = fill_area->
Y + fill_area->
Height;
1560 dy = end_point.
Y - start_point.
Y;
1561 dx = end_point.
X - start_point.
X;
1564 center_distance =
dy * (start_point.
X - center_point.
X) +
1565 dx * (center_point.
Y - start_point.
Y);
1567 for (
y=min_y;
y<max_y;
y++)
1571 if (!seen_start && yf >= start_point.
Y)
1574 start_center_line ^= 1;
1576 if (!seen_end && yf >= end_point.
Y)
1579 end_center_line ^= 1;
1581 if (!seen_center && yf >= center_point.
Y)
1584 start_center_line ^= 1;
1585 end_center_line ^= 1;
1588 if (start_center_line)
1593 if (end_center_line)
1598 if (line1_xf < line2_xf)
1609 if (min_x < fill_area->
X)
1610 min_x = fill_area->
X;
1611 if (max_x > fill_area->
X + fill_area->
Width)
1612 max_x = fill_area->
X + fill_area->
Width;
1614 for (
x=min_x;
x<max_x;
x++)
1619 if (start_color != end_color)
1621 REAL blend_amount, pdy, pdx;
1622 pdy = yf - center_point.
Y;
1623 pdx = xf - center_point.
X;
1625 if (
fabs(pdx) <= 0.001 &&
fabs(pdy) <= 0.001)
1628 outer_color = start_color;
1632 blend_amount = ( (center_point.
Y - start_point.
Y) * pdx + (start_point.
X - center_point.
X) * pdy ) / (
dy * pdx -
dx * pdy );
1633 outer_color =
blend_colors(start_color, end_color, blend_amount);
1637 distance = (end_point.
Y - start_point.
Y) * (start_point.
X - xf) +
1638 (end_point.
X - start_point.
X) * (yf - start_point.
Y);
1642 argb_pixels[(
x-fill_area->
X) + (
y-fill_area->
Y)*cdwStride] =
1664 HBRUSH brush =
NULL;
1669 REAL theta, dsmall, dbig,
dx,
dy = 0.0;
1708 ptf[0].
X =
x2 - dsmall;
1709 ptf[1].
X =
x2 + dbig;
1711 ptf[0].
Y =
y2 - dbig;
1712 ptf[3].
Y =
y2 + dsmall;
1714 ptf[1].
Y =
y2 - dsmall;
1715 ptf[2].
Y =
y2 + dbig;
1717 ptf[3].
X =
x2 - dbig;
1718 ptf[2].
X =
x2 + dsmall;
1811 pt[2].y,
pt[3].x,
pt[3].y);
1826 custptf = heap_alloc_zero(
count *
sizeof(
PointF));
1827 custpt = heap_alloc_zero(
count *
sizeof(
POINT));
1830 if(!custptf || !custpt || !
tp)
1887 dx =
cos(theta) * dist;
1888 dy =
sin(theta) * dist;
1903 if(
dx == 0 &&
dy == 0)
1926 REAL percent = 0.00,
dx,
dy, origx, origy, diff = -1.0;
1927 INT i,
first = 0, second = 1, third = 2, fourth = 3;
1936 origx =
pt[fourth].X;
1937 origy =
pt[fourth].Y;
1951 dx =
pt[fourth].X - origx;
1952 dy =
pt[fourth].Y - origy;
1955 percent += 0.0005 * amt;
1973 if(!pti || !
tp || !ptcopy){
1982 ERR(
"Bad bezier points\n");
2024 ERR(
"Bad path last point\n");
2041 pt[
j - 1].X - (ptcopy[
j - 1].
X - ptcopy[
j].
X),
2042 pt[
j - 1].Y - (ptcopy[
j - 1].
Y - ptcopy[
j].
Y),
2043 pt[
j - 1].X,
pt[
j - 1].Y);
2049 &ptcopy[
j - 1].
X, &ptcopy[
j - 1].
Y,
2053 &ptcopy[
j - 1].
X, &ptcopy[
j - 1].
Y,
2062 ERR(
"Bad path points\n");
2130 (*container)->contid = graphics->contid + 1;
2131 (*container)->type =
type;
2133 (*container)->smoothing = graphics->smoothing;
2134 (*container)->compqual = graphics->compqual;
2135 (*container)->interpolation = graphics->interpolation;
2136 (*container)->compmode = graphics->compmode;
2137 (*container)->texthint = graphics->texthint;
2138 (*container)->scale = graphics->scale;
2139 (*container)->unit = graphics->unit;
2140 (*container)->textcontrast = graphics->textcontrast;
2141 (*container)->pixeloffset = graphics->pixeloffset;
2142 (*container)->origin_x = graphics->origin_x;
2143 (*container)->origin_y = graphics->origin_y;
2144 (*container)->worldtrans = graphics->worldtrans;
2168 if(sts !=
Ok)
return sts;
2173 graphics->
clip = newClip;
2198 if(graphics->
hwnd) {
2206 }
else if (graphics->
image){
2209 FIXME(
"need to convert from unit %i\n",
unit);
2255 min_point = max_point =
points[0];
2265 rect->X = min_point.
X;
2266 rect->Y = min_point.
Y;
2267 rect->Width = max_point.
X - min_point.
X;
2268 rect->Height = max_point.
Y - min_point.
Y;
2326 lf->
lfItalic =
font->otm.otmTextMetrics.tmItalic ? 1 : 0;
2345 HFONT unscaled_font;
2397 TRACE(
"(%p, %p)\n",
hdc, graphics);
2422 TRACE(
"(%p, %p, %p)\n",
hdc, hDevice, graphics);
2425 FIXME(
"Don't know how to handle parameter hDevice\n");
2430 if(graphics ==
NULL)
2433 *graphics = heap_alloc_zero(
sizeof(
GpGraphics));
2445 dib.dsBmih.biBitCount == 32 &&
dib.dsBmih.biCompression ==
BI_RGB)
2447 (*graphics)->alpha_hdc = 1;
2450 (*graphics)->hdc =
hdc;
2452 (*graphics)->owndc =
FALSE;
2459 (*graphics)->scale = 1.0;
2462 (*graphics)->busy =
FALSE;
2463 (*graphics)->textcontrast = 4;
2468 (*graphics)->contid = 0;
2476 (*graphics)->gdi_clip =
NULL;
2479 TRACE(
"<-- %p\n", *graphics);
2488 *graphics = heap_alloc_zero(
sizeof(
GpGraphics));
2499 (*graphics)->hdc =
NULL;
2500 (*graphics)->hwnd =
NULL;
2501 (*graphics)->owndc =
FALSE;
2502 (*graphics)->image =
image;
2505 (*graphics)->image_type =
image->type;
2512 (*graphics)->scale = 1.0;
2513 (*graphics)->xres =
image->xres;
2514 (*graphics)->yres =
image->yres;
2515 (*graphics)->busy =
FALSE;
2516 (*graphics)->textcontrast = 4;
2521 (*graphics)->contid = 0;
2524 TRACE(
"<-- %p\n", *graphics);
2544 (*graphics)->hwnd =
hwnd;
2545 (*graphics)->owndc =
TRUE;
2585 TRACE(
"(%p)\n", graphics);
2625 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f)\n", graphics, pen,
x,
y,
2628 if(!graphics || !pen ||
width <= 0 ||
height <= 0)
2648 TRACE(
"(%p, %p, %d, %d, %d, %d, %.2f, %.2f)\n", graphics, pen,
x,
y,
2659 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f)\n", graphics, pen,
x1,
y1,
2660 x2,
y2, x3, y3, x4, y4);
2662 if(!graphics || !pen)
2682 TRACE(
"(%p, %p, %d, %d, %d, %d, %d, %d, %d, %d)\n", graphics, pen,
x1,
y1,
2683 x2,
y2, x3, y3, x4, y4);
2858 if(!graphics || !pen)
2909 TRACE(
"(%p, %p, %p, %d, %d, %d, %.2f)\n", graphics, pen,
points,
count,
offset, numberOfSegments, tension);
2922 TRACE(
"(%p, %p, %p, %d, %d, %d, %.2f)\n", graphics, pen,
points,
count,
offset, numberOfSegments, tension);
2941 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics, pen,
x,
y,
width,
height);
2943 if(!graphics || !pen)
2963 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics, pen,
x,
y,
width,
height);
2973 TRACE(
"(%p, %p, %.2f, %.2f)\n", graphics,
image,
x,
y);
2975 if(!graphics || !
image)
3000 TRACE(
"(%p, %p, %f, %f, %f, %f, %f, %f, %d)\n", graphics,
image,
x,
y, srcx, srcy, srcwidth, srcheight, srcUnit);
3005 scale_x *= graphics->
xres /
image->xres;
3007 scale_y *= graphics->
yres /
image->yres;
3008 width = srcwidth * scale_x;
3009 height = srcheight * scale_y;
3051 if (
count != 3 || !dstpoints)
3054 ptf[0].
X = (
REAL)dstpoints[0].
X;
3055 ptf[0].
Y = (
REAL)dstpoints[0].
Y;
3056 ptf[1].
X = (
REAL)dstpoints[1].
X;
3057 ptf[1].
Y = (
REAL)dstpoints[1].
Y;
3058 ptf[2].
X = (
REAL)dstpoints[2].
X;
3059 ptf[2].
Y = (
REAL)dstpoints[2].
Y;
3065 unsigned int dataSize,
const unsigned char *pStr,
void *userdata)
3080 TRACE(
"(%p, %p, %p, %d, %f, %f, %f, %f, %d, %p, %p, %p)\n", graphics,
image,
points,
3081 count, srcx, srcy, srcwidth, srcheight, srcUnit, imageAttributes,
callback,
3097 srcUnit, imageAttributes,
callback, callbackData);
3106 srcx = srcx + srcwidth;
3107 srcwidth = -srcwidth;
3108 ptf[2].
X = ptf[2].
X + ptf[1].
X - ptf[0].
X;
3109 ptf[2].
Y = ptf[2].
Y + ptf[1].
Y - ptf[0].
Y;
3117 srcy = srcy + srcheight;
3118 srcheight = -srcheight;
3119 ptf[1].
X = ptf[1].
X + ptf[2].
X - ptf[0].
X;
3120 ptf[1].
Y = ptf[1].
Y + ptf[2].
Y - ptf[0].
Y;
3125 ptf[3].
X = ptf[2].
X + ptf[1].
X - ptf[0].
X;
3126 ptf[3].
Y = ptf[2].
Y + ptf[1].
Y - ptf[0].
Y;
3127 if (!srcwidth || !srcheight || (ptf[3].
X == ptf[0].
X && ptf[3].
Y == ptf[0].
Y))
3139 TRACE(
"src pixels: %f,%f %fx%f\n", srcx, srcy, srcwidth, srcheight);
3147 TRACE(
"graphics: %.2fx%.2f dpi, fmt %#x, scale %f, image: %.2fx%.2f dpi, fmt %#x, color %08x\n",
3151 imageAttributes ? imageAttributes->outside_color : 0);
3153 if (ptf[1].
Y != ptf[0].
Y || ptf[2].
X != ptf[0].
X ||
3154 ptf[1].
X - ptf[0].
X != srcwidth || ptf[2].
Y - ptf[0].
Y != srcheight ||
3155 srcx < 0 || srcy < 0 ||
3157 do_resampling =
TRUE;
3159 if (imageAttributes || graphics->
alpha_hdc || do_resampling ||
3161 use_software =
TRUE;
3168 int i,
x,
y, src_stride, dst_stride;
3171 LPBYTE src_data, dst_data, dst_dyn_data=
NULL;
3175 GpPointF dst_to_src_points[3] = {{0.0, 0.0}, {1.0, 0.0}, {0.0, 1.0}};
3176 REAL x_dx, x_dy, y_dx, y_dy;
3179 if (!imageAttributes)
3180 imageAttributes = &defaultImageAttributes;
3186 if (dst_area.
left > pti[
i].
x) dst_area.
left = pti[
i].
x;
3188 if (dst_area.
top > pti[
i].
y) dst_area.
top = pti[
i].
y;
3204 m11 = (ptf[1].
X - ptf[0].
X) / srcwidth;
3205 m21 = (ptf[2].
X - ptf[0].
X) / srcheight;
3206 mdx = ptf[0].
X -
m11 * srcx -
m21 * srcy;
3207 m12 = (ptf[1].
Y - ptf[0].
Y) / srcwidth;
3208 m22 = (ptf[2].
Y - ptf[0].
Y) / srcheight;
3209 mdy = ptf[0].
Y -
m12 * srcx -
m22 * srcy;
3219 bitmap, srcx, srcy, srcwidth, srcheight, &src_area);
3224 src_area.
X = srcx + dst_area.
left - pti[0].
x;
3225 src_area.
Y = srcy + dst_area.
top - pti[0].
y;
3232 src_data = heap_alloc_zero(
sizeof(
ARGB) * src_area.
Width * src_area.
Height);
3235 src_stride =
sizeof(
ARGB) * src_area.
Width;
3240 lockeddata.
Stride = src_stride;
3241 lockeddata.
Scan0 = src_data;
3244 else if (imageAttributes != &defaultImageAttributes)
3267 REAL delta_xx, delta_xy, delta_yx, delta_yy;
3270 dst_data = dst_dyn_data = heap_alloc_zero(
sizeof(
ARGB) * (dst_area.
right - dst_area.
left) * (dst_area.
bottom - dst_area.
top));
3277 dst_stride =
sizeof(
ARGB) * (dst_area.
right - dst_area.
left);
3281 x_dx = dst_to_src_points[1].
X - dst_to_src_points[0].
X;
3282 x_dy = dst_to_src_points[1].
Y - dst_to_src_points[0].
Y;
3283 y_dx = dst_to_src_points[2].
X - dst_to_src_points[0].
X;
3284 y_dy = dst_to_src_points[2].
Y - dst_to_src_points[0].
Y;
3286 delta_yy = dst_area.
top * y_dy;
3287 delta_yx = dst_area.
top * y_dx;
3291 delta_xx = dst_area.
left * x_dx;
3292 delta_xy = dst_area.
left * x_dy;
3299 src_pointf.
X = dst_to_src_points[0].
X + delta_xx + delta_yx;
3300 src_pointf.
Y = dst_to_src_points[0].
Y + delta_xy + delta_yy;
3302 dst_color = (
ARGB*)(dst_data + dst_stride * (
y - dst_area.
top) +
sizeof(
ARGB) * (
x - dst_area.
left));
3304 if (src_pointf.
X >= srcx && src_pointf.
X < srcx + srcwidth && src_pointf.
Y >= srcy && src_pointf.
Y < srcy+srcheight)
3308 imageAttributes, interpolation, offset_mode);
3311 imageAttributes, interpolation, offset_mode);
3326 dst_data = src_data;
3327 dst_stride = src_stride;
3333 dst_data, dst_area.
right - dst_area.
left, dst_area.
bottom - dst_area.
top, dst_stride,
3379 (
void**)&temp_bits,
NULL, 0);
3402 temp_hdc = (
hdc == 0);
3426 hdc, srcx, srcy, srcwidth, srcheight);
3431 hdc, srcx, srcy, srcwidth, srcheight,
SRCCOPY);
3454 rc.
Width = srcwidth;
3462 WARN(
"GpImage with nothing we can draw (metafile in wrong state?)\n");
3477 TRACE(
"(%p, %p, %p, %d, %d, %d, %d, %d, %d, %p, %p, %p)\n", graphics,
image,
points,
count,
3478 srcx, srcy, srcwidth, srcheight, srcUnit, imageAttributes,
callback,
3490 (
REAL)srcwidth, (
REAL)srcheight, srcUnit, imageAttributes,
3498 VOID * callbackData)
3502 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %d, %p, %p, %p)\n",
3503 graphics,
image, dstx, dsty, dstwidth, dstheight, srcx, srcy,
3504 srcwidth, srcheight, srcUnit, imageattr,
callback, callbackData);
3508 points[1].X = dstx + dstwidth;
3511 points[2].Y = dsty + dstheight;
3514 srcwidth, srcheight, srcUnit, imageattr,
callback, callbackData);
3521 VOID * callbackData)
3525 TRACE(
"(%p, %p, %d, %d, %d, %d, %d, %d, %d, %d, %d, %p, %p, %p)\n",
3526 graphics,
image, dstx, dsty, dstwidth, dstheight, srcx, srcy,
3527 srcwidth, srcheight, srcUnit, imageAttributes,
callback, callbackData);
3531 points[1].X = dstx + dstwidth;
3534 points[2].Y = dsty + dstheight;
3537 srcwidth, srcheight, srcUnit, imageAttributes,
callback, callbackData);
3547 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics,
image,
x,
y,
width,
height);
3549 if(!graphics || !
image)
3564 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics,
image,
x,
y,
width,
height);
3574 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics, pen,
x1,
y1,
x2,
y2);
3592 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics, pen,
x1,
y1,
x2,
y2);
3605 if(!pen || !graphics || (
count < 2))
3682 INT output_height, output_width;
3685 static const BYTE static_dash_pattern[] = {1,1,1,0,1,0,1,0};
3686 const BYTE *dash_pattern;
3687 INT dash_pattern_size;
3738 output_width = output_area.
right - output_area.
left + 1;
3739 output_height = output_area.
bottom - output_area.
top + 1;
3741 if (output_width <= 0 || output_height <= 0)
3747 gp_output_area.
X = output_area.
left;
3748 gp_output_area.
Y = output_area.
top;
3749 gp_output_area.
Width = output_width;
3750 gp_output_area.
Height = output_height;
3752 output_bits = heap_alloc_zero(output_width * output_height *
sizeof(
DWORD));
3762 brush_bits = heap_alloc_zero(output_width * output_height *
sizeof(
DWORD));
3767 &gp_output_area, output_width);
3780 dash_pattern_size = 0;
3785 if (dash_pattern_size != 0)
3787 dash_pattern = dyn_dash_pattern =
heap_alloc(dash_pattern_size);
3789 if (dyn_dash_pattern)
3796 dyn_dash_pattern[
j++] = (
i&1)^1;
3808 dash_pattern = static_dash_pattern;
3809 dash_pattern_size = 1;
3812 dash_pattern = static_dash_pattern;
3813 dash_pattern_size = 4;
3816 dash_pattern = &static_dash_pattern[4];
3817 dash_pattern_size = 2;
3820 dash_pattern = static_dash_pattern;
3821 dash_pattern_size = 6;
3824 dash_pattern = static_dash_pattern;
3825 dash_pattern_size = 8;
3835 int dash_pos = dash_pattern_size - 1;
3841 GpPoint start_pointi, end_pointi;
3852 subpath_start = start_point;
3855 end_point = subpath_start;
3861 start_pointi.
X =
floorf(start_point.
X);
3862 start_pointi.
Y =
floorf(start_point.
Y);
3863 end_pointi.
X =
floorf(end_point.
X);
3864 end_pointi.
Y =
floorf(end_point.
Y);
3866 if(start_pointi.
X == end_pointi.
X && start_pointi.
Y == end_pointi.
Y)
3870 if (
abs(start_pointi.
Y - end_pointi.
Y) >
abs(start_pointi.
X - end_pointi.
X))
3874 if (start_pointi.
Y < end_pointi.
Y)
3890 (end_point.
X - start_point.
X) * (
y + output_area.
top - start_point.
Y) / (end_point.
Y - start_point.
Y) )
3893 if (
x == prev_x &&
y == prev_y)
3898 dash_pos = (dash_pos + 1 == dash_pattern_size) ? 0 : dash_pos + 1;
3900 if (!dash_pattern[dash_pos])
3903 if (x < 0 || x >= output_width || y < 0 || y >= output_height)
3907 output_bits[
x +
y*output_width] = brush_bits[
x +
y*output_width];
3916 if (start_pointi.
X < end_pointi.
X)
3932 (end_point.
Y - start_point.
Y) * (
x + output_area.
left - start_point.
X) / (end_point.
X - start_point.
X) )
3935 if (
x == prev_x &&
y == prev_y)
3940 dash_pos = (dash_pos + 1 == dash_pattern_size) ? 0 : dash_pos + 1;
3942 if (!dash_pattern[dash_pos])
3945 if (x < 0 || x >= output_width || y < 0 || y >= output_height)
3949 output_bits[
x +
y*output_width] = brush_bits[
x +
y*output_width];
3963 (
BYTE*)output_bits, output_width, output_height, output_width * 4,
3989 if (pen->
width < 1.415)
4038 t.matrix[0] *
t.matrix[0] +
t.matrix[1] *
t.matrix[1],
4039 t.matrix[2] *
t.matrix[2] +
t.matrix[3] *
t.matrix[3]));
4070 TRACE(
"(%p, %p, %p)\n", graphics, pen,
path);
4072 if(!pen || !graphics)
4078 if (
path->pathdata.Count == 0)
4097 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f)\n", graphics, pen,
x,
y,
4100 if(!graphics || !pen)
4120 TRACE(
"(%p, %p, %d, %d, %d, %d, %.2f, %.2f)\n", graphics, pen,
x,
y,
4132 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics, pen,
x,
y,
width,
height);
4134 if(!pen || !graphics)
4154 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics, pen,
x,
y,
width,
height);
4165 TRACE(
"(%p, %p, %p, %d)\n", graphics, pen, rects,
count);
4167 if(!graphics || !pen || !rects ||
count < 1)
4191 TRACE(
"(%p, %p, %p, %d)\n", graphics, pen, rects,
count);
4193 if(!rects ||
count<=0)
4219 TRACE(
"(%p, %p, %p, %d, %.2f, %d)\n", graphics, brush,
points,
4222 if(!graphics || !brush || !
points)
4249 TRACE(
"(%p, %p, %p, %d, %.2f, %d)\n", graphics, brush,
points,
4296 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics, brush,
x,
y,
width,
height);
4298 if(!graphics || !brush)
4322 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics, brush,
x,
y,
width,
height);
4395 TRACE(
"(%p, %p, %p)\n", graphics, brush,
path);
4397 if(!brush || !graphics || !
path)
4403 if (!
path->pathdata.Count)
4417 FIXME(
"Not implemented for brushtype %i\n", brush->
bt);
4430 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f)\n",
4431 graphics, brush,
x,
y,
width,
height, startAngle, sweepAngle);
4433 if(!graphics || !brush)
4457 TRACE(
"(%p, %p, %d, %d, %d, %d, %.2f, %.2f)\n",
4458 graphics, brush,
x,
y,
width,
height, startAngle, sweepAngle);
4542 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics, brush,
x,
y,
width,
height);
4557 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics, brush,
x,
y,
width,
height);
4573 TRACE(
"(%p, %p, %p, %d)\n", graphics, brush, rects,
count);
4575 if(!graphics || !brush || !rects ||
count <= 0)
4603 TRACE(
"(%p, %p, %p, %d)\n", graphics, brush, rects,
count);
4605 if(!rects ||
count <= 0)
4724 gp_bound_rect.
X = bound_rect.
left;
4725 gp_bound_rect.
Y = bound_rect.
top;
4729 pixel_data = heap_alloc_zero(
sizeof(*pixel_data) * gp_bound_rect.
Width * gp_bound_rect.
Height);
4736 &gp_bound_rect, gp_bound_rect.
Width);
4740 gp_bound_rect.
Y, (
BYTE*)pixel_data, gp_bound_rect.
Width,
4741 gp_bound_rect.
Height, gp_bound_rect.
Width * 4, hregion,
4763 TRACE(
"(%p, %p, %p)\n", graphics, brush, region);
4765 if (!(graphics && brush && region))
4779 FIXME(
"not implemented for brushtype %i\n", brush->
bt);
4788 TRACE(
"(%p,%u)\n", graphics, intention);
4853 if(!graphics || !
mode)
4887 if(!graphics || !
mode)
4901 FIXME(
"(%p, %p): Passing color unmodified\n", graphics, argb);
4903 if(!graphics || !argb)
4916 if(!graphics || !
scale)
4931 if(!graphics || !
unit)
4948 if(!graphics || !
mode)
4964 if(!graphics || !
mode)
4977 TRACE(
"(%p, %p)\n", graphics, contrast);
4979 if(!graphics || !contrast)
4993 if(!graphics || !
hint)
5012 if(!graphics || !
rect)
5048 if(!graphics || !
rect)
5111 TRACE(
"(%p, %p)\n", graphics,
res);
5113 if(!graphics || !
res)
5180 pts[1].
X -= pts[0].
X;
5181 pts[1].
Y -= pts[0].
Y;
5207 int sum = 0,
height = 0, fit, fitcpy,
i,
j, lret, nwidth,
5208 nheight, lineend, lineno = 0;
5214 INT *hotkeyprefix_offsets=
NULL;
5215 INT hotkeyprefix_count=0;
5216 INT hotkeyprefix_pos=0, hotkeyprefix_end_pos=0;
5221 stringdup = heap_alloc_zero((
length + 1) *
sizeof(
WCHAR));
5227 nwidth =
rect->Width;
5228 nheight =
rect->Height;
5229 if (ignore_empty_clip)
5231 if (!nwidth) nwidth =
INT_MAX;
5232 if (!nheight) nheight =
INT_MAX;
5235 hkprefix =
format->hkprefix;
5241 if (
string[
i] ==
'&')
5242 hotkeyprefix_count++;
5246 if (hotkeyprefix_count)
5247 hotkeyprefix_offsets = heap_alloc_zero(
sizeof(
INT) * hotkeyprefix_count);
5249 hotkeyprefix_count = 0;
5253 if(!
isprintW(
string[
i]) && (
string[
i] !=
'\n'))
5257 if (
string[
i] ==
'\t')
5261 hotkeyprefix_offsets[hotkeyprefix_count++] =
j;
5268 seen_prefix =
FALSE;
5270 stringdup[
j] =
string[
i];
5286 for(lret = 0; lret < fit; lret++)
5287 if(*(stringdup +
sum + lret) ==
'\n')
5292 lineend = fit = lret;
5294 if(*(stringdup +
sum + fit) ==
' ')
5295 while(*(stringdup +
sum + fit) ==
' ')
5298 while(*(stringdup +
sum + fit - 1) !=
' '){
5301 if(*(stringdup +
sum + fit) ==
'\t')
5310 while(*(stringdup +
sum + lineend - 1) ==
' ' ||
5311 *(stringdup +
sum + lineend - 1) ==
'\t')
5347 for (hotkeyprefix_end_pos=hotkeyprefix_pos; hotkeyprefix_end_pos<hotkeyprefix_count; hotkeyprefix_end_pos++)
5348 if (hotkeyprefix_offsets[hotkeyprefix_end_pos] >=
sum + lineend)
5353 &hotkeyprefix_offsets[hotkeyprefix_pos],
5354 hotkeyprefix_end_pos-hotkeyprefix_pos, user_data);
5359 sum += fit + (lret < fitcpy ? 1 : 0);
5363 hotkeyprefix_pos = hotkeyprefix_end_pos;
5387 INT lineno,
const RectF *bounds,
INT *underlined_indexes,
5388 INT underlined_index_count,
void *user_data)
5398 if (range_start < range_end)
5403 range_rect.
Y = bounds->
Y /
args->rel_height;
5408 range_rect.
X = (bounds->
X + range_size.
cx) /
args->rel_width;
5412 range_rect.
Width = (bounds->
X + range_size.
cx) /
args->rel_width - range_rect.
X;
5430 HFONT gdifont, oldfont;
5443 if (regionCount < stringFormat->range_count)
5472 scaled_rect.
X = (layoutRect->X + margin_x) *
args.rel_width;
5473 scaled_rect.
Y = layoutRect->Y *
args.rel_height;
5474 scaled_rect.
Width = layoutRect->Width *
args.rel_width;
5475 scaled_rect.
Height = layoutRect->Height *
args.rel_height;
5477 if (scaled_rect.
Width >= 1 << 23) scaled_rect.
Width = 1 << 23;
5478 if (scaled_rect.
Height >= 1 << 23) scaled_rect.
Height = 1 << 23;
5518 INT lineno,
const RectF *bounds,
INT *underlined_indexes,
5519 INT underlined_index_count,
void *user_data)
5522 REAL new_width, new_height;
5527 if (new_width >
args->bounds->Width)
5528 args->bounds->Width = new_width;
5530 if (new_height >
args->bounds->Height)
5531 args->bounds->Height = new_height;
5533 if (
args->codepointsfitted)
5536 if (
args->linesfilled)
5537 (*
args->linesfilled)++;
5551 HFONT oldfont, gdifont;
5559 TRACE(
"(%p, %s, %i, %p, %s, %p, %p, %p, %p)\n", graphics,
5578 TRACE(
"may be ignoring some format flags: attr %x\n",
format->attr);
5592 margin_x = (
format &&
format->generic_typographic) ? 0.0 :
font->emSize / 6.0;
5595 scaled_rect.
X = (
rect->X + margin_x) *
args.rel_width;
5596 scaled_rect.
Y =
rect->Y *
args.rel_height;
5601 scaled_rect.
Width -= margin_x * 2.0 *
args.rel_width;
5602 if (scaled_rect.
Width < 0.5)
return Ok;
5605 if (scaled_rect.
Width >= 1 << 23) scaled_rect.
Width = 1 << 23;
5606 if (scaled_rect.
Height >= 1 << 23) scaled_rect.
Height = 1 << 23;
5652 INT lineno,
const RectF *bounds,
INT *underlined_indexes,
5653 INT underlined_index_count,
void *user_data)
5659 position.
X =
args->x + bounds->
X /
args->rel_width;
5660 position.
Y =
args->y + bounds->
Y /
args->rel_height +
args->ascent;
5663 args->brush, &position,
5666 if (
stat ==
Ok && underlined_index_count)
5669 REAL underline_y, underline_height;
5677 for (
i=0;
i<underlined_index_count;
i++)
5681 INT ofs = underlined_indexes[
i] -
index;
5705 INT save_state, format_flags = 0;
5712 TRACE(
"(%p, %s, %i, %p, %s, %p, %p)\n",
graphics,
debugstr_wn(
string,
length),
5728 TRACE(
"may be ignoring some format flags: attr %x\n",
format->attr);
5730 format_flags =
format->attr;
5742 offsety = (
rect->Height - bounds.
Height) / 2;
5746 TRACE(
"line align %d, offsety %f\n",
format->line_align, offsety);
5763 rectcpy[3].
X = rectcpy[0].
X =
rect->X;
5764 rectcpy[1].
Y = rectcpy[0].
Y =
rect->Y;
5765 rectcpy[2].
X = rectcpy[1].
X =
rect->X +
rect->Width;
5766 rectcpy[3].
Y = rectcpy[2].
Y =
rect->Y +
rect->Height;
5770 margin_x = (
format &&
format->generic_typographic) ? 0.0 :
font->emSize / 6.0;
5774 scaled_rect.Y = 0.0;
5777 if (scaled_rect.Width >= 0.5)
5779 scaled_rect.Width -= margin_x * 2.0 *
rel_width;
5780 if (scaled_rect.Width < 0.5)
return Ok;
5783 if (scaled_rect.Width >= 1 << 23) scaled_rect.Width = 1 << 23;
5784 if (scaled_rect.Height >= 1 << 23) scaled_rect.Height = 1 << 23;
5787 scaled_rect.Width != 1 << 23 && scaled_rect.Height != 1 << 23 &&
5788 rect->Width > 0.0 &&
rect->Height > 0.0)
5930 REAL scale_x, scale_y;
5947 scaled_srcrect.
X = scale_x * srcrect->X;
5948 scaled_srcrect.
Y = scale_y * srcrect->Y;
5949 scaled_srcrect.
Width = scale_x * srcrect->Width;
5950 scaled_srcrect.
Height = scale_y * srcrect->Height;
5956 transform.matrix[4] = dstrect->X - scaled_srcrect.
X;
5957 transform.matrix[5] = dstrect->Y - scaled_srcrect.
Y;
5974 if (!dstrect || !srcrect)
5977 dstrectf.
X = dstrect->X;
5978 dstrectf.
Y = dstrect->Y;
5979 dstrectf.
Width = dstrect->Width;
5980 dstrectf.
Height = dstrect->Height;
5982 srcrectf.
X = srcrect->X;
5983 srcrectf.
Y = srcrect->Y;
5984 srcrectf.
Width = srcrect->Width;
5985 srcrectf.
Height = srcrect->Height;
6265 FIXME(
"value is unused in rendering\n");
6370 TRACE(
"%f,%f,%f,%f,%f,%f\n",
6481 TRACE(
"(%p, %.2f, %.2f, %.2f, %.2f, %d)\n",
graphics,
x,
y,
width,
height,
mode);
6522 TRACE(
"(%p, %d, %d, %d, %d, %d)\n",
graphics,
x,
y,
width,
height,
mode);
6715 bmih.
biSize =
sizeof(bmih);
6860 ERR(
"called without matching gdi_transform_acquire\n");
6875 REAL scale_x, scale_y;
6879 if (dst_space != src_space)
6890 if (dst_space < src_space)
6893 switch ((
int)src_space)
6925 switch ((
int)src_space)
6973 if (src_space == dst_space)
return Ok;
7066 REAL min_x, min_y, max_x, max_y,
x,
y;
7069 const WORD *glyph_indices;
7084 boundingBox->
X = 0.0;
7085 boundingBox->
Y = 0.0;
7086 boundingBox->
Width = 0.0;
7087 boundingBox->
Height = 0.0;
7090 if (
flags & unsupported_flags)
7091 FIXME(
"Ignoring flags %x\n",
flags & unsupported_flags);
7119 glyph_indices = dynamic_glyph_indices = heap_alloc_zero(
sizeof(
WORD) *
length);
7130 glyph_indices =
text;
7132 min_x = max_x =
x = positions[0].X;
7133 min_y = max_y =
y = positions[0].Y;
7153 if (max_y <
y + descent) max_y =
y + descent;
7154 if (min_x >
x) min_x =
x;
7158 if (max_x <
x) max_x =
x;
7165 boundingBox->
X = min_x;
7166 boundingBox->
Y = min_y;
7167 boundingBox->
Width = max_x - min_x;
7168 boundingBox->
Height = max_y - min_y;
7186 if (
flags & unsupported_flags)
7187 FIXME(
"Ignoring flags %x\n",
flags & unsupported_flags);
7190 eto_flags |= ETO_GLYPH_INDEX;
7232 PointF *real_positions, real_position;
7237 DWORD max_glyphsize=0;
7239 static const MAT2 identity = {{0,1}, {0,0}, {0,0}, {0,1}};
7242 int text_mask_stride;
7244 int pixel_data_stride;
7254 if (
flags & unsupported_flags)
7255 FIXME(
"Ignoring flags %x\n",
flags & unsupported_flags);
7263 real_position = positions[0];
7270 real_positions = heap_alloc_zero(
sizeof(
PointF) *
length);
7271 if (!real_positions)
7301 ERR(
"GetGlyphOutlineW failed\n");
7308 if (glyphsize > max_glyphsize)
7309 max_glyphsize = glyphsize;
7319 if (
top < min_y) min_y =
top;
7331 if (max_glyphsize == 0)
7335 glyph_mask = heap_alloc_zero(max_glyphsize);
7336 text_mask = heap_alloc_zero((max_x - min_x) * (max_y - min_y));
7337 text_mask_stride = max_x - min_x;
7339 if (!(glyph_mask && text_mask))
7356 &glyphmetrics, max_glyphsize, glyph_mask, &
identity);
7368 BYTE *text_val = text_mask + (
left - min_x) + (
top - min_y +
y) * text_mask_stride;
7371 *text_val =
min(64, *text_val + *glyph_val);
7384 pixel_data = heap_alloc_zero(4 * (max_x - min_x) * (max_y - min_y));
7391 pixel_area.
X = min_x;
7392 pixel_area.
Y = min_y;
7393 pixel_area.
Width = max_x - min_x;
7394 pixel_area.
Height = max_y - min_y;
7395 pixel_data_stride = pixel_area.
Width * 4;
7408 BYTE *text_val = text_mask + text_mask_stride *
y;
7409 BYTE *pixel_val = pixel_data + pixel_data_stride *
y + 3;
7412 *pixel_val = (*pixel_val) * (*text_val) / 64;
7502 FIXME(
"not implemented\n");
7515 FIXME(
"Abort callback is not supported.\n");
static POBJECT_TYPE GetObjectType(IN PCWSTR TypeName)
_STLP_MOVE_TO_STD_NAMESPACE void fill(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
_STLP_DECLSPEC complex< float > _STLP_CALL cos(const complex< float > &)
_STLP_DECLSPEC complex< float > _STLP_CALL sin(const complex< float > &)
_STLP_DECLSPEC complex< float > _STLP_CALL sqrt(const complex< float > &)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static const char * wine_dbgstr_point(const POINT *ppt)
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const WCHAR stringFormat[]
static void list_remove(struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
static GLboolean is_identity(const GLfloat m[16])
GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush *brush)
GpStatus get_hatch_data(GpHatchStyle hatchstyle, const char **result)
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB color, GpSolidFill **sf)
static INT prepare_dc(GpGraphics *graphics, GpPen *pen)
static GpStatus brush_fill_path(GpGraphics *graphics, GpBrush *brush)
GpStatus WINGDIPAPI GdipGetDpiX(GpGraphics *graphics, REAL *dpi)
static int positive_ceilf(float f)
GpStatus WINGDIPAPI GdipDrawCurve(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipDrawImageRectRect(GpGraphics *graphics, GpImage *image, REAL dstx, REAL dsty, REAL dstwidth, REAL dstheight, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes *imageattr, DrawImageAbort callback, VOID *callbackData)
GpStatus WINGDIPAPI GdipDrawClosedCurve(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count)
static ARGB sample_bitmap_pixel(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT width, UINT height, INT x, INT y, GDIPCONST GpImageAttributes *attributes)
static GpStatus draw_driver_string(GpGraphics *graphics, GDIPCONST UINT16 *text, INT length, GDIPCONST GpFont *font, GDIPCONST GpStringFormat *format, GDIPCONST GpBrush *brush, GDIPCONST PointF *positions, INT flags, GDIPCONST GpMatrix *matrix)
GpStatus WINGDIPAPI GdipDrawImagePointsRectI(GpGraphics *graphics, GpImage *image, GDIPCONST GpPoint *points, INT count, INT srcx, INT srcy, INT srcwidth, INT srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes *imageAttributes, DrawImageAbort callback, VOID *callbackData)
GpStatus WINGDIPAPI GdipFillClosedCurve(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipSetClipGraphics(GpGraphics *graphics, GpGraphics *srcgraphics, CombineMode mode)
static GpStatus free_gdi_logbrush(LOGBRUSH *lb)
HPALETTE WINGDIPAPI GdipCreateHalftonePalette(void)
GpStatus gdip_format_string(HDC hdc, GDIPCONST WCHAR *string, INT length, GDIPCONST GpFont *font, GDIPCONST RectF *rect, GDIPCONST GpStringFormat *format, int ignore_empty_clip, gdip_format_string_callback callback, void *user_data)
GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics *graphics, GpImage *image, INT x, INT y)
GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpRectF *rects, INT count)
GpStatus WINGDIPAPI GdipDrawBezierI(GpGraphics *graphics, GpPen *pen, INT x1, INT y1, INT x2, INT y2, INT x3, INT y3, INT x4, INT y4)
GpStatus WINGDIPAPI GdipComment(GpGraphics *graphics, UINT sizeData, GDIPCONST BYTE *data)
GpStatus WINGDIPAPI GdipFillPolygon2I(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPoint *points, INT count)
static GpStatus SOFTWARE_GdipFillRegion(GpGraphics *graphics, GpBrush *brush, GpRegion *region)
GpStatus WINGDIPAPI GdipBeginContainer(GpGraphics *graphics, GDIPCONST GpRectF *dstrect, GDIPCONST GpRectF *srcrect, GpUnit unit, GraphicsContainer *state)
GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics)
GpStatus WINGDIPAPI GdipCreateStreamOnFile(GDIPCONST WCHAR *filename, UINT access, IStream **stream)
GpStatus WINGDIPAPI GdipDrawCurve2I(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count, REAL tension)
GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics *graphics, GpBrush *brush, INT x, INT y, INT width, INT height)
GpStatus get_graphics_transform(GpGraphics *graphics, GpCoordinateSpace dst_space, GpCoordinateSpace src_space, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics *graphics, TextRenderingHint *hint)
GpStatus WINGDIPAPI GdipDrawEllipseI(GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height)
static GpStatus GDI32_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath *path)
GpStatus WINGDIPAPI GdipDrawImagePoints(GpGraphics *graphics, GpImage *image, GDIPCONST GpPointF *dstpoints, INT count)
GpStatus WINGDIPAPI GdipDrawImageRectI(GpGraphics *graphics, GpImage *image, INT x, INT y, INT width, INT height)
static BOOL CALLBACK play_metafile_proc(EmfPlusRecordType record_type, unsigned int flags, unsigned int dataSize, const unsigned char *pStr, void *userdata)
GpStatus WINGDIPAPI GdipDrawCurve3(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count, INT offset, INT numberOfSegments, REAL tension)
GpStatus WINGDIPAPI GdipFillRegion(GpGraphics *graphics, GpBrush *brush, GpRegion *region)
GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPoint *points, INT count, GpFillMode fillMode)
GpStatus WINGDIPAPI GdipGraphicsSetAbort(GpGraphics *graphics, GdiplusAbort *pabort)
static volatile LONG g_priv_contid
GpStatus WINGDIPAPI GdipGetDpiY(GpGraphics *graphics, REAL *dpi)
GpStatus WINGDIPAPI GdipBeginContainerI(GpGraphics *graphics, GDIPCONST GpRect *dstrect, GDIPCONST GpRect *srcrect, GpUnit unit, GraphicsContainer *state)
GpStatus WINGDIPAPI GdipGetNearestColor(GpGraphics *graphics, ARGB *argb)
GpStatus WINGDIPAPI GdipDrawLine(GpGraphics *graphics, GpPen *pen, REAL x1, REAL y1, REAL x2, REAL y2)
GpStatus WINGDIPAPI GdipDrawBeziersI(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count)
GpStatus WINGDIPAPI GdipSetClipHrgn(GpGraphics *graphics, HRGN hrgn, CombineMode mode)
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
static GpStatus SOFTWARE_GdipDrawThinPath(GpGraphics *graphics, GpPen *pen, GpPath *path)
GpStatus WINGDIPAPI GdipFlush(GpGraphics *graphics, GpFlushIntention intention)
GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpRect *rects, INT count)
GpStatus WINGDIPAPI GdipTranslateClip(GpGraphics *graphics, REAL dx, REAL dy)
GpStatus WINGDIPAPI GdipResetPageTransform(GpGraphics *graphics)
GpStatus WINGDIPAPI GdipScaleWorldTransform(GpGraphics *graphics, REAL sx, REAL sy, GpMatrixOrder order)
static void delete_container(GraphicsContainerItem *container)
static const COLORREF DC_BACKGROUND_KEY
static GpStatus begin_container(GpGraphics *graphics, GraphicsContainerType type, GraphicsContainer *state)
static GpStatus alpha_blend_hdc_pixels(GpGraphics *graphics, INT dst_x, INT dst_y, const BYTE *src, INT src_width, INT src_height, INT src_stride, PixelFormat fmt)
GpStatus WINGDIPAPI GdipFillClosedCurve2I(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPoint *points, INT count, REAL tension, GpFillMode fill)
GpStatus WINGDIPAPI GdipRotateWorldTransform(GpGraphics *graphics, REAL angle, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipFillEllipse(GpGraphics *graphics, GpBrush *brush, REAL x, REAL y, REAL width, REAL height)
static HBRUSH create_gdi_brush(const GpBrush *brush)
GpStatus WINGDIPAPI GdipGetClip(GpGraphics *graphics, GpRegion *region)
GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics *graphics, REAL dx, REAL dy, GpMatrixOrder order)
static GpStatus GDI32_GdipDrawPath(GpGraphics *graphics, GpPen *pen, GpPath *path)
GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics *graphics, CompositingMode mode)
GpStatus gdip_transform_points(GpGraphics *graphics, GpCoordinateSpace dst_space, GpCoordinateSpace src_space, GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipTranslateClipI(GpGraphics *graphics, INT dx, INT dy)
GpStatus WINGDIPAPI GdipFillClosedCurve2(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPointF *points, INT count, REAL tension, GpFillMode fill)
GpStatus WINGDIPAPI GdipDrawPolygonI(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count)
GpStatus WINGDIPAPI GdipCreateFromHDC2(HDC hdc, HANDLE hDevice, GpGraphics **graphics)
GpStatus WINGDIPAPI GdipDrawPie(GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipDrawPolygon(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipResetClip(GpGraphics *graphics)
GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics *graphics, SmoothingMode *mode)
static ARGB blend_line_gradient(GpLineGradient *brush, REAL position)
GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics *graphics, PixelOffsetMode *mode)
static ARGB resample_bitmap_pixel_premult(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT width, UINT height, GpPointF *point, GDIPCONST GpImageAttributes *attributes, InterpolationMode interpolation, PixelOffsetMode offset_mode)
GpStatus WINGDIPAPI GdipDrawLines(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count)
GpStatus graphics_from_image(GpImage *image, GpGraphics **graphics)
static GpStatus create_gdi_logbrush(const GpBrush *brush, LOGBRUSH *lb)
GpStatus WINGDIPAPI GdipGetTextContrast(GpGraphics *graphics, UINT *contrast)
static void get_font_hfont(GpGraphics *graphics, GDIPCONST GpFont *font, GDIPCONST GpStringFormat *format, HFONT *hfont, GDIPCONST GpMatrix *matrix)
static GpStatus draw_string_callback(HDC hdc, GDIPCONST WCHAR *string, INT index, INT length, GDIPCONST GpFont *font, GDIPCONST RectF *rect, GDIPCONST GpStringFormat *format, INT lineno, const RectF *bounds, INT *underlined_indexes, INT underlined_index_count, void *user_data)
GpStatus WINGDIPAPI GdipGetDC(GpGraphics *graphics, HDC *hdc)
static BOOL brush_can_fill_path(GpBrush *brush, BOOL is_fill)
static GpStatus SOFTWARE_GdipDrawDriverString(GpGraphics *graphics, GDIPCONST UINT16 *text, INT length, GDIPCONST GpFont *font, GDIPCONST GpStringFormat *format, GDIPCONST GpBrush *brush, GDIPCONST PointF *positions, INT flags, GDIPCONST GpMatrix *matrix)
GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics *graphics, REAL *scale)
GpStatus WINGDIPAPI GdipGraphicsClear(GpGraphics *graphics, ARGB color)
static GpStatus get_visible_clip_region(GpGraphics *graphics, GpRegion *rgn)
GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics *graphics, INT x, INT y, INT width, INT height, CombineMode mode)
static ARGB transform_color(ARGB color, int matrix[5][5])
static BOOL color_is_gray(ARGB color)
GpStatus WINGDIPAPI GdipDrawBeziers(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipDrawRectangles(GpGraphics *graphics, GpPen *pen, GDIPCONST GpRectF *rects, INT count)
GpStatus WINGDIPAPI GdipFillPie(GpGraphics *graphics, GpBrush *brush, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle)
static GpStatus SOFTWARE_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath *path)
GpStatus WINGDIPAPI GdipSetTextRenderingHint(GpGraphics *graphics, TextRenderingHint hint)
static void get_gdi_transform(GpGraphics *graphics, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipDrawDriverString(GpGraphics *graphics, GDIPCONST UINT16 *text, INT length, GDIPCONST GpFont *font, GDIPCONST GpBrush *brush, GDIPCONST PointF *positions, INT flags, GDIPCONST GpMatrix *matrix)
void get_log_fontW(const GpFont *font, GpGraphics *graphics, LOGFONTW *lf)
GpStatus WINGDIPAPI GdipDrawImagePointRect(GpGraphics *graphics, GpImage *image, REAL x, REAL y, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, GpUnit srcUnit)
static void get_bitmap_sample_size(InterpolationMode interpolation, WrapMode wrap, GpBitmap *bitmap, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, GpRect *rect)
GpStatus WINGDIPAPI GdipMeasureString(GpGraphics *graphics, GDIPCONST WCHAR *string, INT length, GDIPCONST GpFont *font, GDIPCONST RectF *rect, GDIPCONST GpStringFormat *format, RectF *bounds, INT *codepointsfitted, INT *linesfilled)
GpStatus WINGDIPAPI GdipGetClipBounds(GpGraphics *graphics, GpRectF *rect)
GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics *graphics, CompositingMode *mode)
GpStatus WINGDIPAPI GdipSetWorldTransform(GpGraphics *graphics, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipDrawClosedCurveI(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count)
GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics *graphics, GpPen *pen, REAL x1, REAL y1, REAL x2, REAL y2, REAL x3, REAL y3, REAL x4, REAL y4)
GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics *graphics, CompositingQuality *quality)
GpStatus WINGDIPAPI GdipDrawRectanglesI(GpGraphics *graphics, GpPen *pen, GDIPCONST GpRect *rects, INT count)
GpStatus WINGDIPAPI GdipDrawImageRectRectI(GpGraphics *graphics, GpImage *image, INT dstx, INT dsty, INT dstwidth, INT dstheight, INT srcx, INT srcy, INT srcwidth, INT srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes *imageAttributes, DrawImageAbort callback, VOID *callbackData)
GpStatus WINGDIPAPI GdipFillPolygon2(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipGetVisibleClipBoundsI(GpGraphics *graphics, GpRect *rect)
GpStatus WINGDIPAPI GdipTransformPointsI(GpGraphics *graphics, GpCoordinateSpace dst_space, GpCoordinateSpace src_space, GpPoint *points, INT count)
GpStatus WINGDIPAPI GdipSetClipRegion(GpGraphics *graphics, GpRegion *region, CombineMode mode)
static void restore_dc(GpGraphics *graphics, INT state)
static ARGB resample_bitmap_pixel(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT width, UINT height, GpPointF *point, GDIPCONST GpImageAttributes *attributes, InterpolationMode interpolation, PixelOffsetMode offset_mode)
GpStatus WINGDIPAPI GdipIsVisiblePoint(GpGraphics *graphics, REAL x, REAL y, BOOL *result)
GpStatus WINGDIPAPI GdipDrawCurveI(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count)
GpStatus WINGDIPAPI GdipFillClosedCurveI(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPoint *points, INT count)
GpStatus gdi_transform_acquire(GpGraphics *graphics)
GpStatus WINGDIPAPI GdipMultiplyWorldTransform(GpGraphics *graphics, GDIPCONST GpMatrix *matrix, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipGetRenderingOrigin(GpGraphics *graphics, INT *x, INT *y)
static GpStatus brush_fill_pixels(GpGraphics *graphics, GpBrush *brush, DWORD *argb_pixels, GpRect *fill_area, UINT cdwStride)
GpStatus WINGDIPAPI GdipSetClipRect(GpGraphics *graphics, REAL x, REAL y, REAL width, REAL height, CombineMode mode)
static GpStatus get_graphics_bounds(GpGraphics *graphics, GpRectF *rect)
static void shorten_bezier_amt(GpPointF *pt, REAL amt, BOOL rev)
GpStatus WINGDIPAPI GdipGetVisibleClipBounds(GpGraphics *graphics, GpRectF *rect)
static GpStatus draw_poly(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *pt, GDIPCONST BYTE *types, INT count, BOOL caps)
GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics *graphics, GpPen *pen, INT x1, INT y1, INT x2, INT y2)
GpStatus WINGDIPAPI GdipDrawLinesI(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count)
GpStatus WINGDIPAPI GdipIsVisiblePointI(GpGraphics *graphics, INT x, INT y, BOOL *result)
GpStatus WINGDIPAPI GdipMeasureDriverString(GpGraphics *graphics, GDIPCONST UINT16 *text, INT length, GDIPCONST GpFont *font, GDIPCONST PointF *positions, INT flags, GDIPCONST GpMatrix *matrix, RectF *boundingBox)
static GpStatus alpha_blend_bmp_pixels(GpGraphics *graphics, INT dst_x, INT dst_y, const BYTE *src, INT src_width, INT src_height, INT src_stride, const PixelFormat fmt)
GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics *graphics, GraphicsState *state)
static GpStatus GDI32_GdipFillRegion(GpGraphics *graphics, GpBrush *brush, GpRegion *region)
GpStatus WINGDIPAPI GdipDrawPath(GpGraphics *graphics, GpPen *pen, GpPath *path)
static GpStatus GDI32_GdipDrawDriverString(GpGraphics *graphics, GDIPCONST UINT16 *text, INT length, GDIPCONST GpFont *font, GDIPCONST GpStringFormat *format, GDIPCONST GpBrush *brush, GDIPCONST PointF *positions, INT flags, GDIPCONST GpMatrix *matrix)
static GpStatus init_container(GraphicsContainerItem **container, GDIPCONST GpGraphics *graphics, GraphicsContainerType type)
static ARGB blend_colors_premult(ARGB start, ARGB end, REAL position)
static void round_points(POINT *pti, GpPointF *ptf, INT count)
GpStatus WINGDIPAPI GdipEndContainer(GpGraphics *graphics, GraphicsContainer state)
static BOOL round_color_matrix(const ColorMatrix *matrix, int values[5][5])
static void draw_cap(GpGraphics *graphics, COLORREF color, GpLineCap cap, REAL size, const GpCustomLineCap *custom, REAL x1, REAL y1, REAL x2, REAL y2)
GpStatus WINGDIPAPI GdipIsClipEmpty(GpGraphics *graphics, BOOL *res)
GpStatus gdi_transform_release(GpGraphics *graphics)
GpStatus trace_path(GpGraphics *graphics, GpPath *path)
static GpStatus alpha_blend_pixels_hrgn(GpGraphics *graphics, INT dst_x, INT dst_y, const BYTE *src, INT src_width, INT src_height, INT src_stride, HRGN hregion, PixelFormat fmt)
GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics *graphics, CompositingQuality quality)
static void shorten_line_percent(REAL x1, REAL y1, REAL *x2, REAL *y2, REAL percent)
GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics *graphics, InterpolationMode mode)
static BYTE convert_path_point_type(BYTE type)
GpStatus WINGDIPAPI GdipIsVisibleRect(GpGraphics *graphics, REAL x, REAL y, REAL width, REAL height, BOOL *result)
GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image, GDIPCONST GpPointF *points, INT count, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes *imageAttributes, DrawImageAbort callback, VOID *callbackData)
GpStatus WINGDIPAPI GdipIsVisibleClipEmpty(GpGraphics *graphics, BOOL *res)
GpStatus WINGDIPAPI GdipDrawEllipse(GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height)
static GpStatus SOFTWARE_GdipDrawPath(GpGraphics *graphics, GpPen *pen, GpPath *path)
GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics *graphics, InterpolationMode *mode)
GpStatus WINGDIPAPI GdipDrawRectangle(GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height)
static ARGB blend_colors(ARGB start, ARGB end, REAL position)
GpStatus WINGDIPAPI GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath *path)
static HBITMAP create_hatch_bitmap(const GpHatch *hatch)
static COLORREF get_gdi_brush_color(const GpBrush *brush)
GpStatus WINGDIPAPI GdipFillRectangle(GpGraphics *graphics, GpBrush *brush, REAL x, REAL y, REAL width, REAL height)
static GpStatus get_clip_hrgn(GpGraphics *graphics, HRGN *hrgn)
GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPointF *points, INT count, GpFillMode fillMode)
GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics *graphics, GDIPCONST WCHAR *string, INT length, GDIPCONST GpFont *font, GDIPCONST RectF *layoutRect, GDIPCONST GpStringFormat *stringFormat, INT regionCount, GpRegion **regions)
GpStatus WINGDIPAPI GdipDrawPieI(GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipIsVisibleRectI(GpGraphics *graphics, INT x, INT y, INT width, INT height, BOOL *result)
static REAL intersect_line_scanline(const GpPointF *p1, const GpPointF *p2, REAL y)
GpStatus WINGDIPAPI GdipCreateFromHWNDICM(HWND hwnd, GpGraphics **graphics)
GpStatus WINGDIPAPI GdipDrawClosedCurve2(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count, REAL tension)
GpStatus WINGDIPAPI GdipReleaseDC(GpGraphics *graphics, HDC hdc)
struct _GraphicsContainerItem GraphicsContainerItem
GpStatus WINGDIPAPI GdipSetRenderingOrigin(GpGraphics *graphics, INT x, INT y)
GpStatus WINGDIPAPI GdipCreateFromHWND(HWND hwnd, GpGraphics **graphics)
GpStatus WINGDIPAPI GdipDrawCurve2(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count, REAL tension)
GpStatus WINGDIPAPI GdipDrawImagePointsI(GpGraphics *graphics, GpImage *image, GDIPCONST GpPoint *dstpoints, INT count)
GpStatus WINGDIPAPI GdipDrawArc(GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle)
static void gdi_alpha_blend(GpGraphics *graphics, INT dst_x, INT dst_y, INT dst_width, INT dst_height, HDC hdc, INT src_x, INT src_y, INT src_width, INT src_height)
GpStatus WINGDIPAPI GdipDrawArcI(GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipDrawImagePointRectI(GpGraphics *graphics, GpImage *image, INT x, INT y, INT srcx, INT srcy, INT srcwidth, INT srcheight, GpUnit srcUnit)
static GpStatus restore_container(GpGraphics *graphics, GDIPCONST GraphicsContainerItem *container)
GpStatus WINGDIPAPI GdipGetClipBoundsI(GpGraphics *graphics, GpRect *rect)
GpStatus WINGDIPAPI GdipTransformPoints(GpGraphics *graphics, GpCoordinateSpace dst_space, GpCoordinateSpace src_space, GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipFillPieI(GpGraphics *graphics, GpBrush *brush, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipSetClipPath(GpGraphics *graphics, GpPath *path, CombineMode mode)
GpStatus WINGDIPAPI GdipDrawImageRect(GpGraphics *graphics, GpImage *image, REAL x, REAL y, REAL width, REAL height)
GpStatus WINGDIPAPI GdipDrawString(GpGraphics *graphics, GDIPCONST WCHAR *string, INT length, GDIPCONST GpFont *font, GDIPCONST RectF *rect, GDIPCONST GpStringFormat *format, GDIPCONST GpBrush *brush)
GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics *graphics, GraphicsState state)
static GpStatus alpha_blend_pixels(GpGraphics *graphics, INT dst_x, INT dst_y, const BYTE *src, INT src_width, INT src_height, INT src_stride, PixelFormat fmt)
PixelFormat apply_image_attributes(const GpImageAttributes *attributes, LPBYTE data, UINT width, UINT height, INT stride, ColorAdjustType type, PixelFormat fmt)
GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics *graphics, GpUnit unit)
GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height)
GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics *graphics, GpUnit *unit)
GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mode)
static GpStatus get_graphics_device_bounds(GpGraphics *graphics, GpRectF *rect)
#define GDIP_GET_NEW_CONTID_FOR(pGpGraphics)
static GpStatus measure_string_callback(HDC hdc, GDIPCONST WCHAR *string, INT index, INT length, GDIPCONST GpFont *font, GDIPCONST RectF *rect, GDIPCONST GpStringFormat *format, INT lineno, const RectF *bounds, INT *underlined_indexes, INT underlined_index_count, void *user_data)
GpStatus WINGDIPAPI GdipFillEllipseI(GpGraphics *graphics, GpBrush *brush, INT x, INT y, INT width, INT height)
GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics *graphics, GpMatrix *matrix)
static BOOL brush_can_fill_pixels(GpBrush *brush)
static void shorten_line_amt(REAL x1, REAL y1, REAL *x2, REAL *y2, REAL amt)
GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics *graphics, PixelOffsetMode mode)
GpStatus WINGDIPAPI GdipSetTextContrast(GpGraphics *graphics, UINT contrast)
GpStatus WINGDIPAPI GdipDrawImage(GpGraphics *graphics, GpImage *image, REAL x, REAL y)
GpStatus WINGDIPAPI GdipResetWorldTransform(GpGraphics *graphics)
GpStatus WINGDIPAPI GdipDrawClosedCurve2I(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count, REAL tension)
GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics *graphics, REAL scale)
GpStatus WINGDIPAPI GdipDrawCurve3I(GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count, INT offset, INT numberOfSegments, REAL tension)
static GpStatus measure_ranges_callback(HDC hdc, GDIPCONST WCHAR *string, INT index, INT length, GDIPCONST GpFont *font, GDIPCONST RectF *rect, GDIPCONST GpStringFormat *format, INT lineno, const RectF *bounds, INT *underlined_indexes, INT underlined_index_count, void *user_data)
static GpStatus end_container(GpGraphics *graphics, GraphicsContainerType type, GraphicsContainer state)
GpStatus WINGDIPAPI GdipBeginContainer2(GpGraphics *graphics, GraphicsContainer *state)
GpStatus WINGDIPAPI GdipCreatePath(GpFillMode fill, GpPath **path)
GpStatus WINGDIPAPI GdipDeletePath(GpPath *path)
GpStatus WINGDIPAPI GdipAddPathPie(GpPath *path, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipAddPathArc(GpPath *path, REAL x1, REAL y1, REAL x2, REAL y2, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipAddPathRectangle(GpPath *path, REAL x, REAL y, REAL width, REAL height)
GpStatus WINGDIPAPI GdipAddPathLine2(GpPath *path, GDIPCONST GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipFlattenPath(GpPath *path, GpMatrix *matrix, REAL flatness)
GpStatus WINGDIPAPI GdipAddPathPolygon(GpPath *path, GDIPCONST GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipClonePath(GpPath *path, GpPath **clone)
GpStatus WINGDIPAPI GdipTransformPath(GpPath *path, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipWidenPath(GpPath *path, GpPen *pen, GpMatrix *matrix, REAL flatness)
GpStatus WINGDIPAPI GdipAddPathBeziers(GpPath *path, GDIPCONST GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipAddPathRectangles(GpPath *path, GDIPCONST GpRectF *rects, INT count)
GpStatus WINGDIPAPI GdipAddPathPolygonI(GpPath *path, GDIPCONST GpPoint *points, INT count)
GpStatus WINGDIPAPI GdipAddPathCurve2(GpPath *path, GDIPCONST GpPointF *points, INT count, REAL tension)
GpStatus WINGDIPAPI GdipAddPathEllipse(GpPath *path, REAL x, REAL y, REAL width, REAL height)
GpStatus WINGDIPAPI GdipAddPathClosedCurve2(GpPath *path, GDIPCONST GpPointF *points, INT count, REAL tension)
GpStatus WINGDIPAPI GdipGetImageWidth(GpImage *image, UINT *width)
GpStatus WINGDIPAPI GdipGetImageHeight(GpImage *image, UINT *height)
GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap *bitmap, GDIPCONST GpRect *rect, UINT flags, PixelFormat format, BitmapData *lockeddata)
GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap *bitmap, INT x, INT y, ARGB *color)
GpStatus WINGDIPAPI GdipBitmapSetPixel(GpBitmap *bitmap, INT x, INT y, ARGB color)
GpStatus WINGDIPAPI GdipCreateHBITMAPFromBitmap(GpBitmap *bitmap, HBITMAP *hbmReturn, ARGB background)
GpStatus WINGDIPAPI GdipGetImageBounds(GpImage *image, GpRectF *srcRect, GpUnit *srcUnit)
GpStatus WINGDIPAPI GdipBitmapUnlockBits(GpBitmap *bitmap, BitmapData *lockeddata)
GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix *matrix, REAL scaleX, REAL scaleY, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix *matrix, GDIPCONST GpMatrix *matrix2, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix *matrix, REAL offsetX, REAL offsetY, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipSetMatrixElements(GpMatrix *matrix, REAL m11, REAL m12, REAL m21, REAL m22, REAL dx, REAL dy)
GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix *matrix, REAL angle, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix *matrix, BOOL *result)
GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix *matrix)
GpStatus WINGDIPAPI GdipTransformMatrixPoints(GpMatrix *matrix, GpPointF *pts, INT count)
GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix **matrix)
GpStatus WINGDIPAPI GdipInvertMatrix(GpMatrix *matrix)
GpStatus WINGDIPAPI GdipIsVisibleRegionRect(GpRegion *region, REAL x, REAL y, REAL w, REAL h, GpGraphics *graphics, BOOL *res)
GpStatus WINGDIPAPI GdipCombineRegionPath(GpRegion *region, GpPath *path, CombineMode mode)
GpStatus WINGDIPAPI GdipIsEmptyRegion(GpRegion *region, GpGraphics *graphics, BOOL *res)
GpStatus WINGDIPAPI GdipSetInfinite(GpRegion *region)
GpStatus WINGDIPAPI GdipSetEmpty(GpRegion *region)
GpStatus WINGDIPAPI GdipGetRegionHRgn(GpRegion *region, GpGraphics *graphics, HRGN *hrgn)
GpStatus WINGDIPAPI GdipGetRegionBoundsI(GpRegion *region, GpGraphics *graphics, GpRect *rect)
GpStatus WINGDIPAPI GdipTransformRegion(GpRegion *region, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipCreateRegionRect(GDIPCONST GpRectF *rect, GpRegion **region)
GpStatus WINGDIPAPI GdipIsVisibleRegionPoint(GpRegion *region, REAL x, REAL y, GpGraphics *graphics, BOOL *res)
GpStatus WINGDIPAPI GdipTranslateRegion(GpRegion *region, REAL dx, REAL dy)
GpStatus WINGDIPAPI GdipCreateRegion(GpRegion **region)
GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion *region, GDIPCONST GpRectF *rect, CombineMode mode)
GpStatus WINGDIPAPI GdipCreateRegionHrgn(HRGN hrgn, GpRegion **region)
GpStatus WINGDIPAPI GdipCombineRegionRegion(GpRegion *region1, GpRegion *region2, CombineMode mode)
GpStatus WINGDIPAPI GdipGetRegionBounds(GpRegion *region, GpGraphics *graphics, GpRectF *rect)
GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath *path, GpRegion **region)
GpStatus WINGDIPAPI GdipDeleteRegion(GpRegion *region)
GpStatus WINGDIPAPI GdipCloneRegion(GpRegion *region, GpRegion **clone)
static void cleanup(void)
HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR lpszPath, DWORD dwMode, IStream **lppStream)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
_In_ uint64_t _In_ uint64_t _In_ uint64_t _In_opt_ traverse_ptr * tp
#define wrap(journal, var)
GpStatus hresult_to_status(HRESULT res)
void delete_element(region_element *element)
void convert_32bppARGB_to_32bppPARGB(UINT width, UINT height, BYTE *dst_bits, INT dst_stride, const BYTE *src_bits, INT src_stride)
const char * debugstr_rectf(const RectF *rc)
REAL units_scale(GpUnit from, GpUnit to, REAL dpi)
const char * debugstr_pointf(const PointF *pt)
COLORREF ARGB2COLORREF(ARGB color)
REAL gdiplus_atan2(REAL dy, REAL dx)
HBITMAP ARGB2BMP(ARGB color)
REAL units_to_pixels(REAL units, GpUnit unit, REAL dpi)
GpStatus METAFILE_SetPageTransform(GpMetafile *metafile, GpUnit unit, REAL scale) DECLSPEC_HIDDEN
GpStatus(* gdip_format_string_callback)(HDC hdc, GDIPCONST WCHAR *string, INT index, INT length, GDIPCONST GpFont *font, GDIPCONST RectF *rect, GDIPCONST GpStringFormat *format, INT lineno, const RectF *bounds, INT *underlined_indexes, INT underlined_index_count, void *user_data)
GpStatus METAFILE_MultiplyWorldTransform(GpMetafile *metafile, GDIPCONST GpMatrix *matrix, MatrixOrder order) DECLSPEC_HIDDEN
GpStatus METAFILE_GraphicsDeleted(GpMetafile *metafile) DECLSPEC_HIDDEN
GpStatus METAFILE_ScaleWorldTransform(GpMetafile *metafile, REAL sx, REAL sy, MatrixOrder order) DECLSPEC_HIDDEN
GpStatus METAFILE_RotateWorldTransform(GpMetafile *metafile, REAL angle, MatrixOrder order) DECLSPEC_HIDDEN
static ARGB color_over(ARGB bg, ARGB fg)
static INT gdip_round(REAL x)
@ IMAGEATTR_NOOP_UNDEFINED
#define WineCoordinateSpaceGdiDevice
GpStatus METAFILE_SetClipRect(GpMetafile *metafile, REAL x, REAL y, REAL width, REAL height, CombineMode mode) DECLSPEC_HIDDEN
GpStatus METAFILE_SaveGraphics(GpMetafile *metafile, DWORD StackIndex) DECLSPEC_HIDDEN
GpStatus METAFILE_GetDC(GpMetafile *metafile, HDC *hdc) DECLSPEC_HIDDEN
GpStatus METAFILE_ReleaseDC(GpMetafile *metafile, HDC hdc) DECLSPEC_HIDDEN
GpStatus METAFILE_GraphicsClear(GpMetafile *metafile, ARGB color) DECLSPEC_HIDDEN
GpStatus METAFILE_SetClipRegion(GpMetafile *metafile, GpRegion *region, CombineMode mode) DECLSPEC_HIDDEN
GpStatus METAFILE_RestoreGraphics(GpMetafile *metafile, DWORD StackIndex) DECLSPEC_HIDDEN
GpStatus METAFILE_BeginContainerNoParams(GpMetafile *metafile, DWORD StackIndex) DECLSPEC_HIDDEN
GpStatus METAFILE_AddSimpleProperty(GpMetafile *metafile, SHORT prop, SHORT val) DECLSPEC_HIDDEN
GpStatus METAFILE_DrawPath(GpMetafile *metafile, GpPen *pen, GpPath *path) DECLSPEC_HIDDEN
GpStatus METAFILE_SetWorldTransform(GpMetafile *metafile, GDIPCONST GpMatrix *transform) DECLSPEC_HIDDEN
GpStatus METAFILE_FillPath(GpMetafile *metafile, GpBrush *brush, GpPath *path) DECLSPEC_HIDDEN
GpStatus METAFILE_BeginContainer(GpMetafile *metafile, GDIPCONST GpRectF *dstrect, GDIPCONST GpRectF *srcrect, GpUnit unit, DWORD StackIndex) DECLSPEC_HIDDEN
GpStatus METAFILE_TranslateWorldTransform(GpMetafile *metafile, REAL dx, REAL dy, MatrixOrder order) DECLSPEC_HIDDEN
GpStatus METAFILE_ResetWorldTransform(GpMetafile *metafile) DECLSPEC_HIDDEN
GpStatus METAFILE_DrawImagePointsRect(GpMetafile *metafile, GpImage *image, GDIPCONST GpPointF *points, INT count, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes *imageAttributes, DrawImageAbort callback, VOID *callbackData) DECLSPEC_HIDDEN
static ARGB color_over_fgpremult(ARGB bg, ARGB fg)
GpStatus METAFILE_FillRectangles(GpMetafile *metafile, GpBrush *brush, GDIPCONST GpRectF *rects, INT count) DECLSPEC_HIDDEN
GpStatus convert_pixels(INT width, INT height, INT dst_stride, BYTE *dst_bits, PixelFormat dst_format, INT src_stride, const BYTE *src_bits, PixelFormat src_format, ColorPalette *palette) DECLSPEC_HIDDEN
GpStatus METAFILE_EndContainer(GpMetafile *metafile, DWORD StackIndex) DECLSPEC_HIDDEN
@ ColorMatrixFlagsAltGray
@ ColorMatrixFlagsDefault
@ CompositingModeSourceOver
@ EmfPlusRecordTypeSetCompositingQuality
@ EmfPlusRecordTypeSetPixelOffsetMode
@ EmfPlusRecordTypeSetCompositingMode
@ EmfPlusRecordTypeSetInterpolationMode
@ EmfPlusRecordTypeSetAntiAliasMode
@ EmfPlusRecordTypeSetTextRenderingHint
@ CustomLineCapTypeAdjustableArrow
@ PixelOffsetModeHighSpeed
@ PixelOffsetModeHighQuality
@ CompositingQualityDefault
@ TextRenderingHintClearTypeGridFit
@ StringFormatFlagsLineLimit
@ StringFormatFlagsNoWrap
@ StringFormatFlagsNoClip
@ DriverStringOptionsRealizedAdvance
@ DriverStringOptionsCmapLookup
@ PathPointTypePathTypeMask
@ PathPointTypeCloseSubpath
@ BrushTypeLinearGradient
@ InterpolationModeHighQualityBicubic
@ InterpolationModeBicubic
@ InterpolationModeHighQualityBilinear
@ InterpolationModeInvalid
@ InterpolationModeHighQuality
@ InterpolationModeDefault
@ InterpolationModeBilinear
@ InterpolationModeNearestNeighbor
@ InterpolationModeLowQuality
@ ImageLockModeUserInputBuf
ImageAbort DrawImageAbort
struct GdiplusAbort GdiplusAbort
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
GLint GLint GLsizei GLsizei height
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLuint GLenum GLenum transform
GLenum GLenum GLenum GLenum GLenum scale
GLdouble GLdouble GLdouble GLdouble top
GLboolean GLboolean GLboolean b
GLsizei GLsizei GLfloat distance
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
GLboolean GLenum GLenum GLvoid * values
GLuint GLsizei GLsizei * length
GLuint GLint GLboolean GLint GLenum access
GLuint GLdouble GLdouble GLint GLint order
GLboolean GLboolean GLboolean GLboolean a
GLsizei const GLfloat * points
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
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
_Check_return_ float __cdecl powf(_In_ float b, _In_ float e)
_Check_return_ _CRT_JIT_INTRINSIC double __cdecl fabs(_In_ double x)
_Check_return_ float __cdecl fmodf(_In_ float x, _In_ float y)
_Check_return_ _CRTIMP double __cdecl ceil(_In_ double x)
#define memcpy(s1, s2, n)
BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heightDst, HDC hdcSrc, int xSrc, int ySrc, int widthSrc, int heightSrc, BLENDFUNCTION blendFunction)
static int font_height(HFONT hFont)
static IPrintDialogCallback callback
static const char * dst_format
static const RECT graphics_bounds[]
static UINT UINT LPWORD LPABC abc
static UINT UINT LPWORD glyphs
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define STGM_SHARE_DENY_WRITE
png_const_structrp png_const_inforp int * unit
BOOL Polygon(CONST PPOINT UnsafePoints, int Count, int polyFillMode)
static int sum(int x_, int y_)
static unsigned __int64 next
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
INT gdi_transform_acquire_count
PixelOffsetMode pixeloffset
InterpolationMode interpolation
CompositingQuality compqual
TextRenderingHint texthint
struct color_key colorkeys[ColorAdjustTypeCount]
REAL gamma[ColorAdjustTypeCount]
struct color_matrix colormatrices[ColorAdjustTypeCount]
enum imageattr_noop noop[ColorAdjustTypeCount]
BOOL gamma_enabled[ColorAdjustTypeCount]
struct color_remap_table colorremaptables[ColorAdjustTypeCount]
GpCustomLineCap * customend
GpCustomLineCap * customstart
WCHAR lfFaceName[LF_FACESIZE]
CompositingQuality compqual
TextRenderingHint texthint
PixelOffsetMode pixeloffset
GraphicsContainerType type
InterpolationMode interpolation
int otmsUnderscorePosition
GDIPCONST GpBrush * brush
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
_In_ HFONT _Out_ PUINT Height
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2
int WINAPI SetMapMode(_In_ HDC, _In_ int)
HBRUSH WINAPI CreateBrushIndirect(_In_ const LOGBRUSH *plb)
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
BOOL WINAPI Ellipse(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
DWORD WINAPI GetGlyphIndicesW(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpstr, _In_ int c, _Out_writes_(c) LPWORD pgi, _In_ DWORD fl)
int WINAPI GetClipBox(_In_ HDC, _Out_ LPRECT)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
int WINAPI SetGraphicsMode(_In_ HDC, _In_ int)
HRGN WINAPI CreateRectRgn(_In_ int, _In_ int, _In_ int, _In_ int)
HPEN WINAPI ExtCreatePen(_In_ DWORD iPenStyle, _In_ DWORD cWidth, _In_ const LOGBRUSH *plbrush, _In_ DWORD cStyle, _In_reads_opt_(cStyle) const DWORD *pstyle)
BOOL WINAPI SetWindowOrgEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
UINT WINAPI SetTextAlign(_In_ HDC, _In_ UINT)
HRGN WINAPI CreatePolygonRgn(_In_reads_(cPoint) const POINT *pptl, _In_ int cPoint, _In_ int iMode)
HGDIOBJ WINAPI GetCurrentObject(_In_ HDC, _In_ UINT)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI GdiFlush(void)
BOOL WINAPI SelectClipPath(_In_ HDC, _In_ int)
BOOL WINAPI SetViewportOrgEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI FillPath(_In_ HDC)
BOOL WINAPI GetTransform(HDC, DWORD, XFORM *)
int WINAPI GetClipRgn(_In_ HDC, _In_ HRGN)
int WINAPI CombineRgn(_In_opt_ HRGN hrgnDest, _In_opt_ HRGN hrgnSrc1, _In_opt_ HRGN hrgnSrc2, _In_ int fnCombineMode)
BOOL WINAPI StretchBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
BOOL WINAPI RestoreDC(_In_ HDC, _In_ int)
#define OUT_DEFAULT_PRECIS
BOOL WINAPI ExtTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_ UINT options, _In_opt_ const RECT *lprect, _In_reads_opt_(c) LPCWSTR lpString, _In_ UINT c, _In_reads_opt_(c) const INT *lpDx)
BOOL WINAPI StrokeAndFillPath(_In_ HDC)
#define CLIP_DEFAULT_PRECIS
UINT WINAPI GetOutlineTextMetricsW(_In_ HDC hdc, _In_ UINT cjCopy, _Out_writes_bytes_opt_(cjCopy) LPOUTLINETEXTMETRICW potm)
BOOL WINAPI GetTextExtentExPointW(_In_ HDC hdc, _In_reads_(cchString) LPCWSTR lpszString, _In_ int cchString, _In_ int nMaxExtent, _Out_opt_ LPINT lpnFit, _Out_writes_to_opt_(cchString, *lpnFit) LPINT lpnDx, _Out_ LPSIZE lpSize)
BOOL WINAPI Rectangle(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
DWORD WINAPI GetRegionData(_In_ HRGN hrgn, _In_ DWORD nCount, _Out_writes_bytes_to_opt_(nCount, return) LPRGNDATA lpRgnData)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
BOOL WINAPI PolyDraw(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_reads_(cpt) const BYTE *aj, _In_ int cpt)
int WINAPI SelectClipRgn(_In_ HDC, _In_opt_ HRGN)
BOOL WINAPI EndPath(_In_ HDC)
BOOL WINAPI BeginPath(_In_ HDC hdc)
DWORD WINAPI GetGlyphOutlineW(_In_ HDC hdc, _In_ UINT uChar, _In_ UINT fuFormat, _Out_ LPGLYPHMETRICS lpgm, _In_ DWORD cjBuffer, _Out_writes_bytes_opt_(cjBuffer) LPVOID pvBuffer, _In_ CONST MAT2 *lpmat2)
int WINAPI SaveDC(_In_ HDC)
int WINAPI ExtSelectClipRgn(_In_ HDC, _In_opt_ HRGN, _In_ int)
int WINAPI GetRgnBox(_In_ HRGN, _Out_ LPRECT)
BOOL WINAPI GetCharABCWidthsW(_In_ HDC hdc, _In_ UINT wFirst, _In_ UINT wLast, _Out_writes_(wLast - wFirst+1) LPABC lpABC)
BOOL WINAPI Pie(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int)
int WINAPI SetPolyFillMode(_In_ HDC, _In_ int)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HWND WINAPI WindowFromDC(_In_ HDC hDC)
BOOL WINAPI IsRectEmpty(_In_ LPCRECT)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HDC WINAPI GetDC(_In_opt_ HWND)