Source code for yt_idv.scene_components.curves

import numpy as np
import traitlets
from OpenGL import GL

from yt_idv.scene_components.base_component import SceneComponent
from yt_idv.scene_data.curve import CurveCollection, CurveData


[docs] class CurveRendering(SceneComponent): """ A class that renders user-specified curves. """ name = "curve_rendering" data = traitlets.Instance(CurveData, help="The curve data.") curve_rgba = traitlets.Tuple((1.0, 1.0, 1.0, 1.0)).tag(trait=traitlets.CFloat()) priority = 10
[docs] def render_gui(self, imgui, renderer, scene): changed, self.visible = imgui.checkbox("Visible", self.visible) _, newRGBa = imgui.input_float4("RGBa", *self.curve_rgba) if _: self.curve_rgba = tuple(newRGBa) changed = changed or _ return changed
[docs] def draw(self, scene, program): GL.glEnable(GL.GL_CULL_FACE) GL.glCullFace(GL.GL_BACK) # note: line width != 1.0 is not supported on all platforms. # see https://github.com/yt-project/yt_idv/issues/174 GL.glLineWidth(1.0) GL.glDrawArrays(GL.GL_LINE_STRIP, 0, self.data.n_vertices)
def _set_uniforms(self, scene, shader_program): clr = np.array(self.curve_rgba).astype("f4") shader_program._set_uniform("curve_rgba", clr)
[docs] class CurveCollectionRendering(CurveRendering): """ rendering a collection of curves """ name = "multi_curve_rendering" curve_collection = traitlets.List() data = traitlets.Instance(CurveCollection)
[docs] def draw(self, scene, program): GL.glEnable(GL.GL_CULL_FACE) GL.glCullFace(GL.GL_BACK) GL.glLineWidth(1.0) GL.glDrawArrays(GL.GL_LINES, 0, self.data.n_vertices)