45 const float a1 = 0.254829592f;
46 const float a2 = -0.284496736f;
47 const float a3 = 1.421413741f;
48 const float a4 = -1.453152027f;
49 const float a5 = 1.061405429f;
50 const float p = 0.3275911f;
72 TRACE(
"(%p, %p)\n", brush, clone);
83 *clone = &
dest->brush;
111 dest->transform =
src->transform;
119 pcount =
dest->pblendcount;
126 if(!
dest->blendfac || !
dest->blendpos || !
dest->surroundcolors ||
127 (pcount && (!
dest->pblendcolor || !
dest->pblendpos))){
148 *clone = &
dest->brush;
165 pcount =
dest->pblendcount;
172 if (!
dest->blendfac || !
dest->blendpos ||
173 (pcount && (!
dest->pblendcolor || !
dest->pblendpos)))
183 dest->transform =
src->transform;
194 *clone = &
dest->brush;
214 *clone = &new_texture->
brush;
222 ERR(
"not implemented for brush type %d\n", brush->
bt);
226 TRACE(
"<-- %p\n", *clone);
233 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff },
234 { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 },
235 { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
TRUE },
236 { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01,
TRUE },
237 { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xff },
238 { 0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81,
TRUE },
239 { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80 },
240 { 0x00, 0x08, 0x00, 0x80, 0x00, 0x08, 0x00, 0x80 },
241 { 0x00, 0x22, 0x00, 0x88, 0x00, 0x22, 0x00, 0x88 },
242 { 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88 },
243 { 0x11, 0xaa, 0x44, 0xaa, 0x11, 0xaa, 0x44, 0xaa },
244 { 0x15, 0xaa, 0x55, 0xaa, 0x51, 0xaa, 0x55, 0xaa },
245 { 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa },
246 { 0x55, 0xbb, 0x55, 0xee, 0x55, 0xbb, 0x55, 0xee },
247 { 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77 },
248 { 0xff, 0xdd, 0xff, 0x77, 0xff, 0xdd, 0xff, 0x77 },
249 { 0xff, 0xfe, 0xff, 0xef, 0xff, 0xfe, 0xff, 0xef },
250 { 0x7f, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff },
251 { 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88 },
252 { 0x88, 0x44, 0x22, 0x11, 0x88, 0x44, 0x22, 0x11 },
253 { 0x99, 0x33, 0x66, 0xcc, 0x99, 0x33, 0x66, 0xcc },
254 { 0x99, 0xcc, 0x66, 0x33, 0x99, 0xcc, 0x66, 0x33 },
255 { 0x83, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xc1 },
256 { 0xc1, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0x83 },
257 { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 },
258 { 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff },
259 { 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55 },
260 { 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff },
261 { 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc },
262 { 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff },
263 { 0x00, 0x00, 0x11, 0x22, 0x44, 0x88, 0x00, 0x00 },
264 { 0x00, 0x00, 0x88, 0x44, 0x22, 0x11, 0x00, 0x00 },
265 { 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0 },
266 { 0x08, 0x08, 0x08, 0x08, 0x80, 0x80, 0x80, 0x80 },
267 { 0x04, 0x20, 0x01, 0x10, 0x02, 0x40, 0x08, 0x80 },
268 { 0x8d, 0x0c, 0xc0, 0xd8, 0x1b, 0x03, 0x30, 0xb1 },
269 { 0x18, 0x24, 0x42, 0x81, 0x18, 0x24, 0x42, 0x81 },
270 { 0xc0, 0x25, 0x18, 0x00, 0xc0, 0x25, 0x18, 0x00 },
271 { 0x81, 0x42, 0x24, 0x18, 0x08, 0x04, 0x02, 0x01 },
272 { 0x08, 0x08, 0x08, 0xff, 0x80, 0x80, 0x80, 0xff },
273 { 0x51, 0x22, 0x14, 0x88, 0x45, 0x22, 0x54, 0x88 },
274 { 0xf0, 0xf0, 0xf0, 0xf0, 0x55, 0xaa, 0x55, 0xaa },
275 { 0x80, 0x01, 0x80, 0x00, 0x10, 0x08, 0x10, 0x00 },
276 { 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xaa },
277 { 0x00, 0x22, 0x00, 0x08, 0x00, 0x22, 0x00, 0x80 },
278 { 0x01, 0x01, 0x02, 0x0c, 0x30, 0x48, 0x84, 0x03 },
279 { 0x99, 0xff, 0x66, 0xff, 0x99, 0xff, 0x66, 0xff },
280 { 0xf8, 0xf8, 0x98, 0x77, 0x8f, 0x8f, 0x89, 0x77 },
281 { 0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88, 0xff },
282 { 0x99, 0x66, 0x66, 0x99, 0x99, 0x66, 0x66, 0x99 },
283 { 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0 },
284 { 0x01, 0x82, 0x44, 0x28, 0x10, 0x28, 0x44, 0x82 },
285 { 0x00, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10 },
304 TRACE(
"(%d, %ld, %ld, %p)\n", hatchstyle, forecol, backcol, brush);
315 (*brush)->forecol = forecol;
316 (*brush)->backcol = backcol;
317 (*brush)->hatchstyle = hatchstyle;
318 TRACE(
"<-- %p\n", *brush);
330 (*line)->startcolor = startcolor;
331 (*line)->endcolor = endcolor;
332 (*line)->wrap =
wrap;
333 (*line)->gamma =
FALSE;
334 (*line)->rect = *
rect;
335 (*line)->blendcount = 1;
339 if (!(*line)->blendfac || !(*line)->blendpos)
341 free((*line)->blendfac);
342 free((*line)->blendpos);
348 (*line)->blendfac[0] = 1.0f;
349 (*line)->blendpos[0] = 1.0f;
351 (*line)->pblendcolor =
NULL;
352 (*line)->pblendpos =
NULL;
353 (*line)->pblendcount = 0;
362 float trans_x =
line->rect.X + (
line->rect.Width / 2.f);
363 float trans_y =
line->rect.Y + (
line->rect.Height / 2.f);
366 float t_cos, t_sin, w_ratio, h_ratio;
375 w_ratio = (
fabs(t_cos) *
line->rect.Width +
fabs(t_sin) *
line->rect.Height) /
line->rect.Width;
376 h_ratio = (
fabs(t_sin) *
line->rect.Width +
fabs(t_cos) *
line->rect.Height) /
line->rect.Height;
419 if (
rect.Width == 0.0f)
424 else if (
rect.Height == 0.0f)
454 stF.
X = (
REAL)startpoint->X;
455 stF.
Y = (
REAL)startpoint->Y;
468 TRACE(
"(%s, %lx, %lx, %d, %d, %p)\n",
debugstr_rectf(
rect), startcolor, endcolor,
mode,
501 TRACE(
"(%p, %lx, %lx, %d, %d, %p)\n",
rect, startcolor, endcolor,
mode,
516 REAL exofs, eyofs, far_x, far_y;
517 REAL sin_angle, cos_angle, sin_cos_angle;
520 TRACE(
"(%s, %lx, %lx, %.2f, %d, %d, %p)\n",
debugstr_rectf(
rect), startcolor, endcolor,
angle, isAngleScalable,
555 sin_cos_angle = sin_angle * cos_angle;
567 else if (sin_cos_angle >= 0)
586 if (sin_cos_angle >= 0)
588 exofs =
rect->Height * sin_cos_angle +
rect->Width * cos_angle * cos_angle;
589 eyofs =
rect->Height * sin_angle * sin_angle +
rect->Width * sin_cos_angle;
593 exofs =
rect->Width * sin_angle * sin_angle +
rect->Height * sin_cos_angle;
594 eyofs = -
rect->Width * sin_cos_angle +
rect->Height * sin_angle * sin_angle;
619 TRACE(
"(%p, %lx, %lx, %.2f, %d, %d, %p)\n",
rect, startcolor, endcolor,
angle, isAngleScalable,
629 REAL sum_x = 0, sum_y = 0;
634 if (
path->pathdata.Count < 2)
647 (*grad)->surroundcolors =
malloc(
sizeof(
ARGB));
648 if(!(*grad)->blendfac || !(*grad)->blendpos || !(*grad)->surroundcolors){
649 free((*grad)->blendfac);
650 free((*grad)->blendpos);
651 free((*grad)->surroundcolors);
656 (*grad)->blendfac[0] = 1.0;
657 (*grad)->blendpos[0] = 1.0;
658 (*grad)->blendcount = 1;
660 (*grad)->path =
path;
663 (*grad)->centercolor = centercolor;
665 (*grad)->gamma =
FALSE;
666 for (
i=0;
i<
path->pathdata.Count;
i++)
668 sum_x +=
path->pathdata.Points[
i].X;
669 sum_y +=
path->pathdata.Points[
i].Y;
671 (*grad)->center.X = sum_x /
path->pathdata.Count;
672 (*grad)->center.Y = sum_y /
path->pathdata.Count;
674 (*grad)->focus.X = 0.0;
675 (*grad)->focus.Y = 0.0;
676 (*grad)->surroundcolors[0] = 0xffffffff;
677 (*grad)->surroundcolorcount = 1;
679 TRACE(
"<-- %p\n", *grad);
712 (*grad)->wrap =
wrap;
745 (*grad)->wrap =
wrap;
793 (*sf)->color =
color;
795 TRACE(
"<-- %p\n", *sf);
853 TRACE(
"%p %d %f %f %f %f %p\n",
image, wrapmode,
881 TRACE(
"(%p, %p, %.2f, %.2f, %.2f, %.2f, %p)\n",
image, imageattr,
x,
y,
width,
height,
890 FIXME(
"not implemented for image type %d\n",
image->type);
919 (*texture)->image = new_image;
948 TRACE(
"(%p, %p, %d, %d, %d, %d, %p)\n",
image, imageattr,
x,
y,
width,
height,
967 imageattr->
wrap = wrapmode;
989 TRACE(
"(%p, %p)\n", brush, backcol);
1000 TRACE(
"(%p, %p)\n", brush, forecol);
1011 TRACE(
"(%p, %p)\n", brush, hatchstyle);
1022 TRACE(
"(%p)\n", brush);
1061 if(!
line || !usinggamma)
1064 *usinggamma =
line->gamma;
1071 TRACE(
"(%p, %p)\n", brush, wrapmode);
1076 *wrapmode = brush->
wrap;
1084 TRACE(
"(%p, %p, %p, %d)\n", brush, blend, positions,
count);
1089 if(count < brush->blendcount)
1150 TRACE(
"(%p,%p)\n", grad, colors);
1163 TRACE(
"(%p, %p, %p)\n", grad,
x,
y);
1177 TRACE(
"(%p, %p)\n", grad, gamma);
1182 *gamma = grad->
gamma;
1194 FIXME(
"not implemented\n");
1259 if (i < grad->surroundcolorcount)
1289 TRACE(
"(%p, %p)\n", brush, wrapmode);
1294 *wrapmode = brush->
wrap;
1301 TRACE(
"(%p, %p)\n", sf, argb);
1318 if(!brush || !
image)
1344 TRACE(
"(%p, %p)\n", brush, wrapmode);
1346 if(!brush || !wrapmode)
1373 TRACE(
"(%p)\n", brush);
1387 TRACE(
"(%p, %.2f, %.2f, %d)\n", brush, sx, sy,
order);
1398 REAL *new_blendfac, *new_blendpos;
1400 TRACE(
"(%p, %p, %p, %i)\n", brush, factors, positions,
count);
1403 (
count >= 2 && (positions[0] != 0.0f || positions[
count-1] != 1.0f)))
1409 if (!new_blendfac || !new_blendpos)
1432 TRACE(
"(%p, %p, %p, %i)\n", brush, factors, positions,
count);
1437 if (count < brush->blendcount)
1466 line->gamma = usegamma;
1489 erf_range = 2.0 /
sqrt(2);
1493 min_erf =
erf(-erf_range);
1494 scale_erf =
scale / (-2.0 * min_erf);
1503 factors[
i] = scale_erf * (
erf(2 * erf_range *
i /
precision - erf_range) - min_erf);
1508 positions[num_points] = focus;
1509 factors[num_points] =
scale;
1516 positions[
i+num_points-1] = (focus + ((1.0-focus) *
i /
precision));
1517 factors[
i+num_points-1] = scale_erf * (
erf(erf_range - 2 * erf_range *
i /
precision) - min_erf);
1520 positions[num_points-1] = 1.0;
1521 factors[num_points-1] = 0.0;
1543 REAL *new_blendfac, *new_blendpos;
1554 if (!new_blendfac || !new_blendpos)
1581 TRACE(
"(%p,%0.2f,%0.2f)\n", brush, focus,
scale);
1588 factors[num_points] = 0.0;
1589 positions[num_points] = 0.0;
1593 factors[num_points] =
scale;
1594 positions[num_points] = focus;
1599 factors[num_points] = 0.0;
1600 positions[num_points] = 1.0;
1622 if (!new_color || !new_pos)
1659 FIXME(
"Braindead behavior on wrong-sized buffer not implemented.\n");
1685 TRACE(
"(%p, %lx)\n", grad, argb);
1727 TRACE(
"(%p, %.2f, %.2f)\n", grad,
x,
y);
1741 TRACE(
"(%p, %d)\n", grad, gamma);
1746 grad->
gamma = gamma;
1758 FIXME(
"not implemented\n");
1775 TRACE(
"(%p,%0.2f,%0.2f)\n", grad, focus,
scale);
1781 erf_range = 2.0 /
sqrt(2);
1785 min_erf =
erf(-erf_range);
1786 scale_erf =
scale / (-2.0 * min_erf);
1795 factors[
i] = scale_erf * (
erf(2 * erf_range *
i /
precision - erf_range) - min_erf);
1800 positions[num_points] = focus;
1801 factors[num_points] =
scale;
1808 positions[
i+num_points-1] = (focus + ((1.0-focus) *
i /
precision));
1809 factors[
i+num_points-1] = scale_erf * (
erf(erf_range - 2 * erf_range *
i /
precision) - min_erf);
1812 positions[num_points-1] = 1.0;
1813 factors[num_points-1] = 0.0;
1822 ARGB *new_surroundcolors;
1831 num_colors = *
count;
1836 for (
i=1;
i < num_colors;
i++)
1837 if (argb[
i] != argb[
i-1])
1840 if (
i == num_colors)
1844 new_surroundcolors =
malloc(num_colors *
sizeof(
ARGB));
1845 if (!new_surroundcolors)
1848 memcpy(new_surroundcolors, argb, num_colors *
sizeof(
ARGB));
1910 TRACE(
"(%p)\n", grad);
1932 TRACE(
"(%p,%0.2f,%0.2f,%i)\n", grad, sx, sy,
order);
1953 TRACE(
"(%p, %lx)\n", sf, argb);
1985 TRACE(
"(%p, %d)\n", brush, wrapmode);
1998 TRACE(
"(%p, %lx, %lx)\n", brush, color1, color2);
2011 TRACE(
"(%p, %p)\n", brush, colors);
2043 TRACE(
"(%p,%.2f,%.2f)\n", brush, focus,
scale);
2049 factors[num_points] = 0.0;
2050 positions[num_points] = 0.0;
2054 factors[num_points] =
scale;
2055 positions[num_points] = focus;
2060 factors[num_points] = 0.0;
2061 positions[num_points] = 1.0;
2073 TRACE(
"(%p,%p,%p,%i)\n", brush, blend, positions,
count);
2076 positions[0] != 0.0f || positions[
count-1] != 1.0f)
2083 if (!new_color || !new_pos)
2112 if (count < brush->pblendcount)
2134 TRACE(
"(%p)\n", brush);
2170 TRACE(
"(%p,%0.2f,%0.2f,%u)\n", brush, sx, sy,
order);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
GpStatus WINGDIPAPI GdipGetPathGradientCenterColor(GpPathGradient *grad, ARGB *colors)
GpStatus WINGDIPAPI GdipSetPathGradientFocusScales(GpPathGradient *grad, REAL x, REAL y)
GpStatus WINGDIPAPI GdipSetPathGradientCenterColor(GpPathGradient *grad, ARGB argb)
GpStatus WINGDIPAPI GdipScaleLineTransform(GpLineGradient *brush, REAL sx, REAL sy, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipSetPathGradientTransform(GpPathGradient *grad, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipGetTextureTransform(GpTexture *brush, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF *rect, ARGB startcolor, ARGB endcolor, LinearGradientMode mode, GpWrapMode wrap, GpLineGradient **line)
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngleI(GDIPCONST GpRect *rect, ARGB startcolor, ARGB endcolor, REAL angle, BOOL isAngleScalable, GpWrapMode wrap, GpLineGradient **line)
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngle(GDIPCONST GpRectF *rect, ARGB startcolor, ARGB endcolor, REAL angle, BOOL isAngleScalable, GpWrapMode wrap, GpLineGradient **line)
GpStatus WINGDIPAPI GdipSetPathGradientGammaCorrection(GpPathGradient *grad, BOOL gamma)
GpStatus WINGDIPAPI GdipSetLineWrapMode(GpLineGradient *line, GpWrapMode wrap)
GpStatus WINGDIPAPI GdipSetLineSigmaBlend(GpLineGradient *line, REAL focus, REAL scale)
static void linegradient_init_transform(const GpPointF *startpoint, const GpPointF *endpoint, GpLineGradient *line)
GpStatus WINGDIPAPI GdipMultiplyLineTransform(GpLineGradient *brush, GDIPCONST GpMatrix *matrix, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipGetLineColors(GpLineGradient *brush, ARGB *colors)
GpStatus WINGDIPAPI GdipSetPathGradientSigmaBlend(GpPathGradient *grad, REAL focus, REAL scale)
GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush *brush)
GpStatus WINGDIPAPI GdipGetLineRectI(GpLineGradient *brush, GpRect *rect)
static GpStatus create_path_gradient(GpPath *path, ARGB centercolor, GpPathGradient **grad)
GpStatus WINGDIPAPI GdipCreateLineBrushI(GDIPCONST GpPoint *startpoint, GDIPCONST GpPoint *endpoint, ARGB startcolor, ARGB endcolor, GpWrapMode wrap, GpLineGradient **line)
GpStatus WINGDIPAPI GdipScalePathGradientTransform(GpPathGradient *grad, REAL sx, REAL sy, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipGetLinePresetBlendCount(GpLineGradient *brush, INT *count)
GpStatus WINGDIPAPI GdipCreateHatchBrush(GpHatchStyle hatchstyle, ARGB forecol, ARGB backcol, GpHatch **brush)
GpStatus WINGDIPAPI GdipSetPathGradientLinearBlend(GpPathGradient *brush, REAL focus, REAL scale)
GpStatus WINGDIPAPI GdipGetLineGammaCorrection(GpLineGradient *line, BOOL *usinggamma)
GpStatus WINGDIPAPI GdipGetTextureWrapMode(GpTexture *brush, GpWrapMode *wrapmode)
GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill *sf, ARGB argb)
GpStatus WINGDIPAPI GdipGetPathGradientTransform(GpPathGradient *grad, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipMultiplyPathGradientTransform(GpPathGradient *grad, GDIPCONST GpMatrix *matrix, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath *path, GpPathGradient **grad)
GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture *texture, GDIPCONST GpMatrix *matrix)
GpStatus WINGDIPAPI GdipCloneBrush(GpBrush *brush, GpBrush **clone)
GpStatus WINGDIPAPI GdipGetPathGradientPresetBlend(GpPathGradient *brush, ARGB *blend, REAL *pos, INT count)
GpStatus WINGDIPAPI GdipGetTextureImage(GpTexture *brush, GpImage **image)
GpStatus WINGDIPAPI GdipGetPathGradientBlendCount(GpPathGradient *brush, INT *count)
GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorsWithCount(GpPathGradient *grad, ARGB *argb, INT *count)
GpStatus WINGDIPAPI GdipMultiplyTextureTransform(GpTexture *brush, GDIPCONST GpMatrix *matrix, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipResetLineTransform(GpLineGradient *brush)
GpStatus WINGDIPAPI GdipGetPathGradientRect(GpPathGradient *brush, GpRectF *rect)
GpStatus WINGDIPAPI GdipSetPathGradientBlend(GpPathGradient *brush, GDIPCONST REAL *blend, GDIPCONST REAL *pos, INT count)
GpStatus WINGDIPAPI GdipGetPathGradientGammaCorrection(GpPathGradient *grad, BOOL *gamma)
GpStatus WINGDIPAPI GdipGetPathGradientCenterPoint(GpPathGradient *grad, GpPointF *point)
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectI(GDIPCONST GpRect *rect, ARGB startcolor, ARGB endcolor, LinearGradientMode mode, GpWrapMode wrap, GpLineGradient **line)
GpStatus WINGDIPAPI GdipCreatePathGradient(GDIPCONST GpPointF *points, INT count, GpWrapMode wrap, GpPathGradient **grad)
static GpStatus create_line_brush(const GpRectF *rect, ARGB startcolor, ARGB endcolor, GpWrapMode wrap, GpLineGradient **line)
GpStatus WINGDIPAPI GdipGetPathGradientFocusScales(GpPathGradient *grad, REAL *x, REAL *y)
GpStatus WINGDIPAPI GdipGetLineTransform(GpLineGradient *brush, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF *startpoint, GDIPCONST GpPointF *endpoint, ARGB startcolor, ARGB endcolor, GpWrapMode wrap, GpLineGradient **line)
GpStatus get_hatch_data(GpHatchStyle hatchstyle, const unsigned char **result)
GpStatus WINGDIPAPI GdipSetLinePresetBlend(GpLineGradient *brush, GDIPCONST ARGB *blend, GDIPCONST REAL *positions, INT count)
GpStatus WINGDIPAPI GdipSetPathGradientPath(GpPathGradient *grad, GDIPCONST GpPath *path)
GpStatus WINGDIPAPI GdipGetPathGradientRectI(GpPathGradient *brush, GpRect *rect)
static const unsigned char HatchBrushes[][9]
GpStatus WINGDIPAPI GdipGetPathGradientBlend(GpPathGradient *brush, REAL *blend, REAL *positions, INT count)
GpStatus WINGDIPAPI GdipSetPathGradientCenterPointI(GpPathGradient *grad, GpPoint *point)
GpStatus WINGDIPAPI GdipSetLineTransform(GpLineGradient *brush, GDIPCONST GpMatrix *matrix)
GpStatus WINGDIPAPI GdipResetPathGradientTransform(GpPathGradient *grad)
GpStatus WINGDIPAPI GdipGetHatchStyle(GpHatch *brush, GpHatchStyle *hatchstyle)
GpStatus WINGDIPAPI GdipGetPathGradientPresetBlendCount(GpPathGradient *brush, INT *count)
GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient *brush, GDIPCONST REAL *factors, GDIPCONST REAL *positions, INT count)
GpStatus WINGDIPAPI GdipCreatePathGradientI(GDIPCONST GpPoint *points, INT count, GpWrapMode wrap, GpPathGradient **grad)
GpStatus WINGDIPAPI GdipGetPathGradientPath(GpPathGradient *grad, GpPath *path)
GpStatus WINGDIPAPI GdipCreateTextureIAI(GpImage *image, GDIPCONST GpImageAttributes *imageattr, INT x, INT y, INT width, INT height, GpTexture **texture)
GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorCount(GpPathGradient *brush, INT *count)
GpStatus WINGDIPAPI GdipScaleTextureTransform(GpTexture *brush, REAL sx, REAL sy, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB color, GpSolidFill **sf)
GpStatus WINGDIPAPI GdipSetLineGammaCorrection(GpLineGradient *line, BOOL usegamma)
GpStatus WINGDIPAPI GdipGetHatchForegroundColor(GpHatch *brush, ARGB *forecol)
GpStatus WINGDIPAPI GdipCreateTexture2(GpImage *image, GpWrapMode wrapmode, REAL x, REAL y, REAL width, REAL height, GpTexture **texture)
GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage *image, GDIPCONST GpImageAttributes *imageattr, REAL x, REAL y, REAL width, REAL height, GpTexture **texture)
GpStatus WINGDIPAPI GdipGetPathGradientCenterPointI(GpPathGradient *grad, GpPoint *point)
GpStatus WINGDIPAPI GdipTranslateLineTransform(GpLineGradient *brush, REAL dx, REAL dy, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipSetLineLinearBlend(GpLineGradient *brush, REAL focus, REAL scale)
GpStatus WINGDIPAPI GdipTranslateTextureTransform(GpTexture *brush, REAL dx, REAL dy, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipResetTextureTransform(GpTexture *brush)
GpStatus WINGDIPAPI GdipRotateLineTransform(GpLineGradient *brush, REAL angle, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipGetLineWrapMode(GpLineGradient *brush, GpWrapMode *wrapmode)
GpStatus WINGDIPAPI GdipGetLineRect(GpLineGradient *brush, GpRectF *rect)
GpStatus WINGDIPAPI GdipSetLineColors(GpLineGradient *brush, ARGB color1, ARGB color2)
GpStatus WINGDIPAPI GdipRotateTextureTransform(GpTexture *brush, REAL angle, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipSetPathGradientWrapMode(GpPathGradient *grad, GpWrapMode wrap)
GpStatus WINGDIPAPI GdipSetTextureWrapMode(GpTexture *brush, GpWrapMode wrapmode)
GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill *sf, ARGB *argb)
GpStatus WINGDIPAPI GdipGetLineBlend(GpLineGradient *brush, REAL *factors, REAL *positions, INT count)
GpStatus WINGDIPAPI GdipSetPathGradientCenterPoint(GpPathGradient *grad, GpPointF *point)
GpStatus WINGDIPAPI GdipGetLinePresetBlend(GpLineGradient *brush, ARGB *blend, REAL *positions, INT count)
GpStatus WINGDIPAPI GdipGetLineBlendCount(GpLineGradient *brush, INT *count)
GpStatus WINGDIPAPI GdipSetPathGradientSurroundColorsWithCount(GpPathGradient *grad, GDIPCONST ARGB *argb, INT *count)
GpStatus WINGDIPAPI GdipGetHatchBackgroundColor(GpHatch *brush, ARGB *backcol)
GpStatus WINGDIPAPI GdipGetPathGradientPointCount(GpPathGradient *grad, INT *count)
GpStatus WINGDIPAPI GdipCreateTexture(GpImage *image, GpWrapMode wrapmode, GpTexture **texture)
GpStatus WINGDIPAPI GdipTranslatePathGradientTransform(GpPathGradient *grad, REAL dx, REAL dy, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipRotatePathGradientTransform(GpPathGradient *grad, REAL angle, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipCreateTexture2I(GpImage *image, GpWrapMode wrapmode, INT x, INT y, INT width, INT height, GpTexture **texture)
GpStatus WINGDIPAPI GdipGetPathGradientWrapMode(GpPathGradient *brush, GpWrapMode *wrapmode)
GpStatus WINGDIPAPI GdipGetBrushType(GpBrush *brush, GpBrushType *type)
GpStatus WINGDIPAPI GdipSetPathGradientPresetBlend(GpPathGradient *brush, GDIPCONST ARGB *blend, GDIPCONST REAL *pos, INT count)
GpStatus WINGDIPAPI GdipCreatePath(GpFillMode fill, GpPath **path)
GpStatus WINGDIPAPI GdipDeletePath(GpPath *path)
GpStatus WINGDIPAPI GdipAddPathLine2(GpPath *path, GDIPCONST GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipClonePath(GpPath *path, GpPath **clone)
GpStatus WINGDIPAPI GdipAddPathLine2I(GpPath *path, GDIPCONST GpPoint *points, INT count)
GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath *path, GpRectF *bounds, GDIPCONST GpMatrix *matrix, GDIPCONST GpPen *pen)
GpStatus WINGDIPAPI GdipGetImageWidth(GpImage *image, UINT *width)
GpStatus WINGDIPAPI GdipGetImageHeight(GpImage *image, UINT *height)
GpStatus WINGDIPAPI GdipDisposeImage(GpImage *image)
GpStatus WINGDIPAPI GdipCloneBitmapArea(REAL x, REAL y, REAL width, REAL height, PixelFormat format, GpBitmap *srcBitmap, GpBitmap **dstBitmap)
GpStatus WINGDIPAPI GdipCloneImage(GpImage *image, GpImage **cloneImage)
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)
_ACRTIMP double __cdecl sqrt(double)
_ACRTIMP double __cdecl fabs(double)
_ACRTIMP double __cdecl erf(double)
_ACRTIMP double __cdecl atan(double)
_ACRTIMP float __cdecl cosf(float)
_ACRTIMP float __cdecl sinf(float)
_ACRTIMP double __cdecl tan(double)
_ACRTIMP float __cdecl fmodf(float, float)
#define wrap(journal, var)
const char * debugstr_rectf(const RectF *rc)
const char * debugstr_pointf(const PointF *pt)
const char * debugstr_matrix(const GpMatrix *matrix)
static INT gdip_round(REAL x)
static void set_rect(GpRectF *rect, REAL x, REAL y, REAL width, REAL height)
static REAL deg2rad(REAL degrees)
@ BrushTypeLinearGradient
@ LinearGradientModeForwardDiagonal
@ LinearGradientModeBackwardDiagonal
@ LinearGradientModeHorizontal
@ LinearGradientModeVertical
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLenum GLenum GLenum GLenum GLenum scale
GLenum GLint GLint * precision
GLuint GLdouble GLdouble GLint GLint order
GLsizei const GLfloat * points
GLfloat GLfloat GLfloat GLfloat h
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
GpStatus WINGDIPAPI GdipCloneImageAttributes(GDIPCONST GpImageAttributes *imageattr, GpImageAttributes **cloneImageattr)
GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes **imageattr)
GpStatus WINGDIPAPI GdipDisposeImageAttributes(GpImageAttributes *imageattr)
#define memcpy(s1, s2, n)
static const BYTE bitmap_bits[48 *48/8]
static const struct update_accum a1
static const struct update_accum a2
static const struct update_accum a3
static const struct update_accum a4
static HANDLE ACCESS_MASK ULONG attributes
GpImageAttributes * imageattributes