From ac5273ea4cab93b1d260bd0e4572bf68594e35ee Mon Sep 17 00:00:00 2001 From: John Wiggins Date: Tue, 2 Mar 2021 14:17:45 +0100 Subject: [PATCH 1/2] Add documentation for CompiledPath --- docs/source/index.rst | 1 + docs/source/kiva/compiled_path.rst | 25 +++++++++++++++++++++++++ docs/source/kiva/quickref.rst | 12 +++--------- 3 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 docs/source/kiva/compiled_path.rst diff --git a/docs/source/index.rst b/docs/source/index.rst index 7e1f55b88..5f2e6ad88 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -16,6 +16,7 @@ Enable Documentation kiva/backends.rst kiva/quickref.rst kiva/fonts.rst + kiva/compiled_path.rst credits.rst diff --git a/docs/source/kiva/compiled_path.rst b/docs/source/kiva/compiled_path.rst new file mode 100644 index 000000000..a7603bd30 --- /dev/null +++ b/docs/source/kiva/compiled_path.rst @@ -0,0 +1,25 @@ +CompiledPath +============ + +A path is a collection of geometry that can be drawn in a graphics context with +coloring and an affine transformation applied to it. It is the basic unit of +drawing in a graphics context. + +Every graphics context instance has a current path which can be manipulated by +the :ref:`kiva_path_functions`. However, some drawing operations are easier to +implement with an independent path instance. + +An independent path instance can be created in two ways. The first is via the +:py:meth:`GraphicsContext.get_empty_path` method. The second method is to use +the :class:`CompiledPath` class imported from the backend being used. The +interface of a :class:`CompiledPath` instance is the same as the +:ref:`kiva_path_functions` (modulo :py:meth:`get_empty_path`). + +Once you have a path object, it can be drawn by adding it to the graphics +context with the :py:meth:`GraphicsContext.add_path` method (which adds the path +to the current path) and then calling any of the :ref:`kiva_drawing_functions` +which operate on the current path. + +For certain backends which support it, the +:py:meth:`GraphicsContext.draw_path_at_points` method can be used to draw a +path object at many different positions with a single function call. diff --git a/docs/source/kiva/quickref.rst b/docs/source/kiva/quickref.rst index bb7b1f089..be95c47f2 100644 --- a/docs/source/kiva/quickref.rst +++ b/docs/source/kiva/quickref.rst @@ -83,6 +83,8 @@ Clipping functions .. automethod:: kiva.abstract_graphics_context.AbstractGraphicsContext.even_odd_clip +.. _kiva_path_functions: + Path functions ~~~~~~~~~~~~~~ The path has the concept of a "current point", which can be though of as the @@ -104,6 +106,7 @@ position for the geometry which is added to the path. .. automethod:: kiva.abstract_graphics_context.AbstractGraphicsContext.arc .. automethod:: kiva.abstract_graphics_context.AbstractGraphicsContext.arc_to +.. _kiva_drawing_functions: Drawing functions ~~~~~~~~~~~~~~~~~ @@ -215,15 +218,6 @@ to create specific kinds of :class:`AffineMatrix` instances: * ``scaling_matrix(float x_scale, float y_scale)`` * ``skewing_matrix(float x_shear, float y_shear)`` - -CompiledPath -~~~~~~~~~~~~ -A path is a collection of geometry that can be drawn in a graphics context with -coloring and an affine transformation applied to it. It is the basic unit of -drawing in a graphics context. - -Interface is the same as the `Path functions`_ . - Enumerations ~~~~~~~~~~~~ The following enumerations are represented by top-level constants in the "agg" From 22cb66d6a4039e2012519586e7a0009e47af2d7a Mon Sep 17 00:00:00 2001 From: John Wiggins Date: Tue, 2 Mar 2021 17:43:32 +0100 Subject: [PATCH 2/2] PR feedback --- docs/source/kiva/compiled_path.rst | 18 +++++++++++++---- docs/source/kiva/compiled_path_ex.py | 20 +++++++++++++++++++ docs/source/kiva/images/compiled_path_ex.png | Bin 0 -> 25324 bytes 3 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 docs/source/kiva/compiled_path_ex.py create mode 100644 docs/source/kiva/images/compiled_path_ex.png diff --git a/docs/source/kiva/compiled_path.rst b/docs/source/kiva/compiled_path.rst index a7603bd30..14e236943 100644 --- a/docs/source/kiva/compiled_path.rst +++ b/docs/source/kiva/compiled_path.rst @@ -1,13 +1,14 @@ CompiledPath ============ -A path is a collection of geometry that can be drawn in a graphics context with -coloring and an affine transformation applied to it. It is the basic unit of -drawing in a graphics context. +A path is a collection of geometric objects that can be drawn in a graphics +context with coloring and an affine transformation applied to it. It is the +basic unit of drawing in a graphics context. Every graphics context instance has a current path which can be manipulated by the :ref:`kiva_path_functions`. However, some drawing operations are easier to -implement with an independent path instance. +implement with an independent path instance +(specifically :py:meth:`draw_path_at_points`). An independent path instance can be created in two ways. The first is via the :py:meth:`GraphicsContext.get_empty_path` method. The second method is to use @@ -23,3 +24,12 @@ which operate on the current path. For certain backends which support it, the :py:meth:`GraphicsContext.draw_path_at_points` method can be used to draw a path object at many different positions with a single function call. + +Example +------- +.. image:: images/compiled_path_ex.png + :width: 300 + :height: 300 + +.. literalinclude:: compiled_path_ex.py + :linenos: diff --git a/docs/source/kiva/compiled_path_ex.py b/docs/source/kiva/compiled_path_ex.py new file mode 100644 index 000000000..59aa6a095 --- /dev/null +++ b/docs/source/kiva/compiled_path_ex.py @@ -0,0 +1,20 @@ +from math import pi +from kiva.agg import GraphicsContextArray as GraphicsContext + +gc = GraphicsContext((600, 600)) + +path = gc.get_empty_path() +path.move_to(10, 40) +path.line_to(60, 40) +path.line_to(60, 90) +path.close_path() + +gc.scale_ctm(2, 2) +gc.translate_ctm(150, 150) +for i in range(0, 12): + gc.rotate_ctm(2*pi / 12.0) + gc.set_fill_color((i / 12.0, 0.0, 1.0 - (i / 12.0))) + gc.add_path(path) + gc.fill_path() + +gc.save("example.png") diff --git a/docs/source/kiva/images/compiled_path_ex.png b/docs/source/kiva/images/compiled_path_ex.png new file mode 100644 index 0000000000000000000000000000000000000000..254eadfd323b6e06e26b7986b89b545a2ea4dda4 GIT binary patch literal 25324 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