mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-24 00:20:21 +00:00
41859ad3fe
An Overlay is similar to a transparent window, but has less overhead and does not get rendered within the window stack. Basically, the area that an Overlay occupies forces transparency rendering for any window underneath, which allows us to render them flicker-free. This also adds a new API that allows displaying the screen numbers, e.g. while the user configures the screen layout in DisplaySettings Because other things like drag&drop or the window-size label are not yet converted to use this new mechanism, they will be drawn over the screen-number currently.
35 lines
1 KiB
C++
35 lines
1 KiB
C++
/*
|
|
* Copyright (c) 2020, the SerenityOS developers.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/HashMap.h>
|
|
#include <AK/RefCounted.h>
|
|
#include <AK/RefPtr.h>
|
|
#include <LibGfx/Bitmap.h>
|
|
|
|
namespace WindowServer {
|
|
|
|
class MultiScaleBitmaps : public RefCounted<MultiScaleBitmaps> {
|
|
public:
|
|
static RefPtr<MultiScaleBitmaps> create_empty();
|
|
static RefPtr<MultiScaleBitmaps> create(StringView const& filename, StringView const& default_filename = {});
|
|
|
|
Gfx::Bitmap const& default_bitmap() const { return bitmap(1); }
|
|
Gfx::Bitmap const& bitmap(int scale_factor) const;
|
|
Gfx::Bitmap const* find_bitmap(int scale_factor) const;
|
|
Gfx::BitmapFormat format() const { return m_format; }
|
|
bool load(StringView const& filename, StringView const& default_filename = {});
|
|
void add_bitmap(int scale_factor, NonnullRefPtr<Gfx::Bitmap>&&);
|
|
|
|
private:
|
|
MultiScaleBitmaps() = default;
|
|
|
|
HashMap<int, NonnullRefPtr<Gfx::Bitmap>> m_bitmaps;
|
|
Gfx::BitmapFormat m_format { Gfx::BitmapFormat::Invalid };
|
|
};
|
|
|
|
}
|