Source code for yt_idv.scene_annotations.box

import numpy as np
import traitlets
from OpenGL import GL

from yt_idv.scene_annotations.base_annotation import SceneAnnotation
from yt_idv.scene_data.box import BoxData


[docs]class BoxAnnotation(SceneAnnotation): name = "box_outline" data = traitlets.Instance(BoxData) box_width = traitlets.CFloat(0.05) box_color = traitlets.Tuple( traitlets.CFloat(), traitlets.CFloat(), traitlets.CFloat(), default_value=(1.0, 1.0, 1.0), ) box_alpha = traitlets.CFloat(1.0)
[docs] def draw(self, scene, program): each = self.data.vertex_array.each GL.glDrawArrays(GL.GL_TRIANGLES, 0, each)
[docs] def render_gui(self, imgui, renderer, scene): changed = super().render_gui(imgui, renderer, scene) _, bw = imgui.slider_float("Width", self.box_width, 0.001, 0.250) if _: self.box_width = bw changed = changed or _ _, ba = imgui.slider_float("Alpha", self.box_alpha, 0.0, 1.0) if _: self.box_alpha = ba changed = changed or _ return changed
def _set_uniforms(self, scene, shader_program): shader_program._set_uniform("box_width", self.box_width) shader_program._set_uniform("box_alpha", self.box_alpha) shader_program._set_uniform("box_color", np.array(self.box_color))