Skip to content

Commit f788654

Browse files
committed
rebase to main
2 parents eb72c3e + a07636c commit f788654

198 files changed

Lines changed: 7302 additions & 6604 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/black.yml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
name: Lint
22

3-
on: [push, pull_request]
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
branches:
9+
- main
10+
types:
11+
- opened
12+
- reopened
13+
- synchronize
14+
- ready_for_review
415

516
jobs:
617
lint:
718
runs-on: ubuntu-latest
19+
if: ${{ !github.event.pull_request.draft }}
820
steps:
921
- uses: actions/checkout@v4
1022
- uses: psf/black@stable
1123
with:
12-
src: "./fastplotlib"
24+
src: "./fastplotlib"

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ jobs:
1717
docs-build:
1818
name: Docs
1919
runs-on: bigmem
20+
if: ${{ !github.event.pull_request.draft }}
2021
strategy:
2122
fail-fast: false
2223
steps:

CONTRIBUTING.md

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -77,35 +77,37 @@ keeps a *private* global dictionary of all `WorldObject` instances and users are
7777
This is due to garbage collection. This may be quite complicated for beginners, for more details see this PR: https://github.com/fastplotlib/fastplotlib/pull/160 .
7878
If you are curious or have more questions on garbage collection in fastplotlib you're welcome to post an issue :D.
7979

80-
#### Graphic Features
80+
#### Graphic properties
8181

82-
There is one important thing that `fastplotlib` uses which we call "graphic features".
82+
Graphic properties are all evented, and internally we called these "graphic features". They are the various
83+
aspects of a graphic that the user can change.
8384
The "graphic features" subpackage can be found at `fastplotlib/graphics/_features`. As we can see this
84-
is a private subpackage and never meant to be accessible to users. In `fastplotlib` "graphic features" are the various
85-
aspects of a graphic that the user can change. Users can also run callbacks whenever a graphic feature changes.
85+
is a private subpackage and never meant to be accessible to users..
8686

8787
##### LineGraphic
8888

8989
For example let's look at `LineGraphic` in `fastplotlib/graphics/line.py`. Every graphic has a class variable called
90-
`feature_events` which is a set of all graphic features. It has the following graphic features: "data", "colors", "cmap", "thickness", "present".
90+
`_features` which is a set of all graphic properties that are evented. It has the following evented properties:
91+
`"data", "colors", "cmap", "thickness"` in addition to properties common to all graphics, such as `"name", "offset", "rotation", and "visible"`
9192

92-
Now look at the constructor for `LineGraphic`, it first creates an instance of `PointsDataFeature`. This is basically a
93-
class that wraps the positions buffer, the vertex positions that define the line, and provides additional useful functionality.
94-
For example, every time that the `data` is changed event handlers will be called (if any event handlers are registered).
93+
Now look at the constructor for the `LineGraphic` base class `PositionsGraphic`, it first creates an instance of `VertexPositions`.
94+
This is a class that manages vertex positions buffer. It defines the line, and provides additional useful functionality.
95+
For example, every time that the `data` is changed, the new data will be marked for upload to the GPU before the next draw.
96+
In addition, event handlers will be called if any event handlers are registered.
9597

96-
`ColorFeature`behaves similarly, but it can perform additional parsing that can create the colors buffer from different forms of user input. For example if a user runs:
97-
`line_graphic.colors = "blue"`, then `ColorFeature.__setitem__()` will create a buffer that corresponds to what `pygfx.Color` thinks is "blue".
98-
Users can also take advantage of fancy indexing, ex: `line_graphics.colors[bool_array] = "red"` :smile:
98+
`VertexColors`behaves similarly, but it can perform additional parsing that can create the colors buffer from different
99+
forms of user input. For example if a user runs: `line_graphic.colors = "blue"`, then `VertexColors.__setitem__()` will
100+
create a buffer that corresponds to what `pygfx.Color` thinks is "blue". Users can also take advantage of fancy indexing,
101+
ex: `line_graphics.colors[bool_array] = "red"` :smile:
99102

