CVirtualDevice_Drive::CVirtualDevice_Drive(const CVirtualDevice_Drive& rObject):CVirtualDeviceBase(rObject) { InitErrorHandling(); FillGroupList(); m_strVirtualDeviceName = rObject.m_strVirtualDeviceName; InitGroupList(m_pGateway); InitJournalManager(rObject.m_pJournalManager); }
BOOL CVirtualDevice_Drive::InitGateway(CStdString p_DeviceName) { DeleteGateway(); BOOL oResult = CVirtualDeviceDriveFactory::CreateInstance(p_DeviceName, m_pGateway); if(oResult) { if(m_pGateway->InitGateway()) { InitParameterSet(); InitGroupList(m_pGateway); return TRUE; } else { DeleteGateway(); return FALSE; } } return FALSE; }
BOOL AlignObjects( LPIMAGE lpImage, LPALIGNOBJECTS_PARMS lpAlignParms ) /************************************************************************/ { RECT bRect, gRect, uRect; LPOBJECT lpObject, lpGroupObject; int xOffset, yOffset, gXOffset, gYOffset, nWidth, nHeight, nCount; LFIXED hSpace, vSpace, fx, fy; WORD wGroupIDs[NUM_GROUPS]; if( !( lpImage ) ) return( FALSE ); if( !( lpObject = ImgGetBase( lpImage ) ) ) return( FALSE ); if( !( lpAlignParms->bPreview ) ) { if( !( ImgEditInit( lpImage, ET_SELOBJECTS, UT_OBJECTRECT, lpObject ) ) ) return( FALSE ); } if( lpAlignParms->RectAlign == RA_IMAGE ) { ImgGetImageRect( lpImage, &bRect ); } else { if( lpAlignParms->RectAlign == RA_MASK ) ImgGetMaskRect( lpImage, &bRect ); else ImgGetSelObjectRect( lpImage, &bRect, YES ); } ImgGetSelObjectRect( lpImage, &uRect, YES ); nWidth = RectWidth( &bRect ); nHeight = RectHeight( &bRect ); nCount = 0; InitGroupList( wGroupIDs ); while ( lpObject = ImgGetSelObject(lpImage, lpObject) ) { if( lpObject->wGroupID ) { if( !( IsPrevGroup( lpObject->wGroupID, wGroupIDs ) ) && !( IsGroupLocked( lpObject->wGroupID ) ) ) { SetGroupList( lpObject->wGroupID, wGroupIDs ); lpImage->GetGroupRect( lpObject, &gRect ); nWidth -= RectWidth( &gRect ); nHeight -= RectHeight( &gRect ); ++nCount; } } else if (!lpObject->bLocked) { nWidth -= RectWidth( &lpObject->rObject ); nHeight -= RectHeight( &lpObject->rObject ); ++nCount; } } if( nCount == 0 ) return( FALSE ); hSpace = FGET( nWidth, nCount - 1 ); vSpace = FGET( nHeight, nCount - 1 ); fx = fy = 0; InitGroupList( wGroupIDs ); lpObject = ImgGetBase( lpImage ); while ( lpObject = ImgGetSelObject(lpImage, lpObject) ) { if( lpObject->wGroupID ) { if( !( IsPrevGroup( lpObject->wGroupID, wGroupIDs ) ) && !( IsGroupLocked( lpObject->wGroupID ) ) ) { SetGroupList( lpObject->wGroupID, wGroupIDs ); lpImage->GetGroupRect( lpObject, &gRect ); ObjAlign( &bRect, &gRect, lpAlignParms, vSpace, hSpace, &gXOffset, &gYOffset, &fx, &fy ); lpGroupObject = ImgGetBase( lpImage ); while( lpGroupObject = ImgGetSelObject( lpImage, lpGroupObject ) ) { if( lpObject->wGroupID == lpGroupObject->wGroupID ) { if( !( lpAlignParms->bPreview ) ) ImgEditedObject( lpImage, lpGroupObject, IDS_UNDOOBJALIGN, NULL ); OffsetRect( &lpGroupObject->rObject, gXOffset, gYOffset ); } } } } else if (!lpObject->bLocked) { ObjAlign( &bRect, &lpObject->rObject, lpAlignParms, vSpace, hSpace, &xOffset, &yOffset, &fx, &fy ); if( !( lpAlignParms->bPreview ) ) ImgEditedObject( lpImage, lpObject, IDS_UNDOOBJALIGN, NULL ); OffsetRect( &lpObject->rObject, xOffset, yOffset ); } } ImgGetSelObjectRect( lpImage, &bRect, YES ); AstralUnionRect( &uRect, &uRect, &bRect ); UpdateImage( lpImage, &uRect, YES ); return( TRUE ); }