void SeqMeasureControl::DrawOn(BRect updateRect, BView* view)
{
	BRect				b = Bounds();
	BRect				lBounds(b.left, b.top, mLeftIndent - 1, b.bottom);
	BRect				cBounds(b.left + mLeftIndent, b.top, b.right - mRightIndent, b.bottom);
	BRect				rBounds(b.right - mRightIndent + 1, b.top, b.right, b.bottom);

	AmTime				endTime = 0;
	// READ SONG BLOCK
	#ifdef AM_TRACE_LOCKS
	printf("SeqMeasureControl::DrawOn() read lock\n"); fflush(stdout);
	#endif
	const AmSong*		song = ReadLock();
	if (song) endTime = song->CountEndTime();
	ReadUnlock(song);
	// END READ SONG BLOCK

	if (mLeftIndent > 0) DrawLeftBgOn(lBounds, view, endTime);
	DrawCenterBgOn(cBounds, view, endTime);
	if (mRightIndent > 0) DrawRightBgOn(rBounds, view, endTime);

	DrawCenterOn(b, view);
	if (mLeftIndent > 0) DrawLeftOn( lBounds, view );
	if (mRightIndent > 0) DrawRightOn( rBounds, view );

	// Draw some edges
	view->SetHighColor( tint_color( mViewColor, B_LIGHTEN_2_TINT) );
	view->StrokeLine( BPoint(b.left, b.top), BPoint(b.right, b.top) );
	view->SetHighColor( 0, 0, 0 );
	view->StrokeLine( BPoint(b.left, b.top), BPoint(b.right, b.top) );
	view->StrokeLine( BPoint(b.left, b.bottom), BPoint(b.right, b.bottom) );

	float				fh = view_font_height(this);
	BRect				r(b);
	r.bottom = fh;
	mMarker[LEFT_LOOP_MARKER].DrawOn(r, view, this);
	mMarker[RIGHT_LOOP_MARKER].DrawOn(r, view, this);

	r.top = r.bottom;
	r.bottom = b.bottom;
	mMarker[POSITION_MARKER].DrawOn(r, view, this);
}
Beispiel #2
0
void HexView::Paint(const Rect &cUpdateRect)
{
	Rect cBounds(GetBounds());
	EraseRect(cBounds);
	DrawFrame(cBounds, FRAME_RECESSED);
}