(svn r18259) -Codechange: make the graphs big font aware

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
rubidium 15 years ago
parent f9fd176ce4
commit 2ee87ce100

@ -255,7 +255,7 @@ protected:
* Actually draw the graph.
* @param r the rectangle of the data field of the graph
*/
void DrawGraph(Rect &r) const
void DrawGraph(Rect r) const
{
uint x, y; ///< Reused whenever x and y coordinates are needed.
OverflowSafeInt64 highest_value; ///< Highest value to be drawn.
@ -454,25 +454,59 @@ protected:
void InitializeWindow(const WindowDesc *desc, WindowNumber number)
{
this->InitNested(desc, number);
/* Initialise the dataset */
this->UpdateStatistics(true);
this->InitNested(desc, number);
}
public:
virtual void OnPaint()
{
this->DrawWidgets();
}
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
{
if (widget != this->graph_widget) return;
uint x_label_width = 0;
if (this->month != 0xFF) {
byte month = this->month;
Year year = this->year;
for (int i = 0; i < this->num_on_x_axis; i++) {
SetDParam(0, month + STR_MONTH_ABBREV_JAN);
SetDParam(1, month + STR_MONTH_ABBREV_JAN + 2);
SetDParam(2, year);
x_label_width = max(x_label_width, GetStringBoundingBox(month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH).width);
month += 3;
if (month >= 12) {
month = 0;
year++;
}
}
} else {
/* Draw the label under the data point rather than on the grid line. */
SetDParam(0, this->x_values_start + this->num_on_x_axis * this->x_values_increment);
x_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL_NUMBER).width;
}
NWidgetBase *nwid = this->GetWidget<NWidgetBase>(this->graph_widget);
Rect r;
r.left = nwid->pos_x;
r.right = nwid->pos_x + nwid->current_x - 1;
r.top = nwid->pos_y;
r.bottom = nwid->pos_y + nwid->current_y - 1;
SetDParam(0, this->format_str_y_axis);
SetDParam(1, INT64_MAX);
uint y_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL).width;
this->DrawGraph(r);
size->width = max<uint>(size->width, 5 + y_label_width + this->num_on_x_axis * (x_label_width + 5) + 9);
size->height = max<uint>(size->height, 5 + (1 + GRAPH_NUM_LINES_Y * 2 + (this->month != 0xFF ? 3 : 1)) * FONT_HEIGHT_SMALL + 4);
size->height = max<uint>(size->height, size->width / 3);
}
virtual void DrawWidget(const Rect &r, int widget) const
{
if (widget != this->graph_widget) return;
DrawGraph(r);
}
virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
@ -788,7 +822,10 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
{
if (widget < CPW_CARGO_FIRST) return;
if (widget < CPW_CARGO_FIRST) {
BaseGraphWindow::UpdateWidgetSize(widget, size, padding, fill, resize);
return;
}
const CargoSpec *cs = CargoSpec::Get(widget - CPW_CARGO_FIRST);
SetDParam(0, cs->name);
@ -801,7 +838,10 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
virtual void DrawWidget(const Rect &r, int widget) const
{
if (widget < CPW_CARGO_FIRST) return;
if (widget < CPW_CARGO_FIRST) {
BaseGraphWindow::DrawWidget(r, widget);
return;
}
const CargoSpec *cs = CargoSpec::Get(widget - CPW_CARGO_FIRST);
bool rtl = _dynlang.text_dir == TD_RTL;

Loading…
Cancel
Save