📄 gdiplusbitmap.h
字号:
/**************************************************************************\
*
* Copyright (c) 1998-2001, Microsoft Corp. All Rights Reserved.
*
* Module Name:
*
* GdiplusBitmap.h
*
* Abstract:
*
* GDI+ Bitmap class
*
\**************************************************************************/
#ifndef _GDIPLUSBITMAP_H
#define _GDIPLUSBITMAP_H
inline
Image::Image(
IN const WCHAR* filename,
IN BOOL useEmbeddedColorManagement
)
{
nativeImage = NULL;
if(useEmbeddedColorManagement)
{
lastResult = DllExports::GdipLoadImageFromFileICM(
filename,
&nativeImage
);
}
else
{
lastResult = DllExports::GdipLoadImageFromFile(
filename,
&nativeImage
);
}
}
inline
Image::Image(
IN IStream* stream,
IN BOOL useEmbeddedColorManagement
)
{
nativeImage = NULL;
if(useEmbeddedColorManagement)
{
lastResult = DllExports::GdipLoadImageFromStreamICM(
stream,
&nativeImage
);
}
else
{
lastResult = DllExports::GdipLoadImageFromStream(
stream,
&nativeImage
);
}
}
inline Image*
Image::FromFile(
IN const WCHAR* filename,
IN BOOL useEmbeddedColorManagement
)
{
return new Image(
filename,
useEmbeddedColorManagement
);
}
inline Image*
Image::FromStream(
IN IStream* stream,
IN BOOL useEmbeddedColorManagement
)
{
return new Image(
stream,
useEmbeddedColorManagement
);
}
inline
Image::~Image()
{
DllExports::GdipDisposeImage(nativeImage);
}
inline Image*
Image::Clone()
{
GpImage *cloneimage = NULL;
SetStatus(DllExports::GdipCloneImage(nativeImage, &cloneimage));
return new Image(cloneimage, lastResult);
}
inline UINT
Image::GetEncoderParameterListSize(
IN const CLSID* clsidEncoder
)
{
UINT size = 0;
SetStatus(DllExports::GdipGetEncoderParameterListSize(nativeImage,
clsidEncoder,
&size));
return size;
}
inline Status
Image::GetEncoderParameterList(
IN const CLSID* clsidEncoder,
IN UINT size,
OUT EncoderParameters* buffer
)
{
return SetStatus(DllExports::GdipGetEncoderParameterList(nativeImage,
clsidEncoder,
size,
buffer));
}
inline Status
Image::Save(
IN const WCHAR* filename,
IN const CLSID* clsidEncoder,
IN const EncoderParameters *encoderParams
)
{
return SetStatus(DllExports::GdipSaveImageToFile(nativeImage,
filename,
clsidEncoder,
encoderParams));
}
inline Status
Image::Save(
IN IStream* stream,
IN const CLSID* clsidEncoder,
IN const EncoderParameters *encoderParams
)
{
return SetStatus(DllExports::GdipSaveImageToStream(nativeImage,
stream,
clsidEncoder,
encoderParams));
}
inline Status
Image::SaveAdd(
IN const EncoderParameters *encoderParams
)
{
return SetStatus(DllExports::GdipSaveAdd(nativeImage,
encoderParams));
}
inline Status
Image::SaveAdd(
IN Image* newImage,
IN const EncoderParameters *encoderParams
)
{
if ( newImage == NULL )
{
return SetStatus(InvalidParameter);
}
return SetStatus(DllExports::GdipSaveAddImage(nativeImage,
newImage->nativeImage,
encoderParams));
}
inline ImageType
Image::GetType() const
{
ImageType type = ImageTypeUnknown;
SetStatus(DllExports::GdipGetImageType(nativeImage, &type));
return type;
}
inline Status
Image::GetPhysicalDimension(
OUT SizeF* size
)
{
if (size == NULL)
{
return SetStatus(InvalidParameter);
}
REAL width, height;
Status status;
status = SetStatus(DllExports::GdipGetImageDimension(nativeImage,
&width, &height));
size->Width = width;
size->Height = height;
return status;
}
inline Status
Image::GetBounds(
OUT RectF *srcRect,
OUT Unit *srcUnit
)
{
return SetStatus(DllExports::GdipGetImageBounds(nativeImage,
srcRect, srcUnit));
}
inline UINT
Image::GetWidth()
{
UINT width = 0;
SetStatus(DllExports::GdipGetImageWidth(nativeImage, &width));
return width;
}
inline UINT
Image::GetHeight()
{
UINT height = 0;
SetStatus(DllExports::GdipGetImageHeight(nativeImage, &height));
return height;
}
inline REAL
Image::GetHorizontalResolution()
{
REAL resolution = 0.0f;
SetStatus(DllExports::GdipGetImageHorizontalResolution(nativeImage, &resolution));
return resolution;
}
inline REAL
Image::GetVerticalResolution()
{
REAL resolution = 0.0f;
SetStatus(DllExports::GdipGetImageVerticalResolution(nativeImage, &resolution));
return resolution;
}
inline UINT
Image::GetFlags()
{
UINT flags = 0;
SetStatus(DllExports::GdipGetImageFlags(nativeImage, &flags));
return flags;
}
inline Status
Image::GetRawFormat(OUT GUID *format)
{
return SetStatus(DllExports::GdipGetImageRawFormat(nativeImage, format));
}
inline PixelFormat
Image::GetPixelFormat()
{
PixelFormat format;
SetStatus(DllExports::GdipGetImagePixelFormat(nativeImage, &format));
return format;
}
inline INT
Image::GetPaletteSize()
{
INT size = 0;
SetStatus(DllExports::GdipGetImagePaletteSize(nativeImage, &size));
return size;
}
inline Status
Image::GetPalette(
OUT ColorPalette *palette,
IN INT size
)
{
return SetStatus(DllExports::GdipGetImagePalette(nativeImage, palette, size));
}
inline Status
Image::SetPalette(
IN const ColorPalette *palette
)
{
return SetStatus(DllExports::GdipSetImagePalette(nativeImage, palette));
}
inline Image*
Image::GetThumbnailImage(
IN UINT thumbWidth,
IN UINT thumbHeight,
IN GetThumbnailImageAbort callback,
IN VOID* callbackData
)
{
GpImage *thumbimage = NULL;
SetStatus(DllExports::GdipGetImageThumbnail(nativeImage,
thumbWidth, thumbHeight,
&thumbimage,
callback, callbackData));
Image *newImage = new Image(thumbimage, lastResult);
if (newImage == NULL)
{
DllExports::GdipDisposeImage(thumbimage);
}
return newImage;
}
inline UINT
Image::GetFrameDimensionsCount()
{
UINT count = 0;
SetStatus(DllExports::GdipImageGetFrameDimensionsCount(nativeImage,
&count));
return count;
}
inline Status
Image::GetFrameDimensionsList(
OUT GUID* dimensionIDs,
IN UINT count
)
{
return SetStatus(DllExports::GdipImageGetFrameDimensionsList(nativeImage,
dimensionIDs,
count));
}
inline UINT
Image::GetFrameCount(
IN const GUID* dimensionID
)
{
UINT count = 0;
SetStatus(DllExports::GdipImageGetFrameCount(nativeImage,
dimensionID,
&count));
return count;
}
inline Status
Image::SelectActiveFrame(
IN const GUID *dimensionID,
IN UINT frameIndex
)
{
return SetStatus(DllExports::GdipImageSelectActiveFrame(nativeImage,
dimensionID,
frameIndex));
}
inline Status
Image::RotateFlip(
IN RotateFlipType rotateFlipType
)
{
return SetStatus(DllExports::GdipImageRotateFlip(nativeImage,
rotateFlipType));
}
inline UINT
Image::GetPropertyCount()
{
UINT numProperty = 0;
SetStatus(DllExports::GdipGetPropertyCount(nativeImage,
&numProperty));
return numProperty;
}
inline Status
Image::GetPropertyIdList(
IN UINT numOfProperty,
OUT PROPID* list
)
{
return SetStatus(DllExports::GdipGetPropertyIdList(nativeImage,
numOfProperty, list));
}
inline UINT
Image::GetPropertyItemSize(
IN PROPID propId
)
{
UINT size = 0;
SetStatus(DllExports::GdipGetPropertyItemSize(nativeImage,
propId,
&size));
return size;
}
inline Status
Image::GetPropertyItem(
IN PROPID propId,
IN UINT propSize,
OUT PropertyItem* buffer
)
{
return SetStatus(DllExports::GdipGetPropertyItem(nativeImage,
propId, propSize, buffer));
}
inline Status
Image::GetPropertySize(
OUT UINT* totalBufferSize,
OUT UINT* numProperties
)
{
return SetStatus(DllExports::GdipGetPropertySize(nativeImage,
totalBufferSize,
numProperties));
}
inline Status
Image::GetAllPropertyItems(
IN UINT totalBufferSize,
IN UINT numProperties,
OUT PropertyItem* allItems
)
{
if (allItems == NULL)
{
return SetStatus(InvalidParameter);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -