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)
3268 DOUBLE delta_xx, delta_xy, delta_yx, delta_yy;
3270 REAL delta_xx, delta_xy, delta_yx, delta_yy;
3274 dst_data = dst_dyn_data = heap_alloc_zero(
sizeof(
ARGB) * (dst_area.
right - dst_area.
left) * (dst_area.
bottom - dst_area.
top));
3281 dst_stride =
sizeof(
ARGB) * (dst_area.
right - dst_area.
left);
3285 x_dx = dst_to_src_points[1].
X - dst_to_src_points[0].
X;
3286 x_dy = dst_to_src_points[1].
Y - dst_to_src_points[0].
Y;
3287 y_dx = dst_to_src_points[2].
X - dst_to_src_points[0].
X;
3288 y_dy = dst_to_src_points[2].
Y - dst_to_src_points[0].
Y;
3290 delta_yy = dst_area.
top * y_dy;
3291 delta_yx = dst_area.
top * y_dx;
3295 delta_xx = dst_area.
left * x_dx;
3296 delta_xy = dst_area.
left * x_dy;
3303 src_pointf.
X = dst_to_src_points[0].
X + delta_xx + delta_yx;
3304 src_pointf.
Y = dst_to_src_points[0].
Y + delta_xy + delta_yy;
3306 dst_color = (
ARGB*)(dst_data + dst_stride * (
y - dst_area.
top) +
sizeof(
ARGB) * (
x - dst_area.
left));
3308 if (src_pointf.
X >= srcx && src_pointf.
X < srcx + srcwidth && src_pointf.
Y >= srcy && src_pointf.
Y < srcy+srcheight)
3312 imageAttributes, interpolation, offset_mode);
3315 imageAttributes, interpolation, offset_mode);
3330 dst_data = src_data;
3331 dst_stride = src_stride;
3337 dst_data, dst_area.
right - dst_area.
left, dst_area.
bottom - dst_area.
top, dst_stride,
3383 (
void**)&temp_bits,
NULL, 0);
3406 temp_hdc = (
hdc == 0);
3430 hdc, srcx, srcy, srcwidth, srcheight);
3435 hdc, srcx, srcy, srcwidth, srcheight,
SRCCOPY);
3458 rc.
Width = srcwidth;
3466 WARN(
"GpImage with nothing we can draw (metafile in wrong state?)\n");
3481 TRACE(
"(%p, %p, %p, %d, %d, %d, %d, %d, %d, %p, %p, %p)\n", graphics,
image,
points,
count,
3482 srcx, srcy, srcwidth, srcheight, srcUnit, imageAttributes,
callback,
3494 (
REAL)srcwidth, (
REAL)srcheight, srcUnit, imageAttributes,
3502 VOID * callbackData)
3506 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %d, %p, %p, %p)\n",
3507 graphics,
image, dstx, dsty, dstwidth, dstheight, srcx, srcy,
3508 srcwidth, srcheight, srcUnit, imageattr,
callback, callbackData);
3512 points[1].X = dstx + dstwidth;
3515 points[2].Y = dsty + dstheight;
3518 srcwidth, srcheight, srcUnit, imageattr,
callback, callbackData);
3525 VOID * callbackData)
3529 TRACE(
"(%p, %p, %d, %d, %d, %d, %d, %d, %d, %d, %d, %p, %p, %p)\n",
3530 graphics,
image, dstx, dsty, dstwidth, dstheight, srcx, srcy,
3531 srcwidth, srcheight, srcUnit, imageAttributes,
callback, callbackData);
3535 points[1].X = dstx + dstwidth;
3538 points[2].Y = dsty + dstheight;
3541 srcwidth, srcheight, srcUnit, imageAttributes,
callback, callbackData);
3551 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics,
image,
x,
y,
width,
height);
3553 if(!graphics || !
image)
3568 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics,
image,
x,
y,
width,
height);
3578 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics, pen,
x1,
y1,
x2,
y2);
3596 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics, pen,
x1,
y1,
x2,
y2);
3609 if(!pen || !graphics || (
count < 2))
3686 INT output_height, output_width;
3689 static const BYTE static_dash_pattern[] = {1,1,1,0,1,0,1,0};
3690 const BYTE *dash_pattern;
3691 INT dash_pattern_size;
3742 output_width = output_area.
right - output_area.
left + 1;
3743 output_height = output_area.
bottom - output_area.
top + 1;
3745 if (output_width <= 0 || output_height <= 0)
3751 gp_output_area.
X = output_area.
left;
3752 gp_output_area.
Y = output_area.
top;
3753 gp_output_area.
Width = output_width;
3754 gp_output_area.
Height = output_height;
3756 output_bits = heap_alloc_zero(output_width * output_height *
sizeof(
DWORD));
3766 brush_bits = heap_alloc_zero(output_width * output_height *
sizeof(
DWORD));
3771 &gp_output_area, output_width);
3784 dash_pattern_size = 0;
3789 if (dash_pattern_size != 0)
3791 dash_pattern = dyn_dash_pattern =
heap_alloc(dash_pattern_size);
3793 if (dyn_dash_pattern)
3800 dyn_dash_pattern[
j++] = (
i&1)^1;
3812 dash_pattern = static_dash_pattern;
3813 dash_pattern_size = 1;
3816 dash_pattern = static_dash_pattern;
3817 dash_pattern_size = 4;
3820 dash_pattern = &static_dash_pattern[4];
3821 dash_pattern_size = 2;
3824 dash_pattern = static_dash_pattern;
3825 dash_pattern_size = 6;
3828 dash_pattern = static_dash_pattern;
3829 dash_pattern_size = 8;
3839 int dash_pos = dash_pattern_size - 1;
3845 GpPoint start_pointi, end_pointi;
3856 subpath_start = start_point;
3859 end_point = subpath_start;
3865 start_pointi.
X =
floorf(start_point.
X);
3866 start_pointi.
Y =
floorf(start_point.
Y);
3867 end_pointi.
X =
floorf(end_point.
X);
3868 end_pointi.
Y =
floorf(end_point.
Y);
3870 if(start_pointi.
X == end_pointi.
X && start_pointi.
Y == end_pointi.
Y)
3874 if (
abs(start_pointi.
Y - end_pointi.
Y) >
abs(start_pointi.
X - end_pointi.
X))
3878 if (start_pointi.
Y < end_pointi.
Y)
3894 (end_point.
X - start_point.
X) * (
y + output_area.
top - start_point.
Y) / (end_point.
Y - start_point.
Y) )
3897 if (
x == prev_x &&
y == prev_y)
3902 dash_pos = (dash_pos + 1 == dash_pattern_size) ? 0 : dash_pos + 1;
3904 if (!dash_pattern[dash_pos])
3907 if (x < 0 || x >= output_width || y < 0 || y >= output_height)
3911 output_bits[
x +
y*output_width] = brush_bits[
x +
y*output_width];
3920 if (start_pointi.
X < end_pointi.
X)
3936 (end_point.
Y - start_point.
Y) * (
x + output_area.
left - start_point.
X) / (end_point.
X - start_point.
X) )
3939 if (
x == prev_x &&
y == prev_y)
3944 dash_pos = (dash_pos + 1 == dash_pattern_size) ? 0 : dash_pos + 1;
3946 if (!dash_pattern[dash_pos])
3949 if (x < 0 || x >= output_width || y < 0 || y >= output_height)
3953 output_bits[
x +
y*output_width] = brush_bits[
x +
y*output_width];
3967 (
BYTE*)output_bits, output_width, output_height, output_width * 4,
3993 if (pen->
width < 1.415)
4042 t.matrix[0] *
t.matrix[0] +
t.matrix[1] *
t.matrix[1],
4043 t.matrix[2] *
t.matrix[2] +
t.matrix[3] *
t.matrix[3]));
4074 TRACE(
"(%p, %p, %p)\n", graphics, pen,
path);
4076 if(!pen || !graphics)
4082 if (
path->pathdata.Count == 0)
4101 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f)\n", graphics, pen,
x,
y,
4104 if(!graphics || !pen)
4124 TRACE(
"(%p, %p, %d, %d, %d, %d, %.2f, %.2f)\n", graphics, pen,
x,
y,
4136 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics, pen,
x,
y,
width,
height);
4138 if(!pen || !graphics)
4158 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics, pen,
x,
y,
width,
height);
4169 TRACE(
"(%p, %p, %p, %d)\n", graphics, pen, rects,
count);
4171 if(!graphics || !pen || !rects ||
count < 1)
4195 TRACE(
"(%p, %p, %p, %d)\n", graphics, pen, rects,
count);
4197 if(!rects ||
count<=0)
4223 TRACE(
"(%p, %p, %p, %d, %.2f, %d)\n", graphics, brush,
points,
4226 if(!graphics || !brush || !
points)
4253 TRACE(
"(%p, %p, %p, %d, %.2f, %d)\n", graphics, brush,
points,
4300 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics, brush,
x,
y,
width,
height);
4302 if(!graphics || !brush)
4326 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics, brush,
x,
y,
width,
height);
4399 TRACE(
"(%p, %p, %p)\n", graphics, brush,
path);
4401 if(!brush || !graphics || !
path)
4407 if (!
path->pathdata.Count)
4421 FIXME(
"Not implemented for brushtype %i\n", brush->
bt);
4434 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f)\n",
4435 graphics, brush,
x,
y,
width,
height, startAngle, sweepAngle);
4437 if(!graphics || !brush)
4461 TRACE(
"(%p, %p, %d, %d, %d, %d, %.2f, %.2f)\n",
4462 graphics, brush,
x,
y,
width,
height, startAngle, sweepAngle);
4546 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics, brush,
x,
y,
width,
height);
4561 TRACE(
"(%p, %p, %d, %d, %d, %d)\n", graphics, brush,
x,
y,
width,
height);
4577 TRACE(
"(%p, %p, %p, %d)\n", graphics, brush, rects,
count);
4579 if(!graphics || !brush || !rects ||
count <= 0)
4607 TRACE(
"(%p, %p, %p, %d)\n", graphics, brush, rects,
count);
4609 if(!rects ||
count <= 0)
4728 gp_bound_rect.
X = bound_rect.
left;
4729 gp_bound_rect.
Y = bound_rect.
top;
4733 pixel_data = heap_alloc_zero(
sizeof(*pixel_data) * gp_bound_rect.
Width * gp_bound_rect.
Height);
4740 &gp_bound_rect, gp_bound_rect.
Width);
4744 gp_bound_rect.
Y, (
BYTE*)pixel_data, gp_bound_rect.
Width,
4745 gp_bound_rect.
Height, gp_bound_rect.
Width * 4, hregion,
4767 TRACE(
"(%p, %p, %p)\n", graphics, brush, region);
4769 if (!(graphics && brush && region))
4783 FIXME(
"not implemented for brushtype %i\n", brush->
bt);
4792 TRACE(
"(%p,%u)\n", graphics, intention);
4857 if(!graphics || !
mode)
4891 if(!graphics || !
mode)
4905 FIXME(
"(%p, %p): Passing color unmodified\n", graphics, argb);
4907 if(!graphics || !argb)
4920 if(!graphics || !
scale)
4935 if(!graphics || !
unit)
4952 if(!graphics || !
mode)
4968 if(!graphics || !
mode)
4981 TRACE(
"(%p, %p)\n", graphics, contrast);
4983 if(!graphics || !contrast)
4997 if(!graphics || !
hint)
5016 if(!graphics || !
rect)
5052 if(!graphics || !
rect)
5115 TRACE(
"(%p, %p)\n", graphics,
res);
5117 if(!graphics || !
res)
5184 pts[1].
X -= pts[0].
X;
5185 pts[1].
Y -= pts[0].
Y;
5211 int sum = 0,
height = 0, fit, fitcpy,
i,
j, lret, nwidth,
5212 nheight, lineend, lineno = 0;
5218 INT *hotkeyprefix_offsets=
NULL;
5219 INT hotkeyprefix_count=0;
5220 INT hotkeyprefix_pos=0, hotkeyprefix_end_pos=0;
5225 stringdup = heap_alloc_zero((
length + 1) *
sizeof(
WCHAR));
5231 nwidth =
rect->Width;
5232 nheight =
rect->Height;
5233 if (ignore_empty_clip)
5235 if (!nwidth) nwidth =
INT_MAX;
5236 if (!nheight) nheight =
INT_MAX;
5239 hkprefix =
format->hkprefix;
5245 if (
string[
i] ==
'&')
5246 hotkeyprefix_count++;
5250 if (hotkeyprefix_count)
5251 hotkeyprefix_offsets = heap_alloc_zero(
sizeof(
INT) * hotkeyprefix_count);
5253 hotkeyprefix_count = 0;
5257 if(!
isprintW(
string[
i]) && (
string[
i] !=
'\n'))
5261 if (
string[
i] ==
'\t')
5265 hotkeyprefix_offsets[hotkeyprefix_count++] =
j;
5272 seen_prefix =
FALSE;
5274 stringdup[
j] =
string[
i];
5290 for(lret = 0; lret < fit; lret++)
5291 if(*(stringdup +
sum + lret) ==
'\n')
5296 lineend = fit = lret;
5298 if(*(stringdup +
sum + fit) ==
' ')
5299 while(*(stringdup +
sum + fit) ==
' ')
5302 while(*(stringdup +
sum + fit - 1) !=
' '){
5305 if(*(stringdup +
sum + fit) ==
'\t')
5314 while(*(stringdup +
sum + lineend - 1) ==
' ' ||
5315 *(stringdup +
sum + lineend - 1) ==
'\t')
5351 for (hotkeyprefix_end_pos=hotkeyprefix_pos; hotkeyprefix_end_pos<hotkeyprefix_count; hotkeyprefix_end_pos++)
5352 if (hotkeyprefix_offsets[hotkeyprefix_end_pos] >=
sum + lineend)
5357 &hotkeyprefix_offsets[hotkeyprefix_pos],
5358 hotkeyprefix_end_pos-hotkeyprefix_pos, user_data);
5363 sum += fit + (lret < fitcpy ? 1 : 0);
5367 hotkeyprefix_pos = hotkeyprefix_end_pos;
5391 INT lineno,
const RectF *bounds,
INT *underlined_indexes,
5392 INT underlined_index_count,
void *user_data)
5402 if (range_start < range_end)
5407 range_rect.
Y = bounds->
Y /
args->rel_height;
5412 range_rect.
X = (bounds->
X + range_size.
cx) /
args->rel_width;
5416 range_rect.
Width = (bounds->
X + range_size.
cx) /
args->rel_width - range_rect.
X;
5434 HFONT gdifont, oldfont;
5447 if (regionCount < stringFormat->range_count)
5476 scaled_rect.
X = (layoutRect->X + margin_x) *
args.rel_width;
5477 scaled_rect.
Y = layoutRect->Y *
args.rel_height;
5478 scaled_rect.
Width = layoutRect->Width *
args.rel_width;
5479 scaled_rect.
Height = layoutRect->Height *
args.rel_height;
5481 if (scaled_rect.
Width >= 1 << 23) scaled_rect.
Width = 1 << 23;
5482 if (scaled_rect.
Height >= 1 << 23) scaled_rect.
Height = 1 << 23;
5522 INT lineno,
const RectF *bounds,
INT *underlined_indexes,
5523 INT underlined_index_count,
void *user_data)
5526 REAL new_width, new_height;
5531 if (new_width >
args->bounds->Width)
5532 args->bounds->Width = new_width;
5534 if (new_height >
args->bounds->Height)
5535 args->bounds->Height = new_height;
5537 if (
args->codepointsfitted)
5540 if (
args->linesfilled)
5541 (*
args->linesfilled)++;
5555 HFONT oldfont, gdifont;
5563 TRACE(
"(%p, %s, %i, %p, %s, %p, %p, %p, %p)\n", graphics,
5582 TRACE(
"may be ignoring some format flags: attr %x\n",
format->attr);
5596 margin_x = (
format &&
format->generic_typographic) ? 0.0 :
font->emSize / 6.0;
5599 scaled_rect.
X = (
rect->X + margin_x) *
args.rel_width;
5600 scaled_rect.
Y =
rect->Y *
args.rel_height;
5605 scaled_rect.
Width -= margin_x * 2.0 *
args.rel_width;
5606 if (scaled_rect.
Width < 0.5)
return Ok;
5609 if (scaled_rect.
Width >= 1 << 23) scaled_rect.
Width = 1 << 23;
5610 if (scaled_rect.
Height >= 1 << 23) scaled_rect.
Height = 1 << 23;
5656 INT lineno,
const RectF *bounds,
INT *underlined_indexes,
5657 INT underlined_index_count,
void *user_data)
5663 position.
X =
args->x + bounds->
X /
args->rel_width;
5664 position.
Y =
args->y + bounds->
Y /
args->rel_height +
args->ascent;
5667 args->brush, &position,
5670 if (
stat ==
Ok && underlined_index_count)
5673 REAL underline_y, underline_height;
5681 for (
i=0;
i<underlined_index_count;
i++)
5685 INT ofs = underlined_indexes[
i] -
index;
5709 INT save_state, format_flags = 0;
5716 TRACE(
"(%p, %s, %i, %p, %s, %p, %p)\n",
graphics,
debugstr_wn(
string,
length),
5732 TRACE(
"may be ignoring some format flags: attr %x\n",
format->attr);
5734 format_flags =
format->attr;
5746 offsety = (
rect->Height - bounds.
Height) / 2;
5750 TRACE(
"line align %d, offsety %f\n",
format->line_align, offsety);
5767 rectcpy[3].
X = rectcpy[0].
X =
rect->X;
5768 rectcpy[1].
Y = rectcpy[0].
Y =
rect->Y;
5769 rectcpy[2].
X = rectcpy[1].
X =
rect->X +
rect->Width;
5770 rectcpy[3].
Y = rectcpy[2].
Y =
rect->Y +
rect->Height;
5774 margin_x = (
format &&
format->generic_typographic) ? 0.0 :
font->emSize / 6.0;
5778 scaled_rect.Y = 0.0;
5781 if (scaled_rect.Width >= 0.5)
5783 scaled_rect.Width -= margin_x * 2.0 *
rel_width;
5784 if (scaled_rect.Width < 0.5)
return Ok;
5787 if (scaled_rect.Width >= 1 << 23) scaled_rect.Width = 1 << 23;
5788 if (scaled_rect.Height >= 1 << 23) scaled_rect.Height = 1 << 23;
5791 scaled_rect.Width != 1 << 23 && scaled_rect.Height != 1 << 23 &&
5792 rect->Width > 0.0 &&
rect->Height > 0.0)
5934 REAL scale_x, scale_y;
5951 scaled_srcrect.
X = scale_x * srcrect->X;
5952 scaled_srcrect.
Y = scale_y * srcrect->Y;
5953 scaled_srcrect.
Width = scale_x * srcrect->Width;
5954 scaled_srcrect.
Height = scale_y * srcrect->Height;
5960 transform.matrix[4] = dstrect->X - scaled_srcrect.
X;
5961 transform.matrix[5] = dstrect->Y - scaled_srcrect.
Y;
5978 if (!dstrect || !srcrect)
5981 dstrectf.
X = dstrect->X;
5982 dstrectf.
Y = dstrect->Y;
5983 dstrectf.
Width = dstrect->Width;
5984 dstrectf.
Height = dstrect->Height;
5986 srcrectf.
X = srcrect->X;
5987 srcrectf.
Y = srcrect->Y;
5988 srcrectf.
Width = srcrect->Width;
5989 srcrectf.
Height = srcrect->Height;
6269 FIXME(
"value is unused in rendering\n");
6374 TRACE(
"%f,%f,%f,%f,%f,%f\n",
6485 TRACE(
"(%p, %.2f, %.2f, %.2f, %.2f, %d)\n",
graphics,
x,
y,
width,
height,
mode);
6526 TRACE(
"(%p, %d, %d, %d, %d, %d)\n",
graphics,
x,
y,
width,
height,
mode);
6719 bmih.
biSize =
sizeof(bmih);
6864 ERR(
"called without matching gdi_transform_acquire\n");
6879 REAL scale_x, scale_y;
6883 if (dst_space != src_space)
6894 if (dst_space < src_space)
6897 switch ((
int)src_space)
6929 switch ((
int)src_space)
6977 if (src_space == dst_space)
return Ok;
7070 REAL min_x, min_y, max_x, max_y,
x,
y;
7073 const WORD *glyph_indices;
7088 boundingBox->
X = 0.0;
7089 boundingBox->
Y = 0.0;
7090 boundingBox->
Width = 0.0;
7091 boundingBox->
Height = 0.0;
7094 if (
flags & unsupported_flags)
7095 FIXME(
"Ignoring flags %x\n",
flags & unsupported_flags);
7123 glyph_indices = dynamic_glyph_indices = heap_alloc_zero(
sizeof(
WORD) *
length);
7134 glyph_indices =
text;
7136 min_x = max_x =
x = positions[0].X;
7137 min_y = max_y =
y = positions[0].Y;
7157 if (max_y <
y + descent) max_y =
y + descent;
7158 if (min_x >
x) min_x =
x;
7162 if (max_x <
x) max_x =
x;
7169 boundingBox->
X = min_x;
7170 boundingBox->
Y = min_y;
7171 boundingBox->
Width = max_x - min_x;
7172 boundingBox->
Height = max_y - min_y;
7190 if (
flags & unsupported_flags)
7191 FIXME(
"Ignoring flags %x\n",
flags & unsupported_flags);
7194 eto_flags |= ETO_GLYPH_INDEX;
7236 PointF *real_positions, real_position;
7241 DWORD max_glyphsize=0;
7243 static const MAT2 identity = {{0,1}, {0,0}, {0,0}, {0,1}};
7246 int text_mask_stride;
7248 int pixel_data_stride;
7258 if (
flags & unsupported_flags)
7259 FIXME(
"Ignoring flags %x\n",
flags & unsupported_flags);
7267 real_position = positions[0];
7274 real_positions = heap_alloc_zero(
sizeof(
PointF) *
length);
7275 if (!real_positions)
7305 ERR(
"GetGlyphOutlineW failed\n");
7312 if (glyphsize > max_glyphsize)
7313 max_glyphsize = glyphsize;
7323 if (
top < min_y) min_y =
top;
7335 if (max_glyphsize == 0)
7339 glyph_mask = heap_alloc_zero(max_glyphsize);
7340 text_mask = heap_alloc_zero((max_x - min_x) * (max_y - min_y));
7341 text_mask_stride = max_x - min_x;
7343 if (!(glyph_mask && text_mask))
7360 &glyphmetrics, max_glyphsize, glyph_mask, &
identity);
7372 BYTE *text_val = text_mask + (
left - min_x) + (
top - min_y +
y) * text_mask_stride;
7375 *text_val =
min(64, *text_val + *glyph_val);
7388 pixel_data = heap_alloc_zero(4 * (max_x - min_x) * (max_y - min_y));
7395 pixel_area.
X = min_x;
7396 pixel_area.
Y = min_y;
7397 pixel_area.
Width = max_x - min_x;
7398 pixel_area.
Height = max_y - min_y;
7399 pixel_data_stride = pixel_area.
Width * 4;
7412 BYTE *text_val = text_mask + text_mask_stride *
y;
7413 BYTE *pixel_val = pixel_data + pixel_data_stride *
y + 3;
7416 *pixel_val = (*pixel_val) * (*text_val) / 64;
7506 FIXME(
"not implemented\n");
7519 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 count
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
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 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 *)
static int font_height(HFONT hFont)
#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)