/***************************************************************************** * * (C) COPYRIGHT MICROSOFT CORPORATION, 2000 * * TITLE: listitem.cpp * * VERSION: 1.0 * * AUTHOR: RickTu * * DATE: 12/06/00 * * DESCRIPTION: Implements an item class that encapsulates each item in * the photo list. Each of these items is backed by * a CPhotoItem class. * *****************************************************************************/ #include #pragma hdrstop /***************************************************************************** CListItem -- constructors/desctructor *****************************************************************************/ CListItem::CListItem( CPhotoItem * pItem, LONG lFrame ) : _pImageInner(NULL), _bSelectedForPrinting(FALSE), _lFrameIndex(-1), _bJustAdded(TRUE), _bIsCopyItem(FALSE) { WIA_PUSH_FUNCTION_MASK((TRACE_LIST_ITEM, TEXT("CListItem::CListItem( CPhotoItem(%d), Frame(%d) )"),pItem,lFrame)); if (pItem) { pItem->AddRef(); _pImageInner = pItem; } _lFrameIndex= lFrame; } CListItem::~CListItem() { WIA_PUSH_FUNCTION_MASK((TRACE_LIST_ITEM, TEXT("CListItem::~CListItem()"))); // // Free reference to backing CPhotoItem // if (_pImageInner) { _pImageInner->Release(); } } /***************************************************************************** CListItem::GetClassBitmap Returns default icon for class (.jpg, .bmp, etc) for this item... *****************************************************************************/ HBITMAP CListItem::GetClassBitmap( const SIZE &sizeDesired ) { WIA_PUSH_FUNCTION_MASK((TRACE_LIST_ITEM,TEXT("CListItem::GetClassBitmap( size = %d,%d "),sizeDesired.cx, sizeDesired.cy )); if (_pImageInner) { return _pImageInner->GetClassBitmap( sizeDesired ); } return NULL; } /***************************************************************************** CListItem::GetThumbnailBitmap Given a desired size, return an HBITMAP of the thumbnail for a this item. The caller MUST free the HBITMAP returned from this function. *****************************************************************************/ HBITMAP CListItem::GetThumbnailBitmap( const SIZE &sizeDesired ) { WIA_PUSH_FUNCTION_MASK((TRACE_LIST_ITEM,TEXT("CListItem::GetThumbnailBitmap( size = %d,%d "),sizeDesired.cx, sizeDesired.cy )); if (_pImageInner) { return _pImageInner->GetThumbnailBitmap( sizeDesired, _lFrameIndex ); } return NULL; } /***************************************************************************** CListItem::Render Renders the given item into the Graphics that is supplied... *****************************************************************************/ HRESULT CListItem::Render( RENDER_OPTIONS * pRO ) { WIA_PUSH_FUNCTION_MASK((TRACE_LIST_ITEM,TEXT("CListItem::Render()"))); if (_pImageInner && pRO) { pRO->lFrame = _lFrameIndex; return _pImageInner->Render( pRO ); } return E_FAIL; } /***************************************************************************** CListItem::GetPIDL Returns the backing pidl for this item... *****************************************************************************/ LPITEMIDLIST CListItem::GetPIDL() { WIA_PUSH_FUNCTION_MASK((TRACE_LIST_ITEM,TEXT("CListItem::GetPIDL()"))); if (_pImageInner) { return _pImageInner->GetPIDL(); } return NULL; } /***************************************************************************** CListItem::GetFilename Returns a CSimpleStringWide that contains the file name with any frame information. Caller is responsible for freeing returned CSimpleStringWide. *****************************************************************************/ CSimpleStringWide * CListItem::GetFilename() { WIA_PUSH_FUNCTION_MASK((TRACE_LIST_ITEM,TEXT("CListItem::GetFilename()"))); if (_pImageInner) { CSimpleStringWide * str = new CSimpleStringWide( CSimpleStringConvert::WideString(CSimpleString(_pImageInner->GetFilename())) ); LONG lFrameCount = 0; HRESULT hr = _pImageInner->GetImageFrameCount( &lFrameCount ); if (str && (str->Length() > 0) && SUCCEEDED(hr) && (lFrameCount > 1)) { // // Construct suffix for pages // CSimpleString strSuffix; strSuffix.Format( IDS_FRAME_SUFFIX, g_hInst, _lFrameIndex + 1 ); // // add suffix onto the end of the string we had // str->Concat( CSimpleStringConvert::WideString( strSuffix ) ); } return str; } return NULL; } /***************************************************************************** CListItem::GetFileSize returns the size of the file, if known *****************************************************************************/ LONGLONG CListItem::GetFileSize() { WIA_PUSH_FUNCTION_MASK((TRACE_LIST_ITEM,TEXT("CListItem::GetFileSize()"))); if (_pImageInner) { return _pImageInner->GetFileSize(); } return 0; }