diff options
author | Picca Frédéric-Emmanuel <picca@synchrotron-soleil.fr> | 2019-05-28 08:16:16 +0200 |
---|---|---|
committer | Picca Frédéric-Emmanuel <picca@synchrotron-soleil.fr> | 2019-05-28 08:16:16 +0200 |
commit | a763e5d1b3921b3194f3d4e94ab9de3fbe08bbdd (patch) | |
tree | 45d462ed36a5522e9f3b9fde6c4ec4918c2ae8e3 /doc/source | |
parent | cebdc9244c019224846cb8d2668080fe386a6adc (diff) |
New upstream version 0.10.1+dfsg
Diffstat (limited to 'doc/source')
27 files changed, 434 insertions, 21 deletions
diff --git a/doc/source/conf.py b/doc/source/conf.py index 23efd15..86dbccf 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # /*########################################################################## -# Copyright (C) 2015-2017 European Synchrotron Radiation Facility +# Copyright (C) 2015-2019 European Synchrotron Radiation Facility # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -76,6 +76,7 @@ extensions = [ 'sphinx.ext.viewcode', 'sphinx.ext.doctest', 'sphinxext-archive', + 'snapshotqt_directive', 'nbsphinx' ] diff --git a/doc/source/ext/snapshotqt_directive.py b/doc/source/ext/snapshotqt_directive.py new file mode 100644 index 0000000..53508df --- /dev/null +++ b/doc/source/ext/snapshotqt_directive.py @@ -0,0 +1,269 @@ +# coding: utf-8 +# /*########################################################################## +# +# Copyright (c) 2004-2018 European Synchrotron Radiation Facility +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# ###########################################################################*/ +"""RST directive to include snapshot of a Qt application in Sphinx doc. + +Configuration variable in conf.py: + +- snapshotqt_image_type: image file extension (default 'png'). +- snapshotqt_script_dir: relative path of the root directory for scripts from + the documentation source directory (i.e., the directory of conf.py) + (default: '..'). +""" +from __future__ import absolute_import + +__authors__ = ["H. Payno", "T. Vincent"] +__license__ = "MIT" +__date__ = "07/12/2018" + +import os +import logging +import subprocess +import sys +import distutils +import shutil +from docutils.parsers.rst.directives.images import Image +from docutils.parsers.rst import directives +from docutils.parsers.rst import Directive +from docutils.nodes import fully_normalize_name +from docutils import nodes + +# from docutils.par +# note: conf.py is patching the PATH so this will be the 'current' qt version + + +def _distutils_dir_name(dname="lib"): + """ + Returns the name of a distutils build directory + """ + platform = distutils.util.get_platform() + architecture = "%s.%s-%i.%i" % (dname, platform, + sys.version_info[0], sys.version_info[1]) + return architecture + +home = os.path.abspath(os.path.join(__file__, "..", "..", "..", '..')) +home = os.path.abspath(home) +LIBPATH = os.path.join(home, 'build', _distutils_dir_name('lib')) + +if not os.path.exists(LIBPATH): + raise RuntimeError("%s is not on the path. Fix your PYTHONPATH and restart sphinx." % project) + +sys.path.append(LIBPATH) +env = os.environ.copy() +env.update( + {"PYTHONPATH": LIBPATH + os.pathsep + os.environ.get("PYTHONPATH", ""), + "PATH": os.environ.get("PATH", "")}) + + +if not os.environ.get('DIRECTIVE_SNAPSHOT_QT') == 'True': + """ + In case we don't wan't to regenerate screenshot, simply apply Figure + directive + """ + class SnapshotQtDirective(Image): + option_spec = Image.option_spec.copy() + option_spec['script'] = directives.unchanged + has_content = True + + def run(self): + self.options['figwidth'] = 'image' + self.content = [] + + # Create an image filename from arguments + return Image.run(self) + + def makescreenshot(*args, **kwargs): + raise RuntimeError('not defined without env variable SILX_GENERATE_SCREENSHOT set to True') + + def setup(app): + app.add_config_value('snapshotqt_image_type', 'png', 'env') + app.add_config_value('snapshotqt_script_dir', '..', 'env') + app.add_directive('snapshotqt', SnapshotQtDirective) + return {'version': '0.1'} + +else: + from silx.gui import qt + + logging.basicConfig() + _logger = logging.getLogger(__name__) + + # RST directive ############################################################### + + class SnapshotQtDirective(Image): + """Image of a Qt application snapshot. + + Directive Type: "snapshotqt" + Doctree Elements: As for figure + Directive Arguments: One or more, required (script URI + script arguments). + Directive Options: Possible. + Directive Content: Interpreted as the figure caption and optional legend. + + A "snapshotqt" is a rst `figure + <http://docutils.sourceforge.net/docs/ref/rst/directives.html#figure>`_ + that is generated from a Python script that uses Qt. + + The path of the script to take a snapshot is relative to + the path given in conf.py 'snapshotqt_script_dir' value. + + :: + + .. snapshotqt: img/demo.py + :align: center + :height: 5cm + + source code + + + you can also define a snapshot from a script, using the :script: option + .. note:: on this path are given from the project root level + + :: + .. snapshotqt: img/demo.py + :align: center + :height: 5cm + :script: myscript.py + """ + option_spec = Image.option_spec.copy() + option_spec['script'] = directives.unchanged + has_content = True + + def run(self): + assert len(self.arguments) > 0 + # Run script stored in arguments and replace by snapshot filename + script = self.options.pop('script', None) + env = self.state.document.settings.env + + image_ext = env.config.snapshotqt_image_type.lower() + script_name = self.arguments[0].replace(image_ext, 'py') + output_script = os.path.join(env.app.outdir, script_name) + + image_file_source_path = env.relfn2path(self.arguments[0])[0] + image_file_source_path = os.path.join(home, env.srcdir, image_file_source_path) + + def createNeededDirs(_dir): + parentDir = os.path.dirname(_dir) + if parentDir not in ('', os.sep): + createNeededDirs(parentDir) + if os.path.exists(_dir) is False: + os.mkdir(_dir) + + createNeededDirs(os.path.dirname(output_script)) + + has_source_code = not (self.content is None or len(self.content) is 0) + if has_source_code: + with open(output_script, 'w') as _file: + _file.write("# from silx.gui import qt\n") + _file.write("# app = qt.QApplication([])\n") + for _line in self.content: + _towrite = _line.lstrip(' ') + if not _towrite.startswith(':'): + _file.write(_towrite + '\n') + _file.write("app.exec_()") + self.content = [] + if script is not None: + _logger.warning('Cannot specify a script if source code (content) is given.' + 'Ignore script option') + makescreenshot(script_or_module=output_script, + filename=image_file_source_path) + else: + # script + if script is None: + _logger.warning('no source code or script defined in the snapshot' + 'directive, fail to generate a screenshot') + else: + script_path = os.path.join(home, script) + makescreenshot(script_or_module=script_path, + filename=image_file_source_path) + + # + # Use created image as in Figure + return super(SnapshotQtDirective, self).run() + + def setup(app): + app.add_config_value('snapshotqt_image_type', 'png', 'env') + app.add_config_value('snapshotqt_script_dir', '..', 'env') + app.add_directive('snapshotqt', SnapshotQtDirective) + return {'version': '0.1'} + + # screensImageFileDialogH5.hot function ######################################################## + + def makescreenshot(script_or_module, filename): + _logger.info('generate screenshot for %s from %s, binding is %s' + '' % (filename, script_or_module, qt.BINDING)) + + # Probe Qt binding + if qt.BINDING == 'PyQt4': + def grabWindow(winID): + return qt.QPixmap.grabWindow(winID) + elif qt.BINDING in ('PyQt5', 'PySide2'): + def grabWindow(winID): + screen = qt.QApplication.primaryScreen() + return screen.grabWindow(winID) + + global _count + _count = 15 + global _TIMEOUT + _TIMEOUT = 1000. # in ms + app = qt.QApplication.instance() or qt.QApplication([]) + _logger.debug('Using Qt bindings: %s', qt) + + def _grabActiveWindowAndClose(): + global _count + activeWindow = qt.QApplication.activeWindow() + if activeWindow is not None: + if activeWindow.isVisible(): + # hot fix since issue with pySide2 API + if qt.BINDING == 'PySide2': + pixmap = activeWindow.grab() + else: + pixmap = grabWindow(activeWindow.winId()) + saveOK = pixmap.save(filename) + if not saveOK: + _logger.error( + 'Cannot save snapshot to %s', filename) + else: + _logger.error('activeWindow is not visible.') + app.quit() + else: + _count -= 1 + if _count > 0: + # Only restart a timer if everything is OK + qt.QTimer.singleShot(_TIMEOUT, + _grabActiveWindowAndClose) + else: + app.quit() + raise TimeoutError( + 'Aborted: It took too long to have an active window.') + script_or_module = os.path.abspath(script_or_module) + + sys.argv = [script_or_module] + sys.path.append( + os.path.abspath(os.path.dirname(script_or_module))) + qt.QTimer.singleShot(_TIMEOUT, _grabActiveWindowAndClose) + if sys.version_info < (3, ): + execfile(script_or_module) + else: + with open(script_or_module) as f: + code = compile(f.read(), script_or_module, 'exec') + exec(code, globals(), locals()) diff --git a/doc/source/modules/gui/data/img/ArrayTableWidget.png b/doc/source/modules/gui/data/img/ArrayTableWidget.png Binary files differindex 7c81d02..6ae9114 100644 --- a/doc/source/modules/gui/data/img/ArrayTableWidget.png +++ b/doc/source/modules/gui/data/img/ArrayTableWidget.png diff --git a/doc/source/modules/gui/data/img/DataViewer.png b/doc/source/modules/gui/data/img/DataViewer.png Binary files differindex 719c822..c2185d3 100644 --- a/doc/source/modules/gui/data/img/DataViewer.png +++ b/doc/source/modules/gui/data/img/DataViewer.png diff --git a/doc/source/modules/gui/gallery.rst b/doc/source/modules/gui/gallery.rst index fffcfd8..9923c0b 100644 --- a/doc/source/modules/gui/gallery.rst +++ b/doc/source/modules/gui/gallery.rst @@ -39,14 +39,27 @@ Widgets gallery * - Widget - Description - * - .. image:: data/img/ArrayTableWidget.png + * - .. snapshotqt:: data/img/ArrayTableWidget.png :height: 150px :align: center + + from silx.gui.data.ArrayTableWidget import ArrayTableWidget + import numpy.random + table = ArrayTableWidget() + table.setArrayData(numpy.random.random((100, 100, 100))) + table.resize(500, 300) + table.show() - :class:`ArrayTableWidget` is a table widget with browsers designed to display the content of multi-dimensional data arrays. - * - .. image:: data/img/DataViewer.png + * - .. snapshotqt:: data/img/DataViewer.png :height: 150px :align: center + + import numpy.random + from silx.gui.data.DataViewer import DataViewer + viewer = DataViewer() + viewer.setData(numpy.random.random((100, 100, 100))) + viewer.show() - :class:`DataViewer` is a widget designed to display data using the most adapted view. * - .. image:: data/img/DataViewerFrame.png @@ -208,14 +221,33 @@ Additional widgets: :align: center - :class:`.PlotTools.PositionInfo` is a widget displaying mouse position and information of a :class:`PlotWidget` associated to the mouse position. - * - .. image:: plot/img/LimitsToolBar.png + * - .. snapshotqt:: plot/img/LimitsToolBar.png :width: 300px :align: center + + from silx.gui.plot import Plot2D + from silx.gui.plot.tools.LimitsToolBar import LimitsToolBar + plot = Plot2D() + toolbar = LimitsToolBar(plot=plot) + toolbar.resize(400, 30) + plot.show() + toolbar.show() + app.processEvents() - :class:`.PlotTools.LimitsToolBar` is a QToolBar displaying and controlling the limits of a :class:`PlotWidget`. - * - .. image:: plot/img/logColorbar.png + * - .. snapshotqt:: plot/img/logColorbar.png :height: 150px :align: center + + from silx.gui.plot import Plot2D + from silx.gui.plot.ColorBar import ColorBarWidget + from silx.gui.plot.Colors import Colormap + import numpy + plot = Plot2D() + colorbar = ColorBarWidget(plot=plot, legend='Colormap Log scale') + colorbar.setColormap(Colormap(name='jet', normalization='log', vmin=1.0, vmax=10e3)) + colorbar.show() + colorbar.resize(20, 500) - :class:`.ColorBar.ColorBarWidget` display colormap gradient and can be linked with a plot to display the colormap * - .. image:: plot/img/statsWidget.png @@ -243,9 +275,10 @@ Additional widgets: and associated toolbars. It can display 2D images, 2D scatter data, 3D scatter data and 3D volumes with different visualizations. See ``plot3dSceneWindow.py`` in :ref:`plot3d-sample-code`. - * - .. image:: plot3d/img/SceneWidget.png + * - .. snapshotqt:: plot3d/img/SceneWidget.png :height: 150px :align: center + :script: examples/plot3dSceneWindow.py - :class:`SceneWidget` is a :class:`Plot3DWidget` providing a 3D scene for visualizing different kind of data. It can display 2D images, 2D scatter data, 3D scatter data and 3D volumes with different visualizations. See ``plot3dSceneWindow.py`` in :ref:`plot3d-sample-code`. @@ -303,49 +336,103 @@ Additional widgets: * - Widget - Description - * - .. image:: widgets/img/FrameBrowser.png + * - .. snapshotqt:: widgets/img/FrameBrowser.png :width: 110px :align: center + + from silx.gui.widgets.FrameBrowser import FrameBrowser + widget = FrameBrowser() + widget.setRange(0, 10) + widget.show() - :class:`FrameBrowser.FrameBrowser` is a browser widget designed to browse through a sequence of integers (e.g. the indices of an array) - * - .. image:: widgets/img/HorizontalSliderWithBrowser.png + * - .. snapshotqt:: widgets/img/HorizontalSliderWithBrowser.png :width: 150px :align: center + + from silx.gui.widgets.FrameBrowser import HorizontalSliderWithBrowser + slider = HorizontalSliderWithBrowser() + slider.show() - :class:`FrameBrowser.HorizontalSliderWithBrowser` is a :class:`FrameBrowser` with an additional slider. - * - .. image:: widgets/img/RangeSlider.png + * - .. snapshotqt:: widgets/img/RangeSlider.png :width: 150px :align: center + + from silx.gui.widgets.RangeSlider import RangeSlider + from silx.gui.plot.Colors import Colormap + import numpy + widget = RangeSlider() + widget.setRange(0, 500) + widget.setValues(100, 400) + background = numpy.sin(numpy.arange(250) / 250.0) + background[0], background[-1] = background[-1], background[0] + colormap = Colormap("viridis") + widget.setGroovePixmapFromProfile(background, colormap) + widget.show() - :class:`~silx.gui.widgets.RangeSlider.RangeSlider` is a slider with 2 thumbs dedicated to the interactive selection of an interval. - * - .. image:: widgets/img/PeriodicCombo.png + * - .. snapshotqt:: widgets/img/PeriodicCombo.png :width: 150px :align: center + + from silx.gui.widgets.PeriodicTable import PeriodicCombo + widget = PeriodicCombo() + widget.setSelection('Yb') + widget.show() - :class:`PeriodicTable.PeriodicCombo` is a :class:`QComboBox` widget designed to select a single atomic element. - * - .. image:: widgets/img/PeriodicList.png + * - .. snapshotqt:: widgets/img/PeriodicList.png :height: 150px :align: center + + from silx.gui.widgets.PeriodicTable import PeriodicList + widget = PeriodicList() + widget.setSelectedElements(('S', 'Cl')) + widget.resize(200, 400) + widget.show() - :class:`PeriodicTable.PeriodicList` is a :class:`QTreeWidget` designed to select one or more atomic elements. - * - .. image:: widgets/img/PeriodicTable.png + * - .. snapshotqt:: widgets/img/PeriodicTable.png :height: 150px :align: center + + from silx.gui.widgets.PeriodicTable import PeriodicTable + widget = PeriodicTable() + widget.setSelection(('S', 'H', 'Zr')) + widget.show() - :class:`PeriodicTable.PeriodicTable` is a periodic table widget designed to select one or more atomic elements. - * - .. image:: widgets/img/TableWidget.png + * - .. snapshotqt:: widgets/img/TableWidget.png :height: 150px :align: center + + from silx.gui.widgets.TableWidget import TableWidget + widget = TableWidget() + widget.setRowCount(8) + widget.setColumnCount(4) + widget.resize(300, 200) + widget.show() - :class:`TableWidget.TableWidget` and :class:`TableWidget.TableView` inherit respectively :class:`QTableWidget` and :class:`QTableView`, and add a context menu with *cut/copy/paste* actions. - * - .. image:: widgets/img/WaitingPushButton.png + * - .. snapshotqt:: widgets/img/WaitingPushButton.png :width: 60px :align: center + + from silx.gui.widgets.WaitingPushButton import WaitingPushButton + from silx.gui import icons + animated_icon = icons.getWaitIcon() + button = WaitingPushButton(icon=animated_icon.currentIcon(), text='Run') + button.show() - :class:`WaitingPushButton` is a :class:`QPushButton` that can be graphically disabled, for example to wait for a callback function to finish computing. - * - .. image:: widgets/img/ThreadPoolPushButton.png + * - .. snapshotqt:: widgets/img/ThreadPoolPushButton.png :width: 100px :align: center + + from silx.gui.widgets.ThreadPoolPushButton import ThreadPoolPushButton + button = ThreadPoolPushButton(text="Compute 2^16") + button.show() - :class:`ThreadPoolPushButton` is a :class:`WaitingPushButton` that executes a callback in a thread. diff --git a/doc/source/modules/gui/plot/dev.rst b/doc/source/modules/gui/plot/dev.rst index 8966487..0c848e9 100644 --- a/doc/source/modules/gui/plot/dev.rst +++ b/doc/source/modules/gui/plot/dev.rst @@ -92,6 +92,7 @@ The following modules are the modules used internally by the plot package. .. automodule:: silx.gui.plot.CurvesROIWidget :members: + :noindex: :mod:`Interaction` ++++++++++++++++++ diff --git a/doc/source/modules/gui/plot/img/BasicGridStatsWidget.png b/doc/source/modules/gui/plot/img/BasicGridStatsWidget.png Binary files differnew file mode 100644 index 0000000..53ddc0e --- /dev/null +++ b/doc/source/modules/gui/plot/img/BasicGridStatsWidget.png diff --git a/doc/source/modules/gui/plot/img/BasicStatsWidget.png b/doc/source/modules/gui/plot/img/BasicStatsWidget.png Binary files differnew file mode 100644 index 0000000..c9ed2cd --- /dev/null +++ b/doc/source/modules/gui/plot/img/BasicStatsWidget.png diff --git a/doc/source/modules/gui/plot/img/LimitsToolBar.png b/doc/source/modules/gui/plot/img/LimitsToolBar.png Binary files differindex 99af8bd..54b6c2b 100644 --- a/doc/source/modules/gui/plot/img/LimitsToolBar.png +++ b/doc/source/modules/gui/plot/img/LimitsToolBar.png diff --git a/doc/source/modules/gui/plot/img/logColorbar.png b/doc/source/modules/gui/plot/img/logColorbar.png Binary files differindex cdd247c..c677a9b 100644 --- a/doc/source/modules/gui/plot/img/logColorbar.png +++ b/doc/source/modules/gui/plot/img/logColorbar.png diff --git a/doc/source/modules/gui/plot/roi.rst b/doc/source/modules/gui/plot/roi.rst index 77b5c2a..efe41a7 100644 --- a/doc/source/modules/gui/plot/roi.rst +++ b/doc/source/modules/gui/plot/roi.rst @@ -1,12 +1,15 @@ -.. currentmodule:: silx.gui.plot +.. currentmodule:: silx.gui.plot.CurvesROIWidget :mod:`CurvesROIWidget`: ROI from curves ======================================= + .. |roiWidgetImage| image:: img/roiwidget.png :height: 400px :align: middle +.. automodule:: silx.gui.plot.CurvesROIWidget + You can access to the ROIWidget from a Plot window by : - using the tool button 'ROI' @@ -14,4 +17,28 @@ You can access to the ROIWidget from a Plot window by : |roiWidgetImage| -.. automodule:: silx.gui.plot.CurvesROIWidget + + + +:class:`ROI` class +------------------ + +.. autoclass:: ROI + :show-inheritance: + :members: + + +:class:`CurvesROIWidget` class +------------------------------- + +.. autoclass:: CurvesROIWidget + :show-inheritance: + :members: + + +:class:`ROITable` class +----------------------- + +.. autoclass:: ROITable + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/plot/statswidget.rst b/doc/source/modules/gui/plot/statswidget.rst index f534921..6cd8ecf 100644 --- a/doc/source/modules/gui/plot/statswidget.rst +++ b/doc/source/modules/gui/plot/statswidget.rst @@ -31,3 +31,19 @@ :show-inheritance: :members: + +:class:`BasicGridStatsWidget` class +----------------------------------- + +.. autoclass:: BasicGridStatsWidget + :show-inheritance: + :members: + + +:class:`BasicLineStatsWidget` class +----------------------------------- + +.. autoclass:: BasicLineStatsWidget + :show-inheritance: + :members: + diff --git a/doc/source/modules/gui/plot3d/img/SceneWidget.png b/doc/source/modules/gui/plot3d/img/SceneWidget.png Binary files differindex 610c41a..dbe7791 100644 --- a/doc/source/modules/gui/plot3d/img/SceneWidget.png +++ b/doc/source/modules/gui/plot3d/img/SceneWidget.png diff --git a/doc/source/modules/gui/plot3d/items.rst b/doc/source/modules/gui/plot3d/items.rst index 1162cb9..5c4884f 100644 --- a/doc/source/modules/gui/plot3d/items.rst +++ b/doc/source/modules/gui/plot3d/items.rst @@ -53,7 +53,7 @@ The following classes are items that describes the content of a :class:`SceneWid :class:`Scatter2D` inherits from :class:`.DataItem3D` and also provides its API. .. autoclass:: Scatter2D - :members: getData, setData, getXData, getYData, getValues, + :members: getData, setData, getXData, getYData, getValueData, supportedVisualizations, isPropertyEnabled, getVisualization, setVisualization, isHeightMap, setHeightMap, @@ -67,7 +67,7 @@ The following classes are items that describes the content of a :class:`SceneWid :class:`Scatter3D` inherits from :class:`.DataItem3D` and also provides its API. .. autoclass:: Scatter3D - :members: getData, setData, getXData, getYData, getZData, getValues, + :members: getData, setData, getXData, getYData, getZData, getValueData, getColormap, setColormap, getSupportedSymbols, getSymbol, setSymbol diff --git a/doc/source/modules/gui/widgets/img/FrameBrowser.png b/doc/source/modules/gui/widgets/img/FrameBrowser.png Binary files differindex c5624f7..3843e70 100644 --- a/doc/source/modules/gui/widgets/img/FrameBrowser.png +++ b/doc/source/modules/gui/widgets/img/FrameBrowser.png diff --git a/doc/source/modules/gui/widgets/img/HorizontalSliderWithBrowser.png b/doc/source/modules/gui/widgets/img/HorizontalSliderWithBrowser.png Binary files differindex d64b2df..8cfdb25 100644 --- a/doc/source/modules/gui/widgets/img/HorizontalSliderWithBrowser.png +++ b/doc/source/modules/gui/widgets/img/HorizontalSliderWithBrowser.png diff --git a/doc/source/modules/gui/widgets/img/PeriodicCombo.png b/doc/source/modules/gui/widgets/img/PeriodicCombo.png Binary files differindex e0b40c2..4a93e86 100644 --- a/doc/source/modules/gui/widgets/img/PeriodicCombo.png +++ b/doc/source/modules/gui/widgets/img/PeriodicCombo.png diff --git a/doc/source/modules/gui/widgets/img/PeriodicList.png b/doc/source/modules/gui/widgets/img/PeriodicList.png Binary files differindex d1e540b..42f432e 100644 --- a/doc/source/modules/gui/widgets/img/PeriodicList.png +++ b/doc/source/modules/gui/widgets/img/PeriodicList.png diff --git a/doc/source/modules/gui/widgets/img/PeriodicTable.png b/doc/source/modules/gui/widgets/img/PeriodicTable.png Binary files differindex c06dded..ce52262 100644 --- a/doc/source/modules/gui/widgets/img/PeriodicTable.png +++ b/doc/source/modules/gui/widgets/img/PeriodicTable.png diff --git a/doc/source/modules/gui/widgets/img/RangeSlider.png b/doc/source/modules/gui/widgets/img/RangeSlider.png Binary files differindex b068c6f..f552fb3 100644 --- a/doc/source/modules/gui/widgets/img/RangeSlider.png +++ b/doc/source/modules/gui/widgets/img/RangeSlider.png diff --git a/doc/source/modules/gui/widgets/img/TableWidget.png b/doc/source/modules/gui/widgets/img/TableWidget.png Binary files differindex a0f819f..b6a4965 100644 --- a/doc/source/modules/gui/widgets/img/TableWidget.png +++ b/doc/source/modules/gui/widgets/img/TableWidget.png diff --git a/doc/source/modules/gui/widgets/img/ThreadPoolPushButton.png b/doc/source/modules/gui/widgets/img/ThreadPoolPushButton.png Binary files differindex 4710d16..18a7416 100644 --- a/doc/source/modules/gui/widgets/img/ThreadPoolPushButton.png +++ b/doc/source/modules/gui/widgets/img/ThreadPoolPushButton.png diff --git a/doc/source/modules/gui/widgets/img/WaitingPushButton.png b/doc/source/modules/gui/widgets/img/WaitingPushButton.png Binary files differindex fa1d51a..4fd3e3c 100644 --- a/doc/source/modules/gui/widgets/img/WaitingPushButton.png +++ b/doc/source/modules/gui/widgets/img/WaitingPushButton.png diff --git a/doc/source/modules/image/index.rst b/doc/source/modules/image/index.rst index 477cc9f..cf4867b 100644 --- a/doc/source/modules/image/index.rst +++ b/doc/source/modules/image/index.rst @@ -12,4 +12,6 @@ marchingsquares.rst shapes.rst sift.rst + projection.rst backprojection.rst + reconstruction.rst diff --git a/doc/source/modules/image/shapes.rst b/doc/source/modules/image/shapes.rst index a20b0cd..be51975 100644 --- a/doc/source/modules/image/shapes.rst +++ b/doc/source/modules/image/shapes.rst @@ -2,7 +2,7 @@ .. currentmodule:: silx.image :mod:`shapes`: 2D shapes drawing ---------------------------------- +-------------------------------- .. automodule:: silx.image.shapes - :members: circle_fill, draw_line, polygon_fill_mask, Polygon + :members: circle_fill, ellipse_fill, draw_line, polygon_fill_mask, Polygon diff --git a/doc/source/modules/opencl/index.rst b/doc/source/modules/opencl/index.rst index e17eecb..20a3a01 100644 --- a/doc/source/modules/opencl/index.rst +++ b/doc/source/modules/opencl/index.rst @@ -10,6 +10,7 @@ sift/index.rst fbp.rst + sinofilter.rst medfilt.rst codec_cbf.rst diff --git a/doc/source/modules/opencl/sinofilter.rst b/doc/source/modules/opencl/sinofilter.rst new file mode 100644 index 0000000..81fe100 --- /dev/null +++ b/doc/source/modules/opencl/sinofilter.rst @@ -0,0 +1,9 @@ + +.. currentmodule:: silx.opencl + +:mod:`sinofilter`: Sinogram filtering. +-------------------------------------------------- + +.. automodule:: silx.opencl.sinofilter + :members: + :show-inheritance: |