.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/07_ui/viz_card_sprite_sheet.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_07_ui_viz_card_sprite_sheet.py: ==== Card ==== This example shows how to create a card and use a sprite sheet to update the image in the card. First, some imports. .. GENERATED FROM PYTHON SOURCE LINES 12-18 .. code-block:: Python import os from fury import ui, window from fury.data import fetch_viz_icons from fury.io import load_image, load_sprite_sheet, save_image from tempfile import TemporaryDirectory as InTemporaryDirectory .. GENERATED FROM PYTHON SOURCE LINES 19-20 First we need to fetch some icons that are included in FURY. .. GENERATED FROM PYTHON SOURCE LINES 20-32 .. code-block:: Python TARGET_FPS = 15 FRAME_TIME = (1.0 / TARGET_FPS) * 1000 fetch_viz_icons() sprite_sheet = load_sprite_sheet('https://raw.githubusercontent.com/fury-gl/' 'fury-data/master/unittests/fury_sprite.png', 5, 5) CURRENT_SPRITE_IDX = 0 vtk_sprites = [] .. rst-class:: sphx-glr-script-out .. code-block:: none Data size is approximately 12KB Dataset is already in place. If you want to fetch it again please first remove the folder /Users/skoudoro/.fury/icons .. GENERATED FROM PYTHON SOURCE LINES 33-34 Let's create a card and add it to the show manager .. GENERATED FROM PYTHON SOURCE LINES 34-49 .. code-block:: Python img_url = "https://raw.githubusercontent.com/fury-gl"\ "/fury-communication-assets/main/fury-logo.png" title = "FURY" body = "FURY - Free Unified Rendering in pYthon."\ "A software library for scientific visualization in Python." card = ui.elements.Card2D(image_path=img_url, title_text=title, body_text=body, image_scale=0.55, size=(300, 300), bg_color=(1, 0.294, 0.180), bg_opacity=0.8, border_width=5, border_color=(0.1, 0.4, 0.8)) .. GENERATED FROM PYTHON SOURCE LINES 50-51 Now we define the callback to update the image on card after some delay. .. GENERATED FROM PYTHON SOURCE LINES 51-63 .. code-block:: Python def timer_callback(_obj, _evt): global CURRENT_SPRITE_IDX, show_manager CURRENT_SPRITE_IDX += 1 sprite = vtk_sprites[CURRENT_SPRITE_IDX % len(vtk_sprites)] card.image.set_img(sprite) i_ren = show_manager.scene.GetRenderWindow()\ .GetInteractor().GetInteractorStyle() i_ren.force_render() .. GENERATED FROM PYTHON SOURCE LINES 64-65 Lets create a function to convert the sprite to vtkImageData .. GENERATED FROM PYTHON SOURCE LINES 65-76 .. code-block:: Python def sprite_to_vtk(): with InTemporaryDirectory() as tdir: for idx, sprite in enumerate(list(sprite_sheet.values())): sprite_path = os.path.join(tdir, f'{idx}.png') save_image(sprite, sprite_path, compression_quality=100) vtk_sprite = load_image(sprite_path, as_vtktype=True) vtk_sprites.append(vtk_sprite) .. GENERATED FROM PYTHON SOURCE LINES 77-79 Now that the card has been initialised, we add it to the show manager. .. GENERATED FROM PYTHON SOURCE LINES 79-86 .. code-block:: Python current_size = (1000, 1000) show_manager = window.ShowManager(size=current_size, title="FURY Card Example") show_manager.scene.add(card) show_manager.initialize() .. GENERATED FROM PYTHON SOURCE LINES 87-88 Converting numpy array sprites to vtk images .. GENERATED FROM PYTHON SOURCE LINES 88-90 .. code-block:: Python sprite_to_vtk() .. GENERATED FROM PYTHON SOURCE LINES 91-92 Adding a timer to update the card image .. GENERATED FROM PYTHON SOURCE LINES 92-101 .. code-block:: Python show_manager.add_timer_callback(True, int(FRAME_TIME), timer_callback) # To interact with the UI, set interactive = True interactive = False if interactive: show_manager.start() window.record(show_manager.scene, out_path="card_ui.png", size=(1000, 1000)) .. image-sg:: /auto_examples/07_ui/images/sphx_glr_viz_card_sprite_sheet_001.png :alt: viz card sprite sheet :srcset: /auto_examples/07_ui/images/sphx_glr_viz_card_sprite_sheet_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.931 seconds) .. _sphx_glr_download_auto_examples_07_ui_viz_card_sprite_sheet.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: viz_card_sprite_sheet.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: viz_card_sprite_sheet.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_