You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.6 KiB
39 lines
1.6 KiB
14 years ago
|
Problem:
|
||
|
|
||
|
When working with the transform tool, the user performs many adjustments.
|
||
|
These adjustments should be aggregated into one transform, and always
|
||
|
performed from the original state of the image, as it was before the
|
||
|
first transformation adjustment was applied -- because otherwise
|
||
|
the quality degradation becomes too bad.
|
||
|
|
||
|
That means that all work with the transform tool should eventually
|
||
|
result in one transform command. However, when working with the transform
|
||
|
tool, the user expects to be able to undo various stages of his transform
|
||
|
actions. And undo should not undo to the original state, but to the previous
|
||
|
state.
|
||
|
|
||
|
When the user selects another tool, the definitive transform is applied.
|
||
|
This happens because selecting another tool calls the clear function of
|
||
|
the transform tool. One transform command should end up on the undo
|
||
|
stack.
|
||
|
|
||
|
When the user selects an action from the menu, like a filter,
|
||
|
the definitive transform should also be applied, and only
|
||
|
then the action from the menu.
|
||
|
|
||
|
Thus, we have two problems:
|
||
|
|
||
|
* Transforms should always be done from the original image, but undoing
|
||
|
the transform command should unto to the previous state.
|
||
|
|
||
|
* Pending transforms should be committed before a menu action is taken.
|
||
|
|
||
|
These problems can be solved in one go, without any of the complications
|
||
|
I created yesterday by always committing the transform to the undo history
|
||
|
in the transform() method, but by performing the transform from the original
|
||
|
paint device, as it was when the tool got activated.
|
||
|
|
||
|
Menu actions should reset the tool: for this we will need my complicated hack,
|
||
|
I propose resetting the transform tool after a command is added.
|
||
|
|