コード例 #1
0
void CImage::AdjustGroupSelection(BOOL fSelect)
{
	LPOBJECT lpObject, lpNextObject;

	// if we are selecting/unselecting we need to make sure all
	// grouped objects have the same select/unselect state
	lpNextObject = NULL;
	while (lpNextObject = GetNextObject(lpNextObject, YES, NO))
   	{
    	if (lpNextObject->fSelected != fSelect)
        	continue;
    	if (!lpNextObject->wGroupID)
        	continue;
    	lpObject = NULL;
    	while (lpObject = GetNextObject(lpObject, YES, NO))
       	{
        	if (lpObject->wGroupID == lpNextObject->wGroupID)
            	ObjSelectObject((LPPRIMOBJECT)lpObject, lpNextObject->fSelected);
       	}
   	}
	// Now just make sure all grouped objects have the same select state
	lpNextObject = NULL;
	while (lpNextObject = GetNextObject(lpNextObject, YES, NO))
   	{
    	if (!lpNextObject->wGroupID)
        	continue;
    	lpObject = lpNextObject;
    	while (lpObject = GetNextObject(lpObject, YES, NO))
       	{
        	if (lpObject->wGroupID == lpNextObject->wGroupID)
            	ObjSelectObject((LPPRIMOBJECT)lpObject, lpNextObject->fSelected);
       	}
   	}
}
コード例 #2
0
void CImage::ChangeSelection(LPOBJECT lpObject, BOOL fSelect, BOOL fExtendedSel)
{
	ASSERT(lpObject != NULL);
	if (!fExtendedSel && fSelect)
    	ObjDeselectAll(&ObjList);
	ObjSelectObject((LPPRIMOBJECT)lpObject, fSelect);
	AdjustGroupSelection(fSelect);
	SetupMiniViews(NULL, YES);
}
コード例 #3
0
void CImage::InvertSelection()
{
	LPOBJECT lpObject;

	lpObject = GetBase();
	while (lpObject = GetNextObject(lpObject, YES, NO))
    	ObjSelectObject((LPPRIMOBJECT)lpObject, !lpObject->fSelected);
	SetupMiniViews(NULL, YES);          
}
コード例 #4
0
BOOL CImage::DuplicateSelObjects()
{
LPOBJECT lpDupObject;
OBJECTLIST DupList;
LPOBJECT lpObject;
RECT rUpdate;
WORD wGroupID, wOldGroupID, wLastGroupID;

if (!ImgEditInit( this, ET_OBJECT, UT_DELETEOBJECTS, GetBase() ))
    return(FALSE);

DupList.lpHead = DupList.lpTail = NULL;
lpObject = NULL;
while (lpObject = GetSelObject(lpObject))
    {
    if (!(lpDupObject = ObjDuplicateObject(lpObject)))
        {
        ObjDeleteObjects(&DupList, ST_ALL);
        return(FALSE);
        }
    ObjAddTail(&DupList, (LPPRIMOBJECT)lpDupObject);
    }
wLastGroupID = wGroupID = GetNextGroupID();
lpDupObject = NULL;
while (lpDupObject = (LPOBJECT)ObjGetNextObject(&DupList,
                    (LPPRIMOBJECT)lpDupObject, YES))
    {
    if (!lpDupObject->wGroupID || lpDupObject->wGroupID >= wLastGroupID)
        continue;
    wOldGroupID = lpDupObject->wGroupID;
    lpDupObject->wGroupID = wGroupID;
    lpObject = lpDupObject;
    while (lpObject = (LPOBJECT)ObjGetNextObject(&DupList,
                    (LPPRIMOBJECT)lpObject, YES))
        {
        if (lpObject->wGroupID == wOldGroupID)
            lpObject->wGroupID = wGroupID;
        }
    ++wGroupID;
    }

RemoveObjectMarquee(this);
ObjDeselectAll(&ObjList);
while (lpObject = (LPOBJECT)ObjGetNextObject(&DupList, NULL, YES))
    {
    ObjUnlinkObject(&DupList, (LPPRIMOBJECT)lpObject);
    ObjSelectObject( (LPPRIMOBJECT)lpObject, YES ); // Select the new object
    ObjAddTail( &ObjList, (LPPRIMOBJECT)lpObject ); // Add to the image's list
    lpObject->fUndoDeleted = YES;
    }
ImgEditedObject(this, GetBase(), IDS_UNDODUPLICATE, NULL);

GetSelObjectRect(&rUpdate, NO);
UpdateImage(this, &rUpdate, YES);
SetupMiniViews(NULL, NO);
return(TRUE);
}
コード例 #5
0
void CImage::AddNewObject(LPOBJECT lpObject, BOOL fSetObjRes)
{
LPOBJECT lpBase = GetBase();
lpObject->dwObjectID = ++dwObjectID;
ObjAddTail( &ObjList, (LPPRIMOBJECT)lpObject ); // Add to the image's list
ObjDeselectAll(&ObjList); // Deselect anything currently selected
ObjSelectObject( (LPPRIMOBJECT)lpObject, YES ); // Select the new object
if (lpBase)
	{
	if(fSetObjRes)
		{
		int res = FrameResolution(ObjGetEditFrame(lpBase));
		FrameSetResolution(ObjGetEditFrame(lpObject), res);
		if (lpObject->lpAlpha)
			FrameSetResolution(AlphaGetEditFrame(lpObject->lpAlpha), res);
		}
	}
}
コード例 #6
0
BOOL CImage::SelectObjects(LPOBJECT lpStartObject, LPRECT lpRect,
                BOOL fSelect, BOOL fBottomUp, BOOL fExcludeBase)
{
	BOOL        fHaveRect, fSelected;
	BOOL        fLoop;
	LPOBJECT    lpObject, lpBase;

	if (lpRect)
    	fHaveRect = lpRect->left < lpRect->right;
	fLoop = lpStartObject != NULL;
	lpObject = lpStartObject;
	fSelected = FALSE;
	lpBase = GetBase();
	while (lpObject = GetNextObject(lpObject, fBottomUp, fLoop))
    {
    	if (!fExcludeBase || lpObject != lpBase)
       	{
        	if (!lpRect)
           	{
            	if (fSelect != lpObject->fSelected)
               	{
                	ObjSelectObject((LPPRIMOBJECT)lpObject, fSelect);
                	fSelected = TRUE;
               	}
           	}
        	else if (fHaveRect)
           	{
             	if (lpObject->rObject.left >= lpRect->left &&
                	lpObject->rObject.right <= lpRect->right &&
                	lpObject->rObject.top >= lpRect->top &&
                	lpObject->rObject.bottom <= lpRect->bottom)
               	{
                	if (fSelect != lpObject->fSelected)
                   	{
                    	ObjSelectObject((LPPRIMOBJECT)lpObject, fSelect);
                    	fSelected = TRUE;
                   	}
               	}
           	}
        	else
           	{
            	if (AstralPtInRect(&lpObject->rObject, *((LPPOINT)lpRect)))
               	{
                	if (lpObject == lpBase || !lpObject->lpAlpha ||
                    	IsMasked(lpObject->lpAlpha,
                            	lpRect->left-lpObject->rObject.left,
                            	lpRect->top-lpObject->rObject.top))
                   	{
                    	if (fSelect != lpObject->fSelected)
                       	{
                        	ObjSelectObject((LPPRIMOBJECT)lpObject, fSelect);
                        	fSelected = TRUE;
                       	}
                    	break;
                   	}
               	}
           	}
       	}
    	if (lpObject == lpStartObject)
        	break;
    }
	return(fSelected);
}