157e2f323SJérôme Duval/*
257e2f323SJérôme Duval * Copyright 2005, J��r��me Duval. All rights reserved.
357e2f323SJérôme Duval * Distributed under the terms of the MIT License.
457e2f323SJérôme Duval *
5ad0c65eaSJérôme Duval * Inspired by SoundCapture from Be newsletter (Media Kit Basics:
6ad0c65eaSJérôme Duval *	Consumers and Producers)
757e2f323SJérôme Duval */
857e2f323SJérôme Duval
957e2f323SJérôme Duval#ifndef VUVIEW_H
1057e2f323SJérôme Duval#define VUVIEW_H
1157e2f323SJérôme Duval
1257e2f323SJérôme Duval#include <Bitmap.h>
1357e2f323SJérôme Duval#include <View.h>
1457e2f323SJérôme Duval
1557e2f323SJérôme Duval
1657e2f323SJérôme Duvalclass VUView : public BView
1757e2f323SJérôme Duval{
1857e2f323SJérôme Duvalpublic:
1957e2f323SJérôme Duval	VUView(BRect rect, uint32 resizeFlags);
2057e2f323SJérôme Duval	~VUView();
2157e2f323SJérôme Duval	void AttachedToWindow();
2257e2f323SJérôme Duval	void DetachedFromWindow();
2357e2f323SJérôme Duval	void Draw(BRect updateRect);
2484011d23SMarcus Overhagen	void ComputeLevels(const void* data, size_t size, uint32 format);
25ad0c65eaSJérôme Duval
2657e2f323SJérôme Duvalprivate:
27ad0c65eaSJérôme Duval	void _Run();
28ad0c65eaSJérôme Duval	void _Quit();
29ad0c65eaSJérôme Duval	static int32 _RenderLaunch(void *data);
30ad0c65eaSJérôme Duval	void _RenderLoop();
3184011d23SMarcus Overhagen	template<typename T> T _ComputeNextLevel(const void *data,
32ad0c65eaSJérôme Duval		size_t size, uint32 format, int32 channel);
3357e2f323SJérôme Duval
3457e2f323SJérôme Duval	thread_id fThreadId;
3557e2f323SJérôme Duval	BBitmap *fBitmap;
3657e2f323SJérôme Duval	BView *fBitmapView;
3757e2f323SJérôme Duval	bool fQuitting;
3857e2f323SJérôme Duval	int32 fLevelCount;
3957e2f323SJérôme Duval	int32 *fCurrentLevels;
4057e2f323SJérôme Duval	int32 fChannels;
4157e2f323SJérôme Duval};
4257e2f323SJérôme Duval
4357e2f323SJérôme Duval#endif	/* VUVIEW_H */