Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor drawing of elements: hide logic behind common interface #694

Closed

Commits on Apr 18, 2024

  1. Extract "Ellips" primitive from a generic "Area"

    Both ellipses and rectangles are drawn from a single object named
    "Area". Drawing logic looks from where it got the object: if it's
    from "rectangles" container, then draw a rectangle, otherwise
    draw an ellipse.
    
    This commit creates new "Ellips" object type, separate from "Area".
    It opens a way to:
    - hide a dedicated ellipsis rectangle drawing logic in a method
      associated only with "Ellips" objects
    - distinguish ellipses and rectangles not by their place of residence,
      but by their nature.
    
    The name "Ellips" without "e" at the end is used because "Ellipse"
    conflicts with a painting named that way, which is declared in the
    same namespace. I didn't want to go into any additional trouble
    and chose to go with this type of a "workaround"
    wawuwo committed Apr 18, 2024
    Configuration menu
    Copy the full SHA
    b4f157e View commit details
    Browse the repository at this point in the history
  2. Rename member "ellips" to "ellipses"

    Some classes have members of container types, storing "Ellips"
    objects, i.e. ellipses. Just assigning a proper name.
    wawuwo committed Apr 18, 2024
    Configuration menu
    Copy the full SHA
    91470d3 View commit details
    Browse the repository at this point in the history
  3. Rename "Area" to "Rect"

    After extracting ellipse from "Area" to a separate class, "Area"
    means only a rectangle.
    wawuwo committed Apr 18, 2024
    Configuration menu
    Copy the full SHA
    532efff View commit details
    Browse the repository at this point in the history
  4. Add "DrawingPrimitive" interface and its implementation

    The goals of this are
    - add a generic API for qucs::Line, qucs::Arc, qucs::Rect, qucs::Ellips
    - hide drawing details from clients. If you take a look at code
      now you'll see that drawing of for example a line in Component::paint
      looks like "take this coordinate, add this nubmer to it, and call
      a method of QPainter". Drawing logic is outside, it must be written
      every time you want to draw a line.
      New API provides a way to just invoke DrawingPrimitive::draw giving
      it a QPainter and be done with drawing.
    wawuwo committed Apr 18, 2024
    Configuration menu
    Copy the full SHA
    ab4315b View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    490fb54 View commit details
    Browse the repository at this point in the history

Commits on Apr 23, 2024

  1. Configuration menu
    Copy the full SHA
    ee90626 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ea02986 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    85b364d View commit details
    Browse the repository at this point in the history

Commits on May 1, 2024

  1. Configuration menu
    Copy the full SHA
    33d6a41 View commit details
    Browse the repository at this point in the history