100-
`LineGraphic` also has a `CmapFeature`, this is a subclass of `ColorFeature` which can parse colormaps, for example:
103+
`LineGraphic` also has a `VertexCmap`, this manages the line `VertexColors` instance to parse colormaps, for example:
101104
`line_graphic.cmap = "jet"` or even `line_graphic.cmap[50:] = "viridis"`.
102105

103-
`LineGraphic` also has `ThicknessFeature` which is pretty simple, `PresentFeature` which indicates if a graphic is
104-
currently in the scene, and `DeletedFeature` which is useful if you need callbacks to indicate that the graphic has been
105-
deleted (for example, removing references to a graphic from a legend).
106+
`LineGraphic` also has a `thickness` property which is pretty simple, and `DeletedFeature` which is useful if you need
107+
callbacks to indicate that the graphic has been deleted (for example, removing references to a graphic from a legend).
106108

107-
Other graphics have graphic features that are relevant to them, for example `ImageGraphic` has a `cmap` feature which is
108-
unique to images or heatmaps.
109+
Other graphics have properties that are relevant to them, for example `ImageGraphic` has `cmap`, `vmin`, `vmax`,
110+
properties unique to images.
109111

110112
#### Selectors
111113

@@ -192,9 +194,10 @@ the subplots. All subplots within a `Figure` share the same canvas and use diffe
192194

193195
## Tests in detail
194196

195-
The CI pipeline for a plotting library that is supposed to produce things that "look visually correct". Each example
196-
within the `examples` dir is run and an image of the canvas is taken and compared with a ground-truth
197-
screenshot that we have manually inspected. Ground-truth image are stored using `git-lfs`.
197+
Backend tests are in `tests/`, in addition as a plotting library CI pipeline produces things that
198+
"look visually correct". Each example within the `examples` dir is run and an image of the canvas
199+
is taken and compared with a ground-truth screenshot that we have manually inspected.
200+
Ground-truth image are stored using `git-lfs`.
198201

199202
The ground-truth images are in:
200203

docs/source/api/gpu.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
fastplotlib.utils
2-
*****************
1+
fastplotlib.utils.gpu
2+
*********************
33

4-
.. automodule:: fastplotlib.utils.gpu
4+
.. currentmodule:: fastplotlib.utils.gpu
5+
.. automodule:: fastplotlib
56
:members:

docs/source/api/graphic_features/CmapFeature.rst

Lines changed: 0 additions & 36 deletions
This file was deleted.

docs/source/api/graphic_features/ColorFeature.rst

Lines changed: 0 additions & 34 deletions
This file was deleted.

docs/source/api/graphic_features/Deleted.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Properties
2020
.. autosummary::
2121
:toctree: Deleted_api
2222

23+
Deleted.value
2324

2425
Methods
2526
~~~~~~~
@@ -30,4 +31,5 @@ Methods
3031
Deleted.block_events
3132
Deleted.clear_event_handlers
3233
Deleted.remove_event_handler
34+
Deleted.set_value
3335

docs/source/api/graphic_features/FeatureEvent.rst

Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
.. _api.FontSize:
2+
3+
FontSize
4+
********
5+
6+
========
7+
FontSize
8+
========
9+
.. currentmodule:: fastplotlib.graphics._features
10+
11+
Constructor
12+
~~~~~~~~~~~
13+
.. autosummary::
14+
:toctree: FontSize_api
15+
16+
FontSize
17+
18+
Properties
19+
~~~~~~~~~~
20+
.. autosummary::
21+
:toctree: FontSize_api
22+
23+
FontSize.value
24+
25+
Methods
26+
~~~~~~~
27+
.. autosummary::
28+
:toctree: FontSize_api
29+
30+
FontSize.add_event_handler
31+
FontSize.block_events
32+
FontSize.clear_event_handlers
33+
FontSize.remove_event_handler
34+
FontSize.set_value
35+

docs/source/api/graphic_features/GraphicFeature.rst

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)