Skip to content

Commit e1e9e6d

Browse files
committed
Fix: grammatical mistakes
1 parent 3fc6ced commit e1e9e6d

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

_posts/2025-10-04-integrating-the-rizin-mark-api-rsoc.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ post_image: "/assets/images/blog/posts/inetgrating-the-rizin-mark-api-rsoc/cover
99
description: "Marks in Cutter are now visual and easier to manage with tooltips, colors, and overlapping support in the Hexdump. Read about the new feature implemented by Emad Sohail, an RSoC student"
1010
---
1111

12-
As a second project of my RSoC internship, I worked on integrating the Rizin Mark API into Cutter to visually show the prescence of marks in the `Hexdump` widget.
12+
As a second project of my RSoC internship, I worked on integrating the Rizin Mark API into Cutter to visually show the presence of marks in the `Hexdump` widget.
1313

1414
![Mark Complete](/assets/images/blog/posts/inetgrating-the-rizin-mark-api-rsoc/mark-complete.gif)
1515

@@ -23,7 +23,7 @@ Refer to [RSoC 2025 - Adding Mark API](https://rizin.re/posts/rsoc-2025-mark-api
2323

2424
## **Implementation**
2525

26-
For now **Marks** are only available in the **Hexdump** widget
26+
For now, **Marks** are only available in the **Hexdump** widget
2727

2828
### **Adding, Editing and Removing Marks**
2929

@@ -53,7 +53,7 @@ struct MarkDescription
5353
};
5454
```
5555

56-
Each mark is then rendered in its assigned color, and finally the **Data bytes** and **ASCII** characters are drawn on top, so the marks integrate smoothly into the **Hexdump** view.
56+
Each mark is then rendered in its assigned color, and finally the **Data bytes** and **ASCII** characters are drawn on top so the marks integrate smoothly into the **Hexdump** view.
5757

5858
![Two highlighted marks](/assets/images/blog/posts/inetgrating-the-rizin-mark-api-rsoc/mark-highlight.png)
5959

@@ -63,7 +63,7 @@ To handle **overlapping Marks**, their colors are blended to create a combined c
6363

6464
![Two highlighted overlapping marks](/assets/images/blog/posts/inetgrating-the-rizin-mark-api-rsoc/mark-highlight-overlap.png)
6565

66-
Here the **overlapping** region is highlighted by a subtle green color.
66+
Here, the **overlapping** region is highlighted by a subtle green color.
6767

6868
### **Tooltip**
6969

@@ -91,22 +91,22 @@ To solve this, the **Remove** and **Edit** actions in the context menu now list
9191

9292
Everything worked fine until we hit an issue: whenever the cursor moved inside a highlighted mark range, the background reverted to Cutter’s default color instead of staying with the mark’s highlight. This happened because the cursor redraw overwrote the background each time it moved.
9393

94-
If there was only one mark at the cursor address, fixing this would be easy, just query the mark and repaint the background with its color. But since multiple marks can overlap at the same address, we needed a smarter approach. To solve this, we introduced a helper function `getBlendedMarksColorAt()` inside `CutterCore`, which calculates the final blended color for all marks at a given address.
94+
If there was only one mark at the cursor address, fixing this would be easy: just query the mark and repaint the background with its color. But since multiple marks can overlap at the same address, we needed a smarter approach. To solve this, we introduced a helper function `getBlendedMarksColorAt()` inside `CutterCore`, which calculates the final blended color for all marks at a given address.
9595

96-
## **Future Improvments**
96+
## **Future Improvements**
9797

9898
A cool idea for future work could be to create another tab alongside the **Parsing** and **Information** tabs in the right panel, dedicated to **Marks**.
99-
This tab would display all added marks in a table-like view with their names, and allow quick interaction.
99+
This tab would display all added marks in a table-like view with their names and allow quick interaction.
100100

101-
Clicking on a mark would open its details (such as comment, color, etc.) and provide options to directly edit or remove it, without needing to use the right-click context menu.
101+
Clicking on a mark would open its details (such as comment, color, etc.) and provide options to directly edit or remove it without needing to use the right-click context menu.
102102
Additionally, double-clicking on a row could automatically move the **cursor** and **viewpoint** to the starting address of the selected mark, making navigation much faster and more intuitive.
103103

104104
![Right pane highlighted with arrow and red box](/assets/images/blog/posts/inetgrating-the-rizin-mark-api-rsoc/mark-future-improvement.png)
105105

106-
And also extending **Marks** support to different widgets (Disassembly, Graph etc).
106+
And also extend **Marks** support to different widgets (Disassembly, Graph, etc.).
107107

108108
## **Conclusion**
109109

110-
The integration of the Rizin Mark API in Cutter enables adding, editing, and managing overlapping marks directly in the Hexdump. With tooltips and context menu actions, it streamlines annotating binaries while leaving room for future enhancements.
110+
The integration of the Rizin Mark API in Cutter enables adding, editing, and managing overlapping marks directly in the Hexdump. With tooltips and context menu actions, it streamlines annotating binaries while leaving room for future enhancements.
111111

112-
This was no doubt a great learning experience and at the end I would like to thank [@xvilka](https://github.com/notxvilka) for this amazing oppurtunity and also [@karliss](https://github.com/karliss), [@deroad](https://github.com/wargio) for the help and guidance.
112+
This was no doubt a great learning experience, and at the end I would like to thank [@xvilka](https://github.com/notxvilka) for this amazing opportunity and also [@karliss](https://github.com/karliss) and [@deroad](https://github.com/wargio) for the help and guidance.

_posts/2025-10-04-shortcut-manager-rsoc.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,23 @@ description: "Introducing a centralized Shortcut Manager in Cutter for improved
1313

1414
Greetings! I'm Emad Sohail (aka PremadeS), a 2nd-year CS undergraduate student at Information Technology University - Lahore. You can find me on [Github](https://github.com/PremadeS) and [LinkedIn](https://www.linkedin.com/in/emad-sohail-130b3b265/).
1515

16-
This summer I worked on improving the user experience of Cutter.
16+
This summer I worked on improving the user experience of Cutter.
1717

18-
This was the first project. The main objective of this project was to introduce a universal **Shortcut Manager** in Cutter and to provide a flexible setup that can support custom shortcuts in the future with minimal additions.
18+
This was the first project. The main objective of this project was to introduce a universal **Shortcut Manager** in Cutter and provide a flexible setup that can support custom shortcuts in the future with minimal additions.
1919

20-
You can find the write-up of my second project [here](https://cutter.re/integrating-the-rizin-mark-api-rsoc)
20+
You can find the write-up of my second project [here](https://cutter.re/integrating-the-rizin-mark-api-rsoc).
2121

2222
## **Why a Shortcut Manager**
2323

24-
Default key sequences, *also referred to here as shortcuts*, were previosuly defined in their respective classes. While this approach works if the codebase is small. However, it gets exceptionally difficult to manage as the project grows, making it hard to keep track of which shortcuts are assigned to which functions. On top of that, as the key sequences were scattered in different files there was no way to create a centralized view that allows the user to see the default shortcuts and their respective actions.
24+
Default key sequences, *also referred to here as shortcuts*, were previously defined in their respective classes. While this approach works if the codebase is small, it becomes exceptionally difficult to manage as the project grows, making it hard to keep track of which shortcuts are assigned to which functions. On top of that, because the key sequences were scattered across different files, there was no way to create a centralized view that allows the user to see the default shortcuts and their respective actions.
2525

2626
## **Design Goals**
2727

2828
The **Shortcut Manager** was designed with three key goals:
2929

30-
1) **Consistency:** Shortcuts should behave uniformly across the application, regardless of whether they originate from a `QAction` or a `QShortcut`
31-
2) **Maintainablity:** All of the default shortcuts must be at the same place, which allows the developers to quickly add, remove or edit key sequences without needing to look through multiple files
32-
3) **Extensibility:** The system should provide a solid foundation that can be expanded in the future, enabling features like custom user-defined shortcuts
30+
1) **Consistency:** Shortcuts should behave uniformly across the application, regardless of whether they originate from a `QAction` or a `QShortcut`.
31+
2) **Maintainability:** All default shortcuts must be in the same place, allowing developers to quickly add, remove, or edit key sequences without needing to look through multiple files.
32+
3) **Extensibility:** The system should provide a solid foundation that can be expanded in the future, enabling features like custom user-defined shortcuts.
3333

3434
## **Implementation**
3535

@@ -41,7 +41,7 @@ The `ShortcutManager` then looks up the corresponding entry in the default short
4141

4242
![Shortcut manager process flowchart](/assets/images/blog/posts/shortcut-manager-rsoc/shortcut-registering-flowchart.png)
4343

44-
To make the process even simpler, the `ShortcutManager` also provides utility methods that return fully configured `QAction` or `QShortcut` objects based on the given ID. This not only streamlines shortcut creation but also hides away the underlying complexity, keeping the codebase clean and consistent.
44+
To make the process even simpler, the `ShortcutManager` also provides utility methods that return fully configured `QAction` or `QShortcut` objects based on the given ID. This not only streamlines shortcut creation but also hides the underlying complexity, keeping the codebase clean and consistent.
4545

4646
A Default Shortcuts widget has also been introduced, allowing users to easily view all default key sequences alongside their corresponding actions. It also includes a search bar, making it simple to quickly find specific shortcuts or actions. [PR #3504](https://github.com/rizinorg/cutter/pull/3504/)
4747

0 commit comments

Comments
 (0)