1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-25 14:45:09 +00:00
serenity/Userland/Applications/Magnifier/MagnifierWidget.h
TheGrizzlyDev 2905642550 Magnifier: Add colorblind preview options
Add the same preview options as the theme editor so you can test the
accessibility of anything on your desktop. Both tools share the same
shortcuts.
2021-12-28 23:59:56 +01:00

43 lines
1.1 KiB
C++

/*
* Copyright (c) 2021, Valtteri Koskivuori <vkoskiv@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/CircularQueue.h>
#include <LibGUI/Frame.h>
#include <LibGfx/Filters/ColorBlindnessFilter.h>
class MagnifierWidget final : public GUI::Frame {
C_OBJECT(MagnifierWidget);
public:
virtual ~MagnifierWidget();
void set_scale_factor(int scale_factor);
void set_color_filter(OwnPtr<Gfx::ColorBlindnessFilter>);
void pause_capture(bool pause)
{
m_pause_capture = pause;
if (!pause)
m_frame_offset_from_head = 0;
}
void display_previous_frame();
void display_next_frame();
private:
MagnifierWidget();
virtual void paint_event(GUI::PaintEvent&) override;
virtual void second_paint_event(GUI::PaintEvent&) override;
void sync();
int m_scale_factor { 2 };
OwnPtr<Gfx::ColorBlindnessFilter> m_color_filter;
RefPtr<Gfx::Bitmap> m_grabbed_bitmap;
CircularQueue<RefPtr<Gfx::Bitmap>, 512> m_grabbed_bitmaps {};
ssize_t m_frame_offset_from_head { 0 };
bool m_pause_capture { false };
};