Example #1
0
/*	FUNCTION:		ViewBook :: AttachedToWindow
	ARGUMENTS:		none
	RETURN:			n/a
	DESCRIPTION:	Hook function called when view attached to window (looper)
*/
void ViewBook :: AttachedToWindow(void)
{
	ViewObject::AttachedToWindow();
	
	LockGL();
	glClearColor(0,0,0,1);
	
	fPages[PAGE_MIDDLE] = new Paper(kPageWidth, kPageHeight, Paper::FRONT_AND_BACK_FACING);
	fPages[PAGE_LEFT] = new Paper(kPageWidth, kPageHeight, Paper::FRONT_FACING);
	fPages[PAGE_RIGHT] = new Paper(kPageWidth, kPageHeight, Paper::BACK_FACING);
	
	for (int i=0; i < NUMBER_SOURCES; i++)
		fMediaSources[i] = GetDefaultMediaSource();
	
	MediaSource *default_source = GetDefaultMediaSource();
	//	left page
	fPages[PAGE_LEFT]->SetMediaSource(Paper::FRONT_TEXTURE, fMediaSources[0]);
	//	middle page
	fPages[PAGE_MIDDLE]->SetMediaSource(Paper::FRONT_TEXTURE, fMediaSources[1]);
	fPages[PAGE_MIDDLE]->SetMediaSource(Paper::BACK_TEXTURE, fMediaSources[2]);
	//	right page
	fPages[PAGE_RIGHT]->SetMediaSource(Paper::BACK_TEXTURE, fMediaSources[3]);
	fPages[PAGE_RIGHT]->SetAngle(180);
	
	UnlockGL();
}	
Example #2
0
/*	FUNCTION:		ViewBook :: DragDropImage
	ARGUMENTS:		texture_id
					mouse_x
					mouse_y
	RETURN:			true if source ownership acquired
	DESCRIPTION:	Hook function called when user drags/drops image to app window	
*/
bool ViewBook :: SurfaceUpdate(MediaSource *source, float mouse_x, float mouse_y)
{
	Paper::TEXTURE_SIDE side = Paper::UNASSIGNED_TEXTURE;
	Paper *page = GetPage(mouse_x, mouse_y, (int *)&side);
	
	LockGL();
	int index = -1;
	if (page == fPages[PAGE_LEFT])
		index = 0;
	else if (page == fPages[PAGE_RIGHT])
		index = 3;
	else if (page == fPages[PAGE_MIDDLE])
	{
		if (side == Paper::FRONT_TEXTURE)
			index = 1;
		else if (side == Paper::BACK_TEXTURE)
			index = 2;
	}
	if (index >= 0)
	{
		if (fMediaSources[index] != GetDefaultMediaSource())
			delete fMediaSources[index];
	} 
	page->SetMediaSource(side, source);
	fMediaSources[index] = source;
	UnlockGL();
	
	return true;
}
Example #3
0
/*	FUNCTION:		ViewSphere :: DragDropImage
	ARGUMENTS:		texture_id
					mouse_x
					mouse_y
	RETURN:			true if source ownership acquired
	DESCRIPTION:	Hook function called when user drags/drops image to app window.
					TODO - actually determine exact face where refs received.  For this
					release, we only rely on current fCubeAngle.	
*/
bool ViewCube :: SurfaceUpdate(MediaSource *source, float mouse_x, float mouse_y)
{
	// determine face
	BRect frame = Bounds();
	Cube::FACE face = Cube::NUMBER_CUBE_FACES;
	
	if (mouse_y < frame.Height()*0.33f)
		face = Cube::FACE_TOP;
	else
	{
		if (fCubeAngle < 45)
			face = Cube::FACE_FRONT;
		else if (fCubeAngle < 135)
			face = Cube::FACE_LEFT;
		else if (fCubeAngle < 225)
			face = Cube::FACE_BACK;
		else if (fCubeAngle < 315)
			face = Cube::FACE_RIGHT;
		else
			face = Cube::FACE_FRONT;
	}
	if (fMediaSources[face] != GetDefaultMediaSource())
		delete fMediaSources[face];
	fMediaSources[face] = source;
	fCube->SetMediaSource(face, source);
	
	return true;
}
Example #4
0
/*	FUNCTION:		ViewCube :: ~ViewCube
	ARGUMENTS:		n/a
	RETURN:			n/a
	DESCRIPTION:	Destructor
*/
ViewCube :: ~ViewCube()
{
	delete fCube;
	for (int i=0; i < NUMBER_FACES; i++)
	{
		if (fMediaSources[i] != GetDefaultMediaSource())
			delete fMediaSources[i];
	}
}
Example #5
0
/*	FUNCTION:		ViewBook :: ~ViewBook
	ARGUMENTS:		n/a
	RETURN:			n/a
	DESCRIPTION:	Destructor
*/
ViewBook :: ~ViewBook()
{ 
	for (int i=0; i < NUMBER_SOURCES; i++)
	{
		if (fMediaSources[i] != GetDefaultMediaSource())
			delete fMediaSources[i];
	}
	
	for (int i=0; i < NUMBER_PAGES; i++)
		delete fPages[i];
}
Example #6
0
/*	FUNCTION:		ViewCube :: ViewCube
	ARGUMENTS:		none
	RETURN:			n/a
	DESCRIPTION:	Hook function called when view attached to window (looper)
*/
void ViewCube :: AttachedToWindow(void)
{
	ViewObject::AttachedToWindow();
	
	LockGL();
	glClearColor(0,0,0,1);
	
	fCube = new Cube(0.075f);
	
	for (int i=0; i < NUMBER_FACES; i++)
	{
		fMediaSources[i] = GetDefaultMediaSource();
		fCube->SetMediaSource((Cube::FACE) i, fMediaSources[i]);
	}
	
	UnlockGL();
}