Skip to content

Added eraser tool with pixel and stroke modes in ZoomIt suite#48524

Open
bhaimicrosoft wants to merge 2 commits into
microsoft:mainfrom
bhaimicrosoft:imukherjee/eraser
Open

Added eraser tool with pixel and stroke modes in ZoomIt suite#48524
bhaimicrosoft wants to merge 2 commits into
microsoft:mainfrom
bhaimicrosoft:imukherjee/eraser

Conversation

@bhaimicrosoft

@bhaimicrosoft bhaimicrosoft commented Jun 12, 2026

Copy link
Copy Markdown

Summary of the Pull Request

Introduces an eraser tool to ZoomIt with pixel and stroke erase modes, toggled via Shift+E. The eraser uses a click-to-toggle model, supports size adjustment with Ctrl+wheel, and displays a custom glyph and mode popup. UI and resources updated to document the feature. Not available in LiveDraw mode. Undo/redo logic updated for erasing actions.

PR Checklist

  • Closes: #xxx
  • Communication: I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected
  • Tests: Added/updated and all pass
  • Localization: All end-user-facing strings can be localized
  • Dev docs: Added/updated
  • New binaries: Added on the required places
  • Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

bhaimicrosoft and others added 2 commits June 12, 2026 12:06
Introduces an eraser tool to ZoomIt with pixel and stroke erase modes, toggled via Shift+E. The eraser uses a click-to-toggle model, supports size adjustment with Ctrl+wheel, and displays a custom glyph and mode popup. UI and resources updated to document the feature. Not available in LiveDraw mode. Undo/redo logic updated for erasing actions.
@bhaimicrosoft bhaimicrosoft changed the title Add eraser tool with pixel and stroke modes Added eraser tool with pixel and stroke modes in ZoomIt suite Jun 12, 2026
if( dx == 0 && dy == 0 ) continue;
int nx = px + dx;
if( nx < 0 || nx >= width ) continue;
int nidx = ny * width + nx;
int nx = px + dx;
if( nx < 0 || nx >= width ) continue;
int nidx = ny * width + nx;
if( visited[nidx] ) continue;
if( nx < 0 || nx >= width ) continue;
int nidx = ny * width + nx;
if( visited[nidx] ) continue;
visited[nidx] = 1;
int nidx = ny * width + nx;
if( visited[nidx] ) continue;
visited[nidx] = 1;
if( EraserPixelDiffers( cur[nidx], base[nidx] ) )
int nidx = ny * width + nx;
if( visited[nidx] ) continue;
visited[nidx] = 1;
if( EraserPixelDiffers( cur[nidx], base[nidx] ) )

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#include <rpc.h>
#include <rpcndr.h>

#ifndef __RPCNDR_H_VERSION__
#include <rpcndr.h>

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif /* __RPCNDR_H_VERSION__ */



#if defined(__cplusplus) && !defined(CINTERFACE)
@github-actions

Copy link
Copy Markdown

@check-spelling-bot Report

🔴 Please review

See the 📂 files view, the 📜action log, 👼 SARIF report, or 📝 job summary for details.

Unrecognized words (5)

CINTERFACE
MIDLRT
nidx
rpcndr
rpcsal

Some files were automatically ignored 🙈

These sample patterns would exclude them:

^src/modules/ZoomIt/ZoomIt/rnnoise/rnnoise_data_little\.c$
^src/modules/ZoomIt/ZoomIt/selfie_segmentation\.onnx$

You should consider adding them to:

.github/actions/spell-check/excludes.txt

File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use patterns.txt to exclude portions, add items to the dictionary (e.g. by adding them to allow.txt), or fix typos.

To accept these unrecognized words as correct and update file exclusions, you could run the following commands

... in a clone of the git@github.com:bhaimicrosoft/PowerToys.git repository
on the imukherjee/eraser branch (ℹ️ how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/cfb6f7e75bbfc89c71eaa30366d0c166f1bd9c8c/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/27400296575/attempts/1' &&
git commit -m 'Update check-spelling metadata'

Forbidden patterns 🙅 (1)

In order to address this, you could change the content to not match the forbidden patterns (comments before forbidden patterns may help explain why they're forbidden), add patterns for acceptable instances, or adjust the forbidden patterns themselves.

These forbidden patterns matched content:

Should be a
\san (?=(?:[b-dfgjklpqtvwz]|h(?!onou?r|our|s[lv]|tml|ttp|ref)|n(?!ginx|grok|pm)|r(?!c)|s(?!s[ho]|vg))[a-z]|x(?!\b|[-\d]|ml))
Errors and Warnings ❌ (4)

See the 📂 files view, the 📜action log, 👼 SARIF report, or 📝 job summary for details.

❌ Errors and Warnings Count
⚠️ binary-file 1
⚠️ duplicate-pattern 2
❌ forbidden-pattern 1
⚠️ large-file 1

See ❌ Event descriptions for more information.

If the flagged items are 🤯 false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it,
    try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants