mirror of
https://github.com/reactos/reactos.git
synced 2024-12-31 19:42:51 +00:00
- Sync headers with Wine head
- Sync gdiplus with Wine head svn path=/trunk/; revision=37882
This commit is contained in:
parent
5947224729
commit
5efd259091
17 changed files with 1761 additions and 449 deletions
|
@ -34,6 +34,9 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(gdiplus);
|
||||
|
||||
/******************************************************************************
|
||||
* GdipCloneBrush [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipCloneBrush(GpBrush *brush, GpBrush **clone)
|
||||
{
|
||||
TRACE("(%p, %p)\n", brush, clone);
|
||||
|
@ -121,6 +124,9 @@ GpStatus WINGDIPAPI GdipCloneBrush(GpBrush *brush, GpBrush **clone)
|
|||
return Ok;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipCreateLineBrush [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF* startpoint,
|
||||
GDIPCONST GpPointF* endpoint, ARGB startcolor, ARGB endcolor,
|
||||
GpWrapMode wrap, GpLineGradient **line)
|
||||
|
@ -212,9 +218,13 @@ GpStatus WINGDIPAPI GdipCreateLineBrushFromRectI(GDIPCONST GpRect* rect,
|
|||
return GdipCreateLineBrushFromRect(&rectF, startcolor, endcolor, mode, wrap, line);
|
||||
}
|
||||
|
||||
/* FIXME: angle value completely ignored. Don't know how to use it since native
|
||||
always set Brush rectangle to rect (independetly of this angle).
|
||||
Maybe it's used only on drawing. */
|
||||
/******************************************************************************
|
||||
* GdipCreateLineBrushFromRectWithAngle [GDIPLUS.@]
|
||||
*
|
||||
* FIXME: angle value completely ignored. Don't know how to use it since native
|
||||
* always set Brush rectangle to rect (independetly of this angle).
|
||||
* Maybe it's used only on drawing.
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngle(GDIPCONST GpRectF* rect,
|
||||
ARGB startcolor, ARGB endcolor, REAL angle, BOOL isAngleScalable, GpWrapMode wrap,
|
||||
GpLineGradient **line)
|
||||
|
@ -323,7 +333,11 @@ GpStatus WINGDIPAPI GdipCreatePathGradientI(GDIPCONST GpPoint* points,
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* FIXME: path gradient brushes not truly supported (drawn as solid brushes) */
|
||||
/******************************************************************************
|
||||
* GdipCreatePathGradientFromPath [GDIPLUS.@]
|
||||
*
|
||||
* FIXME: path gradient brushes not truly supported (drawn as solid brushes)
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath* path,
|
||||
GpPathGradient **grad)
|
||||
{
|
||||
|
@ -379,6 +393,9 @@ GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath* path,
|
|||
return Ok;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipCreateSolidFill [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB color, GpSolidFill **sf)
|
||||
{
|
||||
COLORREF col = ARGB2COLORREF(color);
|
||||
|
@ -401,7 +418,7 @@ GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB color, GpSolidFill **sf)
|
|||
return Ok;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
/******************************************************************************
|
||||
* GdipCreateTexture [GDIPLUS.@]
|
||||
*
|
||||
* PARAMS
|
||||
|
@ -435,6 +452,9 @@ GpStatus WINGDIPAPI GdipCreateTexture(GpImage *image, GpWrapMode wrapmode,
|
|||
texture);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipCreateTexture2 [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipCreateTexture2(GpImage *image, GpWrapMode wrapmode,
|
||||
REAL x, REAL y, REAL width, REAL height, GpTexture **texture)
|
||||
{
|
||||
|
@ -448,19 +468,23 @@ GpStatus WINGDIPAPI GdipCreateTexture2(GpImage *image, GpWrapMode wrapmode,
|
|||
texture);
|
||||
}
|
||||
|
||||
/* FIXME: imageattr ignored */
|
||||
/******************************************************************************
|
||||
* GdipCreateTextureIA [GDIPLUS.@]
|
||||
*
|
||||
* FIXME: imageattr ignored
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage *image,
|
||||
GDIPCONST GpImageAttributes *imageattr, REAL x, REAL y, REAL width,
|
||||
REAL height, GpTexture **texture)
|
||||
{
|
||||
HDC hdc;
|
||||
OLE_HANDLE hbm;
|
||||
HBITMAP old = NULL;
|
||||
BITMAPINFO bmi;
|
||||
HBITMAP hbm, old = NULL;
|
||||
BITMAPINFO *pbmi;
|
||||
BITMAPINFOHEADER *bmih;
|
||||
INT n_x, n_y, n_width, n_height, abs_height, stride, image_stride, i, bytespp;
|
||||
BOOL bm_is_selected;
|
||||
BYTE *dibits, *buff, *textbits;
|
||||
GpStatus status;
|
||||
|
||||
TRACE("(%p, %p, %.2f, %.2f, %.2f, %.2f, %p)\n", image, imageattr, x, y, width, height,
|
||||
texture);
|
||||
|
@ -482,46 +506,54 @@ GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage *image,
|
|||
n_y + n_height > ((GpBitmap*)image)->height)
|
||||
return InvalidParameter;
|
||||
|
||||
IPicture_get_Handle(image->picture, &hbm);
|
||||
IPicture_get_Handle(image->picture, (OLE_HANDLE*)&hbm);
|
||||
if(!hbm) return GenericError;
|
||||
IPicture_get_CurDC(image->picture, &hdc);
|
||||
bm_is_selected = (hdc != 0);
|
||||
|
||||
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmi.bmiHeader.biBitCount = 0;
|
||||
pbmi = GdipAlloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD));
|
||||
if (!pbmi)
|
||||
return OutOfMemory;
|
||||
pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
pbmi->bmiHeader.biBitCount = 0;
|
||||
|
||||
if(!bm_is_selected){
|
||||
hdc = CreateCompatibleDC(0);
|
||||
old = SelectObject(hdc, (HBITMAP)hbm);
|
||||
old = SelectObject(hdc, hbm);
|
||||
}
|
||||
|
||||
/* fill out bmi */
|
||||
GetDIBits(hdc, (HBITMAP)hbm, 0, 0, NULL, &bmi, DIB_RGB_COLORS);
|
||||
GetDIBits(hdc, hbm, 0, 0, NULL, pbmi, DIB_RGB_COLORS);
|
||||
|
||||
bytespp = bmi.bmiHeader.biBitCount / 8;
|
||||
abs_height = abs(bmi.bmiHeader.biHeight);
|
||||
bytespp = pbmi->bmiHeader.biBitCount / 8;
|
||||
abs_height = abs(pbmi->bmiHeader.biHeight);
|
||||
|
||||
if(n_x > bmi.bmiHeader.biWidth || n_x + n_width > bmi.bmiHeader.biWidth ||
|
||||
n_y > abs_height || n_y + n_height > abs_height)
|
||||
if(n_x > pbmi->bmiHeader.biWidth || n_x + n_width > pbmi->bmiHeader.biWidth ||
|
||||
n_y > abs_height || n_y + n_height > abs_height){
|
||||
GdipFree(pbmi);
|
||||
return InvalidParameter;
|
||||
}
|
||||
|
||||
dibits = GdipAlloc(bmi.bmiHeader.biSizeImage);
|
||||
dibits = GdipAlloc(pbmi->bmiHeader.biSizeImage);
|
||||
|
||||
if(dibits) /* this is not a good place to error out */
|
||||
GetDIBits(hdc, (HBITMAP)hbm, 0, abs_height, dibits, &bmi, DIB_RGB_COLORS);
|
||||
GetDIBits(hdc, hbm, 0, abs_height, dibits, pbmi, DIB_RGB_COLORS);
|
||||
|
||||
if(!bm_is_selected){
|
||||
SelectObject(hdc, old);
|
||||
DeleteDC(hdc);
|
||||
}
|
||||
|
||||
if(!dibits)
|
||||
if(!dibits){
|
||||
GdipFree(pbmi);
|
||||
return OutOfMemory;
|
||||
}
|
||||
|
||||
image_stride = (bmi.bmiHeader.biWidth * bytespp + 3) & ~3;
|
||||
image_stride = (pbmi->bmiHeader.biWidth * bytespp + 3) & ~3;
|
||||
stride = (n_width * bytespp + 3) & ~3;
|
||||
buff = GdipAlloc(sizeof(BITMAPINFOHEADER) + stride * n_height);
|
||||
if(!buff){
|
||||
GdipFree(pbmi);
|
||||
GdipFree(dibits);
|
||||
return OutOfMemory;
|
||||
}
|
||||
|
@ -533,25 +565,38 @@ GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage *image,
|
|||
bmih->biHeight = n_height;
|
||||
bmih->biCompression = BI_RGB;
|
||||
bmih->biSizeImage = stride * n_height;
|
||||
bmih->biBitCount = bmi.bmiHeader.biBitCount;
|
||||
bmih->biBitCount = pbmi->bmiHeader.biBitCount;
|
||||
bmih->biClrUsed = 0;
|
||||
bmih->biPlanes = 1;
|
||||
|
||||
/* image is flipped */
|
||||
if(bmi.bmiHeader.biHeight > 0){
|
||||
dibits += bmi.bmiHeader.biSizeImage;
|
||||
if(pbmi->bmiHeader.biHeight > 0){
|
||||
dibits += pbmi->bmiHeader.biSizeImage;
|
||||
image_stride *= -1;
|
||||
textbits += stride * (n_height - 1);
|
||||
stride *= -1;
|
||||
}
|
||||
|
||||
GdipFree(pbmi);
|
||||
|
||||
for(i = 0; i < n_height; i++)
|
||||
memcpy(&textbits[i * stride],
|
||||
&dibits[n_x * bytespp + (n_y + i) * image_stride],
|
||||
abs(stride));
|
||||
|
||||
*texture = GdipAlloc(sizeof(GpTexture));
|
||||
if (!*texture) return OutOfMemory;
|
||||
if (!*texture){
|
||||
GdipFree(dibits);
|
||||
GdipFree(buff);
|
||||
return OutOfMemory;
|
||||
}
|
||||
|
||||
if((status = GdipCreateMatrix(&(*texture)->transform)) != Ok){
|
||||
GdipFree(*texture);
|
||||
GdipFree(dibits);
|
||||
GdipFree(buff);
|
||||
return status;
|
||||
}
|
||||
|
||||
(*texture)->brush.lb.lbStyle = BS_DIBPATTERNPT;
|
||||
(*texture)->brush.lb.lbColor = DIB_RGB_COLORS;
|
||||
|
@ -559,6 +604,7 @@ GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage *image,
|
|||
|
||||
(*texture)->brush.gdibrush = CreateBrushIndirect(&(*texture)->brush.lb);
|
||||
(*texture)->brush.bt = BrushTypeTextureFill;
|
||||
(*texture)->wrap = imageattr->wrap;
|
||||
|
||||
GdipFree(dibits);
|
||||
GdipFree(buff);
|
||||
|
@ -566,6 +612,9 @@ GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage *image,
|
|||
return Ok;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipCreateTextureIAI [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipCreateTextureIAI(GpImage *image, GDIPCONST GpImageAttributes *imageattr,
|
||||
INT x, INT y, INT width, INT height, GpTexture **texture)
|
||||
{
|
||||
|
@ -615,7 +664,10 @@ GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush *brush)
|
|||
break;
|
||||
case BrushTypeSolidColor:
|
||||
case BrushTypeLinearGradient:
|
||||
break;
|
||||
case BrushTypeTextureFill:
|
||||
GdipDeleteMatrix(((GpTexture*)brush)->transform);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -845,6 +897,77 @@ GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill *sf, ARGB *argb)
|
|||
return Ok;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipGetTextureTransform [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipGetTextureTransform(GpTexture *brush, GpMatrix *matrix)
|
||||
{
|
||||
TRACE("(%p, %p)\n", brush, matrix);
|
||||
|
||||
if(!brush || !matrix)
|
||||
return InvalidParameter;
|
||||
|
||||
memcpy(matrix, brush->transform, sizeof(GpMatrix));
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipGetTextureWrapMode [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipGetTextureWrapMode(GpTexture *brush, GpWrapMode *wrapmode)
|
||||
{
|
||||
TRACE("(%p, %p)\n", brush, wrapmode);
|
||||
|
||||
if(!brush || !wrapmode)
|
||||
return InvalidParameter;
|
||||
|
||||
*wrapmode = brush->wrap;
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipMultiplyTextureTransform [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipMultiplyTextureTransform(GpTexture* brush,
|
||||
GDIPCONST GpMatrix *matrix, GpMatrixOrder order)
|
||||
{
|
||||
TRACE("(%p, %p, %d)\n", brush, matrix, order);
|
||||
|
||||
if(!brush || !matrix)
|
||||
return InvalidParameter;
|
||||
|
||||
return GdipMultiplyMatrix(brush->transform, matrix, order);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipResetTextureTransform [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipResetTextureTransform(GpTexture* brush)
|
||||
{
|
||||
TRACE("(%p)\n", brush);
|
||||
|
||||
if(!brush)
|
||||
return InvalidParameter;
|
||||
|
||||
return GdipSetMatrixElements(brush->transform, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipScaleTextureTransform [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipScaleTextureTransform(GpTexture* brush,
|
||||
REAL sx, REAL sy, GpMatrixOrder order)
|
||||
{
|
||||
TRACE("(%p, %.2f, %.2f, %d)\n", brush, sx, sy, order);
|
||||
|
||||
if(!brush)
|
||||
return InvalidParameter;
|
||||
|
||||
return GdipScaleMatrix(brush->transform, sx, sy, order);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient *brush,
|
||||
GDIPCONST REAL *blend, GDIPCONST REAL* positions, INT count)
|
||||
{
|
||||
|
@ -899,6 +1022,17 @@ GpStatus WINGDIPAPI GdipSetLineWrapMode(GpLineGradient *line,
|
|||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientBlend(GpPathGradient *brush, GDIPCONST REAL *blend,
|
||||
GDIPCONST REAL *pos, INT count)
|
||||
{
|
||||
static int calls;
|
||||
|
||||
if(!(calls++))
|
||||
FIXME("not implemented\n");
|
||||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientCenterColor(GpPathGradient *grad,
|
||||
ARGB argb)
|
||||
{
|
||||
|
@ -1031,16 +1165,35 @@ GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill *sf, ARGB argb)
|
|||
return Ok;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipSetTextureTransform [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture *texture,
|
||||
GDIPCONST GpMatrix *matrix)
|
||||
{
|
||||
static int calls;
|
||||
TRACE("(%p, %p)\n", texture, matrix);
|
||||
|
||||
if(!texture || !matrix)
|
||||
return InvalidParameter;
|
||||
|
||||
if(!(calls++))
|
||||
FIXME("not implemented\n");
|
||||
memcpy(texture->transform, matrix, sizeof(GpMatrix));
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipSetTextureWrapMode [GDIPLUS.@]
|
||||
*
|
||||
* WrapMode not used, only stored
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipSetTextureWrapMode(GpTexture *brush, GpWrapMode wrapmode)
|
||||
{
|
||||
TRACE("(%p, %d)\n", brush, wrapmode);
|
||||
|
||||
if(!brush)
|
||||
return InvalidParameter;
|
||||
|
||||
brush->wrap = wrapmode;
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
@ -1072,6 +1225,20 @@ GpStatus WINGDIPAPI GdipGetLineColors(GpLineGradient *brush, ARGB *colors)
|
|||
return Ok;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipRotateTextureTransform [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipRotateTextureTransform(GpTexture* brush, REAL angle,
|
||||
GpMatrixOrder order)
|
||||
{
|
||||
TRACE("(%p, %.2f, %d)\n", brush, angle, order);
|
||||
|
||||
if(!brush)
|
||||
return InvalidParameter;
|
||||
|
||||
return GdipRotateMatrix(brush->transform, angle, order);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetLineLinearBlend(GpLineGradient *brush, REAL focus,
|
||||
REAL scale)
|
||||
{
|
||||
|
@ -1113,6 +1280,20 @@ GpStatus WINGDIPAPI GdipTranslateLineTransform(GpLineGradient* brush,
|
|||
return NotImplemented;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* GdipTranslateTextureTransform [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipTranslateTextureTransform(GpTexture* brush, REAL dx, REAL dy,
|
||||
GpMatrixOrder order)
|
||||
{
|
||||
TRACE("(%p, %.2f, %.2f, %d)\n", brush, dx, dy, order);
|
||||
|
||||
if(!brush)
|
||||
return InvalidParameter;
|
||||
|
||||
return GdipTranslateMatrix(brush->transform, dx, dy, order);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetLineRect(GpLineGradient *brush, GpRectF *rect)
|
||||
{
|
||||
TRACE("(%p, %p)\n", brush, rect);
|
||||
|
|
|
@ -153,6 +153,8 @@ GpStatus WINGDIPAPI GdipCreateFont(GDIPCONST GpFontFamily *fontFamily,
|
|||
|
||||
(*font)->unit = unit;
|
||||
(*font)->emSize = emSize;
|
||||
(*font)->height = tmw->ntmSizeEM;
|
||||
(*font)->line_spacing = tmw->tmAscent + tmw->tmDescent + tmw->tmExternalLeading;
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
@ -194,6 +196,9 @@ GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC hdc,
|
|||
(*font)->lfw.lfHeight = -textmet.tmHeight;
|
||||
(*font)->lfw.lfWeight = textmet.tmWeight;
|
||||
|
||||
(*font)->height = 1; /* FIXME: need NEWTEXTMETRIC.ntmSizeEM here */
|
||||
(*font)->line_spacing = textmet.tmAscent + textmet.tmDescent + textmet.tmExternalLeading;
|
||||
|
||||
SelectObject(hdc, oldfont);
|
||||
DeleteObject(hfont);
|
||||
|
||||
|
@ -251,7 +256,7 @@ GpStatus WINGDIPAPI GdipCreateFontFromDC(HDC hdc, GpFont **font)
|
|||
if(!font)
|
||||
return InvalidParameter;
|
||||
|
||||
hfont = (HFONT)GetCurrentObject(hdc, OBJ_FONT);
|
||||
hfont = GetCurrentObject(hdc, OBJ_FONT);
|
||||
if(!hfont)
|
||||
return GenericError;
|
||||
|
||||
|
@ -444,15 +449,31 @@ GpStatus WINGDIPAPI GdipGetFontHeight(GDIPCONST GpFont *font,
|
|||
*/
|
||||
GpStatus WINGDIPAPI GdipGetFontHeightGivenDPI(GDIPCONST GpFont *font, REAL dpi, REAL *height)
|
||||
{
|
||||
REAL font_height;
|
||||
|
||||
TRACE("%p (%s), %f, %p\n", font,
|
||||
debugstr_w(font->lfw.lfFaceName), dpi, height);
|
||||
|
||||
if (!(font && height)) return InvalidParameter;
|
||||
|
||||
font_height = font->line_spacing * (font->emSize / font->height);
|
||||
|
||||
switch (font->unit)
|
||||
{
|
||||
case UnitPixel:
|
||||
*height = font->emSize;
|
||||
*height = font_height;
|
||||
break;
|
||||
case UnitPoint:
|
||||
*height = font_height * dpi * inch_per_point;
|
||||
break;
|
||||
case UnitInch:
|
||||
*height = font_height * dpi;
|
||||
break;
|
||||
case UnitDocument:
|
||||
*height = font_height * (dpi / 300.0);
|
||||
break;
|
||||
case UnitMillimeter:
|
||||
*height = font_height * (dpi / mm_per_inch);
|
||||
break;
|
||||
default:
|
||||
FIXME("Unhandled unit type: %d\n", font->unit);
|
||||
|
@ -667,8 +688,7 @@ GpStatus WINGDIPAPI GdipGetEmHeight(GDIPCONST GpFontFamily *family, INT style, U
|
|||
{
|
||||
if (!(family && EmHeight)) return InvalidParameter;
|
||||
|
||||
TRACE("%p (%s), %d, %p, stub!\n", family,
|
||||
debugstr_w(family->FamilyName), style, EmHeight);
|
||||
TRACE("%p (%s), %d, %p\n", family, debugstr_w(family->FamilyName), style, EmHeight);
|
||||
|
||||
*EmHeight = family->tmw.ntmSizeEM;
|
||||
|
||||
|
@ -693,11 +713,16 @@ GpStatus WINGDIPAPI GdipGetEmHeight(GDIPCONST GpFontFamily *family, INT style, U
|
|||
GpStatus WINGDIPAPI GdipGetLineSpacing(GDIPCONST GpFontFamily *family,
|
||||
INT style, UINT16* LineSpacing)
|
||||
{
|
||||
if (!(family && LineSpacing)) return InvalidParameter;
|
||||
TRACE("%p, %d, %p\n", family, style, LineSpacing);
|
||||
|
||||
FIXME("stub!\n");
|
||||
if (!(family && LineSpacing))
|
||||
return InvalidParameter;
|
||||
|
||||
return NotImplemented;
|
||||
if (style) FIXME("ignoring style\n");
|
||||
|
||||
*LineSpacing = family->tmw.tmAscent + family->tmw.tmDescent + family->tmw.tmExternalLeading;
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipIsStyleAvailable(GDIPCONST GpFontFamily* family,
|
||||
|
@ -785,12 +810,17 @@ GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily **nativeFamil
|
|||
*/
|
||||
GpStatus WINGDIPAPI GdipNewPrivateFontCollection(GpFontCollection** fontCollection)
|
||||
{
|
||||
FIXME("stub %p\n", fontCollection);
|
||||
TRACE("%p\n", fontCollection);
|
||||
|
||||
if (!fontCollection)
|
||||
return InvalidParameter;
|
||||
|
||||
return NotImplemented;
|
||||
*fontCollection = GdipAlloc(sizeof(GpFontCollection));
|
||||
if (!*fontCollection) return OutOfMemory;
|
||||
|
||||
(*fontCollection)->FontFamilies = NULL;
|
||||
(*fontCollection)->count = 0;
|
||||
return Ok;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -798,12 +828,17 @@ GpStatus WINGDIPAPI GdipNewPrivateFontCollection(GpFontCollection** fontCollecti
|
|||
*/
|
||||
GpStatus WINGDIPAPI GdipDeletePrivateFontCollection(GpFontCollection **fontCollection)
|
||||
{
|
||||
FIXME("stub %p\n", fontCollection);
|
||||
INT i;
|
||||
|
||||
TRACE("%p\n", fontCollection);
|
||||
|
||||
if (!fontCollection)
|
||||
return InvalidParameter;
|
||||
|
||||
return NotImplemented;
|
||||
for (i = 0; i < (*fontCollection)->count; i++) GdipFree((*fontCollection)->FontFamilies[i]);
|
||||
GdipFree(*fontCollection);
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -820,18 +855,33 @@ GpStatus WINGDIPAPI GdipPrivateAddFontFile(GpFontCollection* fontCollection,
|
|||
return NotImplemented;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* GdipPrivateAddMemoryFont [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipPrivateAddMemoryFont(GpFontCollection* fontCollection,
|
||||
GDIPCONST void* memory, INT length)
|
||||
{
|
||||
FIXME("%p, %p, %d\n", fontCollection, memory, length);
|
||||
|
||||
if (!(fontCollection && memory && length))
|
||||
return InvalidParameter;
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* GdipGetFontCollectionFamilyCount [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipGetFontCollectionFamilyCount(
|
||||
GpFontCollection* fontCollection, INT* numFound)
|
||||
{
|
||||
FIXME("stub: %p, %p\n", fontCollection, numFound);
|
||||
TRACE("%p, %p\n", fontCollection, numFound);
|
||||
|
||||
if (!(fontCollection && numFound))
|
||||
return InvalidParameter;
|
||||
|
||||
return NotImplemented;
|
||||
*numFound = fontCollection->count;
|
||||
return Ok;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -841,11 +891,28 @@ GpStatus WINGDIPAPI GdipGetFontCollectionFamilyList(
|
|||
GpFontCollection* fontCollection, INT numSought,
|
||||
GpFontFamily* gpfamilies[], INT* numFound)
|
||||
{
|
||||
FIXME("stub: %p, %d, %p, %p\n", fontCollection, numSought, gpfamilies,
|
||||
numFound);
|
||||
INT i;
|
||||
|
||||
TRACE("%p, %d, %p, %p\n", fontCollection, numSought, gpfamilies, numFound);
|
||||
|
||||
if (!(fontCollection && gpfamilies && numFound))
|
||||
return InvalidParameter;
|
||||
|
||||
for (i = 0; i < numSought && i < fontCollection->count; i++)
|
||||
{
|
||||
gpfamilies[i] = fontCollection->FontFamilies[i];
|
||||
}
|
||||
*numFound = i;
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipNewInstalledFontCollection(
|
||||
GpFontCollection** fontCollection)
|
||||
{
|
||||
FIXME("stub: %p\n",fontCollection);
|
||||
|
||||
if (!fontCollection)
|
||||
return InvalidParameter;
|
||||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
|
|
@ -93,11 +93,25 @@ Status WINAPI GdiplusStartup(ULONG_PTR *token, const struct GdiplusStartupInput
|
|||
output->NotificationUnhook = NotificationUnhook;
|
||||
}
|
||||
|
||||
*token = 0xdeadbeef;
|
||||
|
||||
/* FIXME: DebugEventCallback ignored */
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINAPI GdiplusNotificationHook(ULONG_PTR *token)
|
||||
{
|
||||
FIXME("%p\n", token);
|
||||
return NotificationHook(token);
|
||||
}
|
||||
|
||||
void WINAPI GdiplusNotificationUnhook(ULONG_PTR token)
|
||||
{
|
||||
FIXME("%ld\n", token);
|
||||
NotificationUnhook(token);
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
* GdiplusShutdown [GDIPLUS.@]
|
||||
*/
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
@ stub GdipAddPathString
|
||||
@ stub GdipAddPathStringI
|
||||
@ stdcall GdipAlloc(long)
|
||||
@ stub GdipBeginContainer2
|
||||
@ stdcall GdipBeginContainer2(ptr ptr)
|
||||
@ stub GdipBeginContainer
|
||||
@ stub GdipBeginContainerI
|
||||
@ stub GdipBitmapApplyEffect
|
||||
|
@ -81,7 +81,7 @@
|
|||
@ stdcall GdipCreateBitmapFromScan0(long long long long ptr ptr)
|
||||
@ stdcall GdipCreateBitmapFromStream(ptr ptr)
|
||||
@ stdcall GdipCreateBitmapFromStreamICM(ptr ptr)
|
||||
@ stub GdipCreateCachedBitmap
|
||||
@ stdcall GdipCreateCachedBitmap(ptr ptr ptr)
|
||||
@ stdcall GdipCreateCustomLineCap(ptr ptr long long ptr)
|
||||
@ stub GdipCreateEffect
|
||||
@ stdcall GdipCreateFont(ptr long long long ptr)
|
||||
|
@ -95,7 +95,7 @@
|
|||
@ stdcall GdipCreateFromHWNDICM(long ptr)
|
||||
@ stdcall GdipCreateHBITMAPFromBitmap(ptr ptr long)
|
||||
@ stub GdipCreateHICONFromBitmap
|
||||
@ stub GdipCreateHalftonePalette
|
||||
@ stdcall GdipCreateHalftonePalette()
|
||||
@ stub GdipCreateHatchBrush
|
||||
@ stdcall GdipCreateImageAttributes(ptr)
|
||||
@ stdcall GdipCreateLineBrush(ptr ptr long long long ptr)
|
||||
|
@ -137,7 +137,7 @@
|
|||
@ stdcall GdipCreateTextureIA(ptr ptr long long long long ptr)
|
||||
@ stdcall GdipCreateTextureIAI(ptr ptr long long long long ptr)
|
||||
@ stdcall GdipDeleteBrush(ptr)
|
||||
@ stub GdipDeleteCachedBitmap
|
||||
@ stdcall GdipDeleteCachedBitmap(ptr)
|
||||
@ stdcall GdipDeleteCustomLineCap(ptr)
|
||||
@ stub GdipDeleteEffect
|
||||
@ stdcall GdipDeleteFont(ptr)
|
||||
|
@ -158,7 +158,7 @@
|
|||
@ stdcall GdipDrawBezierI(ptr ptr long long long long long long long long)
|
||||
@ stdcall GdipDrawBeziers(ptr ptr ptr long)
|
||||
@ stdcall GdipDrawBeziersI(ptr ptr ptr long)
|
||||
@ stub GdipDrawCachedBitmap
|
||||
@ stdcall GdipDrawCachedBitmap(ptr ptr long long)
|
||||
@ stdcall GdipDrawClosedCurve2(ptr ptr ptr long long)
|
||||
@ stdcall GdipDrawClosedCurve2I(ptr ptr ptr long long)
|
||||
@ stdcall GdipDrawClosedCurve(ptr ptr ptr long)
|
||||
|
@ -200,7 +200,7 @@
|
|||
@ stdcall GdipDrawRectanglesI(ptr ptr ptr long)
|
||||
@ stdcall GdipDrawString(ptr ptr long ptr ptr ptr ptr)
|
||||
@ stub GdipEmfToWmfBits
|
||||
@ stub GdipEndContainer
|
||||
@ stdcall GdipEndContainer(ptr ptr)
|
||||
@ stub GdipEnumerateMetafileDestPoint
|
||||
@ stub GdipEnumerateMetafileDestPointI
|
||||
@ stub GdipEnumerateMetafileDestPoints
|
||||
|
@ -240,7 +240,7 @@
|
|||
@ stdcall GdipGetAdjustableArrowCapHeight(ptr ptr)
|
||||
@ stdcall GdipGetAdjustableArrowCapMiddleInset(ptr ptr)
|
||||
@ stdcall GdipGetAdjustableArrowCapWidth(ptr ptr)
|
||||
@ stub GdipGetAllPropertyItems
|
||||
@ stdcall GdipGetAllPropertyItems(ptr long long ptr)
|
||||
@ stdcall GdipGetBrushType(ptr ptr)
|
||||
@ stdcall GdipGetCellAscent(ptr long ptr)
|
||||
@ stdcall GdipGetCellDescent(ptr long ptr)
|
||||
|
@ -281,8 +281,8 @@
|
|||
@ stub GdipGetHemfFromMetafile
|
||||
@ stub GdipGetImageAttributesAdjustedPalette
|
||||
@ stdcall GdipGetImageBounds(ptr ptr ptr)
|
||||
@ stub GdipGetImageDecoders
|
||||
@ stub GdipGetImageDecodersSize
|
||||
@ stdcall GdipGetImageDecoders(long long ptr)
|
||||
@ stdcall GdipGetImageDecodersSize(ptr ptr)
|
||||
@ stdcall GdipGetImageDimension(ptr ptr ptr)
|
||||
@ stdcall GdipGetImageEncoders(long long ptr)
|
||||
@ stdcall GdipGetImageEncodersSize(ptr ptr)
|
||||
|
@ -292,7 +292,7 @@
|
|||
@ stdcall GdipGetImageHorizontalResolution(ptr ptr)
|
||||
@ stub GdipGetImageItemData
|
||||
@ stub GdipGetImagePalette
|
||||
@ stub GdipGetImagePaletteSize
|
||||
@ stdcall GdipGetImagePaletteSize(ptr ptr)
|
||||
@ stdcall GdipGetImagePixelFormat(ptr ptr)
|
||||
@ stdcall GdipGetImageRawFormat(ptr ptr)
|
||||
@ stub GdipGetImageThumbnail
|
||||
|
@ -360,7 +360,7 @@
|
|||
@ stdcall GdipGetPenDashOffset(ptr ptr)
|
||||
@ stdcall GdipGetPenDashStyle(ptr ptr)
|
||||
@ stdcall GdipGetPenEndCap(ptr ptr)
|
||||
@ stub GdipGetPenFillType
|
||||
@ stdcall GdipGetPenFillType(ptr ptr)
|
||||
@ stdcall GdipGetPenLineJoin(ptr ptr)
|
||||
@ stdcall GdipGetPenMiterLimit(ptr ptr)
|
||||
@ stdcall GdipGetPenMode(ptr ptr)
|
||||
|
@ -370,11 +370,11 @@
|
|||
@ stdcall GdipGetPenWidth(ptr ptr)
|
||||
@ stdcall GdipGetPixelOffsetMode(ptr ptr)
|
||||
@ stdcall GdipGetPointCount(ptr ptr)
|
||||
@ stub GdipGetPropertyCount
|
||||
@ stub GdipGetPropertyIdList
|
||||
@ stub GdipGetPropertyItem
|
||||
@ stdcall GdipGetPropertyCount(ptr ptr)
|
||||
@ stdcall GdipGetPropertyIdList(ptr long ptr)
|
||||
@ stdcall GdipGetPropertyItem(ptr long long ptr)
|
||||
@ stdcall GdipGetPropertyItemSize(ptr long ptr)
|
||||
@ stub GdipGetPropertySize
|
||||
@ stdcall GdipGetPropertySize(ptr ptr ptr)
|
||||
@ stdcall GdipGetRegionBounds(ptr ptr ptr)
|
||||
@ stdcall GdipGetRegionBoundsI(ptr ptr ptr)
|
||||
@ stdcall GdipGetRegionData(ptr ptr long ptr)
|
||||
|
@ -395,17 +395,17 @@
|
|||
@ stdcall GdipGetStringFormatTabStopCount(ptr ptr)
|
||||
@ stdcall GdipGetStringFormatTabStops(ptr long ptr ptr)
|
||||
@ stdcall GdipGetStringFormatTrimming(ptr ptr)
|
||||
@ stub GdipGetTextContrast
|
||||
@ stdcall GdipGetTextContrast(ptr ptr)
|
||||
@ stdcall GdipGetTextRenderingHint(ptr ptr)
|
||||
@ stub GdipGetTextureImage
|
||||
@ stub GdipGetTextureTransform
|
||||
@ stub GdipGetTextureWrapMode
|
||||
@ stdcall GdipGetTextureTransform(ptr ptr)
|
||||
@ stdcall GdipGetTextureWrapMode(ptr ptr)
|
||||
@ stub GdipGetVisibleClipBounds
|
||||
@ stub GdipGetVisibleClipBoundsI
|
||||
@ stdcall GdipGetWorldTransform(ptr ptr)
|
||||
@ stdcall GdipGraphicsClear(ptr long)
|
||||
@ stub GdipGraphicsSetAbort
|
||||
@ stub GdipImageForceValidation
|
||||
@ stdcall GdipImageForceValidation(ptr)
|
||||
@ stdcall GdipImageGetFrameCount(ptr ptr ptr)
|
||||
@ stdcall GdipImageGetFrameDimensionsCount(ptr ptr)
|
||||
@ stdcall GdipImageGetFrameDimensionsList(ptr ptr long)
|
||||
|
@ -427,8 +427,8 @@
|
|||
@ stub GdipIsVisibleClipEmpty
|
||||
@ stdcall GdipIsVisiblePathPoint(ptr long long ptr ptr)
|
||||
@ stdcall GdipIsVisiblePathPointI(ptr long long ptr ptr)
|
||||
@ stub GdipIsVisiblePoint
|
||||
@ stub GdipIsVisiblePointI
|
||||
@ stdcall GdipIsVisiblePoint(ptr long long ptr)
|
||||
@ stdcall GdipIsVisiblePointI(ptr long long ptr)
|
||||
@ stub GdipIsVisibleRect
|
||||
@ stub GdipIsVisibleRectI
|
||||
@ stub GdipIsVisibleRegionPoint
|
||||
|
@ -446,9 +446,9 @@
|
|||
@ stdcall GdipMultiplyMatrix(ptr ptr long)
|
||||
@ stub GdipMultiplyPathGradientTransform
|
||||
@ stub GdipMultiplyPenTransform
|
||||
@ stub GdipMultiplyTextureTransform
|
||||
@ stdcall GdipMultiplyTextureTransform(ptr ptr long)
|
||||
@ stdcall GdipMultiplyWorldTransform(ptr ptr long)
|
||||
@ stub GdipNewInstalledFontCollection
|
||||
@ stdcall GdipNewInstalledFontCollection(ptr)
|
||||
@ stdcall GdipNewPrivateFontCollection(ptr)
|
||||
@ stdcall GdipPathIterCopyData(ptr ptr ptr ptr long long)
|
||||
@ stdcall GdipPathIterEnumerate(ptr ptr ptr ptr long)
|
||||
|
@ -465,10 +465,10 @@
|
|||
@ stub GdipPlayMetafileRecord
|
||||
@ stub GdipPlayTSClientRecord
|
||||
@ stdcall GdipPrivateAddFontFile(ptr wstr)
|
||||
@ stub GdipPrivateAddMemoryFont
|
||||
@ stdcall GdipPrivateAddMemoryFont(ptr ptr long)
|
||||
@ stub GdipRecordMetafile
|
||||
@ stub GdipRecordMetafileFileName
|
||||
@ stub GdipRecordMetafileFileNameI
|
||||
@ stdcall GdipRecordMetafileFileName(wstr long long ptr long wstr ptr)
|
||||
@ stdcall GdipRecordMetafileFileNameI(wstr long long ptr long wstr ptr)
|
||||
@ stub GdipRecordMetafileI
|
||||
@ stub GdipRecordMetafileStream
|
||||
@ stub GdipRecordMetafileStreamI
|
||||
|
@ -481,7 +481,7 @@
|
|||
@ stdcall GdipResetPath(ptr)
|
||||
@ stub GdipResetPathGradientTransform
|
||||
@ stub GdipResetPenTransform
|
||||
@ stub GdipResetTextureTransform
|
||||
@ stdcall GdipResetTextureTransform(ptr)
|
||||
@ stdcall GdipResetWorldTransform(ptr)
|
||||
@ stdcall GdipRestoreGraphics(ptr long)
|
||||
@ stdcall GdipReversePath(ptr)
|
||||
|
@ -489,7 +489,7 @@
|
|||
@ stdcall GdipRotateMatrix(ptr long long)
|
||||
@ stub GdipRotatePathGradientTransform
|
||||
@ stub GdipRotatePenTransform
|
||||
@ stub GdipRotateTextureTransform
|
||||
@ stdcall GdipRotateTextureTransform(ptr long long)
|
||||
@ stdcall GdipRotateWorldTransform(ptr long long)
|
||||
@ stub GdipSaveAdd
|
||||
@ stub GdipSaveAddImage
|
||||
|
@ -500,16 +500,16 @@
|
|||
@ stdcall GdipScaleMatrix(ptr long long long)
|
||||
@ stub GdipScalePathGradientTransform
|
||||
@ stub GdipScalePenTransform
|
||||
@ stub GdipScaleTextureTransform
|
||||
@ stdcall GdipScaleTextureTransform(ptr long long long)
|
||||
@ stdcall GdipScaleWorldTransform(ptr long long long)
|
||||
@ stdcall GdipSetAdjustableArrowCapFillState(ptr long)
|
||||
@ stdcall GdipSetAdjustableArrowCapHeight(ptr long)
|
||||
@ stdcall GdipSetAdjustableArrowCapMiddleInset(ptr long)
|
||||
@ stdcall GdipSetAdjustableArrowCapWidth(ptr long)
|
||||
@ stub GdipSetClipGraphics
|
||||
@ stdcall GdipSetClipGraphics(ptr ptr long)
|
||||
@ stub GdipSetClipHrgn
|
||||
@ stub GdipSetClipPath
|
||||
@ stub GdipSetClipRect
|
||||
@ stdcall GdipSetClipPath(ptr ptr long)
|
||||
@ stdcall GdipSetClipRect(ptr long long long long long)
|
||||
@ stdcall GdipSetClipRectI(ptr long long long long long)
|
||||
@ stdcall GdipSetClipRegion(ptr ptr long)
|
||||
@ stdcall GdipSetCompositingMode(ptr long)
|
||||
|
@ -548,7 +548,7 @@
|
|||
@ stdcall GdipSetPageScale(ptr long)
|
||||
@ stdcall GdipSetPageUnit(ptr long)
|
||||
@ stdcall GdipSetPathFillMode(ptr long)
|
||||
@ stub GdipSetPathGradientBlend
|
||||
@ stdcall GdipSetPathGradientBlend(ptr ptr ptr long)
|
||||
@ stdcall GdipSetPathGradientCenterColor(ptr long)
|
||||
@ stdcall GdipSetPathGradientCenterPoint(ptr ptr)
|
||||
@ stdcall GdipSetPathGradientCenterPointI(ptr ptr)
|
||||
|
@ -564,7 +564,7 @@
|
|||
@ stdcall GdipSetPathMarker(ptr)
|
||||
@ stdcall GdipSetPenBrushFill(ptr ptr)
|
||||
@ stdcall GdipSetPenColor(ptr long)
|
||||
@ stub GdipSetPenCompoundArray
|
||||
@ stdcall GdipSetPenCompoundArray(ptr ptr long)
|
||||
@ stdcall GdipSetPenCustomEndCap(ptr ptr)
|
||||
@ stdcall GdipSetPenCustomStartCap(ptr ptr)
|
||||
@ stdcall GdipSetPenDashArray(ptr ptr long)
|
||||
|
@ -581,7 +581,7 @@
|
|||
@ stub GdipSetPenUnit
|
||||
@ stdcall GdipSetPenWidth(ptr long)
|
||||
@ stdcall GdipSetPixelOffsetMode(ptr long)
|
||||
@ stub GdipSetPropertyItem
|
||||
@ stdcall GdipSetPropertyItem(ptr ptr)
|
||||
@ stub GdipSetRenderingOrigin
|
||||
@ stdcall GdipSetSmoothingMode(ptr long)
|
||||
@ stdcall GdipSetSolidFillColor(ptr ptr)
|
||||
|
@ -593,16 +593,16 @@
|
|||
@ stdcall GdipSetStringFormatMeasurableCharacterRanges(ptr long ptr)
|
||||
@ stdcall GdipSetStringFormatTabStops(ptr long long ptr)
|
||||
@ stdcall GdipSetStringFormatTrimming(ptr long)
|
||||
@ stub GdipSetTextContrast
|
||||
@ stdcall GdipSetTextContrast(ptr long)
|
||||
@ stdcall GdipSetTextRenderingHint(ptr long)
|
||||
@ stdcall GdipSetTextureTransform(ptr ptr)
|
||||
@ stub GdipSetTextureWrapMode
|
||||
@ stdcall GdipSetTextureWrapMode(ptr long)
|
||||
@ stdcall GdipSetWorldTransform(ptr ptr)
|
||||
@ stdcall GdipShearMatrix(ptr long long long)
|
||||
@ stdcall GdipStartPathFigure(ptr)
|
||||
@ stdcall GdipStringFormatGetGenericDefault(ptr)
|
||||
@ stdcall GdipStringFormatGetGenericTypographic(ptr)
|
||||
@ stub GdipTestControl
|
||||
@ stdcall GdipTestControl(long ptr)
|
||||
@ stdcall GdipTransformMatrixPoints(ptr ptr long)
|
||||
@ stdcall GdipTransformMatrixPointsI(ptr ptr long)
|
||||
@ stdcall GdipTransformPath(ptr ptr)
|
||||
|
@ -617,14 +617,14 @@
|
|||
@ stub GdipTranslatePenTransform
|
||||
@ stdcall GdipTranslateRegion(ptr long long)
|
||||
@ stdcall GdipTranslateRegionI(ptr long long)
|
||||
@ stub GdipTranslateTextureTransform
|
||||
@ stdcall GdipTranslateTextureTransform(ptr long long long)
|
||||
@ stdcall GdipTranslateWorldTransform(ptr long long long)
|
||||
@ stdcall GdipVectorTransformMatrixPoints(ptr ptr long)
|
||||
@ stdcall GdipVectorTransformMatrixPointsI(ptr ptr long)
|
||||
@ stub GdipWarpPath
|
||||
@ stub GdipWidenPath
|
||||
@ stub GdipWindingModeOutline
|
||||
@ stub GdiplusNotificationHook
|
||||
@ stub GdiplusNotificationUnhook
|
||||
@ stdcall GdiplusNotificationHook(ptr)
|
||||
@ stdcall GdiplusNotificationUnhook(ptr)
|
||||
@ stdcall GdiplusShutdown(ptr)
|
||||
@ stdcall GdiplusStartup(ptr ptr ptr)
|
||||
|
|
|
@ -54,6 +54,8 @@ extern void calc_curve_bezier_endp(REAL xend, REAL yend, REAL xadj, REAL yadj,
|
|||
|
||||
extern BOOL lengthen_path(GpPath *path, INT len);
|
||||
|
||||
extern GpStatus trace_path(GpGraphics *graphics, GpPath *path);
|
||||
|
||||
typedef struct region_element region_element;
|
||||
extern inline void delete_element(region_element *element);
|
||||
|
||||
|
@ -100,6 +102,7 @@ struct GpGraphics{
|
|||
GpMatrix * worldtrans; /* world transform */
|
||||
BOOL busy; /* hdc handle obtained by GdipGetDC */
|
||||
GpRegion *clip;
|
||||
UINT textcontrast; /* not used yet. get/set only */
|
||||
};
|
||||
|
||||
struct GpBrush{
|
||||
|
@ -138,6 +141,8 @@ struct GpLineGradient{
|
|||
|
||||
struct GpTexture{
|
||||
GpBrush brush;
|
||||
GpMatrix *transform;
|
||||
WrapMode wrap; /* not used yet */
|
||||
};
|
||||
|
||||
struct GpPath{
|
||||
|
@ -193,6 +198,10 @@ struct GpBitmap{
|
|||
BYTE *bitmapbits; /* pointer to the buffer we passed in BitmapLockBits */
|
||||
};
|
||||
|
||||
struct GpCachedBitmap{
|
||||
GpImage *image;
|
||||
};
|
||||
|
||||
struct GpImageAttributes{
|
||||
WrapMode wrap;
|
||||
};
|
||||
|
@ -200,6 +209,8 @@ struct GpImageAttributes{
|
|||
struct GpFont{
|
||||
LOGFONTW lfw;
|
||||
REAL emSize;
|
||||
UINT height;
|
||||
LONG line_spacing;
|
||||
Unit unit;
|
||||
};
|
||||
|
||||
|
@ -218,7 +229,8 @@ struct GpStringFormat{
|
|||
};
|
||||
|
||||
struct GpFontCollection{
|
||||
GpFontFamily* FontFamilies;
|
||||
GpFontFamily **FontFamilies;
|
||||
INT count;
|
||||
};
|
||||
|
||||
struct GpFontFamily{
|
||||
|
|
|
@ -715,6 +715,17 @@ end:
|
|||
return status;
|
||||
}
|
||||
|
||||
GpStatus trace_path(GpGraphics *graphics, GpPath *path)
|
||||
{
|
||||
GpStatus result;
|
||||
|
||||
BeginPath(graphics->hdc);
|
||||
result = draw_poly(graphics, NULL, path->pathdata.Points,
|
||||
path->pathdata.Types, path->pathdata.Count, FALSE);
|
||||
EndPath(graphics->hdc);
|
||||
return result;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics)
|
||||
{
|
||||
TRACE("(%p, %p)\n", hdc, graphics);
|
||||
|
@ -763,6 +774,7 @@ GpStatus WINGDIPAPI GdipCreateFromHDC2(HDC hdc, HANDLE hDevice, GpGraphics **gra
|
|||
(*graphics)->unit = UnitDisplay;
|
||||
(*graphics)->scale = 1.0;
|
||||
(*graphics)->busy = FALSE;
|
||||
(*graphics)->textcontrast = 4;
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
@ -2507,6 +2519,18 @@ GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics *graphics, SmoothingMode *mo
|
|||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetTextContrast(GpGraphics *graphics, UINT *contrast)
|
||||
{
|
||||
TRACE("(%p, %p)\n", graphics, contrast);
|
||||
|
||||
if(!graphics || !contrast)
|
||||
return InvalidParameter;
|
||||
|
||||
*contrast = graphics->textcontrast;
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
/* FIXME: Text rendering hint is not used anywhere except the getter/setter. */
|
||||
GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics *graphics,
|
||||
TextRenderingHint *hint)
|
||||
|
@ -2583,6 +2607,32 @@ GpStatus WINGDIPAPI GdipIsClipEmpty(GpGraphics *graphics, BOOL *res)
|
|||
return GdipIsEmptyRegion(graphics->clip, graphics, res);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePoint(GpGraphics *graphics, REAL x, REAL y, BOOL *result)
|
||||
{
|
||||
FIXME("(%p, %.2f, %.2f, %p) stub\n", graphics, x, y, result);
|
||||
|
||||
if(!graphics || !result)
|
||||
return InvalidParameter;
|
||||
|
||||
if(graphics->busy)
|
||||
return ObjectBusy;
|
||||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePointI(GpGraphics *graphics, INT x, INT y, BOOL *result)
|
||||
{
|
||||
FIXME("(%p, %d, %d, %p) stub\n", graphics, x, y, result);
|
||||
|
||||
if(!graphics || !result)
|
||||
return InvalidParameter;
|
||||
|
||||
if(graphics->busy)
|
||||
return ObjectBusy;
|
||||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics* graphics,
|
||||
GDIPCONST WCHAR* string, INT length, GDIPCONST GpFont* font,
|
||||
GDIPCONST RectF* layoutRect, GDIPCONST GpStringFormat *stringFormat,
|
||||
|
@ -2615,17 +2665,15 @@ GpStatus WINGDIPAPI GdipMeasureString(GpGraphics *graphics,
|
|||
if(!graphics || !string || !font || !rect)
|
||||
return InvalidParameter;
|
||||
|
||||
if(codepointsfitted || linesfilled){
|
||||
FIXME("not implemented for given parameters\n");
|
||||
return NotImplemented;
|
||||
}
|
||||
if(linesfilled) *linesfilled = 0;
|
||||
if(codepointsfitted) *codepointsfitted = 0;
|
||||
|
||||
if(format)
|
||||
TRACE("may be ignoring some format flags: attr %x\n", format->attr);
|
||||
|
||||
if(length == -1) length = lstrlenW(string);
|
||||
|
||||
stringdup = GdipAlloc(length * sizeof(WCHAR));
|
||||
stringdup = GdipAlloc((length + 1) * sizeof(WCHAR));
|
||||
if(!stringdup) return OutOfMemory;
|
||||
|
||||
oldfont = SelectObject(graphics->hdc, CreateFontIndirectW(&font->lfw));
|
||||
|
@ -2683,7 +2731,10 @@ GpStatus WINGDIPAPI GdipMeasureString(GpGraphics *graphics,
|
|||
nwidth, &j, NULL, &size);
|
||||
|
||||
sum += fit + (lret < fitcpy ? 1 : 0);
|
||||
if(codepointsfitted) *codepointsfitted = sum;
|
||||
|
||||
height += size.cy;
|
||||
if(linesfilled) *linesfilled += size.cy;
|
||||
max_width = max(max_width, size.cx);
|
||||
|
||||
if(height > nheight)
|
||||
|
@ -2748,7 +2799,7 @@ GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics *graphics, GraphicsState stat
|
|||
if(!(calls++))
|
||||
FIXME("graphics state not implemented\n");
|
||||
|
||||
return NotImplemented;
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipRotateWorldTransform(GpGraphics *graphics, REAL angle,
|
||||
|
@ -2775,7 +2826,29 @@ GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics *graphics, GraphicsState *state)
|
|||
if(!(calls++))
|
||||
FIXME("graphics state not implemented\n");
|
||||
|
||||
return NotImplemented;
|
||||
*state = 0xdeadbeef;
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipBeginContainer2(GpGraphics *graphics, GraphicsContainer *state)
|
||||
{
|
||||
FIXME("(%p, %p)\n", graphics, state);
|
||||
|
||||
if(!graphics || !state)
|
||||
return InvalidParameter;
|
||||
|
||||
*state = 0xdeadbeef;
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipEndContainer(GpGraphics *graphics, GraphicsState state)
|
||||
{
|
||||
FIXME("(%p, 0x%x)\n", graphics, state);
|
||||
|
||||
if(!graphics || !state)
|
||||
return InvalidParameter;
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipScaleWorldTransform(GpGraphics *graphics, REAL sx,
|
||||
|
@ -2792,6 +2865,17 @@ GpStatus WINGDIPAPI GdipScaleWorldTransform(GpGraphics *graphics, REAL sx,
|
|||
return GdipScaleMatrix(graphics->worldtrans, sx, sy, order);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetClipGraphics(GpGraphics *graphics, GpGraphics *srcgraphics,
|
||||
CombineMode mode)
|
||||
{
|
||||
TRACE("(%p, %p, %d)\n", graphics, srcgraphics, mode);
|
||||
|
||||
if(!graphics || !srcgraphics)
|
||||
return InvalidParameter;
|
||||
|
||||
return GdipCombineRegionRegion(graphics->clip, srcgraphics->clip, mode);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics *graphics,
|
||||
CompositingMode mode)
|
||||
{
|
||||
|
@ -2904,6 +2988,18 @@ GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mod
|
|||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetTextContrast(GpGraphics *graphics, UINT contrast)
|
||||
{
|
||||
TRACE("(%p, %d)\n", graphics, contrast);
|
||||
|
||||
if(!graphics)
|
||||
return InvalidParameter;
|
||||
|
||||
graphics->textcontrast = contrast;
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetTextRenderingHint(GpGraphics *graphics,
|
||||
TextRenderingHint hint)
|
||||
{
|
||||
|
@ -2948,11 +3044,9 @@ GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics *graphics, REAL dx,
|
|||
return GdipTranslateMatrix(graphics->worldtrans, dx, dy, order);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics *graphics, INT x, INT y,
|
||||
INT width, INT height,
|
||||
CombineMode combineMode)
|
||||
GpStatus WINGDIPAPI GdipSetClipPath(GpGraphics *graphics, GpPath *path, CombineMode mode)
|
||||
{
|
||||
static int calls;
|
||||
TRACE("(%p, %p, %d)\n", graphics, path, mode);
|
||||
|
||||
if(!graphics)
|
||||
return InvalidParameter;
|
||||
|
@ -2960,10 +3054,44 @@ GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics *graphics, INT x, INT y,
|
|||
if(graphics->busy)
|
||||
return ObjectBusy;
|
||||
|
||||
if(!(calls++))
|
||||
FIXME("not implemented\n");
|
||||
return GdipCombineRegionPath(graphics->clip, path, mode);
|
||||
}
|
||||
|
||||
return NotImplemented;
|
||||
GpStatus WINGDIPAPI GdipSetClipRect(GpGraphics *graphics, REAL x, REAL y,
|
||||
REAL width, REAL height,
|
||||
CombineMode mode)
|
||||
{
|
||||
GpRectF rect;
|
||||
|
||||
TRACE("(%p, %.2f, %.2f, %.2f, %.2f, %d)\n", graphics, x, y, width, height, mode);
|
||||
|
||||
if(!graphics)
|
||||
return InvalidParameter;
|
||||
|
||||
if(graphics->busy)
|
||||
return ObjectBusy;
|
||||
|
||||
rect.X = x;
|
||||
rect.Y = y;
|
||||
rect.Width = width;
|
||||
rect.Height = height;
|
||||
|
||||
return GdipCombineRegionRect(graphics->clip, &rect, mode);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics *graphics, INT x, INT y,
|
||||
INT width, INT height,
|
||||
CombineMode mode)
|
||||
{
|
||||
TRACE("(%p, %d, %d, %d, %d, %d)\n", graphics, x, y, width, height, mode);
|
||||
|
||||
if(!graphics)
|
||||
return InvalidParameter;
|
||||
|
||||
if(graphics->busy)
|
||||
return ObjectBusy;
|
||||
|
||||
return GdipSetClipRect(graphics, (REAL)x, (REAL)y, (REAL)width, (REAL)height, mode);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetClipRegion(GpGraphics *graphics, GpRegion *region,
|
||||
|
@ -3170,3 +3298,10 @@ GpStatus WINGDIPAPI GdipTransformPointsI(GpGraphics *graphics, GpCoordinateSpace
|
|||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
HPALETTE WINGDIPAPI GdipCreateHalftonePalette(void)
|
||||
{
|
||||
FIXME("\n");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -984,17 +984,17 @@ GpStatus WINGDIPAPI GdipFlattenPath(GpPath *path, GpMatrix* matrix, REAL flatnes
|
|||
|
||||
/* always add line points and start points */
|
||||
if((type == PathPointTypeStart) || (type == PathPointTypeLine)){
|
||||
type = (path->pathdata.Types[i] & ~PathPointTypeBezier) | PathPointTypeLine;
|
||||
if(!add_path_list_node(node, pt.X, pt.Y, type))
|
||||
if(!add_path_list_node(node, pt.X, pt.Y, path->pathdata.Types[i]))
|
||||
goto memout;
|
||||
|
||||
node = node->next;
|
||||
++i;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Bezier curve always stored as 4 points */
|
||||
if((path->pathdata.Types[i-1] & PathPointTypePathTypeMask) != PathPointTypeStart){
|
||||
type = (path->pathdata.Types[i] & ~PathPointTypeBezier) | PathPointTypeLine;
|
||||
type = (path->pathdata.Types[i] & ~PathPointTypePathTypeMask) | PathPointTypeLine;
|
||||
if(!add_path_list_node(node, pt.X, pt.Y, type))
|
||||
goto memout;
|
||||
|
||||
|
@ -1014,7 +1014,7 @@ GpStatus WINGDIPAPI GdipFlattenPath(GpPath *path, GpMatrix* matrix, REAL flatnes
|
|||
|
||||
start = node;
|
||||
/* add Bezier end point */
|
||||
type = (path->pathdata.Types[i] & ~PathPointTypeBezier) | PathPointTypeLine;
|
||||
type = (path->pathdata.Types[i] & ~PathPointTypePathTypeMask) | PathPointTypeLine;
|
||||
if(!add_path_list_node(node, pt.X, pt.Y, type))
|
||||
goto memout;
|
||||
node = node->next;
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "olectl.h"
|
||||
#include "ole2.h"
|
||||
|
||||
#include "initguid.h"
|
||||
#include "gdiplus.h"
|
||||
#include "gdiplus_private.h"
|
||||
#include "wine/debug.h"
|
||||
|
@ -95,10 +96,9 @@ GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap* bitmap, GDIPCONST GpRect* rect,
|
|||
{
|
||||
BOOL bm_is_selected;
|
||||
INT stride, bitspp = PIXELFORMATBPP(format);
|
||||
OLE_HANDLE hbm;
|
||||
HDC hdc;
|
||||
HBITMAP old = NULL;
|
||||
BITMAPINFO bmi;
|
||||
HBITMAP hbm, old = NULL;
|
||||
BITMAPINFO *pbmi;
|
||||
BYTE *buff = NULL;
|
||||
UINT abs_height;
|
||||
GpRect act_rect; /* actual rect to be used */
|
||||
|
@ -127,46 +127,51 @@ GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap* bitmap, GDIPCONST GpRect* rect,
|
|||
if(bitmap->lockmode)
|
||||
return WrongState;
|
||||
|
||||
IPicture_get_Handle(bitmap->image.picture, &hbm);
|
||||
IPicture_get_Handle(bitmap->image.picture, (OLE_HANDLE*)&hbm);
|
||||
IPicture_get_CurDC(bitmap->image.picture, &hdc);
|
||||
bm_is_selected = (hdc != 0);
|
||||
|
||||
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmi.bmiHeader.biBitCount = 0;
|
||||
pbmi = GdipAlloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD));
|
||||
if (!pbmi)
|
||||
return OutOfMemory;
|
||||
pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
pbmi->bmiHeader.biBitCount = 0;
|
||||
|
||||
if(!bm_is_selected){
|
||||
hdc = CreateCompatibleDC(0);
|
||||
old = SelectObject(hdc, (HBITMAP)hbm);
|
||||
old = SelectObject(hdc, hbm);
|
||||
}
|
||||
|
||||
/* fill out bmi */
|
||||
GetDIBits(hdc, (HBITMAP)hbm, 0, 0, NULL, &bmi, DIB_RGB_COLORS);
|
||||
GetDIBits(hdc, hbm, 0, 0, NULL, pbmi, DIB_RGB_COLORS);
|
||||
|
||||
abs_height = abs(bmi.bmiHeader.biHeight);
|
||||
stride = bmi.bmiHeader.biWidth * bitspp / 8;
|
||||
abs_height = abs(pbmi->bmiHeader.biHeight);
|
||||
stride = pbmi->bmiHeader.biWidth * bitspp / 8;
|
||||
stride = (stride + 3) & ~3;
|
||||
|
||||
buff = GdipAlloc(stride * abs_height);
|
||||
|
||||
bmi.bmiHeader.biBitCount = bitspp;
|
||||
pbmi->bmiHeader.biBitCount = bitspp;
|
||||
|
||||
if(buff)
|
||||
GetDIBits(hdc, (HBITMAP)hbm, 0, abs_height, buff, &bmi, DIB_RGB_COLORS);
|
||||
GetDIBits(hdc, hbm, 0, abs_height, buff, pbmi, DIB_RGB_COLORS);
|
||||
|
||||
if(!bm_is_selected){
|
||||
SelectObject(hdc, old);
|
||||
DeleteDC(hdc);
|
||||
}
|
||||
|
||||
if(!buff)
|
||||
if(!buff){
|
||||
GdipFree(pbmi);
|
||||
return OutOfMemory;
|
||||
}
|
||||
|
||||
lockeddata->Width = act_rect.Width;
|
||||
lockeddata->Height = act_rect.Height;
|
||||
lockeddata->PixelFormat = format;
|
||||
lockeddata->Reserved = flags;
|
||||
|
||||
if(bmi.bmiHeader.biHeight > 0){
|
||||
if(pbmi->bmiHeader.biHeight > 0){
|
||||
lockeddata->Stride = -stride;
|
||||
lockeddata->Scan0 = buff + (bitspp / 8) * act_rect.X +
|
||||
stride * (abs_height - 1 - act_rect.Y);
|
||||
|
@ -181,17 +186,17 @@ GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap* bitmap, GDIPCONST GpRect* rect,
|
|||
|
||||
bitmap->bitmapbits = buff;
|
||||
|
||||
GdipFree(pbmi);
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipBitmapUnlockBits(GpBitmap* bitmap,
|
||||
BitmapData* lockeddata)
|
||||
{
|
||||
OLE_HANDLE hbm;
|
||||
HDC hdc;
|
||||
HBITMAP old = NULL;
|
||||
HBITMAP hbm, old = NULL;
|
||||
BOOL bm_is_selected;
|
||||
BITMAPINFO bmi;
|
||||
BITMAPINFO *pbmi;
|
||||
|
||||
if(!bitmap || !lockeddata)
|
||||
return InvalidParameter;
|
||||
|
@ -211,28 +216,30 @@ GpStatus WINGDIPAPI GdipBitmapUnlockBits(GpBitmap* bitmap,
|
|||
return Ok;
|
||||
}
|
||||
|
||||
IPicture_get_Handle(bitmap->image.picture, &hbm);
|
||||
IPicture_get_Handle(bitmap->image.picture, (OLE_HANDLE*)&hbm);
|
||||
IPicture_get_CurDC(bitmap->image.picture, &hdc);
|
||||
bm_is_selected = (hdc != 0);
|
||||
|
||||
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmi.bmiHeader.biBitCount = 0;
|
||||
pbmi = GdipAlloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD));
|
||||
pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
pbmi->bmiHeader.biBitCount = 0;
|
||||
|
||||
if(!bm_is_selected){
|
||||
hdc = CreateCompatibleDC(0);
|
||||
old = SelectObject(hdc, (HBITMAP)hbm);
|
||||
old = SelectObject(hdc, hbm);
|
||||
}
|
||||
|
||||
GetDIBits(hdc, (HBITMAP)hbm, 0, 0, NULL, &bmi, DIB_RGB_COLORS);
|
||||
bmi.bmiHeader.biBitCount = PIXELFORMATBPP(lockeddata->PixelFormat);
|
||||
SetDIBits(hdc, (HBITMAP)hbm, 0, abs(bmi.bmiHeader.biHeight),
|
||||
bitmap->bitmapbits, &bmi, DIB_RGB_COLORS);
|
||||
GetDIBits(hdc, hbm, 0, 0, NULL, pbmi, DIB_RGB_COLORS);
|
||||
pbmi->bmiHeader.biBitCount = PIXELFORMATBPP(lockeddata->PixelFormat);
|
||||
SetDIBits(hdc, hbm, 0, abs(pbmi->bmiHeader.biHeight),
|
||||
bitmap->bitmapbits, pbmi, DIB_RGB_COLORS);
|
||||
|
||||
if(!bm_is_selected){
|
||||
SelectObject(hdc, old);
|
||||
DeleteDC(hdc);
|
||||
}
|
||||
|
||||
GdipFree(pbmi);
|
||||
GdipFree(bitmap->bitmapbits);
|
||||
bitmap->bitmapbits = NULL;
|
||||
bitmap->lockmode = 0;
|
||||
|
@ -245,6 +252,8 @@ GpStatus WINGDIPAPI GdipCloneImage(GpImage *image, GpImage **cloneImage)
|
|||
IStream* stream;
|
||||
HRESULT hr;
|
||||
INT size;
|
||||
LARGE_INTEGER move;
|
||||
GpStatus stat = GenericError;
|
||||
|
||||
TRACE("%p, %p\n", image, cloneImage);
|
||||
|
||||
|
@ -255,15 +264,6 @@ GpStatus WINGDIPAPI GdipCloneImage(GpImage *image, GpImage **cloneImage)
|
|||
if (FAILED(hr))
|
||||
return GenericError;
|
||||
|
||||
*cloneImage = GdipAlloc(sizeof(GpImage));
|
||||
if (!*cloneImage)
|
||||
{
|
||||
IStream_Release(stream);
|
||||
return OutOfMemory;
|
||||
}
|
||||
(*cloneImage)->type = image->type;
|
||||
(*cloneImage)->flags = image->flags;
|
||||
|
||||
hr = IPicture_SaveAsFile(image->picture, stream, FALSE, &size);
|
||||
if(FAILED(hr))
|
||||
{
|
||||
|
@ -271,21 +271,18 @@ GpStatus WINGDIPAPI GdipCloneImage(GpImage *image, GpImage **cloneImage)
|
|||
goto out;
|
||||
}
|
||||
|
||||
hr = OleLoadPicture(stream, size, FALSE, &IID_IPicture,
|
||||
(LPVOID*) &(*cloneImage)->picture);
|
||||
/* Set seek pointer back to the beginning of the picture */
|
||||
move.QuadPart = 0;
|
||||
hr = IStream_Seek(stream, move, STREAM_SEEK_SET, NULL);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
WARN("Failed to load image from stream\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
IStream_Release(stream);
|
||||
return Ok;
|
||||
stat = GdipLoadImageFromStream(stream, cloneImage);
|
||||
if (stat != Ok) WARN("Failed to load image from stream\n");
|
||||
|
||||
out:
|
||||
IStream_Release(stream);
|
||||
GdipFree(*cloneImage);
|
||||
*cloneImage = NULL;
|
||||
return GenericError;
|
||||
return stat;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR* filename,
|
||||
|
@ -294,6 +291,8 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR* filename,
|
|||
GpStatus stat;
|
||||
IStream *stream;
|
||||
|
||||
TRACE("(%s) %p\n", debugstr_w(filename), bitmap);
|
||||
|
||||
if(!filename || !bitmap)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -354,6 +353,8 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromGdiDib(GDIPCONST BITMAPINFO* info,
|
|||
GpStatus WINGDIPAPI GdipCreateBitmapFromFileICM(GDIPCONST WCHAR* filename,
|
||||
GpBitmap **bitmap)
|
||||
{
|
||||
TRACE("(%s) %p\n", debugstr_w(filename), bitmap);
|
||||
|
||||
return GdipCreateBitmapFromFile(filename, bitmap);
|
||||
}
|
||||
|
||||
|
@ -363,11 +364,14 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromResource(HINSTANCE hInstance,
|
|||
HBITMAP hbm;
|
||||
GpStatus stat = InvalidParameter;
|
||||
|
||||
TRACE("%p (%s) %p\n", hInstance, debugstr_w(lpBitmapName), bitmap);
|
||||
|
||||
if(!lpBitmapName || !bitmap)
|
||||
return InvalidParameter;
|
||||
|
||||
/* load DIB */
|
||||
hbm = (HBITMAP)LoadImageW(hInstance,lpBitmapName,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION);
|
||||
hbm = LoadImageW(hInstance, lpBitmapName, IMAGE_BITMAP, 0, 0,
|
||||
LR_CREATEDIBSECTION);
|
||||
|
||||
if(hbm){
|
||||
stat = GdipCreateBitmapFromHBITMAP(hbm, NULL, bitmap);
|
||||
|
@ -436,7 +440,9 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT width, INT height, INT stride,
|
|||
|
||||
TRACE("%d %d %d %d %p %p\n", width, height, stride, format, scan0, bitmap);
|
||||
|
||||
if(!bitmap || width <= 0 || height <= 0 || (scan0 && (stride % 4))){
|
||||
if (!bitmap) return InvalidParameter;
|
||||
|
||||
if(width <= 0 || height <= 0 || (scan0 && (stride % 4))){
|
||||
*bitmap = NULL;
|
||||
return InvalidParameter;
|
||||
}
|
||||
|
@ -516,6 +522,8 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream* stream,
|
|||
{
|
||||
GpStatus stat;
|
||||
|
||||
TRACE("%p %p\n", stream, bitmap);
|
||||
|
||||
stat = GdipLoadImageFromStream(stream, (GpImage**) bitmap);
|
||||
|
||||
if(stat != Ok)
|
||||
|
@ -534,13 +542,64 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream* stream,
|
|||
GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream* stream,
|
||||
GpBitmap **bitmap)
|
||||
{
|
||||
TRACE("%p %p\n", stream, bitmap);
|
||||
|
||||
return GdipCreateBitmapFromStream(stream, bitmap);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipCreateCachedBitmap(GpBitmap *bitmap, GpGraphics *graphics,
|
||||
GpCachedBitmap **cachedbmp)
|
||||
{
|
||||
GpStatus stat;
|
||||
|
||||
TRACE("%p %p %p\n", bitmap, graphics, cachedbmp);
|
||||
|
||||
if(!bitmap || !graphics || !cachedbmp)
|
||||
return InvalidParameter;
|
||||
|
||||
*cachedbmp = GdipAlloc(sizeof(GpCachedBitmap));
|
||||
if(!*cachedbmp)
|
||||
return OutOfMemory;
|
||||
|
||||
stat = GdipCloneImage(&(bitmap->image), &(*cachedbmp)->image);
|
||||
if(stat != Ok){
|
||||
GdipFree(*cachedbmp);
|
||||
return stat;
|
||||
}
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipDeleteCachedBitmap(GpCachedBitmap *cachedbmp)
|
||||
{
|
||||
TRACE("%p\n", cachedbmp);
|
||||
|
||||
if(!cachedbmp)
|
||||
return InvalidParameter;
|
||||
|
||||
GdipDisposeImage(cachedbmp->image);
|
||||
GdipFree(cachedbmp);
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipDrawCachedBitmap(GpGraphics *graphics,
|
||||
GpCachedBitmap *cachedbmp, INT x, INT y)
|
||||
{
|
||||
TRACE("%p %p %d %d\n", graphics, cachedbmp, x, y);
|
||||
|
||||
if(!graphics || !cachedbmp)
|
||||
return InvalidParameter;
|
||||
|
||||
return GdipDrawImage(graphics, cachedbmp->image, (REAL)x, (REAL)y);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipDisposeImage(GpImage *image)
|
||||
{
|
||||
HDC hdc;
|
||||
|
||||
TRACE("%p\n", image);
|
||||
|
||||
if(!image)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -565,6 +624,8 @@ GpStatus WINGDIPAPI GdipFindFirstImageItem(GpImage *image, ImageItemData* item)
|
|||
GpStatus WINGDIPAPI GdipGetImageBounds(GpImage *image, GpRectF *srcRect,
|
||||
GpUnit *srcUnit)
|
||||
{
|
||||
TRACE("%p %p %p\n", image, srcRect, srcUnit);
|
||||
|
||||
if(!image || !srcRect || !srcUnit)
|
||||
return InvalidParameter;
|
||||
if(image->type == ImageTypeMetafile){
|
||||
|
@ -593,6 +654,8 @@ GpStatus WINGDIPAPI GdipGetImageBounds(GpImage *image, GpRectF *srcRect,
|
|||
GpStatus WINGDIPAPI GdipGetImageDimension(GpImage *image, REAL *width,
|
||||
REAL *height)
|
||||
{
|
||||
TRACE("%p %p %p\n", image, width, height);
|
||||
|
||||
if(!image || !height || !width)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -626,6 +689,8 @@ GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage *image,
|
|||
{
|
||||
HDC hdc;
|
||||
|
||||
TRACE("%p %p\n", image, graphics);
|
||||
|
||||
if(!image || !graphics)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -646,6 +711,8 @@ GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage *image,
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetImageHeight(GpImage *image, UINT *height)
|
||||
{
|
||||
TRACE("%p %p\n", image, height);
|
||||
|
||||
if(!image || !height)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -680,9 +747,21 @@ GpStatus WINGDIPAPI GdipGetImageHorizontalResolution(GpImage *image, REAL *res)
|
|||
return NotImplemented;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetImagePaletteSize(GpImage *image, INT *size)
|
||||
{
|
||||
FIXME("%p %p\n", image, size);
|
||||
|
||||
if(!image || !size)
|
||||
return InvalidParameter;
|
||||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
/* FIXME: test this function for non-bitmap types */
|
||||
GpStatus WINGDIPAPI GdipGetImagePixelFormat(GpImage *image, PixelFormat *format)
|
||||
{
|
||||
TRACE("%p %p\n", image, format);
|
||||
|
||||
if(!image || !format)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -702,13 +781,24 @@ GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage *image, GUID *format)
|
|||
return InvalidParameter;
|
||||
|
||||
if(!(calls++))
|
||||
FIXME("not implemented\n");
|
||||
FIXME("stub\n");
|
||||
|
||||
return NotImplemented;
|
||||
/* FIXME: should be detected from embedded picture or stored separately */
|
||||
switch (image->type)
|
||||
{
|
||||
case ImageTypeBitmap: *format = ImageFormatBMP; break;
|
||||
case ImageTypeMetafile: *format = ImageFormatEMF; break;
|
||||
default:
|
||||
WARN("unknown type %u\n", image->type);
|
||||
*format = ImageFormatUndefined;
|
||||
}
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetImageType(GpImage *image, ImageType *type)
|
||||
{
|
||||
TRACE("%p %p\n", image, type);
|
||||
|
||||
if(!image || !type)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -732,6 +822,8 @@ GpStatus WINGDIPAPI GdipGetImageVerticalResolution(GpImage *image, REAL *res)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetImageWidth(GpImage *image, UINT *width)
|
||||
{
|
||||
TRACE("%p %p\n", image, width);
|
||||
|
||||
if(!image || !width)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -767,6 +859,48 @@ GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile * metafile,
|
|||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetAllPropertyItems(GpImage *image, UINT size,
|
||||
UINT num, PropertyItem* items)
|
||||
{
|
||||
static int calls;
|
||||
|
||||
if(!(calls++))
|
||||
FIXME("not implemented\n");
|
||||
|
||||
return InvalidParameter;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetPropertyCount(GpImage *image, UINT* num)
|
||||
{
|
||||
static int calls;
|
||||
|
||||
if(!(calls++))
|
||||
FIXME("not implemented\n");
|
||||
|
||||
return InvalidParameter;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetPropertyIdList(GpImage *image, UINT num, PROPID* list)
|
||||
{
|
||||
static int calls;
|
||||
|
||||
if(!(calls++))
|
||||
FIXME("not implemented\n");
|
||||
|
||||
return InvalidParameter;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetPropertyItem(GpImage *image, PROPID id, UINT size,
|
||||
PropertyItem* buffer)
|
||||
{
|
||||
static int calls;
|
||||
|
||||
if(!(calls++))
|
||||
FIXME("not implemented\n");
|
||||
|
||||
return InvalidParameter;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage *image, PROPID pid,
|
||||
UINT* size)
|
||||
{
|
||||
|
@ -783,6 +917,16 @@ GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage *image, PROPID pid,
|
|||
return NotImplemented;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetPropertySize(GpImage *image, UINT* size, UINT* num)
|
||||
{
|
||||
static int calls;
|
||||
|
||||
if(!(calls++))
|
||||
FIXME("not implemented\n");
|
||||
|
||||
return InvalidParameter;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage *image,
|
||||
GDIPCONST GUID* dimensionID, UINT* count)
|
||||
{
|
||||
|
@ -844,6 +988,8 @@ GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR* filename,
|
|||
GpStatus stat;
|
||||
IStream *stream;
|
||||
|
||||
TRACE("(%s) %p\n", debugstr_w(filename), image);
|
||||
|
||||
if (!filename || !image)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -862,6 +1008,8 @@ GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR* filename,
|
|||
/* FIXME: no icm handling */
|
||||
GpStatus WINGDIPAPI GdipLoadImageFromFileICM(GDIPCONST WCHAR* filename,GpImage **image)
|
||||
{
|
||||
TRACE("(%s) %p\n", debugstr_w(filename), image);
|
||||
|
||||
return GdipLoadImageFromFile(filename, image);
|
||||
}
|
||||
|
||||
|
@ -870,6 +1018,8 @@ GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream* stream, GpImage **image)
|
|||
IPicture *pic;
|
||||
short type;
|
||||
|
||||
TRACE("%p %p\n", stream, image);
|
||||
|
||||
if(!stream || !image)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -882,38 +1032,44 @@ GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream* stream, GpImage **image)
|
|||
IPicture_get_Type(pic, &type);
|
||||
|
||||
if(type == PICTYPE_BITMAP){
|
||||
BITMAPINFO bmi;
|
||||
BITMAPINFO *pbmi;
|
||||
BITMAPCOREHEADER* bmch;
|
||||
OLE_HANDLE hbm;
|
||||
HBITMAP hbm;
|
||||
HDC hdc;
|
||||
|
||||
pbmi = GdipAlloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD));
|
||||
if (!pbmi)
|
||||
return OutOfMemory;
|
||||
*image = GdipAlloc(sizeof(GpBitmap));
|
||||
if(!*image) return OutOfMemory;
|
||||
if(!*image){
|
||||
GdipFree(pbmi);
|
||||
return OutOfMemory;
|
||||
}
|
||||
(*image)->type = ImageTypeBitmap;
|
||||
|
||||
(*((GpBitmap**) image))->width = ipicture_pixel_width(pic);
|
||||
(*((GpBitmap**) image))->height = ipicture_pixel_height(pic);
|
||||
|
||||
/* get the pixel format */
|
||||
IPicture_get_Handle(pic, &hbm);
|
||||
IPicture_get_Handle(pic, (OLE_HANDLE*)&hbm);
|
||||
IPicture_get_CurDC(pic, &hdc);
|
||||
|
||||
ZeroMemory(&bmi, sizeof(bmi));
|
||||
bmch = (BITMAPCOREHEADER*) (&bmi.bmiHeader);
|
||||
bmch = (BITMAPCOREHEADER*) (&pbmi->bmiHeader);
|
||||
bmch->bcSize = sizeof(BITMAPCOREHEADER);
|
||||
|
||||
if(!hdc){
|
||||
HBITMAP old;
|
||||
hdc = CreateCompatibleDC(0);
|
||||
old = SelectObject(hdc, (HBITMAP)hbm);
|
||||
GetDIBits(hdc, (HBITMAP)hbm, 0, 0, NULL, &bmi, DIB_RGB_COLORS);
|
||||
old = SelectObject(hdc, hbm);
|
||||
GetDIBits(hdc, hbm, 0, 0, NULL, pbmi, DIB_RGB_COLORS);
|
||||
SelectObject(hdc, old);
|
||||
DeleteDC(hdc);
|
||||
}
|
||||
else
|
||||
GetDIBits(hdc, (HBITMAP)hbm, 0, 0, NULL, &bmi, DIB_RGB_COLORS);
|
||||
GetDIBits(hdc, hbm, 0, 0, NULL, pbmi, DIB_RGB_COLORS);
|
||||
|
||||
(*((GpBitmap**) image))->format = (bmch->bcBitCount << 8) | PixelFormatGDI;
|
||||
GdipFree(pbmi);
|
||||
}
|
||||
else if(type == PICTYPE_METAFILE || type == PICTYPE_ENHMETAFILE){
|
||||
/* FIXME: missing initialization code */
|
||||
|
@ -936,6 +1092,8 @@ GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream* stream, GpImage **image)
|
|||
/* FIXME: no ICM */
|
||||
GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream* stream, GpImage **image)
|
||||
{
|
||||
TRACE("%p %p\n", stream, image);
|
||||
|
||||
return GdipLoadImageFromStream(stream, image);
|
||||
}
|
||||
|
||||
|
@ -952,6 +1110,16 @@ GpStatus WINGDIPAPI GdipRemovePropertyItem(GpImage *image, PROPID propId)
|
|||
return NotImplemented;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetPropertyItem(GpImage *image, GDIPCONST PropertyItem* item)
|
||||
{
|
||||
static int calls;
|
||||
|
||||
if(!(calls++))
|
||||
FIXME("not implemented\n");
|
||||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage *image, GDIPCONST WCHAR* filename,
|
||||
GDIPCONST CLSID *clsidEncoder,
|
||||
GDIPCONST EncoderParameters *encoderParams)
|
||||
|
@ -959,6 +1127,8 @@ GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage *image, GDIPCONST WCHAR* filenam
|
|||
GpStatus stat;
|
||||
IStream *stream;
|
||||
|
||||
TRACE("%p (%s) %p %p\n", image, debugstr_w(filename), clsidEncoder, encoderParams);
|
||||
|
||||
if (!image || !filename|| !clsidEncoder)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -1067,6 +1237,8 @@ GpStatus WINGDIPAPI GdipSaveImageToStream(GpImage *image, IStream* stream,
|
|||
output = NULL;
|
||||
output_size = 0;
|
||||
|
||||
TRACE("%p %p %p %p\n", image, stream, clsid, params);
|
||||
|
||||
if(!image || !stream)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -1176,11 +1348,42 @@ static const ImageCodecInfo codecs[NUM_ENCODERS_SUPPORTED] =
|
|||
},
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
* GdipGetImageDecodersSize [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipGetImageDecodersSize(UINT *numDecoders, UINT *size)
|
||||
{
|
||||
FIXME("%p %p stub!\n", numDecoders, size);
|
||||
|
||||
if (!numDecoders || !size)
|
||||
return InvalidParameter;
|
||||
|
||||
*numDecoders = 0;
|
||||
*size = 0;
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* GdipGetImageDecoders [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipGetImageDecoders(UINT numDecoders, UINT size, ImageCodecInfo *decoders)
|
||||
{
|
||||
FIXME("%u %u %p stub!\n", numDecoders, size, decoders);
|
||||
|
||||
if (!decoders)
|
||||
return GenericError;
|
||||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* GdipGetImageEncodersSize [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT *numEncoders, UINT *size)
|
||||
{
|
||||
TRACE("%p %p\n", numEncoders, size);
|
||||
|
||||
if (!numEncoders || !size)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -1195,6 +1398,8 @@ GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT *numEncoders, UINT *size)
|
|||
*/
|
||||
GpStatus WINGDIPAPI GdipGetImageEncoders(UINT numEncoders, UINT size, ImageCodecInfo *encoders)
|
||||
{
|
||||
TRACE("%u %u %p\n", numEncoders, size, encoders);
|
||||
|
||||
if (!encoders ||
|
||||
(numEncoders != NUM_ENCODERS_SUPPORTED) ||
|
||||
(size != sizeof (codecs)))
|
||||
|
@ -1214,6 +1419,8 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromHBITMAP(HBITMAP hbm, HPALETTE hpal, GpBi
|
|||
GpStatus retval;
|
||||
PixelFormat format;
|
||||
|
||||
TRACE("%p %p %p\n", hbm, hpal, bitmap);
|
||||
|
||||
if(!hbm || !bitmap)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -1240,6 +1447,9 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromHBITMAP(HBITMAP hbm, HPALETTE hpal, GpBi
|
|||
case 24:
|
||||
format = PixelFormat24bppRGB;
|
||||
break;
|
||||
case 32:
|
||||
format = PixelFormat32bppRGB;
|
||||
break;
|
||||
case 48:
|
||||
format = PixelFormat48bppRGB;
|
||||
break;
|
||||
|
@ -1273,6 +1483,8 @@ GpStatus WINGDIPAPI GdipSetEffectParameters(CGpEffect *effect,
|
|||
*/
|
||||
GpStatus WINGDIPAPI GdipGetImageFlags(GpImage *image, UINT *flags)
|
||||
{
|
||||
TRACE("%p %p\n", image, flags);
|
||||
|
||||
if(!image || !flags)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -1280,3 +1492,52 @@ GpStatus WINGDIPAPI GdipGetImageFlags(GpImage *image, UINT *flags)
|
|||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipTestControl(GpTestControlEnum control, void *param)
|
||||
{
|
||||
TRACE("(%d, %p)\n", control, param);
|
||||
|
||||
switch(control){
|
||||
case TestControlForceBilinear:
|
||||
if(param)
|
||||
FIXME("TestControlForceBilinear not handled\n");
|
||||
break;
|
||||
case TestControlNoICM:
|
||||
if(param)
|
||||
FIXME("TestControlNoICM not handled\n");
|
||||
break;
|
||||
case TestControlGetBuildNumber:
|
||||
*((DWORD*)param) = 3102;
|
||||
break;
|
||||
}
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipRecordMetafileFileName(GDIPCONST WCHAR* fileName,
|
||||
HDC hdc, EmfType type, GDIPCONST GpRectF *pFrameRect,
|
||||
MetafileFrameUnit frameUnit, GDIPCONST WCHAR *desc,
|
||||
GpMetafile **metafile)
|
||||
{
|
||||
FIXME("%s %p %d %p %d %s %p stub!\n", debugstr_w(fileName), hdc, type, pFrameRect,
|
||||
frameUnit, debugstr_w(desc), metafile);
|
||||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipRecordMetafileFileNameI(GDIPCONST WCHAR* fileName, HDC hdc, EmfType type,
|
||||
GDIPCONST GpRect *pFrameRect, MetafileFrameUnit frameUnit,
|
||||
GDIPCONST WCHAR *desc, GpMetafile **metafile)
|
||||
{
|
||||
FIXME("%s %p %d %p %d %s %p stub!\n", debugstr_w(fileName), hdc, type, pFrameRect,
|
||||
frameUnit, debugstr_w(desc), metafile);
|
||||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipImageForceValidation(GpImage *image)
|
||||
{
|
||||
FIXME("%p\n", image);
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
|
|
@ -221,7 +221,7 @@ GpStatus WINGDIPAPI GdipIsMatrixInvertible(GDIPCONST GpMatrix *matrix, BOOL *res
|
|||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix *matrix, GpMatrix* matrix2,
|
||||
GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix *matrix, GDIPCONST GpMatrix* matrix2,
|
||||
GpMatrixOrder order)
|
||||
{
|
||||
TRACE("(%p, %p, %d)\n", matrix, matrix2, order);
|
||||
|
|
|
@ -67,8 +67,28 @@ static DWORD gdip_to_gdi_join(GpLineJoin join)
|
|||
}
|
||||
}
|
||||
|
||||
static GpPenType bt_to_pt(GpBrushType bt)
|
||||
{
|
||||
switch(bt){
|
||||
case BrushTypeSolidColor:
|
||||
return PenTypeSolidColor;
|
||||
case BrushTypeHatchFill:
|
||||
return PenTypeHatchFill;
|
||||
case BrushTypeTextureFill:
|
||||
return PenTypeTextureFill;
|
||||
case BrushTypePathGradient:
|
||||
return PenTypePathGradient;
|
||||
case BrushTypeLinearGradient:
|
||||
return PenTypeLinearGradient;
|
||||
default:
|
||||
return PenTypeUnknown;
|
||||
}
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipClonePen(GpPen *pen, GpPen **clonepen)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, clonepen);
|
||||
|
||||
if(!pen || !clonepen)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -90,6 +110,8 @@ GpStatus WINGDIPAPI GdipCreatePen1(ARGB color, REAL width, GpUnit unit,
|
|||
GpBrush *brush;
|
||||
GpStatus status;
|
||||
|
||||
TRACE("(%x, %.2f, %d, %p)\n", color, width, unit, pen);
|
||||
|
||||
GdipCreateSolidFill(color, (GpSolidFill **)(&brush));
|
||||
status = GdipCreatePen2(brush, width, unit, pen);
|
||||
GdipDeleteBrush(brush);
|
||||
|
@ -102,6 +124,8 @@ GpStatus WINGDIPAPI GdipCreatePen2(GpBrush *brush, REAL width, GpUnit unit,
|
|||
GpPen *gp_pen;
|
||||
GpBrush *clone_brush;
|
||||
|
||||
TRACE("(%p, %.2f, %d, %p)\n", brush, width, unit, pen);
|
||||
|
||||
if(!pen || !brush)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -135,6 +159,8 @@ GpStatus WINGDIPAPI GdipCreatePen2(GpBrush *brush, REAL width, GpUnit unit,
|
|||
|
||||
GpStatus WINGDIPAPI GdipDeletePen(GpPen *pen)
|
||||
{
|
||||
TRACE("(%p)\n", pen);
|
||||
|
||||
if(!pen) return InvalidParameter;
|
||||
|
||||
GdipDeleteBrush(pen->brush);
|
||||
|
@ -148,6 +174,8 @@ GpStatus WINGDIPAPI GdipDeletePen(GpPen *pen)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenBrushFill(GpPen *pen, GpBrush **brush)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, brush);
|
||||
|
||||
if(!pen || !brush)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -156,6 +184,8 @@ GpStatus WINGDIPAPI GdipGetPenBrushFill(GpPen *pen, GpBrush **brush)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenColor(GpPen *pen, ARGB *argb)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, argb);
|
||||
|
||||
if(!pen || !argb)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -167,6 +197,8 @@ GpStatus WINGDIPAPI GdipGetPenColor(GpPen *pen, ARGB *argb)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenCustomEndCap(GpPen *pen, GpCustomLineCap** customCap)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, customCap);
|
||||
|
||||
if(!pen || !customCap)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -180,6 +212,8 @@ GpStatus WINGDIPAPI GdipGetPenCustomEndCap(GpPen *pen, GpCustomLineCap** customC
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenCustomStartCap(GpPen *pen, GpCustomLineCap** customCap)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, customCap);
|
||||
|
||||
if(!pen || !customCap)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -193,6 +227,8 @@ GpStatus WINGDIPAPI GdipGetPenCustomStartCap(GpPen *pen, GpCustomLineCap** custo
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenDashArray(GpPen *pen, REAL *dash, INT count)
|
||||
{
|
||||
TRACE("(%p, %p, %d)\n", pen, dash, count);
|
||||
|
||||
if(!pen || !dash || count > pen->numdashes)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -207,6 +243,8 @@ GpStatus WINGDIPAPI GdipGetPenDashArray(GpPen *pen, REAL *dash, INT count)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenDashCap197819(GpPen *pen, GpDashCap *dashCap)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, dashCap);
|
||||
|
||||
if(!pen || !dashCap)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -217,6 +255,8 @@ GpStatus WINGDIPAPI GdipGetPenDashCap197819(GpPen *pen, GpDashCap *dashCap)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenDashCount(GpPen *pen, INT *count)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, count);
|
||||
|
||||
if(!pen || !count)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -227,6 +267,8 @@ GpStatus WINGDIPAPI GdipGetPenDashCount(GpPen *pen, INT *count)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenDashOffset(GpPen *pen, REAL *offset)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, offset);
|
||||
|
||||
if(!pen || !offset)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -237,6 +279,8 @@ GpStatus WINGDIPAPI GdipGetPenDashOffset(GpPen *pen, REAL *offset)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenDashStyle(GpPen *pen, GpDashStyle *dash)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, dash);
|
||||
|
||||
if(!pen || !dash)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -247,6 +291,8 @@ GpStatus WINGDIPAPI GdipGetPenDashStyle(GpPen *pen, GpDashStyle *dash)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenEndCap(GpPen *pen, GpLineCap *endCap)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, endCap);
|
||||
|
||||
if(!pen || !endCap)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -255,8 +301,22 @@ GpStatus WINGDIPAPI GdipGetPenEndCap(GpPen *pen, GpLineCap *endCap)
|
|||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetPenFillType(GpPen *pen, GpPenType* type)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, type);
|
||||
|
||||
if(!pen || !type)
|
||||
return InvalidParameter;
|
||||
|
||||
*type = bt_to_pt(pen->brush->bt);
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetPenLineJoin(GpPen *pen, GpLineJoin *lineJoin)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, lineJoin);
|
||||
|
||||
if(!pen || !lineJoin)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -267,6 +327,8 @@ GpStatus WINGDIPAPI GdipGetPenLineJoin(GpPen *pen, GpLineJoin *lineJoin)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenMode(GpPen *pen, GpPenAlignment *mode)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, mode);
|
||||
|
||||
if(!pen || !mode)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -277,6 +339,8 @@ GpStatus WINGDIPAPI GdipGetPenMode(GpPen *pen, GpPenAlignment *mode)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenMiterLimit(GpPen *pen, REAL *miterLimit)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, miterLimit);
|
||||
|
||||
if(!pen || !miterLimit)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -287,6 +351,8 @@ GpStatus WINGDIPAPI GdipGetPenMiterLimit(GpPen *pen, REAL *miterLimit)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenStartCap(GpPen *pen, GpLineCap *startCap)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, startCap);
|
||||
|
||||
if(!pen || !startCap)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -297,6 +363,8 @@ GpStatus WINGDIPAPI GdipGetPenStartCap(GpPen *pen, GpLineCap *startCap)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenUnit(GpPen *pen, GpUnit *unit)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, unit);
|
||||
|
||||
if(!pen || !unit)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -307,6 +375,8 @@ GpStatus WINGDIPAPI GdipGetPenUnit(GpPen *pen, GpUnit *unit)
|
|||
|
||||
GpStatus WINGDIPAPI GdipGetPenWidth(GpPen *pen, REAL *width)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, width);
|
||||
|
||||
if(!pen || !width)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -317,6 +387,8 @@ GpStatus WINGDIPAPI GdipGetPenWidth(GpPen *pen, REAL *width)
|
|||
|
||||
GpStatus WINGDIPAPI GdipSetPenBrushFill(GpPen *pen, GpBrush *brush)
|
||||
{
|
||||
TRACE("(%p, %p)\n", pen, brush);
|
||||
|
||||
if(!pen || !brush)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -326,6 +398,8 @@ GpStatus WINGDIPAPI GdipSetPenBrushFill(GpPen *pen, GpBrush *brush)
|
|||
|
||||
GpStatus WINGDIPAPI GdipSetPenColor(GpPen *pen, ARGB argb)
|
||||
{
|
||||
TRACE("(%p, %x)\n", pen, argb);
|
||||
|
||||
if(!pen)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -335,11 +409,24 @@ GpStatus WINGDIPAPI GdipSetPenColor(GpPen *pen, ARGB argb)
|
|||
return GdipSetSolidFillColor(((GpSolidFill*)pen->brush), argb);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetPenCompoundArray(GpPen *pen, GDIPCONST REAL *dash,
|
||||
INT count)
|
||||
{
|
||||
FIXME("(%p, %p, %i): stub", pen, dash, count);
|
||||
|
||||
if (!pen || !dash || count < 2 || count%2 == 1)
|
||||
return InvalidParameter;
|
||||
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipSetPenCustomEndCap(GpPen *pen, GpCustomLineCap* customCap)
|
||||
{
|
||||
GpCustomLineCap * cap;
|
||||
GpStatus ret;
|
||||
|
||||
TRACE("(%p, %p)\n", pen, customCap);
|
||||
|
||||
/* native crashes on pen == NULL, customCap != NULL */
|
||||
if(!customCap) return InvalidParameter;
|
||||
|
||||
|
@ -357,6 +444,8 @@ GpStatus WINGDIPAPI GdipSetPenCustomStartCap(GpPen *pen, GpCustomLineCap* custom
|
|||
GpCustomLineCap * cap;
|
||||
GpStatus ret;
|
||||
|
||||
TRACE("(%p, %p)\n", pen, customCap);
|
||||
|
||||
/* native crashes on pen == NULL, customCap != NULL */
|
||||
if(!customCap) return InvalidParameter;
|
||||
|
||||
|
@ -375,6 +464,8 @@ GpStatus WINGDIPAPI GdipSetPenDashArray(GpPen *pen, GDIPCONST REAL *dash,
|
|||
INT i;
|
||||
REAL sum = 0;
|
||||
|
||||
TRACE("(%p, %p, %d)\n", pen, dash, count);
|
||||
|
||||
if(!pen || !dash)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -409,6 +500,8 @@ GpStatus WINGDIPAPI GdipSetPenDashArray(GpPen *pen, GDIPCONST REAL *dash,
|
|||
|
||||
GpStatus WINGDIPAPI GdipSetPenDashCap197819(GpPen *pen, GpDashCap dashCap)
|
||||
{
|
||||
TRACE("(%p, %d)\n", pen, dashCap);
|
||||
|
||||
if(!pen)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -420,6 +513,8 @@ GpStatus WINGDIPAPI GdipSetPenDashCap197819(GpPen *pen, GpDashCap dashCap)
|
|||
/* FIXME: dash offset not used */
|
||||
GpStatus WINGDIPAPI GdipSetPenDashOffset(GpPen *pen, REAL offset)
|
||||
{
|
||||
TRACE("(%p, %.2f)\n", pen, offset);
|
||||
|
||||
if(!pen)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -430,6 +525,8 @@ GpStatus WINGDIPAPI GdipSetPenDashOffset(GpPen *pen, REAL offset)
|
|||
|
||||
GpStatus WINGDIPAPI GdipSetPenDashStyle(GpPen *pen, GpDashStyle dash)
|
||||
{
|
||||
TRACE("(%p, %d)\n", pen, dash);
|
||||
|
||||
if(!pen)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -449,6 +546,8 @@ GpStatus WINGDIPAPI GdipSetPenDashStyle(GpPen *pen, GpDashStyle dash)
|
|||
|
||||
GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen *pen, GpLineCap cap)
|
||||
{
|
||||
TRACE("(%p, %d)\n", pen, cap);
|
||||
|
||||
if(!pen) return InvalidParameter;
|
||||
|
||||
/* The old custom cap gets deleted even if the new style is LineCapCustom. */
|
||||
|
@ -463,6 +562,8 @@ GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen *pen, GpLineCap cap)
|
|||
GpStatus WINGDIPAPI GdipSetPenLineCap197819(GpPen *pen, GpLineCap start,
|
||||
GpLineCap end, GpDashCap dash)
|
||||
{
|
||||
TRACE("%p, %d, %d, %d)\n", pen, start, end, dash);
|
||||
|
||||
if(!pen)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -482,6 +583,8 @@ GpStatus WINGDIPAPI GdipSetPenLineCap197819(GpPen *pen, GpLineCap start,
|
|||
* Both kinds of miter joins clip if the angle is less than 11 degrees. */
|
||||
GpStatus WINGDIPAPI GdipSetPenLineJoin(GpPen *pen, GpLineJoin join)
|
||||
{
|
||||
TRACE("(%p, %d)\n", pen, join);
|
||||
|
||||
if(!pen) return InvalidParameter;
|
||||
|
||||
pen->join = join;
|
||||
|
@ -493,6 +596,8 @@ GpStatus WINGDIPAPI GdipSetPenLineJoin(GpPen *pen, GpLineJoin join)
|
|||
|
||||
GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen *pen, REAL limit)
|
||||
{
|
||||
TRACE("(%p, %.2f)\n", pen, limit);
|
||||
|
||||
if(!pen)
|
||||
return InvalidParameter;
|
||||
|
||||
|
@ -503,6 +608,8 @@ GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen *pen, REAL limit)
|
|||
|
||||
GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen *pen, GpLineCap cap)
|
||||
{
|
||||
TRACE("(%p, %d)\n", pen, cap);
|
||||
|
||||
if(!pen) return InvalidParameter;
|
||||
|
||||
GdipDeleteCustomLineCap(pen->customstart);
|
||||
|
@ -514,6 +621,8 @@ GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen *pen, GpLineCap cap)
|
|||
|
||||
GpStatus WINGDIPAPI GdipSetPenWidth(GpPen *pen, REAL width)
|
||||
{
|
||||
TRACE("(%p, %.2f)\n", pen, width);
|
||||
|
||||
if(!pen) return InvalidParameter;
|
||||
|
||||
pen->width = width;
|
||||
|
@ -523,6 +632,8 @@ GpStatus WINGDIPAPI GdipSetPenWidth(GpPen *pen, REAL width)
|
|||
|
||||
GpStatus WINGDIPAPI GdipSetPenMode(GpPen *pen, GpPenAlignment mode)
|
||||
{
|
||||
TRACE("(%p, %d)\n", pen, mode);
|
||||
|
||||
if(!pen) return InvalidParameter;
|
||||
|
||||
pen->align = mode;
|
||||
|
|
|
@ -573,6 +573,9 @@ GpStatus WINGDIPAPI GdipCreateRegionHrgn(HRGN hrgn, GpRegion **region)
|
|||
{
|
||||
FIXME("(%p, %p): stub\n", hrgn, region);
|
||||
|
||||
if(!hrgn || !region)
|
||||
return InvalidParameter;
|
||||
|
||||
*region = NULL;
|
||||
return NotImplemented;
|
||||
}
|
||||
|
@ -765,15 +768,189 @@ GpStatus WINGDIPAPI GdipGetRegionDataSize(GpRegion *region, UINT *needed)
|
|||
return Ok;
|
||||
}
|
||||
|
||||
static GpStatus get_path_hrgn(GpPath *path, GpGraphics *graphics, HRGN *hrgn)
|
||||
{
|
||||
HDC new_hdc=NULL;
|
||||
GpStatus stat;
|
||||
INT save_state;
|
||||
|
||||
if (!graphics)
|
||||
{
|
||||
new_hdc = GetDC(0);
|
||||
if (!new_hdc)
|
||||
return OutOfMemory;
|
||||
|
||||
stat = GdipCreateFromHDC(new_hdc, &graphics);
|
||||
if (stat != Ok)
|
||||
{
|
||||
ReleaseDC(0, new_hdc);
|
||||
return stat;
|
||||
}
|
||||
}
|
||||
|
||||
save_state = SaveDC(graphics->hdc);
|
||||
EndPath(graphics->hdc);
|
||||
|
||||
SetPolyFillMode(graphics->hdc, (path->fill == FillModeAlternate ? ALTERNATE
|
||||
: WINDING));
|
||||
|
||||
stat = trace_path(graphics, path);
|
||||
if (stat == Ok)
|
||||
{
|
||||
*hrgn = PathToRegion(graphics->hdc);
|
||||
stat = *hrgn ? Ok : OutOfMemory;
|
||||
}
|
||||
|
||||
RestoreDC(graphics->hdc, save_state);
|
||||
if (new_hdc)
|
||||
{
|
||||
ReleaseDC(0, new_hdc);
|
||||
GdipDeleteGraphics(graphics);
|
||||
}
|
||||
|
||||
return stat;
|
||||
}
|
||||
|
||||
static GpStatus get_region_hrgn(struct region_element *element, GpGraphics *graphics, HRGN *hrgn)
|
||||
{
|
||||
switch (element->type)
|
||||
{
|
||||
case RegionDataInfiniteRect:
|
||||
*hrgn = NULL;
|
||||
return Ok;
|
||||
case RegionDataEmptyRect:
|
||||
*hrgn = CreateRectRgn(0, 0, 0, 0);
|
||||
return *hrgn ? Ok : OutOfMemory;
|
||||
case RegionDataPath:
|
||||
return get_path_hrgn(element->elementdata.pathdata.path, graphics, hrgn);
|
||||
case RegionDataRect:
|
||||
{
|
||||
GpPath* path;
|
||||
GpStatus stat;
|
||||
GpRectF* rc = &element->elementdata.rect;
|
||||
|
||||
stat = GdipCreatePath(FillModeAlternate, &path);
|
||||
if (stat != Ok)
|
||||
return stat;
|
||||
stat = GdipAddPathRectangle(path, rc->X, rc->Y, rc->Width, rc->Height);
|
||||
|
||||
if (stat == Ok)
|
||||
stat = get_path_hrgn(path, graphics, hrgn);
|
||||
|
||||
GdipDeletePath(path);
|
||||
|
||||
return stat;
|
||||
}
|
||||
case CombineModeIntersect:
|
||||
case CombineModeUnion:
|
||||
case CombineModeXor:
|
||||
case CombineModeExclude:
|
||||
case CombineModeComplement:
|
||||
{
|
||||
HRGN left, right;
|
||||
GpStatus stat;
|
||||
int ret;
|
||||
|
||||
stat = get_region_hrgn(element->elementdata.combine.left, graphics, &left);
|
||||
if (stat != Ok)
|
||||
{
|
||||
*hrgn = NULL;
|
||||
return stat;
|
||||
}
|
||||
|
||||
if (left == NULL)
|
||||
{
|
||||
/* existing region is infinite */
|
||||
switch (element->type)
|
||||
{
|
||||
case CombineModeIntersect:
|
||||
return get_region_hrgn(element->elementdata.combine.right, graphics, hrgn);
|
||||
case CombineModeXor: case CombineModeExclude:
|
||||
FIXME("cannot exclude from an infinite region\n");
|
||||
/* fall-through */
|
||||
case CombineModeUnion: case CombineModeComplement:
|
||||
*hrgn = NULL;
|
||||
return Ok;
|
||||
}
|
||||
}
|
||||
|
||||
stat = get_region_hrgn(element->elementdata.combine.right, graphics, &right);
|
||||
if (stat != Ok)
|
||||
{
|
||||
DeleteObject(left);
|
||||
*hrgn = NULL;
|
||||
return stat;
|
||||
}
|
||||
|
||||
if (right == NULL)
|
||||
{
|
||||
/* new region is infinite */
|
||||
switch (element->type)
|
||||
{
|
||||
case CombineModeIntersect:
|
||||
*hrgn = left;
|
||||
return Ok;
|
||||
case CombineModeXor: case CombineModeComplement:
|
||||
FIXME("cannot exclude from an infinite region\n");
|
||||
/* fall-through */
|
||||
case CombineModeUnion: case CombineModeExclude:
|
||||
DeleteObject(left);
|
||||
*hrgn = NULL;
|
||||
return Ok;
|
||||
}
|
||||
}
|
||||
|
||||
switch (element->type)
|
||||
{
|
||||
case CombineModeIntersect:
|
||||
ret = CombineRgn(left, left, right, RGN_AND);
|
||||
break;
|
||||
case CombineModeUnion:
|
||||
ret = CombineRgn(left, left, right, RGN_OR);
|
||||
break;
|
||||
case CombineModeXor:
|
||||
ret = CombineRgn(left, left, right, RGN_XOR);
|
||||
break;
|
||||
case CombineModeExclude:
|
||||
ret = CombineRgn(left, left, right, RGN_DIFF);
|
||||
break;
|
||||
case CombineModeComplement:
|
||||
ret = CombineRgn(left, right, left, RGN_DIFF);
|
||||
break;
|
||||
default:
|
||||
ret = ERROR;
|
||||
}
|
||||
|
||||
DeleteObject(right);
|
||||
|
||||
if (ret == ERROR)
|
||||
{
|
||||
DeleteObject(left);
|
||||
*hrgn = NULL;
|
||||
return GenericError;
|
||||
}
|
||||
|
||||
*hrgn = left;
|
||||
return Ok;
|
||||
}
|
||||
default:
|
||||
FIXME("GdipGetRegionHRgn unimplemented for region type=%x\n", element->type);
|
||||
*hrgn = NULL;
|
||||
return NotImplemented;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* GdipGetRegionHRgn [GDIPLUS.@]
|
||||
*/
|
||||
GpStatus WINGDIPAPI GdipGetRegionHRgn(GpRegion *region, GpGraphics *graphics, HRGN *hrgn)
|
||||
{
|
||||
FIXME("(%p, %p, %p): stub\n", region, graphics, hrgn);
|
||||
TRACE("(%p, %p, %p)\n", region, graphics, hrgn);
|
||||
|
||||
*hrgn = NULL;
|
||||
return NotImplemented;
|
||||
if (!region || !hrgn)
|
||||
return InvalidParameter;
|
||||
|
||||
return get_region_hrgn(®ion->node, graphics, hrgn);
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipIsEmptyRegion(GpRegion *region, GpGraphics *graphics, BOOL *res)
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#define _GDIPLUSENUMS_H
|
||||
|
||||
typedef UINT GraphicsState;
|
||||
typedef UINT GraphicsContainer;
|
||||
|
||||
enum Unit
|
||||
{
|
||||
|
@ -75,6 +76,16 @@ enum PathPointType{
|
|||
PathPointTypeBezier3 = 3
|
||||
};
|
||||
|
||||
enum PenType
|
||||
{
|
||||
PenTypeSolidColor = BrushTypeSolidColor,
|
||||
PenTypeHatchFill = BrushTypeHatchFill,
|
||||
PenTypeTextureFill = BrushTypeTextureFill,
|
||||
PenTypePathGradient = BrushTypePathGradient,
|
||||
PenTypeLinearGradient = BrushTypeLinearGradient,
|
||||
PenTypeUnknown = -1
|
||||
};
|
||||
|
||||
enum LineJoin
|
||||
{
|
||||
LineJoinMiter = 0,
|
||||
|
@ -329,6 +340,23 @@ enum CoordinateSpace
|
|||
CoordinateSpaceDevice
|
||||
};
|
||||
|
||||
enum GpTestControlEnum
|
||||
{
|
||||
TestControlForceBilinear = 0,
|
||||
TestControlNoICM = 1,
|
||||
TestControlGetBuildNumber = 2
|
||||
};
|
||||
|
||||
enum MetafileFrameUnit
|
||||
{
|
||||
MetafileFrameUnitPixel = UnitPixel,
|
||||
MetafileFrameUnitPoint = UnitPoint,
|
||||
MetafileFrameUnitInch = UnitInch,
|
||||
MetafileFrameUnitDocument = UnitDocument,
|
||||
MetafileFrameUnitMillimeter = UnitMillimeter,
|
||||
MetafileFrameUnitGdi
|
||||
};
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
||||
typedef enum Unit Unit;
|
||||
|
@ -364,6 +392,9 @@ typedef enum ImageCodecFlags ImageCodecFlags;
|
|||
typedef enum CombineMode CombineMode;
|
||||
typedef enum FlushIntention FlushIntention;
|
||||
typedef enum CoordinateSpace CoordinateSpace;
|
||||
typedef enum GpTestControlEnum GpTestControlEnum;
|
||||
typedef enum MetafileFrameUnit MetafileFrameUnit;
|
||||
typedef enum PenType PenType;
|
||||
|
||||
#endif /* end of c typedefs */
|
||||
|
||||
|
|
|
@ -27,64 +27,98 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
GpStatus WINGDIPAPI GdipClonePen(GpPen*,GpPen**);
|
||||
GpStatus WINGDIPAPI GdipCreatePen1(ARGB,REAL,GpUnit,GpPen**);
|
||||
GpStatus WINGDIPAPI GdipCreatePen2(GpBrush*,REAL,GpUnit,GpPen**);
|
||||
GpStatus WINGDIPAPI GdipDeletePen(GpPen*);
|
||||
GpStatus WINGDIPAPI GdipGetPenBrushFill(GpPen*,GpBrush**);
|
||||
GpStatus WINGDIPAPI GdipGetPenColor(GpPen*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipGetPenCustomStartCap(GpPen*,GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipGetPenCustomEndCap(GpPen*,GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashArray(GpPen*,REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashCount(GpPen*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashOffset(GpPen*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashStyle(GpPen*,GpDashStyle*);
|
||||
GpStatus WINGDIPAPI GdipGetPenMode(GpPen*,GpPenAlignment*);
|
||||
GpStatus WINGDIPAPI GdipSetPenBrushFill(GpPen*,GpBrush*);
|
||||
GpStatus WINGDIPAPI GdipSetPenColor(GpPen*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipSetPenCustomEndCap(GpPen*,GpCustomLineCap*);
|
||||
GpStatus WINGDIPAPI GdipSetPenCustomStartCap(GpPen*,GpCustomLineCap*);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashArray(GpPen*,GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashCap197819(GpPen*,GpDashCap);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashOffset(GpPen*,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashStyle(GpPen*,GpDashStyle);
|
||||
GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen*,GpLineCap);
|
||||
GpStatus WINGDIPAPI GdipSetPenLineCap197819(GpPen*,GpLineCap,GpLineCap,GpDashCap);
|
||||
GpStatus WINGDIPAPI GdipSetPenLineJoin(GpPen*,GpLineJoin);
|
||||
GpStatus WINGDIPAPI GdipSetPenMode(GpPen*,GpPenAlignment);
|
||||
GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen*,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen*,GpLineCap);
|
||||
GpStatus WINGDIPAPI GdipSetPenWidth(GpPen*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashCap197819(GpPen*,GpDashCap*);
|
||||
GpStatus WINGDIPAPI GdipGetPenEndCap(GpPen*,GpLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetPenLineJoin(GpPen*,GpLineJoin*);
|
||||
GpStatus WINGDIPAPI GdipGetPenMiterLimit(GpPen*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetPenStartCap(GpPen*,GpLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetPenUnit(GpPen*,GpUnit*);
|
||||
GpStatus WINGDIPAPI GdipGetPenWidth(GpPen*,REAL*);
|
||||
/* AdjustableArrowCap */
|
||||
GpStatus WINGDIPAPI GdipCreateAdjustableArrowCap(REAL,REAL,BOOL,GpAdjustableArrowCap**);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapFillState(GpAdjustableArrowCap*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapHeight(GpAdjustableArrowCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapFillState(GpAdjustableArrowCap*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapHeight(GpAdjustableArrowCap*,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL);
|
||||
|
||||
/* Bitmap */
|
||||
GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap*,INT,INT,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap*,GDIPCONST GpRect*,UINT,
|
||||
PixelFormat,BitmapData*);
|
||||
GpStatus WINGDIPAPI GdipBitmapSetPixel(GpBitmap*,INT,INT,ARGB);
|
||||
GpStatus WINGDIPAPI GdipBitmapUnlockBits(GpBitmap*,BitmapData*);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromFileICM(GDIPCONST WCHAR*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromGdiDib(GDIPCONST BITMAPINFO*,VOID*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromGraphics(INT,INT,GpGraphics*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromHBITMAP(HBITMAP, HPALETTE, GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromResource(HINSTANCE,GDIPCONST WCHAR*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT,INT,INT,PixelFormat,BYTE*,
|
||||
GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream*,GpBitmap**);
|
||||
|
||||
/* Brush */
|
||||
GpStatus WINGDIPAPI GdipCloneBrush(GpBrush*,GpBrush**);
|
||||
GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush*);
|
||||
GpStatus WINGDIPAPI GdipGetBrushType(GpBrush*,GpBrushType*);
|
||||
|
||||
/* CustomLineCap */
|
||||
GpStatus WINGDIPAPI GdipCloneCustomLineCap(GpCustomLineCap*,GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipCreateCustomLineCap(GpPath*,GpPath*,GpLineCap,REAL,
|
||||
GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapBaseCap(GpCustomLineCap*,GpLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapBaseInset(GpCustomLineCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeCaps(GpCustomLineCap*,GpLineCap,
|
||||
GpLineCap);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapStrokeJoin(GpCustomLineCap*,GpLineJoin*);
|
||||
GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeJoin(GpCustomLineCap*,GpLineJoin);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapWidthScale(GpCustomLineCap*,REAL*);
|
||||
|
||||
/* Font */
|
||||
GpStatus WINGDIPAPI GdipCloneFont(GpFont*,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCreateFont(GDIPCONST GpFontFamily*, REAL, INT, Unit,
|
||||
GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCreateFontFromDC(HDC,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCreateFontFromLogfontA(HDC,GDIPCONST LOGFONTA*,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC,GDIPCONST LOGFONTW*,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipDeleteFont(GpFont*);
|
||||
GpStatus WINGDIPAPI GdipGetLogFontW(GpFont*,GpGraphics*,LOGFONTW*);
|
||||
GpStatus WINGDIPAPI GdipGetFamily(GpFont*, GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetFontUnit(GpFont*, Unit*);
|
||||
GpStatus WINGDIPAPI GdipGetFontSize(GpFont*, REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetFontStyle(GpFont*, INT*);
|
||||
GpStatus WINGDIPAPI GdipGetFontHeight(GDIPCONST GpFont*, GDIPCONST GpGraphics*,
|
||||
REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetFontHeightGivenDPI(GDIPCONST GpFont*, REAL, REAL*);
|
||||
|
||||
/* FontCollection */
|
||||
GpStatus WINGDIPAPI GdipNewPrivateFontCollection(GpFontCollection**);
|
||||
GpStatus WINGDIPAPI GdipDeletePrivateFontCollection(GpFontCollection**);
|
||||
GpStatus WINGDIPAPI GdipPrivateAddFontFile(GpFontCollection*, GDIPCONST WCHAR*);
|
||||
GpStatus WINGDIPAPI GdipGetFontCollectionFamilyCount(GpFontCollection*, INT*);
|
||||
GpStatus WINGDIPAPI GdipGetFontCollectionFamilyList(GpFontCollection*, INT,
|
||||
GpFontFamily*[], INT*);
|
||||
|
||||
/* FontFamily */
|
||||
GpStatus WINGDIPAPI GdipCloneFontFamily(GpFontFamily*, GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR*,
|
||||
GpFontCollection*, GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipDeleteFontFamily(GpFontFamily*);
|
||||
GpStatus WINGDIPAPI GdipGetFamilyName(GDIPCONST GpFontFamily*, WCHAR*, LANGID);
|
||||
GpStatus WINGDIPAPI GdipGetCellAscent(GDIPCONST GpFontFamily*, INT, UINT16*);
|
||||
GpStatus WINGDIPAPI GdipGetCellDescent(GDIPCONST GpFontFamily*, INT, UINT16*);
|
||||
GpStatus WINGDIPAPI GdipGetEmHeight(GDIPCONST GpFontFamily*, INT, UINT16*);
|
||||
GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetGenericFontFamilySerif(GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetGenericFontFamilyMonospace(GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetLineSpacing(GDIPCONST GpFontFamily*, INT, UINT16*);
|
||||
GpStatus WINGDIPAPI GdipIsStyleAvailable(GDIPCONST GpFontFamily *, INT, BOOL*);
|
||||
|
||||
/* Graphics */
|
||||
GpStatus WINGDIPAPI GdipFlush(GpGraphics*, GpFlushIntention);
|
||||
GpStatus WINGDIPAPI GdipCreateFromHDC(HDC,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipCreateFromHDC2(HDC,HANDLE,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipCreateFromHWND(HWND,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipCreateFromHWNDICM(HWND,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF*,GDIPCONST GpPointF*,
|
||||
ARGB,ARGB,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushI(GDIPCONST GpPoint*,GDIPCONST GpPoint*,
|
||||
ARGB,ARGB,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF*,ARGB,ARGB,
|
||||
LinearGradientMode,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectI(GDIPCONST GpRect*,ARGB,ARGB,
|
||||
LinearGradientMode,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngle(GDIPCONST GpRectF*,
|
||||
ARGB,ARGB,REAL,BOOL,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngleI(GDIPCONST GpRect*,
|
||||
ARGB,ARGB,REAL,BOOL,GpWrapMode,GpLineGradient**);
|
||||
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromEmf(HENHMETAFILE,BOOL,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE,BOOL,
|
||||
GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromWmfFile(GDIPCONST WCHAR*, GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateStreamOnFile(GDIPCONST WCHAR*,UINT,IStream**);
|
||||
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *);
|
||||
GpStatus WINGDIPAPI GdipDrawArc(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawArcI(GpGraphics*,GpPen*,INT,INT,INT,INT,REAL,REAL);
|
||||
|
@ -110,14 +144,14 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics*,GpImage*,
|
|||
GpStatus WINGDIPAPI GdipDrawImagePointsRectI(GpGraphics*,GpImage*,
|
||||
GDIPCONST GpPoint*,INT,INT,INT,INT,INT,GpUnit,
|
||||
GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
|
||||
GpStatus WINGDIPAPI GdipDrawImageRect(GpGraphics*,GpImage*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawImageRectI(GpGraphics*,GpImage*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawImageRectRect(GpGraphics*,GpImage*,REAL,REAL,REAL,
|
||||
REAL,REAL,REAL,REAL,REAL,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,
|
||||
VOID*);
|
||||
GpStatus WINGDIPAPI GdipDrawImageRectRectI(GpGraphics*,GpImage*,INT,INT,INT,
|
||||
INT,INT,INT,INT,INT,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,
|
||||
VOID*);
|
||||
GpStatus WINGDIPAPI GdipDrawImageRect(GpGraphics*,GpImage*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawImageRectI(GpGraphics*,GpImage*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawLine(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics*,GpPen*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawLines(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
|
||||
|
@ -134,7 +168,6 @@ GpStatus WINGDIPAPI GdipDrawRectanglesI(GpGraphics*,GpPen*,GDIPCONST GpRect*,INT
|
|||
GpStatus WINGDIPAPI GdipDrawString(GpGraphics*,GDIPCONST WCHAR*,INT,
|
||||
GDIPCONST GpFont*,GDIPCONST RectF*, GDIPCONST GpStringFormat*,
|
||||
GDIPCONST GpBrush*);
|
||||
|
||||
GpStatus WINGDIPAPI GdipFillClosedCurve2(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT,
|
||||
REAL,GpFillMode);
|
||||
GpStatus WINGDIPAPI GdipFillClosedCurve2I(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT,
|
||||
|
@ -154,104 +187,60 @@ GpStatus WINGDIPAPI GdipFillRectangle(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL);
|
|||
GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics*,GpBrush*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics*,GpBrush*,GDIPCONST GpRectF*,INT);
|
||||
GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics*,GpBrush*,GDIPCONST GpRect*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics*,CompositingMode*);
|
||||
GpStatus WINGDIPAPI GdipFillRegion(GpGraphics*,GpBrush*,GpRegion*);
|
||||
GpStatus WINGDIPAPI GdipGetClip(GpGraphics*,GpRegion*);
|
||||
GpStatus WINGDIPAPI GdipSetClipRegion(GpGraphics*,GpRegion*,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipResetClip(GpGraphics*);
|
||||
GpStatus WINGDIPAPI GdipIsClipEmpty(GpGraphics*, BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics*,CompositingMode*);
|
||||
GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
|
||||
GpStatus WINGDIPAPI GdipGetDC(GpGraphics*,HDC*);
|
||||
GpStatus WINGDIPAPI GdipGetImageDimension(GpImage*,REAL*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetDpiX(GpGraphics*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetDpiY(GpGraphics*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage*,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics*,InterpolationMode*);
|
||||
GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics*,GpUnit*);
|
||||
GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*);
|
||||
GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
|
||||
GpStatus WINGDIPAPI GdipGetTextContrast(GpGraphics*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics*,TextRenderingHint*);
|
||||
GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipGraphicsClear(GpGraphics*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipMeasureString(GpGraphics*,GDIPCONST WCHAR*,INT,
|
||||
GDIPCONST GpFont*,GDIPCONST RectF*,GDIPCONST GpStringFormat*,RectF*,INT*,INT*);
|
||||
GpStatus WINGDIPAPI GdipIsClipEmpty(GpGraphics*, BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePoint(GpGraphics*,REAL,REAL,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePointI(GpGraphics*,INT,INT,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics*, GDIPCONST WCHAR*,
|
||||
INT, GDIPCONST GpFont*, GDIPCONST RectF*, GDIPCONST GpStringFormat*, INT,
|
||||
GpRegion**);
|
||||
|
||||
GpStatus WINGDIPAPI GdipMeasureString(GpGraphics*,GDIPCONST WCHAR*,INT,
|
||||
GDIPCONST GpFont*,GDIPCONST RectF*,GDIPCONST GpStringFormat*,RectF*,INT*,INT*);
|
||||
GpStatus WINGDIPAPI GdipMultiplyWorldTransform(GpGraphics*,GDIPCONST GpMatrix*,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipReleaseDC(GpGraphics*,HDC);
|
||||
GpStatus WINGDIPAPI GdipResetClip(GpGraphics*);
|
||||
GpStatus WINGDIPAPI GdipResetWorldTransform(GpGraphics*);
|
||||
GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics*,GraphicsState);
|
||||
GpStatus WINGDIPAPI GdipRotateWorldTransform(GpGraphics*,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*);
|
||||
GpStatus WINGDIPAPI GdipScaleWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipSetClipPath(GpGraphics*,GpPath*,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipSetClipRect(GpGraphics*,REAL,REAL,REAL,REAL,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics*,INT,INT,INT,INT,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipSetClipRegion(GpGraphics*,GpRegion*,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics*,CompositingMode);
|
||||
GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality);
|
||||
GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode);
|
||||
GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics*,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics*,GpUnit);
|
||||
GpStatus WINGDIPAPI GdipSetPathMarker(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipClearPathMarkers(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics*,PixelOffsetMode);
|
||||
GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode);
|
||||
GpStatus WINGDIPAPI GdipSetTextContrast(GpGraphics*,UINT);
|
||||
GpStatus WINGDIPAPI GdipSetTextRenderingHint(GpGraphics*,TextRenderingHint);
|
||||
GpStatus WINGDIPAPI GdipSetWorldTransform(GpGraphics*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
|
||||
|
||||
GpStatus WINGDIPAPI GdipCloneBrush(GpBrush*,GpBrush**);
|
||||
GpStatus WINGDIPAPI GdipCreatePathGradient(GDIPCONST GpPointF*,INT,GpWrapMode,GpPathGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreatePathGradientI(GDIPCONST GpPoint*,INT,GpWrapMode,GpPathGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath*,
|
||||
GpPathGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**);
|
||||
GpStatus WINGDIPAPI GdipCreateTexture(GpImage*,GpWrapMode,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTexture2(GpImage*,GpWrapMode,REAL,REAL,REAL,REAL,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTexture2I(GpImage*,GpWrapMode,INT,INT,INT,INT,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage*,GDIPCONST GpImageAttributes*,
|
||||
REAL,REAL,REAL,REAL,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTextureIAI(GpImage*,GDIPCONST GpImageAttributes*,
|
||||
INT,INT,INT,INT,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush*);
|
||||
GpStatus WINGDIPAPI GdipGetBrushType(GpBrush*,GpBrushType*);
|
||||
GpStatus WINGDIPAPI GdipGetLineGammaCorrection(GpLineGradient*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetLineWrapMode(GpLineGradient*,GpWrapMode*);
|
||||
GpStatus WINGDIPAPI GdipGetLineRect(GpLineGradient*,GpRectF*);
|
||||
GpStatus WINGDIPAPI GdipGetLineRectI(GpLineGradient*,GpRect*);
|
||||
GpStatus WINGDIPAPI GdipGetLineColors(GpLineGradient*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientBlend(GpPathGradient*,REAL*,REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientBlendCount(GpPathGradient*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientCenterColor(GpPathGradient*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientCenterPoint(GpPathGradient*,GpPointF*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientCenterPointI(GpPathGradient*,GpPoint*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientFocusScales(GpPathGradient*,REAL*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientGammaCorrection(GpPathGradient*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientPointCount(GpPathGradient*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientRect(GpPathGradient*,GpRectF*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientRectI(GpPathGradient*,GpRect*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorsWithCount(GpPathGradient*,
|
||||
ARGB*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientWrapMode(GpPathGradient*,GpWrapMode*);
|
||||
GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipGetTextureTransform(GpTexture*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient*,GDIPCONST REAL*,
|
||||
GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetLineGammaCorrection(GpLineGradient*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipSetLineSigmaBlend(GpLineGradient*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetLineWrapMode(GpLineGradient*,GpWrapMode);
|
||||
GpStatus WINGDIPAPI GdipSetLineColors(GpLineGradient*,ARGB,ARGB);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientCenterColor(GpPathGradient*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientCenterPoint(GpPathGradient*,GpPointF*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientCenterPointI(GpPathGradient*,GpPoint*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientFocusScales(GpPathGradient*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientGammaCorrection(GpPathGradient*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientSigmaBlend(GpPathGradient*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientSurroundColorsWithCount(GpPathGradient*,
|
||||
ARGB*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientWrapMode(GpPathGradient*,GpWrapMode);
|
||||
GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture *,GDIPCONST GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipTransformPoints(GpGraphics*, GpCoordinateSpace, GpCoordinateSpace,
|
||||
GpPointF *, INT);
|
||||
GpStatus WINGDIPAPI GdipTransformPointsI(GpGraphics*, GpCoordinateSpace, GpCoordinateSpace,
|
||||
GpPoint *, INT);
|
||||
GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
|
||||
|
||||
/* GraphicsPath */
|
||||
GpStatus WINGDIPAPI GdipAddPathArc(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathArcI(GpPath*,INT,INT,INT,INT,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathBezier(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
|
@ -269,9 +258,9 @@ GpStatus WINGDIPAPI GdipAddPathCurve2I(GpPath*,GDIPCONST GpPoint*,INT,REAL);
|
|||
GpStatus WINGDIPAPI GdipAddPathEllipse(GpPath*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathEllipseI(GpPath*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathLine(GpPath*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathLineI(GpPath*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathLine2(GpPath*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathLine2I(GpPath*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathLineI(GpPath*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathPath(GpPath*,GDIPCONST GpPath*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipAddPathPie(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathPieI(GpPath*,INT,INT,INT,INT,REAL,REAL);
|
||||
|
@ -281,6 +270,7 @@ GpStatus WINGDIPAPI GdipAddPathRectangle(GpPath*,REAL,REAL,REAL,REAL);
|
|||
GpStatus WINGDIPAPI GdipAddPathRectangleI(GpPath*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathRectangles(GpPath*,GDIPCONST GpRectF*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathRectanglesI(GpPath*,GDIPCONST GpRect*,INT);
|
||||
GpStatus WINGDIPAPI GdipClearPathMarkers(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipClonePath(GpPath*,GpPath**);
|
||||
GpStatus WINGDIPAPI GdipClosePathFigure(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipClosePathFigures(GpPath*);
|
||||
|
@ -290,6 +280,12 @@ GpStatus WINGDIPAPI GdipCreatePath2(GDIPCONST GpPointF*,GDIPCONST BYTE*,INT,
|
|||
GpStatus WINGDIPAPI GdipCreatePath2I(GDIPCONST GpPoint*,GDIPCONST BYTE*,INT,GpFillMode,GpPath**);
|
||||
GpStatus WINGDIPAPI GdipDeletePath(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipFlattenPath(GpPath*,GpMatrix*,REAL);
|
||||
GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPoint(GpPath*,REAL,REAL,GpPen*,
|
||||
GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPointI(GpPath*,INT,INT,GpPen*,
|
||||
GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePathPoint(GpPath*,REAL,REAL,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePathPointI(GpPath*,INT,INT,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetPathData(GpPath*,GpPathData*);
|
||||
GpStatus WINGDIPAPI GdipGetPathFillMode(GpPath*,GpFillMode*);
|
||||
GpStatus WINGDIPAPI GdipGetPathLastPoint(GpPath*,GpPointF*);
|
||||
|
@ -299,111 +295,36 @@ GpStatus WINGDIPAPI GdipGetPathTypes(GpPath*,BYTE*,INT);
|
|||
GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath*,GpRectF*,GDIPCONST GpMatrix*,GDIPCONST GpPen*);
|
||||
GpStatus WINGDIPAPI GdipGetPathWorldBoundsI(GpPath*,GpRect*,GDIPCONST GpMatrix*,GDIPCONST GpPen*);
|
||||
GpStatus WINGDIPAPI GdipGetPointCount(GpPath*,INT*);
|
||||
GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPoint(GpPath*,REAL,REAL,GpPen*,
|
||||
GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPointI(GpPath*,INT,INT,GpPen*,
|
||||
GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePathPoint(GpPath*,REAL,REAL,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePathPointI(GpPath*,INT,INT,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipResetPath(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipReversePath(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipSetPathFillMode(GpPath*,GpFillMode);
|
||||
GpStatus WINGDIPAPI GdipSetPathMarker(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipStartPathFigure(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipTransformPath(GpPath*,GpMatrix*);
|
||||
|
||||
GpStatus WINGDIPAPI GdipCloneMatrix(GpMatrix*,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix2(REAL,REAL,REAL,REAL,REAL,REAL,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *,GDIPCONST GpPointF*,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix3I(GDIPCONST GpRect*,GDIPCONST GpPoint*,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipInvertMatrix(GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipShearMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipIsMatrixEqual(GDIPCONST GpMatrix*, GDIPCONST GpMatrix*, BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix*, BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsMatrixInvertible(GDIPCONST GpMatrix*, BOOL*);
|
||||
|
||||
GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipGetMatrixElements(GDIPCONST GpMatrix*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix*,GpMatrix*,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipMultiplyWorldTransform(GpGraphics*,GDIPCONST GpMatrix*,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix*,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipSetMatrixElements(GpMatrix*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipTransformMatrixPointsI(GpMatrix*,GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipVectorTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipVectorTransformMatrixPointsI(GpMatrix*,GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
|
||||
|
||||
GpStatus WINGDIPAPI GdipCreatePathIter(GpPathIterator**,GpPath*);
|
||||
GpStatus WINGDIPAPI GdipDeletePathIter(GpPathIterator*);
|
||||
GpStatus WINGDIPAPI GdipPathIterCopyData(GpPathIterator*,INT*,GpPointF*,BYTE*,
|
||||
INT,INT);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextMarker(GpPathIterator*,INT*,INT*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextMarkerPath(GpPathIterator*,INT*,GpPath*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextPathType(GpPathIterator*,INT*,BYTE*,INT*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextSubpath(GpPathIterator*,INT*,INT*,INT*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextSubpathPath(GpPathIterator*,INT*,GpPath*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterRewind(GpPathIterator*);
|
||||
GpStatus WINGDIPAPI GdipPathIterGetCount(GpPathIterator*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterGetSubpathCount(GpPathIterator*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterEnumerate(GpPathIterator*,INT*,GpPointF*,BYTE*,INT);
|
||||
GpStatus WINGDIPAPI GdipPathIterHasCurve(GpPathIterator*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterIsValid(GpPathIterator*,BOOL*);
|
||||
|
||||
GpStatus WINGDIPAPI GdipCloneCustomLineCap(GpCustomLineCap*,GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipCreateCustomLineCap(GpPath*,GpPath*,GpLineCap,REAL,
|
||||
GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap*);
|
||||
GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeCaps(GpCustomLineCap*,GpLineCap,
|
||||
GpLineCap);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapBaseCap(GpCustomLineCap*,GpLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapBaseInset(GpCustomLineCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapStrokeJoin(GpCustomLineCap*,GpLineJoin*);
|
||||
GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeJoin(GpCustomLineCap*,GpLineJoin);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapWidthScale(GpCustomLineCap*,REAL*);
|
||||
|
||||
GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap*,INT,INT,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipBitmapSetPixel(GpBitmap*,INT,INT,ARGB);
|
||||
GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap*,GDIPCONST GpRect*,UINT,
|
||||
PixelFormat,BitmapData*);
|
||||
GpStatus WINGDIPAPI GdipBitmapUnlockBits(GpBitmap*,BitmapData*);
|
||||
GpStatus WINGDIPAPI GdipConvertToEmfPlus(const GpGraphics*,GpMetafile*,INT*,
|
||||
EmfType,const WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipConvertToEmfPlusToFile(const GpGraphics*,GpMetafile*,INT*,const WCHAR*,EmfType,const WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipConvertToEmfPlusToStream(const GpGraphics*,GpMetafile*,INT*,IStream*,EmfType,const WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromFileICM(GDIPCONST WCHAR*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromGdiDib(GDIPCONST BITMAPINFO*,VOID*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromGraphics(INT,INT,GpGraphics*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromResource(HINSTANCE,GDIPCONST WCHAR*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT,INT,INT,PixelFormat,BYTE*,
|
||||
GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream*,GpBitmap**);
|
||||
/* Image */
|
||||
GpStatus WINGDIPAPI GdipCloneImage(GpImage*, GpImage**);
|
||||
GpStatus WINGDIPAPI GdipCloneImageAttributes(GDIPCONST GpImageAttributes*,GpImageAttributes**);
|
||||
GpStatus WINGDIPAPI GdipDisposeImage(GpImage*);
|
||||
GpStatus WINGDIPAPI GdipFindFirstImageItem(GpImage*,ImageItemData*);
|
||||
GpStatus WINGDIPAPI GdipFindNextImageItem(GpImage*,ImageItemData*);
|
||||
GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT *numEncoders, UINT *size);
|
||||
GpStatus WINGDIPAPI GdipGetImageEncoders(UINT numEncoders, UINT size, ImageCodecInfo *encoders);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromHBITMAP(HBITMAP, HPALETTE, GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipGetImageItemData(GpImage*,ImageItemData*);
|
||||
GpStatus WINGDIPAPI GdipGetAllPropertyItems(GpImage*,UINT,UINT,PropertyItem*);
|
||||
GpStatus WINGDIPAPI GdipGetImageBounds(GpImage*,GpRectF*,GpUnit*);
|
||||
GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage*,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipGetImageDimension(GpImage*,REAL*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetImageFlags(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetImageHeight(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetImageHorizontalResolution(GpImage*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetImageItemData(GpImage*,ImageItemData*);
|
||||
GpStatus WINGDIPAPI GdipGetImagePixelFormat(GpImage*,PixelFormat*);
|
||||
GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage*,GUID*);
|
||||
GpStatus WINGDIPAPI GdipGetImageType(GpImage*,ImageType*);
|
||||
GpStatus WINGDIPAPI GdipGetImageVerticalResolution(GpImage*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetImageWidth(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetImageFlags(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromEmf(HENHMETAFILE,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromFile(GDIPCONST WCHAR*,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile*,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromStream(IStream*,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromWmf(HMETAFILE,GDIPCONST WmfPlaceableFileHeader*,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetPropertyCount(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetPropertyIdList(GpImage*,UINT,PROPID*);
|
||||
GpStatus WINGDIPAPI GdipGetPropertyItem(GpImage*,PROPID,UINT,PropertyItem*);
|
||||
GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage*,PROPID,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetPropertySize(GpImage*,UINT*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage*,GDIPCONST GUID*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipImageGetFrameDimensionsCount(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage*,GUID*,UINT);
|
||||
|
@ -417,9 +338,9 @@ GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage*,GDIPCONST WCHAR*,GDIPCONST CLSI
|
|||
GpStatus WINGDIPAPI GdipSaveImageToStream(GpImage*,IStream*,
|
||||
GDIPCONST CLSID*,GDIPCONST EncoderParameters*);
|
||||
GpStatus WINGDIPAPI GdipSetImagePalette(GpImage*,GDIPCONST ColorPalette*);
|
||||
GpStatus WINGDIPAPI GdipSetPropertyItem(GpImage*,GDIPCONST PropertyItem*);
|
||||
|
||||
GpStatus WINGDIPAPI GdipCloneImage(GpImage*, GpImage**);
|
||||
GpStatus WINGDIPAPI GdipCloneImageAttributes(GDIPCONST GpImageAttributes*,GpImageAttributes**);
|
||||
/* ImageAttributes */
|
||||
GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes**);
|
||||
GpStatus WINGDIPAPI GdipDisposeImageAttributes(GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesColorKeys(GpImageAttributes*,
|
||||
|
@ -430,72 +351,159 @@ GpStatus WINGDIPAPI GdipSetImageAttributesColorMatrix(GpImageAttributes*,
|
|||
GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes*,WrapMode,
|
||||
ARGB,BOOL);
|
||||
|
||||
GpStatus WINGDIPAPI GdipCreateFont(GDIPCONST GpFontFamily*, REAL, INT, Unit,
|
||||
GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCreateFontFromDC(HDC,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCreateFontFromLogfontA(HDC,GDIPCONST LOGFONTA*,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC,GDIPCONST LOGFONTW*,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipDeleteFont(GpFont*);
|
||||
GpStatus WINGDIPAPI GdipGetLogFontW(GpFont*,GpGraphics*,LOGFONTW*);
|
||||
GpStatus WINGDIPAPI GdipCloneFont(GpFont*,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipGetFamily(GpFont*, GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetFontUnit(GpFont*, Unit*);
|
||||
GpStatus WINGDIPAPI GdipGetFontSize(GpFont*, REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetFontStyle(GpFont*, INT*);
|
||||
GpStatus WINGDIPAPI GdipGetFontHeight(GDIPCONST GpFont*, GDIPCONST GpGraphics*,
|
||||
REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetFontHeightGivenDPI(GDIPCONST GpFont*, REAL, REAL*);
|
||||
/* LinearGradientBrush */
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF*,GDIPCONST GpPointF*,
|
||||
ARGB,ARGB,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushI(GDIPCONST GpPoint*,GDIPCONST GpPoint*,
|
||||
ARGB,ARGB,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF*,ARGB,ARGB,
|
||||
LinearGradientMode,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectI(GDIPCONST GpRect*,ARGB,ARGB,
|
||||
LinearGradientMode,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngle(GDIPCONST GpRectF*,
|
||||
ARGB,ARGB,REAL,BOOL,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngleI(GDIPCONST GpRect*,
|
||||
ARGB,ARGB,REAL,BOOL,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipGetLineColors(GpLineGradient*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipGetLineGammaCorrection(GpLineGradient*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetLineRect(GpLineGradient*,GpRectF*);
|
||||
GpStatus WINGDIPAPI GdipGetLineRectI(GpLineGradient*,GpRect*);
|
||||
GpStatus WINGDIPAPI GdipGetLineWrapMode(GpLineGradient*,GpWrapMode*);
|
||||
GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient*,GDIPCONST REAL*,
|
||||
GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetLineColors(GpLineGradient*,ARGB,ARGB);
|
||||
GpStatus WINGDIPAPI GdipSetLineGammaCorrection(GpLineGradient*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipSetLineSigmaBlend(GpLineGradient*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetLineWrapMode(GpLineGradient*,GpWrapMode);
|
||||
|
||||
GpStatus WINGDIPAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR*,
|
||||
GpFontCollection*, GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipCloneFontFamily(GpFontFamily*, GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipDeleteFontFamily(GpFontFamily*);
|
||||
GpStatus WINGDIPAPI GdipGetFamilyName(GDIPCONST GpFontFamily*, WCHAR*, LANGID);
|
||||
GpStatus WINGDIPAPI GdipGetCellAscent(GDIPCONST GpFontFamily*, INT, UINT16*);
|
||||
GpStatus WINGDIPAPI GdipGetCellDescent(GDIPCONST GpFontFamily*, INT, UINT16*);
|
||||
GpStatus WINGDIPAPI GdipGetEmHeight(GDIPCONST GpFontFamily*, INT, UINT16*);
|
||||
GpStatus WINGDIPAPI GdipGetLineSpacing(GDIPCONST GpFontFamily*, INT, UINT16*);
|
||||
GpStatus WINGDIPAPI GdipIsStyleAvailable(GDIPCONST GpFontFamily *, INT, BOOL*);
|
||||
/* Matrix */
|
||||
GpStatus WINGDIPAPI GdipCloneMatrix(GpMatrix*,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix2(REAL,REAL,REAL,REAL,REAL,REAL,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *,GDIPCONST GpPointF*,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix3I(GDIPCONST GpRect*,GDIPCONST GpPoint*,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipGetMatrixElements(GDIPCONST GpMatrix*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipInvertMatrix(GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipIsMatrixEqual(GDIPCONST GpMatrix*, GDIPCONST GpMatrix*, BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix*, BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsMatrixInvertible(GDIPCONST GpMatrix*, BOOL*);
|
||||
GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix*,GDIPCONST GpMatrix*,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix*,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipShearMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipSetMatrixElements(GpMatrix*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipTransformMatrixPointsI(GpMatrix*,GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipVectorTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipVectorTransformMatrixPointsI(GpMatrix*,GpPoint*,INT);
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetGenericFontFamilySerif(GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetGenericFontFamilyMonospace(GpFontFamily**);
|
||||
/* Metafile */
|
||||
GpStatus WINGDIPAPI GdipConvertToEmfPlus(const GpGraphics*,GpMetafile*,INT*,
|
||||
EmfType,const WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipConvertToEmfPlusToFile(const GpGraphics*,GpMetafile*,INT*,const WCHAR*,EmfType,const WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipConvertToEmfPlusToStream(const GpGraphics*,GpMetafile*,INT*,IStream*,EmfType,const WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromEmf(HENHMETAFILE,BOOL,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE,BOOL,
|
||||
GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromWmfFile(GDIPCONST WCHAR*, GDIPCONST WmfPlaceableFileHeader*,
|
||||
GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipSetMetafileDownLevelRasterizationLimit(GpMetafile*,UINT);
|
||||
|
||||
GpStatus WINGDIPAPI GdipNewPrivateFontCollection(GpFontCollection**);
|
||||
GpStatus WINGDIPAPI GdipDeletePrivateFontCollection(GpFontCollection**);
|
||||
GpStatus WINGDIPAPI GdipPrivateAddFontFile(GpFontCollection*, GDIPCONST WCHAR*);
|
||||
GpStatus WINGDIPAPI GdipGetFontCollectionFamilyCount(GpFontCollection*, INT*);
|
||||
GpStatus WINGDIPAPI GdipGetFontCollectionFamilyList(GpFontCollection*, INT,
|
||||
GpFontFamily*[], INT*);
|
||||
/* MetafileHeader */
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromEmf(HENHMETAFILE,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromFile(GDIPCONST WCHAR*,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile*,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromStream(IStream*,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromWmf(HMETAFILE,GDIPCONST WmfPlaceableFileHeader*,MetafileHeader*);
|
||||
|
||||
GpStatus WINGDIPAPI GdipCreateStringFormat(INT,LANGID,GpStringFormat**);
|
||||
GpStatus WINGDIPAPI GdipDeleteStringFormat(GpStringFormat*);
|
||||
GpStatus WINGDIPAPI GdipStringFormatGetGenericDefault(GpStringFormat **);
|
||||
GpStatus WINGDIPAPI GdipStringFormatGetGenericTypographic(GpStringFormat **);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatAlign(GpStringFormat*,StringAlignment*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatDigitSubstitution(GDIPCONST GpStringFormat*,LANGID*,
|
||||
StringDigitSubstitute*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatFlags(GDIPCONST GpStringFormat*, INT*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatHotkeyPrefix(GDIPCONST GpStringFormat*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatLineAlign(GpStringFormat*,StringAlignment*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatMeasurableCharacterRangeCount(
|
||||
GDIPCONST GpStringFormat*, INT*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatTabStopCount(GDIPCONST GpStringFormat*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatTabStops(GDIPCONST GpStringFormat*,INT,REAL*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatTrimming(GpStringFormat*,StringTrimming*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatAlign(GpStringFormat*,StringAlignment);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatDigitSubstitution(GpStringFormat*,LANGID,StringDigitSubstitute);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatHotkeyPrefix(GpStringFormat*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatLineAlign(GpStringFormat*,StringAlignment);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatMeasurableCharacterRanges(
|
||||
GpStringFormat*, INT, GDIPCONST CharacterRange*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatTabStops(GpStringFormat*,REAL,INT,GDIPCONST REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatTrimming(GpStringFormat*,StringTrimming);
|
||||
GpStatus WINGDIPAPI GdipCloneStringFormat(GDIPCONST GpStringFormat*,GpStringFormat**);
|
||||
/* PathGradientBrush */
|
||||
GpStatus WINGDIPAPI GdipCreatePathGradient(GDIPCONST GpPointF*,INT,GpWrapMode,GpPathGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreatePathGradientI(GDIPCONST GpPoint*,INT,GpWrapMode,GpPathGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath*,
|
||||
GpPathGradient**);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientBlend(GpPathGradient*,REAL*,REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientBlendCount(GpPathGradient*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientCenterColor(GpPathGradient*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientCenterPoint(GpPathGradient*,GpPointF*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientCenterPointI(GpPathGradient*,GpPoint*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientFocusScales(GpPathGradient*,REAL*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientGammaCorrection(GpPathGradient*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientPointCount(GpPathGradient*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientRect(GpPathGradient*,GpRectF*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientRectI(GpPathGradient*,GpRect*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorsWithCount(GpPathGradient*,
|
||||
ARGB*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientWrapMode(GpPathGradient*,GpWrapMode*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientBlend(GpPathGradient*,GDIPCONST REAL*,GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientCenterColor(GpPathGradient*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientCenterPoint(GpPathGradient*,GpPointF*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientCenterPointI(GpPathGradient*,GpPoint*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientFocusScales(GpPathGradient*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientGammaCorrection(GpPathGradient*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientSigmaBlend(GpPathGradient*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientSurroundColorsWithCount(GpPathGradient*,
|
||||
ARGB*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientWrapMode(GpPathGradient*,GpWrapMode);
|
||||
|
||||
GpStatus WINGDIPAPI GdipGetDpiX(GpGraphics*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetDpiY(GpGraphics*,REAL*);
|
||||
/* PathIterator */
|
||||
GpStatus WINGDIPAPI GdipCreatePathIter(GpPathIterator**,GpPath*);
|
||||
GpStatus WINGDIPAPI GdipDeletePathIter(GpPathIterator*);
|
||||
GpStatus WINGDIPAPI GdipPathIterCopyData(GpPathIterator*,INT*,GpPointF*,BYTE*,
|
||||
INT,INT);
|
||||
GpStatus WINGDIPAPI GdipPathIterGetCount(GpPathIterator*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterGetSubpathCount(GpPathIterator*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterEnumerate(GpPathIterator*,INT*,GpPointF*,BYTE*,INT);
|
||||
GpStatus WINGDIPAPI GdipPathIterHasCurve(GpPathIterator*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterIsValid(GpPathIterator*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextMarker(GpPathIterator*,INT*,INT*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextMarkerPath(GpPathIterator*,INT*,GpPath*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextPathType(GpPathIterator*,INT*,BYTE*,INT*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextSubpath(GpPathIterator*,INT*,INT*,INT*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextSubpathPath(GpPathIterator*,INT*,GpPath*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterRewind(GpPathIterator*);
|
||||
|
||||
/* Pen */
|
||||
GpStatus WINGDIPAPI GdipClonePen(GpPen*,GpPen**);
|
||||
GpStatus WINGDIPAPI GdipCreatePen1(ARGB,REAL,GpUnit,GpPen**);
|
||||
GpStatus WINGDIPAPI GdipCreatePen2(GpBrush*,REAL,GpUnit,GpPen**);
|
||||
GpStatus WINGDIPAPI GdipDeletePen(GpPen*);
|
||||
GpStatus WINGDIPAPI GdipGetPenBrushFill(GpPen*,GpBrush**);
|
||||
GpStatus WINGDIPAPI GdipGetPenColor(GpPen*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipGetPenCustomStartCap(GpPen*,GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipGetPenCustomEndCap(GpPen*,GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashArray(GpPen*,REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashCount(GpPen*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashOffset(GpPen*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashStyle(GpPen*,GpDashStyle*);
|
||||
GpStatus WINGDIPAPI GdipGetPenMode(GpPen*,GpPenAlignment*);
|
||||
GpStatus WINGDIPAPI GdipSetPenBrushFill(GpPen*,GpBrush*);
|
||||
GpStatus WINGDIPAPI GdipSetPenColor(GpPen*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipSetPenCompoundArray(GpPen*,GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetPenCustomEndCap(GpPen*,GpCustomLineCap*);
|
||||
GpStatus WINGDIPAPI GdipSetPenCustomStartCap(GpPen*,GpCustomLineCap*);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashArray(GpPen*,GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashCap197819(GpPen*,GpDashCap);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashOffset(GpPen*,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashStyle(GpPen*,GpDashStyle);
|
||||
GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen*,GpLineCap);
|
||||
GpStatus WINGDIPAPI GdipGetPenFillType(GpPen*,GpPenType*);
|
||||
GpStatus WINGDIPAPI GdipSetPenLineCap197819(GpPen*,GpLineCap,GpLineCap,GpDashCap);
|
||||
GpStatus WINGDIPAPI GdipSetPenLineJoin(GpPen*,GpLineJoin);
|
||||
GpStatus WINGDIPAPI GdipSetPenMode(GpPen*,GpPenAlignment);
|
||||
GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen*,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen*,GpLineCap);
|
||||
GpStatus WINGDIPAPI GdipSetPenWidth(GpPen*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashCap197819(GpPen*,GpDashCap*);
|
||||
GpStatus WINGDIPAPI GdipGetPenEndCap(GpPen*,GpLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetPenLineJoin(GpPen*,GpLineJoin*);
|
||||
GpStatus WINGDIPAPI GdipGetPenMiterLimit(GpPen*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetPenStartCap(GpPen*,GpLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetPenUnit(GpPen*,GpUnit*);
|
||||
GpStatus WINGDIPAPI GdipGetPenWidth(GpPen*,REAL*);
|
||||
|
||||
/* Region */
|
||||
GpStatus WINGDIPAPI GdipCloneRegion(GpRegion *, GpRegion **);
|
||||
GpStatus WINGDIPAPI GdipCombineRegionPath(GpRegion *, GpPath *, CombineMode);
|
||||
GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion *, GDIPCONST GpRectF *, CombineMode);
|
||||
|
@ -522,20 +530,56 @@ GpStatus WINGDIPAPI GdipTransformRegion(GpRegion *, GpMatrix *);
|
|||
GpStatus WINGDIPAPI GdipTranslateRegion(GpRegion *, REAL, REAL);
|
||||
GpStatus WINGDIPAPI GdipTranslateRegionI(GpRegion *, INT, INT);
|
||||
|
||||
GpStatus WINGDIPAPI GdipFlush(GpGraphics*, GpFlushIntention);
|
||||
GpStatus WINGDIPAPI GdipSetMetafileDownLevelRasterizationLimit(GpMetafile*,UINT);
|
||||
GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics*,INT,INT,INT,INT,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipFillRegion(GpGraphics*,GpBrush*,GpRegion*);
|
||||
/* SolidBrush */
|
||||
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**);
|
||||
GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill*,ARGB);
|
||||
|
||||
GpStatus WINGDIPAPI GdipCreateAdjustableArrowCap(REAL,REAL,BOOL,GpAdjustableArrowCap**);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapFillState(GpAdjustableArrowCap*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapHeight(GpAdjustableArrowCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapFillState(GpAdjustableArrowCap*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapHeight(GpAdjustableArrowCap*,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL);
|
||||
/* StringFormat */
|
||||
GpStatus WINGDIPAPI GdipCloneStringFormat(GDIPCONST GpStringFormat*,GpStringFormat**);
|
||||
GpStatus WINGDIPAPI GdipCreateStringFormat(INT,LANGID,GpStringFormat**);
|
||||
GpStatus WINGDIPAPI GdipDeleteStringFormat(GpStringFormat*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatAlign(GpStringFormat*,StringAlignment*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatDigitSubstitution(GDIPCONST GpStringFormat*,LANGID*,
|
||||
StringDigitSubstitute*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatFlags(GDIPCONST GpStringFormat*, INT*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatHotkeyPrefix(GDIPCONST GpStringFormat*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatLineAlign(GpStringFormat*,StringAlignment*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatMeasurableCharacterRangeCount(
|
||||
GDIPCONST GpStringFormat*, INT*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatTabStopCount(GDIPCONST GpStringFormat*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatTabStops(GDIPCONST GpStringFormat*,INT,REAL*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatTrimming(GpStringFormat*,StringTrimming*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatAlign(GpStringFormat*,StringAlignment);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatDigitSubstitution(GpStringFormat*,LANGID,StringDigitSubstitute);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatHotkeyPrefix(GpStringFormat*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatLineAlign(GpStringFormat*,StringAlignment);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatMeasurableCharacterRanges(
|
||||
GpStringFormat*, INT, GDIPCONST CharacterRange*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatTabStops(GpStringFormat*,REAL,INT,GDIPCONST REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatTrimming(GpStringFormat*,StringTrimming);
|
||||
GpStatus WINGDIPAPI GdipStringFormatGetGenericDefault(GpStringFormat **);
|
||||
GpStatus WINGDIPAPI GdipStringFormatGetGenericTypographic(GpStringFormat **);
|
||||
|
||||
/* Texture */
|
||||
GpStatus WINGDIPAPI GdipCreateTexture(GpImage*,GpWrapMode,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTexture2(GpImage*,GpWrapMode,REAL,REAL,REAL,REAL,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTexture2I(GpImage*,GpWrapMode,INT,INT,INT,INT,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage*,GDIPCONST GpImageAttributes*,
|
||||
REAL,REAL,REAL,REAL,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTextureIAI(GpImage*,GDIPCONST GpImageAttributes*,
|
||||
INT,INT,INT,INT,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipGetTextureTransform(GpTexture*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipGetTextureWrapMode(GpTexture*, GpWrapMode*);
|
||||
GpStatus WINGDIPAPI GdipResetTextureTransform(GpTexture*);
|
||||
GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture *,GDIPCONST GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipSetTextureWrapMode(GpTexture*, GpWrapMode);
|
||||
|
||||
/* Without wrapper methods */
|
||||
GpStatus WINGDIPAPI GdipCreateStreamOnFile(GDIPCONST WCHAR*,UINT,IStream**);
|
||||
GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT *numEncoders, UINT *size);
|
||||
GpStatus WINGDIPAPI GdipGetImageEncoders(UINT numEncoders, UINT size, ImageCodecInfo *encoders);
|
||||
GpStatus WINGDIPAPI GdipTestControl(GpTestControlEnum,void*);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ class GpAdjustableArrowCap : public GpCustomLineCap {};
|
|||
class GpImage {};
|
||||
class GpMetafile : public GpImage {};
|
||||
class GpImageAttributes {};
|
||||
class GpCachedBitmap {};
|
||||
class GpBitmap : public GpImage {};
|
||||
class GpPathGradient : public GpBrush {};
|
||||
class GpLineGradient : public GpBrush {};
|
||||
|
@ -57,6 +58,7 @@ typedef struct GpAdjustableArrowCap GpAdjustableArrowCap;
|
|||
typedef struct GpImage GpImage;
|
||||
typedef struct GpMetafile GpMetafile;
|
||||
typedef struct GpImageAttributes GpImageAttributes;
|
||||
typedef struct GpCachedBitmap GpCachedBitmap;
|
||||
typedef struct GpBitmap GpBitmap;
|
||||
typedef struct GpPathGradient GpPathGradient;
|
||||
typedef struct GpLineGradient GpLineGradient;
|
||||
|
@ -88,5 +90,6 @@ typedef WrapMode GpWrapMode;
|
|||
typedef Color GpColor;
|
||||
typedef FlushIntention GpFlushIntention;
|
||||
typedef CoordinateSpace GpCoordinateSpace;
|
||||
typedef PenType GpPenType;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,18 @@
|
|||
#ifndef _GDIPLUSIMAGING_H
|
||||
#define _GDIPLUSIMAGING_H
|
||||
|
||||
DEFINE_GUID(ImageFormatUndefined, 0xb96b3ca9, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
DEFINE_GUID(ImageFormatMemoryBMP, 0xb96b3caa, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
DEFINE_GUID(ImageFormatBMP, 0xb96b3cab, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
DEFINE_GUID(ImageFormatEMF, 0xb96b3cac, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
DEFINE_GUID(ImageFormatWMF, 0xb96b3cad, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
DEFINE_GUID(ImageFormatJPEG, 0xb96b3cae, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
DEFINE_GUID(ImageFormatPNG, 0xb96b3caf, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
DEFINE_GUID(ImageFormatGIF, 0xb96b3cb0, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
DEFINE_GUID(ImageFormatTIFF, 0xb96b3cb1, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
DEFINE_GUID(ImageFormatEXIF, 0xb96b3cb2, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
DEFINE_GUID(ImageFormatIcon, 0xb96b3cb5, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
|
||||
|
||||
enum ImageLockMode
|
||||
{
|
||||
ImageLockModeRead = 1,
|
||||
|
@ -84,6 +96,15 @@ public:
|
|||
UINT Cookie;
|
||||
};
|
||||
|
||||
class PropertyItem
|
||||
{
|
||||
public:
|
||||
PROPID id;
|
||||
ULONG length;
|
||||
WORD type;
|
||||
VOID* value;
|
||||
};
|
||||
|
||||
#else /* end of c++ typedefs */
|
||||
|
||||
typedef enum ImageLockMode ImageLockMode;
|
||||
|
@ -140,6 +161,258 @@ typedef struct ImageItemData
|
|||
UINT Cookie;
|
||||
} ImageItemData;
|
||||
|
||||
typedef struct PropertyItem
|
||||
{
|
||||
PROPID id;
|
||||
ULONG length;
|
||||
WORD type;
|
||||
VOID* value;
|
||||
} PropertyItem;
|
||||
|
||||
#endif /* end of c typedefs */
|
||||
|
||||
/* property types */
|
||||
#define PropertyTagTypeByte 1
|
||||
#define PropertyTagTypeASCII 2
|
||||
#define PropertyTagTypeShort 3
|
||||
#define PropertyTagTypeLong 4
|
||||
#define PropertyTagTypeRational 5
|
||||
#define PropertyTagTypeUndefined 7
|
||||
#define PropertyTagTypeSLONG 9
|
||||
#define PropertyTagTypeSRational 10
|
||||
|
||||
/* property IDs */
|
||||
#define PropertyTagExifIFD 0x8769
|
||||
#define PropertyTagGpsIFD 0x8825
|
||||
|
||||
#define PropertyTagNewSubfileType 0x00FE
|
||||
#define PropertyTagSubfileType 0x00FF
|
||||
#define PropertyTagImageWidth 0x0100
|
||||
#define PropertyTagImageHeight 0x0101
|
||||
#define PropertyTagBitsPerSample 0x0102
|
||||
#define PropertyTagCompression 0x0103
|
||||
#define PropertyTagPhotometricInterp 0x0106
|
||||
#define PropertyTagThreshHolding 0x0107
|
||||
#define PropertyTagCellWidth 0x0108
|
||||
#define PropertyTagCellHeight 0x0109
|
||||
#define PropertyTagFillOrder 0x010A
|
||||
#define PropertyTagDocumentName 0x010D
|
||||
#define PropertyTagImageDescription 0x010E
|
||||
#define PropertyTagEquipMake 0x010F
|
||||
#define PropertyTagEquipModel 0x0110
|
||||
#define PropertyTagStripOffsets 0x0111
|
||||
#define PropertyTagOrientation 0x0112
|
||||
#define PropertyTagSamplesPerPixel 0x0115
|
||||
#define PropertyTagRowsPerStrip 0x0116
|
||||
#define PropertyTagStripBytesCount 0x0117
|
||||
#define PropertyTagMinSampleValue 0x0118
|
||||
#define PropertyTagMaxSampleValue 0x0119
|
||||
#define PropertyTagXResolution 0x011A
|
||||
#define PropertyTagYResolution 0x011B
|
||||
#define PropertyTagPlanarConfig 0x011C
|
||||
#define PropertyTagPageName 0x011D
|
||||
#define PropertyTagXPosition 0x011E
|
||||
#define PropertyTagYPosition 0x011F
|
||||
#define PropertyTagFreeOffset 0x0120
|
||||
#define PropertyTagFreeByteCounts 0x0121
|
||||
#define PropertyTagGrayResponseUnit 0x0122
|
||||
#define PropertyTagGrayResponseCurve 0x0123
|
||||
#define PropertyTagT4Option 0x0124
|
||||
#define PropertyTagT6Option 0x0125
|
||||
#define PropertyTagResolutionUnit 0x0128
|
||||
#define PropertyTagPageNumber 0x0129
|
||||
#define PropertyTagTransferFuncition 0x012D
|
||||
#define PropertyTagSoftwareUsed 0x0131
|
||||
#define PropertyTagDateTime 0x0132
|
||||
#define PropertyTagArtist 0x013B
|
||||
#define PropertyTagHostComputer 0x013C
|
||||
#define PropertyTagPredictor 0x013D
|
||||
#define PropertyTagWhitePoint 0x013E
|
||||
#define PropertyTagPrimaryChromaticities 0x013F
|
||||
#define PropertyTagColorMap 0x0140
|
||||
#define PropertyTagHalftoneHints 0x0141
|
||||
#define PropertyTagTileWidth 0x0142
|
||||
#define PropertyTagTileLength 0x0143
|
||||
#define PropertyTagTileOffset 0x0144
|
||||
#define PropertyTagTileByteCounts 0x0145
|
||||
#define PropertyTagInkSet 0x014C
|
||||
#define PropertyTagInkNames 0x014D
|
||||
#define PropertyTagNumberOfInks 0x014E
|
||||
#define PropertyTagDotRange 0x0150
|
||||
#define PropertyTagTargetPrinter 0x0151
|
||||
#define PropertyTagExtraSamples 0x0152
|
||||
#define PropertyTagSampleFormat 0x0153
|
||||
#define PropertyTagSMinSampleValue 0x0154
|
||||
#define PropertyTagSMaxSampleValue 0x0155
|
||||
#define PropertyTagTransferRange 0x0156
|
||||
|
||||
#define PropertyTagJPEGProc 0x0200
|
||||
#define PropertyTagJPEGInterFormat 0x0201
|
||||
#define PropertyTagJPEGInterLength 0x0202
|
||||
#define PropertyTagJPEGRestartInterval 0x0203
|
||||
#define PropertyTagJPEGLosslessPredictors 0x0205
|
||||
#define PropertyTagJPEGPointTransforms 0x0206
|
||||
#define PropertyTagJPEGQTables 0x0207
|
||||
#define PropertyTagJPEGDCTables 0x0208
|
||||
#define PropertyTagJPEGACTables 0x0209
|
||||
|
||||
#define PropertyTagYCbCrCoefficients 0x0211
|
||||
#define PropertyTagYCbCrSubsampling 0x0212
|
||||
#define PropertyTagYCbCrPositioning 0x0213
|
||||
#define PropertyTagREFBlackWhite 0x0214
|
||||
|
||||
#define PropertyTagICCProfile 0x8773
|
||||
|
||||
#define PropertyTagGamma 0x0301
|
||||
#define PropertyTagICCProfileDescriptor 0x0302
|
||||
#define PropertyTagSRGBRenderingIntent 0x0303
|
||||
|
||||
#define PropertyTagImageTitle 0x0320
|
||||
#define PropertyTagCopyright 0x8298
|
||||
|
||||
#define PropertyTagResolutionXUnit 0x5001
|
||||
#define PropertyTagResolutionYUnit 0x5002
|
||||
#define PropertyTagResolutionXLengthUnit 0x5003
|
||||
#define PropertyTagResolutionYLengthUnit 0x5004
|
||||
#define PropertyTagPrintFlags 0x5005
|
||||
#define PropertyTagPrintFlagsVersion 0x5006
|
||||
#define PropertyTagPrintFlagsCrop 0x5007
|
||||
#define PropertyTagPrintFlagsBleedWidth 0x5008
|
||||
#define PropertyTagPrintFlagsBleedWidthScale 0x5009
|
||||
#define PropertyTagHalftoneLPI 0x500A
|
||||
#define PropertyTagHalftoneLPIUnit 0x500B
|
||||
#define PropertyTagHalftoneDegree 0x500C
|
||||
#define PropertyTagHalftoneShape 0x500D
|
||||
#define PropertyTagHalftoneMisc 0x500E
|
||||
#define PropertyTagHalftoneScreen 0x500F
|
||||
#define PropertyTagJPEGQuality 0x5010
|
||||
#define PropertyTagGridSize 0x5011
|
||||
#define PropertyTagThumbnailFormat 0x5012
|
||||
#define PropertyTagThumbnailWidth 0x5013
|
||||
#define PropertyTagThumbnailHeight 0x5014
|
||||
#define PropertyTagThumbnailColorDepth 0x5015
|
||||
#define PropertyTagThumbnailPlanes 0x5016
|
||||
#define PropertyTagThumbnailRawBytes 0x5017
|
||||
#define PropertyTagThumbnailSize 0x5018
|
||||
#define PropertyTagThumbnailCompressedSize 0x5019
|
||||
#define PropertyTagColorTransferFunction 0x501A
|
||||
#define PropertyTagThumbnailData 0x501B
|
||||
|
||||
#define PropertyTagThumbnailImageWidth 0x5020
|
||||
#define PropertyTagThumbnailImageHeight 0x5021
|
||||
#define PropertyTagThumbnailBitsPerSample 0x5022
|
||||
#define PropertyTagThumbnailCompression 0x5023
|
||||
#define PropertyTagThumbnailPhotometricInterp 0x5024
|
||||
#define PropertyTagThumbnailImageDescription 0x5025
|
||||
#define PropertyTagThumbnailEquipMake 0x5026
|
||||
#define PropertyTagThumbnailEquipModel 0x5027
|
||||
#define PropertyTagThumbnailStripOffsets 0x5028
|
||||
#define PropertyTagThumbnailOrientation 0x5029
|
||||
#define PropertyTagThumbnailSamplesPerPixel 0x502A
|
||||
#define PropertyTagThumbnailRowsPerStrip 0x502B
|
||||
#define PropertyTagThumbnailStripBytesCount 0x502C
|
||||
#define PropertyTagThumbnailResolutionX 0x502D
|
||||
#define PropertyTagThumbnailResolutionY 0x502E
|
||||
#define PropertyTagThumbnailPlanarConfig 0x502F
|
||||
#define PropertyTagThumbnailResolutionUnit 0x5030
|
||||
#define PropertyTagThumbnailTransferFunction 0x5031
|
||||
#define PropertyTagThumbnailSoftwareUsed 0x5032
|
||||
#define PropertyTagThumbnailDateTime 0x5033
|
||||
#define PropertyTagThumbnailArtist 0x5034
|
||||
#define PropertyTagThumbnailWhitePoint 0x5035
|
||||
#define PropertyTagThumbnailPrimaryChromaticities 0x5036
|
||||
#define PropertyTagThumbnailYCbCrCoefficients 0x5037
|
||||
#define PropertyTagThumbnailYCbCrSubsampling 0x5038
|
||||
#define PropertyTagThumbnailYCbCrPositioning 0x5039
|
||||
#define PropertyTagThumbnailRefBlackWhite 0x503A
|
||||
#define PropertyTagThumbnailCopyRight 0x503B
|
||||
|
||||
#define PropertyTagLuminanceTable 0x5090
|
||||
#define PropertyTagChrominanceTable 0x5091
|
||||
|
||||
#define PropertyTagFrameDelay 0x5100
|
||||
#define PropertyTagLoopCount 0x5101
|
||||
|
||||
#define PropertyTagPixelUnit 0x5110
|
||||
#define PropertyTagPixelPerUnitX 0x5111
|
||||
#define PropertyTagPixelPerUnitY 0x5112
|
||||
#define PropertyTagPaletteHistogram 0x5113
|
||||
|
||||
#define PropertyTagExifExposureTime 0x829A
|
||||
#define PropertyTagExifFNumber 0x829D
|
||||
|
||||
#define PropertyTagExifExposureProg 0x8822
|
||||
#define PropertyTagExifSpectralSense 0x8824
|
||||
#define PropertyTagExifISOSpeed 0x8827
|
||||
#define PropertyTagExifOECF 0x8828
|
||||
|
||||
#define PropertyTagExifVer 0x9000
|
||||
#define PropertyTagExifDTOrig 0x9003
|
||||
#define PropertyTagExifDTDigitized 0x9004
|
||||
|
||||
#define PropertyTagExifCompConfig 0x9101
|
||||
#define PropertyTagExifCompBPP 0x9102
|
||||
|
||||
#define PropertyTagExifShutterSpeed 0x9201
|
||||
#define PropertyTagExifAperture 0x9202
|
||||
#define PropertyTagExifBrightness 0x9203
|
||||
#define PropertyTagExifExposureBias 0x9204
|
||||
#define PropertyTagExifMaxAperture 0x9205
|
||||
#define PropertyTagExifSubjectDist 0x9206
|
||||
#define PropertyTagExifMeteringMode 0x9207
|
||||
#define PropertyTagExifLightSource 0x9208
|
||||
#define PropertyTagExifFlash 0x9209
|
||||
#define PropertyTagExifFocalLength 0x920A
|
||||
#define PropertyTagExifMakerNote 0x927C
|
||||
#define PropertyTagExifUserComment 0x9286
|
||||
#define PropertyTagExifDTSubsec 0x9290
|
||||
#define PropertyTagExifDTOrigSS 0x9291
|
||||
#define PropertyTagExifDTDigSS 0x9292
|
||||
|
||||
#define PropertyTagExifFPXVer 0xA000
|
||||
#define PropertyTagExifColorSpace 0xA001
|
||||
#define PropertyTagExifPixXDim 0xA002
|
||||
#define PropertyTagExifPixYDim 0xA003
|
||||
#define PropertyTagExifRelatedWav 0xA004
|
||||
#define PropertyTagExifInterop 0xA005
|
||||
#define PropertyTagExifFlashEnergy 0xA20B
|
||||
#define PropertyTagExifSpatialFR 0xA20C
|
||||
#define PropertyTagExifFocalXRes 0xA20E
|
||||
#define PropertyTagExifFocalYRes 0xA20F
|
||||
#define PropertyTagExifFocalResUnit 0xA210
|
||||
#define PropertyTagExifSubjectLoc 0xA214
|
||||
#define PropertyTagExifExposureIndex 0xA215
|
||||
#define PropertyTagExifSensingMethod 0xA217
|
||||
#define PropertyTagExifFileSource 0xA300
|
||||
#define PropertyTagExifSceneType 0xA301
|
||||
#define PropertyTagExifCfaPattern 0xA302
|
||||
|
||||
#define PropertyTagGpsVer 0x0000
|
||||
#define PropertyTagGpsLatitudeRef 0x0001
|
||||
#define PropertyTagGpsLatitude 0x0002
|
||||
#define PropertyTagGpsLongitudeRef 0x0003
|
||||
#define PropertyTagGpsLongitude 0x0004
|
||||
#define PropertyTagGpsAltitudeRef 0x0005
|
||||
#define PropertyTagGpsAltitude 0x0006
|
||||
#define PropertyTagGpsGpsTime 0x0007
|
||||
#define PropertyTagGpsGpsSatellites 0x0008
|
||||
#define PropertyTagGpsGpsStatus 0x0009
|
||||
#define PropertyTagGpsGpsMeasureMode 0x000A
|
||||
#define PropertyTagGpsGpsDop 0x000B
|
||||
#define PropertyTagGpsSpeedRef 0x000C
|
||||
#define PropertyTagGpsSpeed 0x000D
|
||||
#define PropertyTagGpsTrackRef 0x000E
|
||||
#define PropertyTagGpsTrack 0x000F
|
||||
#define PropertyTagGpsImgDirRef 0x0010
|
||||
#define PropertyTagGpsImgDir 0x0011
|
||||
#define PropertyTagGpsMapDatum 0x0012
|
||||
#define PropertyTagGpsDestLatRef 0x0013
|
||||
#define PropertyTagGpsDestLat 0x0014
|
||||
#define PropertyTagGpsDestLongRef 0x0015
|
||||
#define PropertyTagGpsDestLong 0x0016
|
||||
#define PropertyTagGpsDestBearRef 0x0017
|
||||
#define PropertyTagGpsDestBear 0x0018
|
||||
#define PropertyTagGpsDestDistRef 0x0019
|
||||
#define PropertyTagGpsDestDist 0x001A
|
||||
|
||||
#endif /* _GDIPLUSIMAGING_H */
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
void* WINGDIPAPI GdipAlloc(SIZE_T);
|
||||
void* WINGDIPAPI GdipAlloc(SIZE_T) __WINE_ALLOC_SIZE(1);
|
||||
void WINGDIPAPI GdipFree(void*);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -84,6 +84,7 @@ HRESULT WINAPI OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
|
|||
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
|
||||
LPVOID* ppvObj);
|
||||
HRESULT WINAPI OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
|
||||
HRESULT WINAPI OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible);
|
||||
HRESULT WINAPI OleQueryLinkFromData(IDataObject* pSrcDataObject);
|
||||
HRESULT WINAPI OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
|
||||
HRESULT WINAPI OleRun(LPUNKNOWN pUnknown);
|
||||
|
@ -111,6 +112,7 @@ HRESULT WINAPI OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid, DWORD render
|
|||
HRESULT WINAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
|
||||
LPSTORAGE pStg, LPVOID* ppvObj);
|
||||
HRESULT WINAPI OleFlushClipboard(void);
|
||||
HRESULT WINAPI GetConvertStg(LPSTORAGE pStg);
|
||||
HRESULT WINAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
|
||||
BOOL WINAPI IsAccelerator(HACCEL hAccel, int cAccelEntries, struct tagMSG* lpMsg, WORD* lpwCmd);
|
||||
HRESULT WINAPI OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc,
|
||||
|
@ -154,6 +156,7 @@ typedef struct _OLESTREAM {
|
|||
HRESULT WINAPI OleConvertOLESTREAMToIStorage( LPOLESTREAM lpolestream, LPSTORAGE pstg, const DVTARGETDEVICE* ptd);
|
||||
HRESULT WINAPI OleConvertIStorageToOLESTREAM( LPSTORAGE pstg, LPOLESTREAM lpolestream);
|
||||
|
||||
HRESULT WINAPI OleDoAutoConvert( LPSTORAGE pStg, LPCLSID pClsidNew );
|
||||
HRESULT WINAPI OleGetAutoConvert( REFCLSID clsidOld, LPCLSID pClsidNew );
|
||||
HRESULT WINAPI OleSetAutoConvert( REFCLSID clsidOld, REFCLSID clsidNew );
|
||||
|
||||
|
|
Loading…
Reference in a new issue