openMSX
Layer.hh
Go to the documentation of this file.
1#ifndef LAYER_HH
2#define LAYER_HH
3
4namespace openmsx {
5
6class OutputSurface;
7class LayerListener;
8
11class Layer
12{
13public:
25
41
42 virtual ~Layer() = default;
43
46 virtual void paint(OutputSurface& output) = 0;
47
50 [[nodiscard]] ZIndex getZ() const { return z; }
51 [[nodiscard]] bool isActive() const { return getZ() == Z_MSX_ACTIVE; }
52
55 [[nodiscard]] Coverage getCoverage() const { return coverage; }
56
60 void setDisplay(LayerListener& display_) { display = &display_; }
61
62protected:
64 explicit Layer(Coverage coverage_ = COVER_NONE, ZIndex z_ = Z_DUMMY)
65 : coverage(coverage_), z(z_)
66 {
67 }
68
71 void setCoverage(Coverage coverage_) { coverage = coverage_; }
72
75 void setZ(ZIndex z);
76
77private:
79 LayerListener* display = nullptr;
80
82 Coverage coverage;
83
87 ZIndex z;
88
89 friend class ScopedLayerHider; // for setCoverage()
90};
91
92
94{
95public:
96 explicit ScopedLayerHider(Layer& layer);
98private:
99 Layer& layer;
100 Layer::Coverage originalCoverage;
101};
102
103} // namespace openmsx
104
105#endif
Interface for display layers.
Definition Layer.hh:12
Coverage
Describes how much of the screen is currently covered by a particular layer.
Definition Layer.hh:29
@ COVER_FULL
Layer fully covers the screen: any underlying layers are invisible.
Definition Layer.hh:32
@ COVER_PARTIAL
Layer partially covers the screen: it may cover only part of the screen area, or it may be (semi-)tra...
Definition Layer.hh:36
@ COVER_NONE
Layer is not visible, that is completely transparent.
Definition Layer.hh:39
Layer(Coverage coverage_=COVER_NONE, ZIndex z_=Z_DUMMY)
Construct a layer.
Definition Layer.hh:64
Coverage getCoverage() const
Query the coverage of this layer.
Definition Layer.hh:55
virtual void paint(OutputSurface &output)=0
Paint this layer.
virtual ~Layer()=default
void setZ(ZIndex z)
Changes the current Z-index of this layer.
Definition Layer.cc:6
void setDisplay(LayerListener &display_)
Store pointer to Display.
Definition Layer.hh:60
ZIndex
Determines stacking order of layers: layers with higher Z-indices are closer to the viewer.
Definition Layer.hh:17
ZIndex getZ() const
Query the Z-index of this layer.
Definition Layer.hh:50
void setCoverage(Coverage coverage_)
Changes the current coverage of this layer.
Definition Layer.hh:71
bool isActive() const
Definition Layer.hh:51
A frame buffer where pixels can be written to.
This file implemented 3 utility functions:
Definition Autofire.cc:9