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); }
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); }
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); } } }
BOOL CImage::SelObject(LPOBJECT lpObject, LPRECT lpRect, BOOL fExtendedSel, BOOL fExcludeBase) { BOOL fSelected, fSelect; // deselect anything currently selected if not an extended selection if (!fExtendedSel) ObjDeselectAll(&ObjList); // Try to select a new object(s) fSelected = SelectObjects(lpObject, lpRect, YES, NO, fExcludeBase); // nothing selected and not extended select mode, we're done if (!fSelected && !fExtendedSel) return(FALSE); // if we couldn't select something, try to deselect something instead, // but only if we are in extended select mode if (fSelected) fSelect = YES; else { fSelected = SelectObjects(lpObject, lpRect, NO, NO, fExcludeBase); fSelect = NO; } // nothing selected or deselected, we're done if (!fSelected) return(FALSE); // if we are selecting/unselecting we need to make sure all // grouped objects have the same select/unselect state AdjustGroupSelection(fSelect); return(fSelected); }