xref: /haiku/src/apps/debugger/user_interface/gui/value/TableCellFormattedValueRenderer.cpp (revision ca8ed5ea660fb6275799a3b7f138b201c41a667b)
1 /*
2  * Copyright 2014-2015, Rene Gollent, rene@gollent.com.
3  * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
4  * Distributed under the terms of the MIT License.
5  */
6 
7 
8 #include "TableCellFormattedValueRenderer.h"
9 
10 #include <String.h>
11 
12 #include "TableCellValueRendererUtils.h"
13 #include "ValueFormatter.h"
14 
15 
16 TableCellFormattedValueRenderer::TableCellFormattedValueRenderer(
17 	ValueFormatter* formatter)
18 	:
19 	fValueFormatter(formatter)
20 {
21 	fValueFormatter->AcquireReference();
22 }
23 
24 
25 TableCellFormattedValueRenderer::~TableCellFormattedValueRenderer()
26 {
27 	fValueFormatter->ReleaseReference();
28 }
29 
30 
31 Settings*
32 TableCellFormattedValueRenderer::GetSettings() const
33 {
34 	return fValueFormatter->GetSettings();
35 }
36 
37 
38 void
39 TableCellFormattedValueRenderer::RenderValue(Value* value, bool valueChanged,
40 	BRect rect, BView* targetView)
41 {
42 	BString output;
43 
44 	if (fValueFormatter->FormatValue(value, output) != B_OK)
45 		return;
46 
47 	// render
48 	TableCellValueRendererUtils::DrawString(targetView, rect, output,
49 		valueChanged, B_ALIGN_RIGHT, true);
50 }
51 
52 
53 float
54 TableCellFormattedValueRenderer::PreferredValueWidth(Value* value, BView* targetView)
55 {
56 	BString output;
57 
58 	if (fValueFormatter->FormatValue(value, output) != B_OK)
59 		return 0;
60 
61 	// render
62 	return TableCellValueRendererUtils::PreferredStringWidth(targetView,
63 		output);
64 }
65