Changeset - r13724:41afe95f0bfb
[Not reviewed]
master
0 1 0
rubidium - 15 years ago 2009-11-23 19:53:58
rubidium@openttd.org
(svn r18259) -Codechange: make the graphs big font aware
1 file changed with 52 insertions and 12 deletions:
0 comments (0 inline, 0 general)
src/graph_gui.cpp
Show inline comments
 
@@ -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();
 
	}
 

	
 
		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;
 
	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);
 

	
 
		this->DrawGraph(r);
 
				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;
 
		}
 

	
 
		SetDParam(0, this->format_str_y_axis);
 
		SetDParam(1, INT64_MAX);
 
		uint y_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL).width;
 

	
 
		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 : BaseGra
 

	
 
	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 : BaseGra
 

	
 
	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;
0 comments (0 inline, 0 general)