Skip to content
Dmitriy edited this page Sep 2, 2017 · 3 revisions

Here's general roadmap for kcanvas project development and ongoing feature set, platform support.

Current state

Currently project is in alpha state. Some APIs are still under development and probably will be changed. Upon complete version 1 API design the project will move on to beta version. After all beta version bug fixing it will become first release. API must be locked before any beta release, so project can be used in any ongoing development.

Goals for version 1

  • Windows platform support (through Direct2D backend)
  • Linux platform support (through Cairo backend)
  • OS X platform support (through Quartz 2D)
  • Finalized version 1 API

Current API is very close to its final version 1. Some functions will be changed or redefined. No new features will be added (so, feature set will remain as it is now).

Implementation notes

Currently resource object handling isn't in its desired state. Any changes here shouldn't touch public API interface. Resource handling should be improved with internal objects reuse and sort of garbage collection for them. This goal isn't tied to any specific version of the library.

Complete support for unicode and RTL

Current support of source text handling isn't complete. There is a room for enchancement and additional features support.

New features for path API

Consider following features for implementation:

  • Path fill rules
  • Path combine functions (boolean ops)
  • Path hit-test functions (both for shape and outline)
  • Path shape extraction/simplification

New features and enchancements for general API

Consider following features for implementation:

  • Introduce units (currently only device dependent pixels are supported as a default unit)
  • Pixel perfect rendering modes
  • Support for sRGB/RGB color spaces (source bitmaps and rendering)
  • Effects (layer-based effects for group of rendering commands: color manipulations, blur and other filters, shadow)

Printing

Define and implement kPrinterCanvas interface for printing.

API Bindings

Consider simple C function interface as a base layer for API to ease bindings to other languages. Introduction of C API layer shouldn't affect general C++ API classes.