diff options
author | John Abd-El-Malek <jabdelmalek@google.com> | 2014-05-23 17:28:10 -0700 |
---|---|---|
committer | John Abd-El-Malek <jabdelmalek@google.com> | 2014-05-23 17:41:56 -0700 |
commit | 3f3b45cc74b0499912409f766a595945dbbfc4c5 (patch) | |
tree | ec400b6965477b88ea7f0d335f7e5c52044c346c /core/src/fxge/Microsoft SDK/include/GdiPlusBitmap.h | |
parent | 6fe4aed948337175f6f7f81bb03c37b9c7f535da (diff) | |
download | pdfium-3f3b45cc74b0499912409f766a595945dbbfc4c5.tar.xz |
Convert all line endings to LF.
Diffstat (limited to 'core/src/fxge/Microsoft SDK/include/GdiPlusBitmap.h')
-rw-r--r-- | core/src/fxge/Microsoft SDK/include/GdiPlusBitmap.h | 2008 |
1 files changed, 1004 insertions, 1004 deletions
diff --git a/core/src/fxge/Microsoft SDK/include/GdiPlusBitmap.h b/core/src/fxge/Microsoft SDK/include/GdiPlusBitmap.h index fbe0061d41..16d66bdaeb 100644 --- a/core/src/fxge/Microsoft SDK/include/GdiPlusBitmap.h +++ b/core/src/fxge/Microsoft SDK/include/GdiPlusBitmap.h @@ -1,1004 +1,1004 @@ -/**************************************************************************\
-*
-* Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved.
-*
-* Module Name:
-*
-* GdiplusBitmap.h
-*
-* Abstract:
-*
-* Bitmap related declarations
-*
-\**************************************************************************/
-
-#ifndef _GDIPLUSBITMAP_H
-#define _GDIPLUSBITMAP_H
-
-// NOTE:
-// Our current choice for the public API is to use constructors
-// instead of static load functions to create image objects.
-//
-// I've kept the static load functions here for now so that
-// existing test programs are not broken. But they should
-// eventually be taken out.
-
-#ifndef DCR_USE_NEW_140782
-
-inline
-Image::Image(
- IN const WCHAR* filename
- )
-{
- nativeImage = NULL;
- lastResult = DllExports::GdipLoadImageFromFile(filename, &nativeImage);
-}
-
-inline
-Image::Image(
- IN IStream* stream
- )
-{
- nativeImage = NULL;
- lastResult = DllExports::GdipLoadImageFromStream(stream, &nativeImage);
-}
-
-inline Image*
-Image::FromFile(
- IN const WCHAR* filename
- )
-{
- return new Image(filename);
-}
-
-inline Image*
-Image::FromStream(
- IN IStream* stream
- )
-{
- return new Image(stream);
-}
-
-#else
-
-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
- );
-}
-
-#endif
-
-inline
-Image::~Image()
-{
- DllExports::GdipDisposeImage(nativeImage);
-}
-
-inline Image*
-Image::Clone()
-{
- GpImage *cloneimage = NULL;
-
- SetStatus(DllExports::GdipCloneImage(nativeImage, &cloneimage));
-
- return new Image(cloneimage, lastResult);
-}
-
-// Encorder Parameter
-
-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));
-}
-
-// Save images
-
-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));
-}
-
-// Get size and type information
-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));
-}
-
-// Thumbnail support
-
-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;
-}
-
-// Multi-frame support
-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));
-}
-
-// Image property related functions
-
-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);
- }
- return SetStatus(DllExports::GdipGetAllPropertyItems(nativeImage,
- totalBufferSize,
- numProperties,
- allItems));
-}
-
-inline Status
-Image::RemovePropertyItem(
- IN PROPID propId
- )
-{
- return SetStatus(DllExports::GdipRemovePropertyItem(nativeImage, propId));
-}
-
-inline Status
-Image::SetPropertyItem(
- IN const PropertyItem* item
- )
-{
- return SetStatus(DllExports::GdipSetPropertyItem(nativeImage, item));
-}
-
-// Get/SetLayout
-// Support for Middle East localization (right-to-left mirroring)
-
-inline ImageLayout
-Image::GetLayout() const
-{
- ImageLayout layout;
-
- SetStatus(DllExports::GdipGetImageLayout(nativeImage, &layout));
-
- return layout;
-}
-
-inline Status
-Image::SetLayout(IN const ImageLayout layout)
-{
- return SetStatus(
- DllExports::GdipSetImageLayout(nativeImage, layout)
- );
-}
-
-inline Status
-Image::GetLastStatus() const
-{
- Status lastStatus = lastResult;
- lastResult = Ok;
-
- return lastStatus;
-}
-
-inline
-Image::Image(GpImage *nativeImage, Status status)
-{
- SetNativeImage(nativeImage);
- lastResult = status;
-}
-
-inline VOID
-Image::SetNativeImage(GpImage *nativeImage)
-{
- this->nativeImage = nativeImage;
-}
-
-inline
-Bitmap::Bitmap(
- IN const WCHAR *filename,
- IN BOOL useEmbeddedColorManagement
- )
-{
- GpBitmap *bitmap = NULL;
-
- if(useEmbeddedColorManagement)
- {
- lastResult = DllExports::GdipCreateBitmapFromFileICM(filename, &bitmap);
- }
- else
- {
- lastResult = DllExports::GdipCreateBitmapFromFile(filename, &bitmap);
- }
-
- SetNativeImage(bitmap);
-}
-
-inline
-Bitmap::Bitmap(
- IN IStream *stream,
- IN BOOL useEmbeddedColorManagement
- )
-{
- GpBitmap *bitmap = NULL;
-
- if(useEmbeddedColorManagement)
- {
- lastResult = DllExports::GdipCreateBitmapFromStreamICM(stream, &bitmap);
- }
- else
- {
- lastResult = DllExports::GdipCreateBitmapFromStream(stream, &bitmap);
- }
-
- SetNativeImage(bitmap);
-}
-
-inline
-Bitmap::Bitmap(
- IN INT width,
- IN INT height,
- IN INT stride,
- IN PixelFormat format,
- IN BYTE *scan0
- )
-{
- GpBitmap *bitmap = NULL;
-
- lastResult = DllExports::GdipCreateBitmapFromScan0(width,
- height,
- stride,
- format,
- scan0,
- &bitmap);
-
- SetNativeImage(bitmap);
-}
-
-inline
-Bitmap::Bitmap(
- IN INT width,
- IN INT height,
- IN PixelFormat format
- )
-{
- GpBitmap *bitmap = NULL;
-
- lastResult = DllExports::GdipCreateBitmapFromScan0(width,
- height,
- 0,
- format,
- NULL,
- &bitmap);
-
- SetNativeImage(bitmap);
-}
-
-inline
-Bitmap::Bitmap(
- IN INT width,
- IN INT height,
- IN Graphics* target)
-{
- GpBitmap *bitmap = NULL;
-
- lastResult = DllExports::GdipCreateBitmapFromGraphics(width,
- height,
- target->nativeGraphics,
- &bitmap);
-
- SetNativeImage(bitmap);
-}
-
-inline
-Bitmap::Bitmap(
- IN IDirectDrawSurface7 * surface
- )
-{
- GpBitmap *bitmap = NULL;
-
- lastResult = DllExports::GdipCreateBitmapFromDirectDrawSurface(surface,
- &bitmap);
-
- SetNativeImage(bitmap);
-}
-
-inline
-Bitmap::Bitmap(
- IN const BITMAPINFO* gdiBitmapInfo,
- IN VOID* gdiBitmapData
- )
-{
- GpBitmap *bitmap = NULL;
-
- lastResult = DllExports::GdipCreateBitmapFromGdiDib(gdiBitmapInfo,
- gdiBitmapData,
- &bitmap);
-
- SetNativeImage(bitmap);
-}
-
-inline
-Bitmap::Bitmap(
- IN HBITMAP hbm,
- IN HPALETTE hpal
- )
-{
- GpBitmap *bitmap = NULL;
-
- lastResult = DllExports::GdipCreateBitmapFromHBITMAP(hbm, hpal, &bitmap);
-
- SetNativeImage(bitmap);
-}
-
-inline
-Bitmap::Bitmap(
- IN HICON hicon
- )
-{
- GpBitmap *bitmap = NULL;
-
- lastResult = DllExports::GdipCreateBitmapFromHICON(hicon, &bitmap);
-
- SetNativeImage(bitmap);
-}
-
-inline
-Bitmap::Bitmap(
- IN HINSTANCE hInstance,
- IN const WCHAR *bitmapName
- )
-{
- GpBitmap *bitmap = NULL;
-
- lastResult = DllExports::GdipCreateBitmapFromResource(hInstance,
- bitmapName,
- &bitmap);
-
- SetNativeImage(bitmap);
-}
-
-
-inline Bitmap*
-Bitmap::FromFile(
- IN const WCHAR *filename,
- IN BOOL useEmbeddedColorManagement
- )
-{
- return new Bitmap(
- filename,
- useEmbeddedColorManagement
- );
-}
-
-inline Bitmap*
-Bitmap::FromStream(
- IN IStream *stream,
- IN BOOL useEmbeddedColorManagement
- )
-{
- return new Bitmap(
- stream,
- useEmbeddedColorManagement
- );
-}
-
-inline Bitmap*
-Bitmap::FromDirectDrawSurface7(
- IN IDirectDrawSurface7* surface
- )
-{
- return new Bitmap(surface);
-}
-
-inline Bitmap*
-Bitmap::FromBITMAPINFO(
- IN const BITMAPINFO* gdiBitmapInfo,
- IN VOID* gdiBitmapData)
-{
- return new Bitmap(gdiBitmapInfo, gdiBitmapData);
-}
-
-inline Bitmap*
-Bitmap::FromHBITMAP(
- IN HBITMAP hbm,
- IN HPALETTE hpal
- )
-{
- return new Bitmap(hbm, hpal);
-}
-
-inline Bitmap*
-Bitmap::FromHICON(
- IN HICON hicon
- )
-{
- return new Bitmap(hicon);
-}
-
-inline Bitmap*
-Bitmap::FromResource(
- IN HINSTANCE hInstance,
- IN const WCHAR *bitmapName)
-{
- return new Bitmap(hInstance, bitmapName);
-}
-
-inline Status
-Bitmap::GetHBITMAP(
- IN const Color& colorBackground,
- OUT HBITMAP* hbmReturn
- )
-{
- return SetStatus(DllExports::GdipCreateHBITMAPFromBitmap(
- static_cast<GpBitmap*>(nativeImage),
- hbmReturn,
- colorBackground.GetValue()));
-}
-
-inline Status
-Bitmap::GetHICON(
- OUT HICON* hiconReturn
- )
-{
- return SetStatus(DllExports::GdipCreateHICONFromBitmap(
- static_cast<GpBitmap*>(nativeImage),
- hiconReturn));
-}
-
-inline Bitmap*
-Bitmap::Clone(
- IN const Rect& rect,
- IN PixelFormat format
- )
-{
- return Clone(rect.X, rect.Y, rect.Width, rect.Height, format);
-}
-
-inline Bitmap*
-Bitmap::Clone(
- IN INT x,
- IN INT y,
- IN INT width,
- IN INT height,
- IN PixelFormat format
- )
-{
- GpBitmap* gpdstBitmap = NULL;
- Bitmap* bitmap;
-
- lastResult = DllExports::GdipCloneBitmapAreaI(
- x,
- y,
- width,
- height,
- format,
- (GpBitmap *)nativeImage,
- &gpdstBitmap);
-
- if (lastResult == Ok)
- {
- bitmap = new Bitmap(gpdstBitmap);
-
- if (bitmap == NULL)
- {
- DllExports::GdipDisposeImage(gpdstBitmap);
- }
-
- return bitmap;
- }
- else
- return NULL;
-}
-
-inline Bitmap*
-Bitmap::Clone(
- IN const RectF& rect,
- IN PixelFormat format
- )
-{
- return Clone(rect.X, rect.Y, rect.Width, rect.Height, format);
-}
-
-inline Bitmap*
-Bitmap::Clone(
- IN REAL x,
- IN REAL y,
- IN REAL width,
- IN REAL height,
- IN PixelFormat format
- )
-{
- GpBitmap* gpdstBitmap = NULL;
- Bitmap* bitmap;
-
- SetStatus(DllExports::GdipCloneBitmapArea(
- x,
- y,
- width,
- height,
- format,
- (GpBitmap *)nativeImage,
- &gpdstBitmap));
-
- if (lastResult == Ok)
- {
- bitmap = new Bitmap(gpdstBitmap);
-
- if (bitmap == NULL)
- {
- DllExports::GdipDisposeImage(gpdstBitmap);
- }
-
- return bitmap;
- }
- else
- return NULL;
-}
-
-inline Bitmap::Bitmap(GpBitmap *nativeBitmap)
-{
- lastResult = Ok;
-
- SetNativeImage(nativeBitmap);
-}
-
-inline Status
-Bitmap::LockBits(
- IN const Rect& rect,
- IN UINT flags,
- IN PixelFormat format,
- OUT BitmapData* lockedBitmapData
-)
-{
- return SetStatus(DllExports::GdipBitmapLockBits(
- static_cast<GpBitmap*>(nativeImage),
- &rect,
- flags,
- format,
- lockedBitmapData));
-}
-
-inline Status
-Bitmap::UnlockBits(
- IN BitmapData* lockedBitmapData
- )
-{
- return SetStatus(DllExports::GdipBitmapUnlockBits(
- static_cast<GpBitmap*>(nativeImage),
- lockedBitmapData));
-}
-
-inline Status
-Bitmap::GetPixel(
- IN INT x,
- IN INT y,
- OUT Color *color)
-{
- ARGB argb;
-
- Status status = SetStatus(DllExports::GdipBitmapGetPixel(
- static_cast<GpBitmap *>(nativeImage),
- x, y,
- &argb));
-
- if (status == Ok)
- {
- color->SetValue(argb);
- }
-
- return status;
-}
-
-inline Status
-Bitmap::SetPixel(
- IN INT x,
- IN INT y,
- IN const Color& color)
-{
- return SetStatus(DllExports::GdipBitmapSetPixel(
- static_cast<GpBitmap *>(nativeImage),
- x, y,
- color.GetValue()));
-}
-
-inline Status
-Bitmap::SetResolution(
- IN REAL xdpi,
- IN REAL ydpi)
-{
- return SetStatus(DllExports::GdipBitmapSetResolution(
- static_cast<GpBitmap *>(nativeImage),
- xdpi, ydpi));
-}
-#endif
+/**************************************************************************\ +* +* Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved. +* +* Module Name: +* +* GdiplusBitmap.h +* +* Abstract: +* +* Bitmap related declarations +* +\**************************************************************************/ + +#ifndef _GDIPLUSBITMAP_H +#define _GDIPLUSBITMAP_H + +// NOTE: +// Our current choice for the public API is to use constructors +// instead of static load functions to create image objects. +// +// I've kept the static load functions here for now so that +// existing test programs are not broken. But they should +// eventually be taken out. + +#ifndef DCR_USE_NEW_140782 + +inline +Image::Image( + IN const WCHAR* filename + ) +{ + nativeImage = NULL; + lastResult = DllExports::GdipLoadImageFromFile(filename, &nativeImage); +} + +inline +Image::Image( + IN IStream* stream + ) +{ + nativeImage = NULL; + lastResult = DllExports::GdipLoadImageFromStream(stream, &nativeImage); +} + +inline Image* +Image::FromFile( + IN const WCHAR* filename + ) +{ + return new Image(filename); +} + +inline Image* +Image::FromStream( + IN IStream* stream + ) +{ + return new Image(stream); +} + +#else + +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 + ); +} + +#endif + +inline +Image::~Image() +{ + DllExports::GdipDisposeImage(nativeImage); +} + +inline Image* +Image::Clone() +{ + GpImage *cloneimage = NULL; + + SetStatus(DllExports::GdipCloneImage(nativeImage, &cloneimage)); + + return new Image(cloneimage, lastResult); +} + +// Encorder Parameter + +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)); +} + +// Save images + +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)); +} + +// Get size and type information +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)); +} + +// Thumbnail support + +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; +} + +// Multi-frame support +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)); +} + +// Image property related functions + +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); + } + return SetStatus(DllExports::GdipGetAllPropertyItems(nativeImage, + totalBufferSize, + numProperties, + allItems)); +} + +inline Status +Image::RemovePropertyItem( + IN PROPID propId + ) +{ + return SetStatus(DllExports::GdipRemovePropertyItem(nativeImage, propId)); +} + +inline Status +Image::SetPropertyItem( + IN const PropertyItem* item + ) +{ + return SetStatus(DllExports::GdipSetPropertyItem(nativeImage, item)); +} + +// Get/SetLayout +// Support for Middle East localization (right-to-left mirroring) + +inline ImageLayout +Image::GetLayout() const +{ + ImageLayout layout; + + SetStatus(DllExports::GdipGetImageLayout(nativeImage, &layout)); + + return layout; +} + +inline Status +Image::SetLayout(IN const ImageLayout layout) +{ + return SetStatus( + DllExports::GdipSetImageLayout(nativeImage, layout) + ); +} + +inline Status +Image::GetLastStatus() const +{ + Status lastStatus = lastResult; + lastResult = Ok; + + return lastStatus; +} + +inline +Image::Image(GpImage *nativeImage, Status status) +{ + SetNativeImage(nativeImage); + lastResult = status; +} + +inline VOID +Image::SetNativeImage(GpImage *nativeImage) +{ + this->nativeImage = nativeImage; +} + +inline +Bitmap::Bitmap( + IN const WCHAR *filename, + IN BOOL useEmbeddedColorManagement + ) +{ + GpBitmap *bitmap = NULL; + + if(useEmbeddedColorManagement) + { + lastResult = DllExports::GdipCreateBitmapFromFileICM(filename, &bitmap); + } + else + { + lastResult = DllExports::GdipCreateBitmapFromFile(filename, &bitmap); + } + + SetNativeImage(bitmap); +} + +inline +Bitmap::Bitmap( + IN IStream *stream, + IN BOOL useEmbeddedColorManagement + ) +{ + GpBitmap *bitmap = NULL; + + if(useEmbeddedColorManagement) + { + lastResult = DllExports::GdipCreateBitmapFromStreamICM(stream, &bitmap); + } + else + { + lastResult = DllExports::GdipCreateBitmapFromStream(stream, &bitmap); + } + + SetNativeImage(bitmap); +} + +inline +Bitmap::Bitmap( + IN INT width, + IN INT height, + IN INT stride, + IN PixelFormat format, + IN BYTE *scan0 + ) +{ + GpBitmap *bitmap = NULL; + + lastResult = DllExports::GdipCreateBitmapFromScan0(width, + height, + stride, + format, + scan0, + &bitmap); + + SetNativeImage(bitmap); +} + +inline +Bitmap::Bitmap( + IN INT width, + IN INT height, + IN PixelFormat format + ) +{ + GpBitmap *bitmap = NULL; + + lastResult = DllExports::GdipCreateBitmapFromScan0(width, + height, + 0, + format, + NULL, + &bitmap); + + SetNativeImage(bitmap); +} + +inline +Bitmap::Bitmap( + IN INT width, + IN INT height, + IN Graphics* target) +{ + GpBitmap *bitmap = NULL; + + lastResult = DllExports::GdipCreateBitmapFromGraphics(width, + height, + target->nativeGraphics, + &bitmap); + + SetNativeImage(bitmap); +} + +inline +Bitmap::Bitmap( + IN IDirectDrawSurface7 * surface + ) +{ + GpBitmap *bitmap = NULL; + + lastResult = DllExports::GdipCreateBitmapFromDirectDrawSurface(surface, + &bitmap); + + SetNativeImage(bitmap); +} + +inline +Bitmap::Bitmap( + IN const BITMAPINFO* gdiBitmapInfo, + IN VOID* gdiBitmapData + ) +{ + GpBitmap *bitmap = NULL; + + lastResult = DllExports::GdipCreateBitmapFromGdiDib(gdiBitmapInfo, + gdiBitmapData, + &bitmap); + + SetNativeImage(bitmap); +} + +inline +Bitmap::Bitmap( + IN HBITMAP hbm, + IN HPALETTE hpal + ) +{ + GpBitmap *bitmap = NULL; + + lastResult = DllExports::GdipCreateBitmapFromHBITMAP(hbm, hpal, &bitmap); + + SetNativeImage(bitmap); +} + +inline +Bitmap::Bitmap( + IN HICON hicon + ) +{ + GpBitmap *bitmap = NULL; + + lastResult = DllExports::GdipCreateBitmapFromHICON(hicon, &bitmap); + + SetNativeImage(bitmap); +} + +inline +Bitmap::Bitmap( + IN HINSTANCE hInstance, + IN const WCHAR *bitmapName + ) +{ + GpBitmap *bitmap = NULL; + + lastResult = DllExports::GdipCreateBitmapFromResource(hInstance, + bitmapName, + &bitmap); + + SetNativeImage(bitmap); +} + + +inline Bitmap* +Bitmap::FromFile( + IN const WCHAR *filename, + IN BOOL useEmbeddedColorManagement + ) +{ + return new Bitmap( + filename, + useEmbeddedColorManagement + ); +} + +inline Bitmap* +Bitmap::FromStream( + IN IStream *stream, + IN BOOL useEmbeddedColorManagement + ) +{ + return new Bitmap( + stream, + useEmbeddedColorManagement + ); +} + +inline Bitmap* +Bitmap::FromDirectDrawSurface7( + IN IDirectDrawSurface7* surface + ) +{ + return new Bitmap(surface); +} + +inline Bitmap* +Bitmap::FromBITMAPINFO( + IN const BITMAPINFO* gdiBitmapInfo, + IN VOID* gdiBitmapData) +{ + return new Bitmap(gdiBitmapInfo, gdiBitmapData); +} + +inline Bitmap* +Bitmap::FromHBITMAP( + IN HBITMAP hbm, + IN HPALETTE hpal + ) +{ + return new Bitmap(hbm, hpal); +} + +inline Bitmap* +Bitmap::FromHICON( + IN HICON hicon + ) +{ + return new Bitmap(hicon); +} + +inline Bitmap* +Bitmap::FromResource( + IN HINSTANCE hInstance, + IN const WCHAR *bitmapName) +{ + return new Bitmap(hInstance, bitmapName); +} + +inline Status +Bitmap::GetHBITMAP( + IN const Color& colorBackground, + OUT HBITMAP* hbmReturn + ) +{ + return SetStatus(DllExports::GdipCreateHBITMAPFromBitmap( + static_cast<GpBitmap*>(nativeImage), + hbmReturn, + colorBackground.GetValue())); +} + +inline Status +Bitmap::GetHICON( + OUT HICON* hiconReturn + ) +{ + return SetStatus(DllExports::GdipCreateHICONFromBitmap( + static_cast<GpBitmap*>(nativeImage), + hiconReturn)); +} + +inline Bitmap* +Bitmap::Clone( + IN const Rect& rect, + IN PixelFormat format + ) +{ + return Clone(rect.X, rect.Y, rect.Width, rect.Height, format); +} + +inline Bitmap* +Bitmap::Clone( + IN INT x, + IN INT y, + IN INT width, + IN INT height, + IN PixelFormat format + ) +{ + GpBitmap* gpdstBitmap = NULL; + Bitmap* bitmap; + + lastResult = DllExports::GdipCloneBitmapAreaI( + x, + y, + width, + height, + format, + (GpBitmap *)nativeImage, + &gpdstBitmap); + + if (lastResult == Ok) + { + bitmap = new Bitmap(gpdstBitmap); + + if (bitmap == NULL) + { + DllExports::GdipDisposeImage(gpdstBitmap); + } + + return bitmap; + } + else + return NULL; +} + +inline Bitmap* +Bitmap::Clone( + IN const RectF& rect, + IN PixelFormat format + ) +{ + return Clone(rect.X, rect.Y, rect.Width, rect.Height, format); +} + +inline Bitmap* +Bitmap::Clone( + IN REAL x, + IN REAL y, + IN REAL width, + IN REAL height, + IN PixelFormat format + ) +{ + GpBitmap* gpdstBitmap = NULL; + Bitmap* bitmap; + + SetStatus(DllExports::GdipCloneBitmapArea( + x, + y, + width, + height, + format, + (GpBitmap *)nativeImage, + &gpdstBitmap)); + + if (lastResult == Ok) + { + bitmap = new Bitmap(gpdstBitmap); + + if (bitmap == NULL) + { + DllExports::GdipDisposeImage(gpdstBitmap); + } + + return bitmap; + } + else + return NULL; +} + +inline Bitmap::Bitmap(GpBitmap *nativeBitmap) +{ + lastResult = Ok; + + SetNativeImage(nativeBitmap); +} + +inline Status +Bitmap::LockBits( + IN const Rect& rect, + IN UINT flags, + IN PixelFormat format, + OUT BitmapData* lockedBitmapData +) +{ + return SetStatus(DllExports::GdipBitmapLockBits( + static_cast<GpBitmap*>(nativeImage), + &rect, + flags, + format, + lockedBitmapData)); +} + +inline Status +Bitmap::UnlockBits( + IN BitmapData* lockedBitmapData + ) +{ + return SetStatus(DllExports::GdipBitmapUnlockBits( + static_cast<GpBitmap*>(nativeImage), + lockedBitmapData)); +} + +inline Status +Bitmap::GetPixel( + IN INT x, + IN INT y, + OUT Color *color) +{ + ARGB argb; + + Status status = SetStatus(DllExports::GdipBitmapGetPixel( + static_cast<GpBitmap *>(nativeImage), + x, y, + &argb)); + + if (status == Ok) + { + color->SetValue(argb); + } + + return status; +} + +inline Status +Bitmap::SetPixel( + IN INT x, + IN INT y, + IN const Color& color) +{ + return SetStatus(DllExports::GdipBitmapSetPixel( + static_cast<GpBitmap *>(nativeImage), + x, y, + color.GetValue())); +} + +inline Status +Bitmap::SetResolution( + IN REAL xdpi, + IN REAL ydpi) +{ + return SetStatus(DllExports::GdipBitmapSetResolution( + static_cast<GpBitmap *>(nativeImage), + xdpi, ydpi)); +} +#endif |