Skip to content

Commit 401ea85

Browse files
metmoawesomekling
authored andcommitted
Magnifier: Add 8x magnification and pausing
This adds an option for even more magnification, when you really need to count pixels, as well as pausing the capture by pressing Space and switching between magnification levels with keys 2, 4 & 8.
1 parent 6bdd62b commit 401ea85

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

Userland/Applications/Magnifier/MagnifierWidget.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@ MagnifierWidget::~MagnifierWidget()
2222

2323
void MagnifierWidget::set_scale_factor(int scale_factor)
2424
{
25-
VERIFY(scale_factor == 2 || scale_factor == 4);
25+
VERIFY(scale_factor == 2 || scale_factor == 4 || scale_factor == 8);
2626
m_scale_factor = scale_factor;
2727
update();
2828
}
2929

3030
void MagnifierWidget::sync()
3131
{
32+
if (m_pause_capture)
33+
return;
34+
3235
auto size = frame_inner_rect().size();
3336
Gfx::IntSize grab_size { size.width() / m_scale_factor, size.height() / m_scale_factor };
3437
m_grabbed_bitmap = GUI::WindowServerConnection::the().get_screen_bitmap_around_cursor(grab_size).bitmap();

Userland/Applications/Magnifier/MagnifierWidget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class MagnifierWidget final : public GUI::Frame {
1414
public:
1515
virtual ~MagnifierWidget();
1616
void set_scale_factor(int scale_factor);
17+
void pause_capture(bool pause) { m_pause_capture = pause; }
1718

1819
private:
1920
MagnifierWidget();
@@ -24,4 +25,5 @@ class MagnifierWidget final : public GUI::Frame {
2425

2526
int m_scale_factor { 2 };
2627
RefPtr<Gfx::Bitmap> m_grabbed_bitmap;
28+
bool m_pause_capture { false };
2729
};

Userland/Applications/Magnifier/main.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,24 +56,39 @@ int main(int argc, char** argv)
5656
auto size_action_group = make<GUI::ActionGroup>();
5757

5858
auto two_x_action = GUI::Action::create_checkable(
59-
"&2x", [&](auto&) {
59+
"&2x", { Key_2 }, [&](auto&) {
6060
magnifier.set_scale_factor(2);
6161
});
6262

6363
auto four_x_action = GUI::Action::create_checkable(
64-
"&4x", [&](auto&) {
64+
"&4x", { Key_4 }, [&](auto&) {
6565
magnifier.set_scale_factor(4);
6666
});
6767

68+
auto eight_x_action = GUI::Action::create_checkable(
69+
"&8x", { Key_8 }, [&](auto&) {
70+
magnifier.set_scale_factor(8);
71+
});
72+
73+
auto pause_action = GUI::Action::create_checkable(
74+
"&Pause Capture", { Key_Space }, [&](auto& action) {
75+
magnifier.pause_capture(action.is_checked());
76+
});
77+
6878
size_action_group->add_action(two_x_action);
6979
size_action_group->add_action(four_x_action);
80+
size_action_group->add_action(eight_x_action);
7081
size_action_group->set_exclusive(true);
7182

7283
auto& view_menu = window->add_menu("&View");
7384
view_menu.add_action(two_x_action);
7485
view_menu.add_action(four_x_action);
86+
view_menu.add_action(eight_x_action);
7587
two_x_action->set_checked(true);
7688

89+
view_menu.add_separator();
90+
view_menu.add_action(pause_action);
91+
7792
auto& help_menu = window->add_menu("&Help");
7893
help_menu.add_action(GUI::CommonActions::make_about_action("Magnifier", app_icon, window));
7994

0 commit comments

Comments
 (0)