Example #1
0
 def render_text(self, position, text, relative_line_spacing=1.0,
                 use_3d_position=False):
   from gltbx.gl import glRasterPos2f, glRasterPos3f, glBitmap
   if use_3d_position: glRasterPos = glRasterPos3f
   else: glRasterPos = glRasterPos2f
   line_spacing = round(self.height() * relative_line_spacing)
   for i,string in enumerate(text.splitlines()):
     glRasterPos(*position)
     glBitmap(0, 0, 0.0, 0.0, 0.0, -i*line_spacing, "")
     self.render_string(string=string.expandtabs())
Example #2
0
 def label_nearest_point(self):
     ann = AnnAdaptorSelfInclude(self.points.as_double(), 3)
     ann.query(self.rotation_center)
     i = ann.nn[0]
     gltbx.fonts.ucs_bitmap_8x13.setup_call_lists()
     gl.glDisable(gl.GL_LIGHTING)
     gl.glColor3f(1.0, 1.0, 1.0)
     gl.glLineWidth(1.0)
     xyz = self.points_data["xyz"][i]
     exp_id = self.points_data["id"][i]
     panel = self.points_data["panel"][i]
     d_spacing = self.points_data["d_spacing"][i]
     label = (f"id: {exp_id}; panel: {panel}\n"
              f"xyz: {xyz[0]:.1f} {xyz[1]:.1f} {xyz[2]:.1f}\n"
              f"res: {d_spacing:.2f} Angstrom")
     if "miller_index" in self.points_data and exp_id != -1:
         hkl = self.points_data["miller_index"][i]
         label += f"\nhkl: {hkl}"
     line_spacing = round(gltbx.fonts.ucs_bitmap_8x13.height())
     for j, string in enumerate(label.splitlines()):
         gl.glRasterPos3f(*self.points[i])
         gl.glBitmap(0, 0, 0.0, 0.0, line_spacing, -j * line_spacing, b" ")
         gltbx.fonts.ucs_bitmap_8x13.render_string(string)