(svn r17389) -Codechange: Add support for shaded viewports.

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
alberth 15 years ago
parent 4bbb023463
commit 0847b338c6

@ -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(Widget *widgets, int length, bool left_moving
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)

@ -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.
ND_LOWERED = 1 << NDB_LOWERED, ///< Bit value of the lowered flag.
ND_DISABLED = 1 << NDB_DISABLED, ///< Bit value of the disabled flag.
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_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 {

Loading…
Cancel
Save