Posts by Praneeth Shetty
- 19 August 2023
During this week, I initiated my work on the
FileDialog PR, which had been started by Soham. The initial version of the
FileDialog can be found at #294. To start, I focused on rebasing the PR. Since this PR was based on an older version, there were some updates to the overall UI structure that needed to be addressed for compatibility. While handling this, I identified a set of issues that I documented in the current PR #832. These mainly revolved around:
- 12 August 2023
Building upon the progress of the previous week, a major milestone was reached with the merging of PR #830. This PR added essential “getters” and “setters” for the new features of
TextBlock, making it easier to handle changes. This, in turn, facilitated the integration of
SpinBoxUI with the updated
- 05 August 2023
This week, my focus shifted to the
SpinBoxUI after wrapping up work on
SpinBoxUI is a component that allows users to select a value by spinning through a range. To ensure a smooth transition, I made adjustments in
SpinBoxUI to align it with the recent updates in
TextBlock2D. To make things even clearer and more user-friendly, I initiated a continuous code improvement process. I introduced setters and getters that enable easier customization of
TextBlock2D’s new features, such as auto_font_scale and dynamic_bbox. These tools simplify the process of adjusting these settings, and you can see the ongoing changes in pull request #830.
- 29 July 2023
Continuing from the previous week, it seemed like we were almost done with the TextBlock2D, but there remained a final task of addressing conflicting issues. Being a core part of the UI, TextBlock2D had a few compatibility problems with certain other UI elements.
- 22 July 2023
This week, I delved deeper into the TextBlock2D Bounding Box PR to address the challenges with tests and offsetting issues. In a pair programming session with my mentor, we discovered that the offsetting background problem stemmed from the dynamic nature of the bounding box. The issue arose when the RingSlider2D component began with an initial text size larger than the current text, which changed as the value was adjusted between 0-100%. This resulted in problems with offsetting and shrinking the bounding box. To resolve this, we decided to make the dynamic bounding box an optional feature.
- 15 July 2023
This week, I focused on completing the TextBlock2D Bounding Box feature. However, the tests were failing due to automatic background resizing based on content and improper text actor alignment during setup. I encountered difficulties while positioning the text, which caused the text to appear offset and led to test failures.
- 08 July 2023
This week, I worked on improving the TextBlock2D component in the UI system. I started from scratch to address alignment and scaling issues. When resizing the TextBlock2D, the text alignment and justification with the background rectangle were inconsistent. To resolve this, I introduced a new “boundingbox” property that calculates the text bounding box based on its content. Additionally, I separated the scaling mode from the resizing action with the new “auto_font_scale” property, enabling automatic font scaling according to the bounding box. This will provide better alignment, justified text, and smoother font scaling for the TextBlock2D component. Try it out at PR #803.
- 01 July 2023
Due to ongoing exams, my productivity was limited this week. However, I managed to find some time to explore and review a few PRs submitted by contributors:
- 24 June 2023
This week, amidst end-semester exams, I managed to accomplish a few notable tasks. Let’s dive into the highlights:
- 17 June 2023
This week, I tackled the ComboBox2D icon flaw, which was addressed using Pull Request (PR) #576. The problem arose when we added a ComboBox2D to the TabUI. The TabUI would propagate the
set_visibility = true for all its child elements, causing the combobox to appear on the screen without the icon change. To fix this issue, PR #768 updated the
set_visibility method of the UI class, ensuring that the icon change was applied correctly.
- 11 June 2023
This week, I continued tweaking the text justification PR #790 and encountered a new issue when combining both justification and vertical_justification. The problem arose because the vertical_justification did not take into account the applied justification, resulting in unexpected behavior. I focused on resolving this issue by ensuring that both justifications work together correctly. Additionally, during the weekly meeting, we discussed the problem and decided to introduce new properties such as boundaries and padding to enhance the functionality of the text justification feature.
- 03 June 2023
This week, my focus was on reviewing pull requests (PRs) and issues related to the user interface (UI) of the project. I meticulously went through each PR and issue, identifying those specifically associated with UI improvements. To streamline the process, I categorized them accordingly under the UI category. One of the key tasks was PR #499, which involved the implementation of SpinBoxUI. After rebasing the PR, I identified an alignment issue with the textbox component.
- 21 September 2022
Last week my mentors noticed that each DrawShape has its individual rotation_slider which increases redundancy and complexity in setting its visibility on and off. Instead, they suggested moving the rotation_slider to DrawPanel and keeping a common slider for all the shapes.
- 14 September 2022
This week I started with highlighting the shapes. As discussed earlier, I had two ways, but while implementing them, I found out both ways aren’t that good to continue with. The first way in which we thought of creating the scaled shapes in the background had an issue with the stacking. The border(blue rectangle) and the shape(grey rectangle) both seem to look like different shapes just grouped together as shown below.
- 07 September 2022
This week I continued updating the DrawShape and DrawPanel.
- 31 August 2022
This week I managed to fix the translation issue in PR #653. This was happening because of the calculation error while repositioning the shapes. Now it works as intended.
- 24 August 2022
I started with updating the tests for PR #623 as some of the tests weren’t covering all the aspects in the code.
Previously I was just creating the
DrawShape and adding it to the scene but now I had to analyze the scene to see whether they were properly added or not.
- 17 August 2022
This week I tried to imitate the working of vtkImageTracer. Previously, I had created a small prototype for freehand drawing by adding points at the mouse position (which you can check out here). As mentioned, there were some drawback of this method. So to overcome these issues, I tried combining both methods. Considering points using the previous method and instead of adding points I tried creating lines between them which looks promising. Below you can see a demo.
- 10 August 2022
I started working on the PR #645 created last week and tested a few more corner cases such as What happens if the maximum value is exceeded?? What if we give a value less than the minimum value range?? Most of these worked as intended.
- 03 August 2022
I started this week by creating a quick PR #645 for the UI sliders. The sliders raised
ZeroDivsionError when the min and max values were the same. To solve this, I handled the case where the value_range becomes zero and then manually set the handle position to zero.
- 27 July 2022
This week I started working on the polyline feature. After a lot of investigating and trying out different things, I found a way to call the dragging event manually without any prior click event. VTK actually captures the mouse movement using the
MouseMoveEvent. This event is then modified by FURY to only be called after the click event. So I added a new callback to track the mouse movement and set the current canvas as an active prop because it is required to capture the drag event happening on it.
- 20 July 2022
I continued PR #623 and fixed the displacement of the shape from its original position when applying rotation. This was happening because most of the calculations resulted in float values, but as the pixel position were integers we had to explicitly convert these values into int. This conversion rounded off the values and as we call this function continuously, each time the round-off would happen, the shape would get displaced.
- 13 July 2022
This week I started implementing a new feature to rotate the shapes from the center using
RingSlider2D. I already had a rotate function that rotates the shape around its pivot vertex, so I updated it to support rotation from the center.
- 06 July 2022
This week I tried to create a base for some upcoming new features. The first thing I updated was the Properties panel which I prototyped in Week 3. So previously, it was just displaying the properties but now after the update, it is able to modify the properties(such as color, position, and rotation) too. This was a quick change to test the callbacks.
- 29 June 2022
Phew!! This week was a tedious week for me as parallelly my End-Sem exams also started. So as usual I started from where I left off last week, The Clamping Issue. As per the discussion with the mentors, we decided to use the AABB bounding box method to calculate the bounding box around the shape and then reposition or transform respectively, as now we had a fixed reference point. So after doing some calculations with the mouse positions and the bounding box points at last, I was able to clamp all the shapes successfully.
- 22 June 2022
This week was full of researching, playing around with things, prototyping ideas, etc. I started with last week’s clamping issue and managed to solve this issue while drawing shapes by clipping the mouse position according to canvas size, but it didn’t solve the problem with translating these shapes. I tried solving this using various approaches, but if one thing would get fixed, other things would raise a new error.
- 15 June 2022
This week I had to refactor and make my code cleaner along with some bug fixing, I started by adding tests and tutorials so that my changes could be tested by everyone. Then I separated the mode for selection so that it would be easy to select an individual element and work along with it. Once the selection mode was complete I started with the deletion of the elements.
- 08 June 2022
This week we started with our first technical meeting in which the weekly tasks were assigned. So I had to start with some background or canvas and draw a line using mouse clicks.