void ObjAddTail(LPOBJECTLIST lpObjList, LPOBJECT lpObject) /************************************************************************/ { if (lpObjList->lpTail) { // link the new object in ObjLinkObject(lpObjList, lpObjList->lpTail, lpObject, YES); } else { lpObjList->lpHead = lpObject; lpObjList->lpTail = lpObject; } }
void CImage::AdjustLayerObject(LPOBJECT lpObject, LPOBJECT lpToObject, BOOL fAfter) { LPOBJECT lpBase; if (!lpObject || !lpToObject) return; if (lpObject == lpToObject) return; lpBase = GetBase(); if (lpObject == lpBase || lpToObject == lpBase) return; ObjUnlinkObject(&ObjList, (LPPRIMOBJECT)lpObject); ObjLinkObject(&ObjList, (LPPRIMOBJECT)lpToObject, (LPPRIMOBJECT)lpObject, fAfter); SetupMiniViews(NULL, NO); }
void CImage::AdjustLayerSelObj(BOOL fToTop, BOOL fOneLevel) { LPOBJECT lpObject, lpFirstObject, lpNext, lpBase, lpLinkObject; lpBase = GetBase(); if (fToTop) lpObject = GetNextObject(lpBase, YES, NO); else lpObject = GetNextObject(NULL, NO, NO); if (fOneLevel) { while (lpObject && lpObject != lpBase) { // find first selected object if (!lpObject->fSelected) { lpObject = GetNextObject(lpObject, fToTop, NO); continue; } // got a selected object, now find next unselected object to link after lpLinkObject = GetNextObject(lpObject, fToTop, NO); while (lpLinkObject && lpLinkObject->fSelected) lpLinkObject = GetNextObject(lpLinkObject, fToTop, NO); // if no unselected objects to link before or after, nothing to do if (!lpLinkObject) break; // can't move objects below base if (lpLinkObject == lpBase && !fToTop) break; // now move all consecutive selected objects up/down one level while (lpObject && lpObject->fSelected) { lpNext = GetNextObject(lpObject, fToTop, NO); ObjUnlinkObject(&ObjList, (LPPRIMOBJECT)lpObject); ObjLinkObject(&ObjList, (LPPRIMOBJECT)lpLinkObject, (LPPRIMOBJECT)lpObject, fToTop); lpLinkObject = lpObject; lpObject = lpNext; } lpObject = GetNextObject(lpLinkObject, fToTop, NO); } } else { // find first selected object while (lpObject) { if (lpObject->fSelected) break; lpObject = GetNextObject(lpObject, fToTop, NO); } lpFirstObject = lpObject; while (lpObject) { lpNext = GetNextObject(lpObject, fToTop, NO); if (lpObject->fSelected && (lpObject != lpBase)) { ObjUnlinkObject(&ObjList, (LPPRIMOBJECT)lpObject); if (fToTop) ObjLinkObject(&ObjList, (LPPRIMOBJECT)ObjList.lpTail, (LPPRIMOBJECT)lpObject, YES); else ObjLinkObject(&ObjList, (LPPRIMOBJECT)ObjList.lpHead, (LPPRIMOBJECT)lpObject, YES); } lpObject = lpNext; if (lpObject == lpFirstObject) break; } } }