Changeset - r12887:48b4bf9cde59
[Not reviewed]
master
0 2 0
alberth - 15 years ago 2009-09-02 20:28:41
alberth@openttd.org
(svn r17389) -Codechange: Add support for shaded viewports.
2 files changed with 28 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/widget.cpp
Show inline comments
 
@@ -10,6 +10,7 @@
 
/** @file widget.cpp Handling of the default/simple widgets. */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "company_func.h"
 
#include "gfx_func.h"
 
#include "window_gui.h"
 
@@ -17,6 +18,7 @@
 
#include "zoom_func.h"
 
#include "debug.h"
 
#include "strings_func.h"
 
#include "transparency.h"
 

	
 
#include "table/sprites.h"
 
#include "table/strings.h"
 
@@ -1866,7 +1868,20 @@ void NWidgetViewport::StoreWidgets(Widge
 

	
 
void NWidgetViewport::Draw(const Window *w)
 
{
 
	w->DrawViewport();
 
	if (this->disp_flags & ND_NO_TRANSPARENCY) {
 
		TransparencyOptionBits to_backup = _transparency_opt;
 
		_transparency_opt = 0; // Disable all transparency
 
		w->DrawViewport();
 
		_transparency_opt = to_backup;
 
	} else {
 
		w->DrawViewport();
 
	}
 

	
 
	/* Optionally shade the viewport. */
 
	if (this->disp_flags & (ND_SHADE_GREY | ND_SHADE_DIMMED)) {
 
		GfxFillRect(this->pos_x, this->pos_y, this->pos_x + this->current_x - 1, this->pos_y + this->current_y - 1,
 
				(this->disp_flags & ND_SHADE_DIMMED) ? PALETTE_TO_TRANSPARENT : PALETTE_TO_STRUCT_GREY, FILLRECT_RECOLOUR);
 
	}
 
}
 

	
 
Scrollbar *NWidgetViewport::FindScrollbar(Window *w, bool allow_next)
src/widget_type.h
Show inline comments
 
@@ -281,11 +281,17 @@ public:
 

	
 
/** Nested widget flags that affect display and interaction withe 'real' widgets. */
 
enum NWidgetDisplay {
 
	NDB_LOWERED  = 0, ///< Widget is lowered (pressed down) bit.
 
	NDB_DISABLED = 1, ///< Widget is disabled (greyed out) bit.
 
	NDB_LOWERED         = 0, ///< Widget is lowered (pressed down) bit.
 
	NDB_DISABLED        = 1, ///< Widget is disabled (greyed out) bit.
 
	NDB_NO_TRANSPARENCY = 2, ///< Viewport is never transparent.
 
	NDB_SHADE_GREY      = 3, ///< Shade viewport to grey-scale.
 
	NDB_SHADE_DIMMED    = 4, ///< Display dimmed colours in the viewport.
 

	
 
	ND_LOWERED  = 1 << NDB_LOWERED,  ///< Bit value of the lowered flag.
 
	ND_DISABLED = 1 << NDB_DISABLED, ///< Bit value of the disabled flag.
 
	ND_LOWERED  = 1 << NDB_LOWERED,                ///< Bit value of the lowered flag.
 
	ND_DISABLED = 1 << NDB_DISABLED,               ///< Bit value of the disabled flag.
 
	ND_NO_TRANSPARENCY = 1 << NDB_NO_TRANSPARENCY, ///< Bit value of the 'no transparency' flag.
 
	ND_SHADE_GREY      = 1 << NDB_SHADE_GREY,      ///< Bit value of the 'shade to grey' flag.
 
	ND_SHADE_DIMMED    = 1 << NDB_SHADE_DIMMED,    ///< Bit value of the 'dimmed colours' flag.
 
};
 
DECLARE_ENUM_AS_BIT_SET(NWidgetDisplay);
 

	
 
@@ -488,6 +494,8 @@ private:
 
 * Nested widget to display a viewport in a window.
 
 * After initializing the nested widget tree, call #InitializeViewport(). After changing the window size,
 
 * call #UpdateViewportCoordinates() eg from Window::OnResize().
 
 * If the #display_flags field contains the #ND_NO_TRANSPARENCY bit, the viewport will disable transparency.
 
 * Shading to grey-scale is controlled with the #ND_SHADE_GREY bit (used for B&W news papers), the #ND_SHADE_DIMMED gives dimmed colours (for colour news papers).
 
 * @todo Class derives from #NWidgetCore, but does not use #colour, #widget_data, or #tool_tip.
 
 * @ingroup NestedWidgets */
 
class NWidgetViewport : public NWidgetCore {
0 comments (0 inline, 0 general)