Пример #1
0
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;
}
Пример #2
0
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;
}