bool complex::InsertCube(block* b) { bitcode* bc=new bitcode(BC(b).Bits()); bc->SetAs(BC(b)); cubes.Insert(*bc,b); if (previous_cube==NULL) { previous_cube=new bitcode(cube_bits); previous_cube->SetAs(bc); delete bc; return true; } // assert(previous_cube->Bits()==cube_bits); node* simplifiable_node; block* simplifiable_block; int levels=Ancestor(bc,previous_cube); while (levels>=DIM) { for (int j=0; j<DIM; ++j) (*previous_cube)++; levels-=DIM; simplifiable_node=cubes.Find(*previous_cube); simplifiable_block=Merge(simplifiable_node); Simplify(simplifiable_block); } delete previous_cube; previous_cube=new bitcode(cube_bits); previous_cube->SetAs(*bc); delete bc; return true; }
status_t BScrollBar::SetTarget(BView *target) { if (target == this) return B_ERROR; if (target == fTarget) return B_OK; if (target != NULL) { if (!(target->Ancestor() == Ancestor() || (target->Window() == Window() && Window() != NULL))) { ETK_WARNING("[INTERFACE]: %s --- target hasn't same ancestor as this.", __PRETTY_FUNCTION__); return B_BAD_VALUE; } if (target->fScrollBar.AddItem(this) == false) return B_ERROR; } if (fTarget != NULL) fTarget->fScrollBar.RemoveItem(this); fTarget = target; if (fTarget != NULL) { if (fOrientation == B_HORIZONTAL) fTarget->ScrollTo(fValue, fTarget->LeftTop().y); else fTarget->ScrollTo(fTarget->LeftTop().x, fValue); } return B_OK; }