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

Kiva Agg Todo #473

Closed
2 of 28 tasks
aaronayres35 opened this issue Dec 7, 2020 · 3 comments
Closed
2 of 28 tasks

Kiva Agg Todo #473

aaronayres35 opened this issue Dec 7, 2020 · 3 comments

Comments

@aaronayres35
Copy link
Contributor

aaronayres35 commented Dec 7, 2020

This is a dump of the contents of https://github.com/enthought/enable/blob/master/kiva/agg/todo.txt so that the file can be deleted.
I'm unsure which of these are relevant, and those which are relevant we will very likely want to extract out into their own standalone issues. This issue is mainly for record keeping purposes, and its contents are expected to be whittled down / removed based on what is no longer necessary.

clear(), clear_rect(), clear_rects()

  • Implement a clear_rect that takes a rect argument. Users can either
    specify an optional alpha value or a full color to be used when
    clearing the rectangle. If the color is RGB, then alpha is assumed
    to be 1.0. The default will clear the rect to white with an alpha
    value of 1 (i.e. (1,1,1,1)). The CTM is used to transform the input
    rects. Currently, the method will fail if their is any rotation to
    the ctm.
  • Implement a clear_rects that takes a rect list. Otherwise, it behaves
    identically to clear_rect.
  • The clear() method behaves identically to clear_rect, accept you don't
    need to pass in a rectangle. Instead
    to ?erase()? so that clear can stick with
    the clear_rect semantics.

path creation methods

  • Implement arc and arc_to.

path rendering

  • Fix fill_path() to handle all the features currently handled in the
    stroke_path() pipeline.
  • Fix draw_image() to handle all the features currently handled in the
    stroke_path() pipeline.

Text

  • Implement show_text() natively in agg.
    Allow switch between native/freetype on "the fly".

  • Implement a measure_text() method in the kiva interface that
    returns the height, width, and vertical and horizontal letting
    for a string. This is returned in user coordinates.

  • Do we also have need to return the device coordinates boudning box for
    the text?

Clipping

  • Implement clipping renderer in agg that can work with Dave's
    non-overlapping rectangles calculated in Python code).
  • Re-implement algorithm for calculating non-overlapping rectangles
    down into kiva-agg C++ code.
  • API call to get access to the list of rectangles. Or, and API to
    test whether a rectangle overlaps the list of rectangles. Dave needs
    this for high level clipping (to determine if a widget needs
    repainting).
  • Build algorithm to create optimal non-overlapping rectangles set to
    use for rendering.

Code Reorganization

  • Reorganize code base so that:
    a. Library is usable from C++
    b. Python interface files are separated out of C++ code.
    c. Organize C++ code so that it is easier to work with.
    Group related methods together and try and work around
    having the graphics_context stuff spread out across 4
    files (.h, .cpp files for graphics_context and
    graphics_context_base)
  • Make an enthought branch with enable and kiva so that we can port
    the enable to kiva.

Work on Dependent Libraries

  • Port enable to new kiva backend.
  • Port chaco to use compiled paths wherever possible.

Other Features

  • Draft Mode flag
    Not sure if we need this, but it might be nice to set this
    flag and ask kiva to use the fastest possible underlying
    paths at the expense of accuracy. This might be worth while
    for scroll or drag operations.
  • Patterns -- repeated images
  • Transparency layers
  • Gradients
  • Shadows
  • Color spaces
  • Mask arraays
  • Arbitrary clip paths
  • SVG reader/renderer. This would allow us to use SVG objects
    saved out of Graphics programs instead of bitmaps for our
    buttons/controls/etc.
  • SSE optimizations.
  • OpenGL optimizations.
@corranwebster
Copy link
Contributor

Some of these are probably things which should be considered at the top Kiva layer (transparency layers, gradients, masks, more generic clipping).

Some of them are most likely to be moot if we retire the SWIG wrappers.

@corranwebster
Copy link
Contributor

The SVG renderer and reader is done: it is in enable.savage.

@jwiggins
Copy link
Member

jwiggins commented Dec 9, 2020

I think most of this is either no longer relevant, already implemented, or a distraction. I would close this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants