Refactor drawing of elements: hide logic behind common interface #694
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi!
This is yet another bit of refactoring. The core idea is to create a common interface for such primitives like
qucs::Line
,qucs::Arc
,qucs::Area
and to hide drawing logic behind the interface.Look at this, where client has to select a proper method of
QPainter
and deal with its arguments not its own:— next time when rect is drawn everything has to be done again, and most likely will be just copied and pasted, making duplicate.
And compare with this:
— where
drawRect(cx + pa->x, cy + pa->y, pa->w, pa->h)
) is hidden and defined only once in member function bodyTo achieve this I did the following steps:
Area
and client had to decide somehow what this area is — an ellipse or a rectanglequcs::DrawingPrimitive
forqucs::Line
,qucs::Arc
,qucs::Rect
,qucs::Ellips
Everything should look the same, I haven't found any issues using the changed build on my machine.