1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-24 05:22:04 -08:00
emacs/src/w32gdiplus.h
Cecilio Pardo 4e8bf2977e Support :transform-smoothing on images (MS-Windows) (bug#57166)
* src/dispextern.h (struct image): Add field 'smoothing' for
NTGUI.
* src/image.c (image_set_transform): Assign the 'smoothing'
field of the image struct.
* src/w32gdiplus.h: Add references to more GDI+ functions.
* src/w32image.c (gdiplus_init): Add references to more GDI+
functions.
* src/w32term.c (w32_draw_image_foreground): If the image is
marked for smoothing and GDI+ is available, draw it with GDI+
bilinear interpolation.
* etc/NEWS: New entry for this change.
2024-11-05 14:37:07 +02:00

139 lines
6.7 KiB
C

#ifdef WINDOWSNT
typedef GpStatus (WINGDIPAPI *GdiplusStartup_Proc)
(ULONG_PTR *, GdiplusStartupInput *, GdiplusStartupOutput *);
typedef VOID (WINGDIPAPI *GdiplusShutdown_Proc) (ULONG_PTR);
typedef GpStatus (WINGDIPAPI *GdipCreateFromHDC_Proc)
(HDC hdc, GpGraphics **graphics);
typedef GpStatus (WINGDIPAPI *GdipDeleteGraphics_Proc) (GpGraphics *graphics);
typedef GpStatus (WINGDIPAPI *GdipGetPropertyItemSize_Proc)
(GpImage *, PROPID, UINT *);
typedef GpStatus (WINGDIPAPI *GdipGetPropertyItem_Proc)
(GpImage *, PROPID, UINT, PropertyItem *);
typedef GpStatus (WINGDIPAPI *GdipImageGetFrameDimensionsCount_Proc)
(GpImage *, UINT *);
typedef GpStatus (WINGDIPAPI *GdipImageGetFrameDimensionsList_Proc)
(GpImage *, GUID *, UINT);
typedef GpStatus (WINGDIPAPI *GdipImageGetFrameCount_Proc)
(GpImage *, GDIPCONST GUID *, UINT *);
typedef GpStatus (WINGDIPAPI *GdipImageSelectActiveFrame_Proc)
(GpImage*, GDIPCONST GUID *, UINT);
typedef GpStatus (WINGDIPAPI *GdipCreateBitmapFromFile_Proc)
(WCHAR *, GpBitmap **);
typedef GpStatus (WINGDIPAPI *GdipCreateBitmapFromStream_Proc)
(IStream *, GpBitmap **);
typedef GpStatus (WINGDIPAPI *GdipCreateBitmapFromScan0_Proc)
(INT, INT, INT, PixelFormat, BYTE*, GpBitmap**);
typedef GpStatus (WINGDIPAPI *GdipCreateBitmapFromHBITMAP_Proc)
(HBITMAP hbm, HPALETTE hpal, GpBitmap** bitmap);
typedef GpStatus (WINGDIPAPI *GdipSetInterpolationMode_Proc)
(GpGraphics *graphics, InterpolationMode interpolationMode);
typedef GpStatus (WINGDIPAPI *GdipDrawImageRectRectI_Proc)
(GpGraphics *graphics, GpImage *image, INT dstx, INT dsty, INT dstwidth,
INT dstheight, INT srcx, INT srcy, INT srcwidth, INT srcheight,
GpUnit srcUnit, GDIPCONST GpImageAttributes* imageAttributes,
DrawImageAbort callback, VOID * callbackData);
typedef IStream * (WINAPI *SHCreateMemStream_Proc) (const BYTE *, UINT);
typedef GpStatus (WINGDIPAPI *GdipCreateHBITMAPFromBitmap_Proc)
(GpBitmap *, HBITMAP *, ARGB);
typedef GpStatus (WINGDIPAPI *GdipDisposeImage_Proc) (GpImage *);
typedef GpStatus (WINGDIPAPI *GdipGetImageHeight_Proc) (GpImage *, UINT *);
typedef GpStatus (WINGDIPAPI *GdipGetImageWidth_Proc) (GpImage *, UINT *);
typedef GpStatus (WINGDIPAPI *GdipGetImageEncodersSize_Proc) (UINT *, UINT *);
typedef GpStatus (WINGDIPAPI *GdipGetImageEncoders_Proc)
(UINT, UINT, ImageCodecInfo *);
typedef GpStatus (WINGDIPAPI *GdipLoadImageFromFile_Proc)
(GDIPCONST WCHAR *,GpImage **);
typedef GpStatus (WINGDIPAPI *GdipGetImageThumbnail_Proc)
(GpImage *, UINT, UINT, GpImage**, GetThumbnailImageAbort, VOID *);
typedef GpStatus (WINGDIPAPI *GdipSaveImageToFile_Proc)
(GpImage *, GDIPCONST WCHAR *, GDIPCONST CLSID *,
GDIPCONST EncoderParameters *);
typedef GpStatus (WINGDIPAPI *GdipImageRotateFlip_Proc)
(GpImage *image, RotateFlipType rfType);
extern GdiplusStartup_Proc fn_GdiplusStartup;
extern GdiplusShutdown_Proc fn_GdiplusShutdown;
extern GdipCreateFromHDC_Proc fn_GdipCreateFromHDC;
extern GdipDeleteGraphics_Proc fn_GdipDeleteGraphics;
extern GdipGetPropertyItemSize_Proc fn_GdipGetPropertyItemSize;
extern GdipGetPropertyItem_Proc fn_GdipGetPropertyItem;
extern GdipImageGetFrameDimensionsCount_Proc fn_GdipImageGetFrameDimensionsCount;
extern GdipImageGetFrameDimensionsList_Proc fn_GdipImageGetFrameDimensionsList;
extern GdipImageGetFrameCount_Proc fn_GdipImageGetFrameCount;
extern GdipImageSelectActiveFrame_Proc fn_GdipImageSelectActiveFrame;
extern GdipCreateBitmapFromFile_Proc fn_GdipCreateBitmapFromFile;
extern GdipCreateBitmapFromStream_Proc fn_GdipCreateBitmapFromStream;
extern GdipCreateBitmapFromHBITMAP_Proc fn_GdipCreateBitmapFromHBITMAP;
extern GdipDrawImageRectRectI_Proc fn_GdipDrawImageRectRectI;
extern GdipSetInterpolationMode_Proc fn_GdipSetInterpolationMode;
extern GdipCreateBitmapFromScan0_Proc fn_GdipCreateBitmapFromScan0;
extern SHCreateMemStream_Proc fn_SHCreateMemStream;
extern GdipCreateHBITMAPFromBitmap_Proc fn_GdipCreateHBITMAPFromBitmap;
extern GdipDisposeImage_Proc fn_GdipDisposeImage;
extern GdipGetImageHeight_Proc fn_GdipGetImageHeight;
extern GdipGetImageWidth_Proc fn_GdipGetImageWidth;
extern GdipGetImageEncodersSize_Proc fn_GdipGetImageEncodersSize;
extern GdipGetImageEncoders_Proc fn_GdipGetImageEncoders;
extern GdipLoadImageFromFile_Proc fn_GdipLoadImageFromFile;
extern GdipGetImageThumbnail_Proc fn_GdipGetImageThumbnail;
extern GdipSaveImageToFile_Proc fn_GdipSaveImageToFile;
extern GdipImageRotateFlip_Proc fn_GdipImageRotateFlip;
# undef GdiplusStartup
# undef GdiplusShutdown
# undef GdipGetPropertyItemSize
# undef GdipGetPropertyItem
# undef GdipImageGetFrameDimensionsCount
# undef GdipImageGetFrameDimensionsList
# undef GdipImageGetFrameCount
# undef GdipImageSelectActiveFrame
# undef GdipCreateBitmapFromFile
# undef GdipCreateBitmapFromStream
# undef GdipCreateBitmapFromScan0
# undef GdipCreateBitmapFromHBITMAP
# undef GdipCreateFromHDC
# undef GdipDrawImageRectRectI
# undef GdipSetInterpolationMode
# undef GdipDeleteGraphics
# undef SHCreateMemStream
# undef GdipCreateHBITMAPFromBitmap
# undef GdipDisposeImage
# undef GdipGetImageHeight
# undef GdipGetImageWidth
# undef GdipGetImageEncodersSize
# undef GdipGetImageEncoders
# undef GdipLoadImageFromFile
# undef GdipGetImageThumbnail
# undef GdipSaveImageToFile
# undef GdipSaveImageRotateFlip
# define GdiplusStartup fn_GdiplusStartup
# define GdiplusShutdown fn_GdiplusShutdown
# define GdipGetPropertyItemSize fn_GdipGetPropertyItemSize
# define GdipGetPropertyItem fn_GdipGetPropertyItem
# define GdipImageGetFrameDimensionsCount fn_GdipImageGetFrameDimensionsCount
# define GdipImageGetFrameDimensionsList fn_GdipImageGetFrameDimensionsList
# define GdipImageGetFrameCount fn_GdipImageGetFrameCount
# define GdipImageSelectActiveFrame fn_GdipImageSelectActiveFrame
# define GdipCreateBitmapFromFile fn_GdipCreateBitmapFromFile
# define GdipCreateBitmapFromStream fn_GdipCreateBitmapFromStream
# define GdipCreateBitmapFromScan0 fn_GdipCreateBitmapFromScan0
# define GdipCreateBitmapFromHBITMAP fn_GdipCreateBitmapFromHBITMAP
# define GdipCreateFromHDC fn_GdipCreateFromHDC
# define GdipDrawImageRectRectI fn_GdipDrawImageRectRectI
# define GdipSetInterpolationMode fn_GdipSetInterpolationMode
# define GdipDeleteGraphics fn_GdipDeleteGraphics
# define SHCreateMemStream fn_SHCreateMemStream
# define GdipCreateHBITMAPFromBitmap fn_GdipCreateHBITMAPFromBitmap
# define GdipDisposeImage fn_GdipDisposeImage
# define GdipGetImageHeight fn_GdipGetImageHeight
# define GdipGetImageWidth fn_GdipGetImageWidth
# define GdipGetImageEncodersSize fn_GdipGetImageEncodersSize
# define GdipGetImageEncoders fn_GdipGetImageEncoders
# define GdipLoadImageFromFile fn_GdipLoadImageFromFile
# define GdipGetImageThumbnail fn_GdipGetImageThumbnail
# define GdipSaveImageToFile fn_GdipSaveImageToFile
# define GdipImageRotateFlip fn_GdipImageRotateFlip
#endif
int w32_gdip_get_encoder_clsid (const char *type, CLSID *clsid);