#include "GUI.h"
MODULE = Win32::GUI::ImageList PACKAGE = Win32::GUI::ImageList
PROTOTYPES: DISABLE
#pragma message( "*** PACKAGE Win32::GUI::ImageList..." )
###########################################################################
# (@)METHOD:AddBitmap(BITMAP, [BITMAPMASK])
# Adds a Win32::GUI::Bitmap object to the ImageList. BITMAPMASK is
# optional. See also Add().
int
AddBitmap(handle, bitmap, bitmapMask=NULL)
HIMAGELIST handle
HBITMAP
bitmap
HBITMAP
bitmapMask
CODE:
RETVAL = ImageList_Add(handle, bitmap, bitmapMask);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:AddBitmapMasked(BITMAP, COLORMASK)
# Adds a Win32::GUI::Bitmap object to the ImageList. COLORMASK is
# color used to generate the mask. See also AddMasked().
int
AddBitmapMasked(handle, bitmap, color)
HIMAGELIST handle
HBITMAP
bitmap
COLORREF
color
CODE:
RETVAL = ImageList_AddMasked(handle, bitmap, color);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:BeginDrag(INDEX, X, Y)
# Creates a temporary image list that is used for dragging.
BOOL
BeginDrag(handle, index, x, y)
HIMAGELIST handle
int
index
int
x
int
y
CODE:
RETVAL = ImageList_BeginDrag(handle, index, x, y);
OUTPUT:
RETVAL
###########################################################################
# (@)INTERNAL:Copy(IDEST, ISRC, [FLAG=ILCF_MOVE])
# Copies images within a image list.
BOOL
Copy(handle, iDest, iSrc, flag=ILCF_MOVE)
HIMAGELIST handle
int
iDest
int
iSrc
UINT
flag
CODE:
#ifdef W32G_BROKENW32API
W32G_WARN_UNSUPPORTED(
"ImageList_Copy missing from build"
);
RETVAL = FALSE;
#else
RETVAL = ImageList_Copy(handle, iDest, handle, iSrc, flag);
#endif
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Create(X, Y, FLAGS, INITAL, GROW)
# Creates a new image list.
# See new()
HIMAGELIST
Create(cx,cy,flags,cInitial,cGrow)
int
cx
int
cy
UINT
flags
int
cInitial
int
cGrow
CODE:
RETVAL = ImageList_Create(cx, cy, flags, cInitial, cGrow);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Destroy()
# Destroys an image list.
BOOL
Destroy(handle)
HIMAGELIST handle
CODE:
RETVAL = ImageList_Destroy(handle);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Draw(INDEX, DC, X, Y, [STYLE=ILD_NORMAL])
# Draws an image list item in the specified device context.
BOOL
Draw(handle, index, dc, x, y, flag=ILD_NORMAL)
HIMAGELIST handle
int
index
HDC
dc
int
x
int
y
UINT
flag
CODE:
RETVAL = ImageList_Draw(handle, index, dc, x, y, flag);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:DrawEx(INDEX, DC, X, Y, DX, DY, BKCOLOR, FGCOLOR, [STYLE=ILD_NORMAL])
# Draws an image list item in the specified device context.
# The function uses the specified drawing style and blends the image with the specified color.
BOOL
DrawEx(handle, index, dc, x, y, dx, dy, color1, color2, flag=ILD_NORMAL)
HIMAGELIST handle
int
index
HDC
dc
int
x
int
y
int
dx
int
dy
COLORREF
color1
COLORREF
color2
UINT
flag
CODE:
RETVAL = ImageList_DrawEx(handle, index, dc, x, y, dx, dy, color1, color2, flag);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:DrawIndirect(INDEX, DC, X, Y, CX, CY, XBITMAP, YBITMAP, BKCOLOR, FGCOLOR, [STYLE=ILD_NORMAL], [ROP=SRCCOPY])
# Draws an image list item in the specified device context.
BOOL
DrawIndirect(handle, index, dc, x, y, cx, cy, xBitmap, yBitmap, color1, color2, flag=ILD_NORMAL, rop=SRCCOPY)
HIMAGELIST handle
int
index
HDC
dc
int
x
int
y
int
cx
int
cy
int
xBitmap
int
yBitmap
COLORREF
color1
COLORREF
color2
UINT
flag
DWORD
rop
PREINIT:
IMAGELISTDRAWPARAMS param;
CODE:
param.cbSize =
sizeof
(IMAGELISTDRAWPARAMS);
param.himl = handle;
param.i = index;
param.hdcDst = dc;
param.x = x;
param.y = y;
param.cx = cx;
param.cy = cy;
param.xBitmap = xBitmap;
param.yBitmap = yBitmap;
param.rgbBk = color1;
param.rgbFg = color2;
param.fStyle = flag;
param.dwRop = rop;
#ifdef W32G_BROKENW32API
W32G_WARN_UNSUPPORTED(
"ImageList_DrawIndirect missing from build"
);
RETVAL = FALSE;
#else
RETVAL = ImageList_DrawIndirect(¶m);
#endif
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Duplicate()
# Creates a duplicate of an existing image list. Return a new Win32::GUI::ImageList object.
void
Duplicate(handle)
HIMAGELIST handle
PREINIT:
HIMAGELIST hdup;
PPCODE:
#ifdef W32G_BROKENW32API
W32G_WARN_UNSUPPORTED(
"ImageList_Duplicate missing from build"
);
XSRETURN_UNDEF;
#else
hdup = ImageList_Duplicate(handle);
if
(hdup == NULL) XSRETURN_UNDEF;
XPUSHs(CreateObjectWithHandle(NOTXSCALL
"Win32::GUI::ImageList"
, (
HWND
) hdup));
XSRETURN(1);
#endif
###########################################################################
# (@)METHOD:GetBkColor()
# Retrieves the current background color for an image list.
COLORREF
GetBkColor(handle)
HIMAGELIST handle
CODE:
RETVAL = ImageList_GetBkColor(handle);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:GetIcon(index, [flags=ILD_NORMAL])
# Creates an Win32::GUI::Icon object from an image and mask in an image list.
void
GetIcon(handle, index, flags=ILD_NORMAL)
HIMAGELIST handle
int
index
UINT
flags
PREINIT:
HICON
hicon;
PPCODE:
hicon = ImageList_GetIcon(handle, index, flags);
if
(hicon == NULL) XSRETURN_UNDEF;
XPUSHs(CreateObjectWithHandle(NOTXSCALL
"Win32::GUI::Icon"
, (
HWND
) hicon));
XSRETURN(1);
###########################################################################
# (@)METHOD:GetIconSize()
# Retrieves the dimensions of images in an image list. All images in an image list have the same dimensions.
void
GetIconSize(handle)
HIMAGELIST handle
PREINIT:
int
cx;
int
cy;
PPCODE:
if
(ImageList_GetIconSize(handle, &cx, &cy)) {
EXTEND(SP, 2);
XST_mIV(0, cx);
XST_mIV(1, cy);
XSRETURN(2);
}
else
XSRETURN_UNDEF;
###########################################################################
# (@)METHOD:Count()
# (@)METHOD:GetImageCount()
# Returns the number of images in the ImageList.
int
GetImageCount(handle)
HIMAGELIST handle
ALIAS:
Win32::GUI::ImageList::Count = 1
CODE:
RETVAL = ImageList_GetImageCount(handle);
OUTPUT:
RETVAL
# TODO : ImageList_GetImageInfo
###########################################################################
# (@)METHOD:LoadImage(IMAGE,CX,[FLAG=LR_LOADFROMFILE],[TYPE=IMAGE_BITMAP],[COLORMASK=CLR_DEFAULT],[HINSTANCE=NULL],[GROW=1])
# (@)METHOD:newFromImage(IMAGE,CX,[FLAG=LR_LOADFROMFILE],[TYPE=IMAGE_BITMAP],[COLORMASK=CLR_DEFAULT],[HINSTANCE=NULL],[GROW=1])
# Return a new Win32::GUI::ImageList object.
void
LoadImage (pbmp, cx, uFlags=LR_LOADFROMFILE, uType=IMAGE_BITMAP, crMask=CLR_DEFAULT, hi=NULL, cGrow=1)
SV* pbmp
int
cx
UINT
uFlags
UINT
uType
COLORREF
crMask
HINSTANCE
hi
int
cGrow
ALIAS:
Win32::GUI::ImageList::newFromImage = 1
PREINIT:
HIMAGELIST handle;
LPCTSTR
lpbmp;
PPCODE:
if
(SvPOK(pbmp))
lpbmp = SvPV_nolen(pbmp);
else
lpbmp = MAKEINTRESOURCE(SvIV(pbmp));
handle = ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, uType, uFlags);
if
(handle == NULL) XSRETURN_UNDEF;
XPUSHs(CreateObjectWithHandle(NOTXSCALL
"Win32::GUI::ImageList"
, (
HWND
) handle));
XSRETURN(1);
###########################################################################
# (@)METHOD:Merge(INDEX1,INDEX2, DX,DY,[IMAGELIST=SELF])
# Creates a new image by combining two existing images. The function also creates a new image list in which to store the image.
# Return a new Win32::GUI::ImageList object.
void
Merge(handle,i1,i2,dx,dy,handle2=handle)
HIMAGELIST handle
int
i1
int
i2
int
dx
int
dy
HIMAGELIST handle2
PREINIT:
HIMAGELIST hnew;
PPCODE:
hnew = ImageList_Merge(handle,i1,handle2,i2,dx,dy);
if
(hnew == NULL) XSRETURN_UNDEF;
XPUSHs(CreateObjectWithHandle(NOTXSCALL
"Win32::GUI::ImageList"
, (
HWND
) hnew));
XSRETURN(1);
# TODO : ImageList_Read
###########################################################################
# (@)METHOD:Remove(INDEX)
# Removes the specified zero-based INDEX image from the ImageList.
int
Remove(handle,index)
HIMAGELIST handle
int
index
CODE:
RETVAL = ImageList_Remove(handle, index);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Replace(INDEX, BITMAP, [BITMAPMASK])
# Replaces the specified zero-based INDEX image with the image specified
# by BITMAP (must be a Win32::GUI::Bitmap object). BITMAPMASK is optional.
int
Replace(handle, index, bitmap, bitmapMask=NULL)
HIMAGELIST handle
int
index
HBITMAP
bitmap
HBITMAP
bitmapMask
CODE:
RETVAL = ImageList_Replace(handle, index, bitmap, bitmapMask);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:ReplaceIcon(INDEX, ICON)
# Replaces the specified zero-based INDEX image with the icon specified
# by ICON (must be a Win32::GUI::Icon object).
int
ReplaceIcon(handle, index, icon)
HIMAGELIST handle
int
index
HICON
icon
CODE:
RETVAL = ImageList_ReplaceIcon(handle, index, icon);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:SetBkColor(COLOR)
# Sets the background color for an image list.
COLORREF
SetBkColor(handle, color)
HIMAGELIST handle
COLORREF
color
CODE:
RETVAL = ImageList_SetBkColor(handle, color);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:SetDragCursorImage(INDEX, X, Y)
# Creates a new drag image by combining the specified image (typically a
# mouse cursor image) with the current drag image.
BOOL
SetDragCursorImage(handle, index, x, y)
HIMAGELIST handle
int
index
int
x
int
y
CODE:
RETVAL = ImageList_SetDragCursorImage(handle, index, x, y);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:SetIconSize(CX, CY)
# Sets the dimensions of images in an image list and removes all images from the list.
BOOL
SetIconSize(handle, x, y)
HIMAGELIST handle
int
x
int
y
CODE:
RETVAL = ImageList_SetIconSize(handle, x, y);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:SetImageCount(COUNT)
# Resizes an existing image list.
BOOL
SetImageCount(handle, count)
HIMAGELIST handle
UINT
count
CODE:
RETVAL = ImageList_SetImageCount(handle, count);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:SetOverlayImage(INDEX, OVERLAY)
# Adds a specified image to the list of images to be used as overlay masks.
BOOL
SetOverlayImage(handle, index, overlay)
HIMAGELIST handle
int
index
int
overlay
CODE:
RETVAL = ImageList_SetOverlayImage(handle, index, overlay);
OUTPUT:
RETVAL
# TODO : ImageList_Write
###########################################################################
# (@)METHOD:AddIcon(ICON)
# Add a icon specified by ICON (must be a Win32::GUI::Icon object).
int
AddIcon(handle, icon)
HIMAGELIST handle
HICON
icon
CODE:
RETVAL = ImageList_AddIcon(handle, icon);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Clear()
# (@)METHOD:RemoveAll()
# Removes all the images from the ImageList.
int
RemoveAll(handle)
HIMAGELIST handle
ALIAS:
Win32::GUI::ImageList::Clear = 1
CODE:
RETVAL = ImageList_RemoveAll(handle);
OUTPUT:
RETVAL
###########################################################################
###########################################################################
###########################################################################
###########################################################################
# (@)METHOD:BackColor([COLOR])
# Gets or sets the background color for the ImageList.
int
BackColor(handle,color=(
COLORREF
) -1)
HIMAGELIST handle
COLORREF
color
CODE:
if
(items == 2) {
RETVAL = ImageList_SetBkColor(handle, color);
}
else
RETVAL = ImageList_GetBkColor(handle);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Size([X, Y])
# Gets or sets the size of the images in the ImageList;
# if no parameter is given, returns a 2 element array (X, Y),
# otherwise sets the size to the given parameters.
# If X and Y is given, also removes all images from the list.
void
Size(handle,...)
HIMAGELIST handle
PREINIT:
int
cx, cy;
BOOL
result;
PPCODE:
if
(items != 1 && items != 3)
croak(
"Usage: Size(handle);\n or: Size(handle, x, y);\n"
);
if
(items == 1) {
if
(ImageList_GetIconSize(handle, &cx, &cy)) {
EXTEND(SP, 2);
XST_mIV(0, cx);
XST_mIV(1, cy);
XSRETURN(2);
}
else
XSRETURN_UNDEF;
}
else
{
result = ImageList_SetIconSize(handle, (
int
) SvIV(ST(1)), (
int
) SvIV(ST(2)));
EXTEND(SP, 1);
XST_mIV(0, result);
XSRETURN(1);
}
###########################################################################
# (@)INTERNAL:DESTROY(HANDLE)
BOOL
DESTROY(handle)
HIMAGELIST handle
CODE:
RETVAL = ImageList_Destroy(handle);
OUTPUT:
RETVAL
###########################################################################
###########################################################################
###########################################################################
###########################################################################
# (@)METHOD:DragEnter(WINDOW, X, Y)
# Locks updates to the specified window during a drag operation and displays
# the drag image at the specified position within the window.
#
# Class method : Win32::GUI::ImageList::DragEnter($window, $x, $y)
BOOL
DragEnter(handle, x, y)
HWND
handle
int
x
int
y
CODE:
RETVAL = ImageList_DragEnter(handle, x, y);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:DragLeave(WINDOW)
# Unlocks the specified window and hides the drag image, allowing the window
# to be updated.
#
# Class method : Win32::GUI::ImageList::DragLeave($window)
BOOL
DragLeave(handle)
HWND
handle
CODE:
RETVAL = ImageList_DragLeave(handle);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:DragMove(X, Y)
# Locks updates to the specified window during a drag operation and displays
# the drag image at the specified position within the window.
#
# Class method : Win32::GUI::ImageList::DragMove($x, $y)
BOOL
DragMove(x, y)
int
x
int
y
CODE:
RETVAL = ImageList_DragMove(x, y);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:DragShowNolock(FLAG)
# Shows or hides the image being dragged.
#
# Class method : Win32::GUI::ImageList::DragShowNolock($flag)
BOOL
DragShowNolock(flag)
BOOL
flag
CODE:
RETVAL = ImageList_DragShowNolock(flag);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:EndDrag()
# Ends a drag operation.
#
# Class method : Win32::GUI::ImageList::EndDrag()
void
EndDrag()
CODE:
ImageList_EndDrag();
###########################################################################
# (@)METHOD:GetDragImage()
# Retrieves the temporary image list that is used for the drag image.
#
# Class method : Win32::GUI::ImageList::GetDragImage()
HIMAGELIST
GetDragImage()
CODE:
RETVAL = ImageList_GetDragImage(NULL,NULL);
OUTPUT:
RETVAL