xref: /haiku/src/tests/apps/miniterminal/ViewBuffer.h (revision 8b0aee9f1207f9537bc9c13714c9227403de0ebd)
1 #ifndef _VIEW_BUFFER_H_
2 #define _VIEW_BUFFER_H_
3 
4 #include <SupportDefs.h>
5 #include <View.h>
6 
7 typedef void (*resize_callback)(int32 width, int32 height, void *data);
8 
9 class ViewBuffer : public BView {
10 public:
11 							ViewBuffer(BRect frame);
12 virtual						~ViewBuffer();
13 
14 virtual	void				FrameResized(float new_width, float new_height);
15 		void				SetResizeCallback(resize_callback callback, void *data);
16 		status_t			GetSize(int32 *width, int32 *height);
17 
18 		uint8				ForegroundColor(uint8 attr);
19 		uint8				BackgroundColor(uint8 attr);
20 		rgb_color			GetPaletteEntry(uint8 index);
21 
22 		void				PutGlyph(int32 x, int32 y, uint8 glyph, uint8 attr);
23 		void				FillGlyph(int32 x, int32 y, int32 width, int32 height, uint8 glyph, uint8 attr);
24 		void				RenderGlyph(int32 x, int32 y, uint8 glyph, uint8 attr);
25 
26 virtual	void				Draw(BRect updateRect);
27 
28 		void				DrawCursor(int32 x, int32 y);
29 		void				MoveCursor(int32 x, int32 y);
30 
31 		void				Blit(int32 srcx, int32 srcy, int32 width, int32 height, int32 destx, int32 desty);
32 		void				Clear(uint8 attr);
33 
34 private:
35 		void				_RenderGlyph(int32 x, int32 y, const char* string, uint8 attr, bool fill = true);
36 
37 		int32				fColumns;
38 		int32				fRows;
39 
40 		uint16*				fGlyphGrid;
41 
42 		resize_callback		fResizeCallback;
43 		void				*fResizeCallbackData;
44 		int32				fCursorX;
45 		int32				fCursorY;
46 
47 		rgb_color			fPalette[8];
48 };
49 
50 #endif
51