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 16TableCellFormattedValueRenderer::TableCellFormattedValueRenderer( 17 ValueFormatter* formatter) 18 : 19 fValueFormatter(formatter) 20{ 21 fValueFormatter->AcquireReference(); 22} 23 24 25TableCellFormattedValueRenderer::~TableCellFormattedValueRenderer() 26{ 27 fValueFormatter->ReleaseReference(); 28} 29 30 31Settings* 32TableCellFormattedValueRenderer::GetSettings() const 33{ 34 return fValueFormatter->GetSettings(); 35} 36 37 38void 39TableCellFormattedValueRenderer::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 53float 54TableCellFormattedValueRenderer::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