def _text_to(view, pad, r, mat, textcol_a): mat = mat.dot(pad.translate_mat) # zero-out rotation mat[0:2, 0:2] = view.viewState.glMatrix[0:2, 0:2] # Hack text_height_px = view.viewState.scale_factor * r.height # Hack pname = pad.pad_name if text_height_px < 14: alpha = 0 textcol_a[3] = (text_height_px - 6) / 8 if text_height_px < 6: return elif 14 <= text_height_px <= TRANSITION_POINT_1: alpha = 0 elif text_height_px > TRANSITION_POINT_1: if pname != "": if text_height_px > TRANSITION_POINT_2: alpha = 1 else: alpha = (text_height_px - TRANSITION_POINT_1) / ( TRANSITION_POINT_2 - TRANSITION_POINT_1) else: alpha = 0 h_delta_1 = r.height * (1 - RATIO * alpha) h_delta_2 = r.height * (RATIO - RGAP) * alpha r_top = Rect.fromRect(r) r_top.bottom = r_top.top - h_delta_1 r.top = r.bottom + h_delta_2 view.text_batch.submit_text_box(mat, "%s" % pad.pad_no, r_top, textcol_a, None) if alpha: view.text_batch.submit_text_box(mat, "%s" % pname, r, textcol_a, None)
def _text_to(view, pad, r, mat, textcol_a): mat = mat.dot(pad.translate_mat) # zero-out rotation mat[0:2,0:2] = view.viewState.glMatrix[0:2,0:2] # Hack text_height_px = view.viewState.scale_factor * r.height # Hack pname = pad.pad_name if text_height_px < 14: alpha = 0 textcol_a[3] = (text_height_px - 6) / 8 if text_height_px < 6: return elif 14 <= text_height_px <= TRANSITION_POINT_1: alpha = 0 elif text_height_px > TRANSITION_POINT_1: if pname != "": if text_height_px > TRANSITION_POINT_2: alpha = 1 else: alpha = (text_height_px - TRANSITION_POINT_1) / (TRANSITION_POINT_2 - TRANSITION_POINT_1) else: alpha = 0 h_delta_1 = r.height * (1 - RATIO * alpha) h_delta_2 = r.height * (RATIO - RGAP) * alpha r_top = Rect.fromRect(r) r_top.bottom = r_top.top - h_delta_1 r.top = r.bottom + h_delta_2 view.text_batch.submit_text_box(mat, "%s" % pad.pad_no, r_top, textcol_a, None) if alpha: view.text_batch.submit_text_box(mat, "%s" % pname, r, textcol_a, None)
def update_if_necessary(self): if not self.__needs_rebuild(): return components = self.__project.artwork.components self.__top_side_pads.restart() self.__top_side_labels.restart() self.__bottom_side_labels.restart() self.__bottom_side_pads.restart() for cmp in components: if cmp.side == SIDE.Top: pad_batch = self.__top_side_pads else: pad_batch = self.__bottom_side_pads for pad in cmp.get_pads(): if pad.is_through(): r = Rect.fromCenterSize(Point2(0, 0), pad.l * 0.6, pad.w * 0.6) else: r = Rect.fromCenterSize(Point2(0, 0), pad.l * 0.8, pad.w * 0.8) mat = cmp.matrix.dot(pad.translate_mat) r_top = Rect.fromRect(r) s = "%s: %s" % (pad.pad_no, pad.pad_name) ti = pad_batch.get_string(s) text_mat = mat.dot(ti.get_render_to_mat(r_top)) pad_batch.add(text_mat, ti) self.__top_side_pads.prepare() self.__top_side_labels.prepare() self.__bottom_side_labels.prepare() self.__bottom_side_pads.prepare()
def update_if_necessary(self): if not self.__needs_rebuild(): return components = self.__project.artwork.components self.__top_side_pads.restart() self.__top_side_labels.restart() self.__bottom_side_labels.restart() self.__bottom_side_pads.restart() for cmp in components: if cmp.side == SIDE.Top: pad_batch = self.__top_side_pads else: pad_batch = self.__bottom_side_pads for pad in cmp.get_pads(): if pad.is_through(): r = Rect.fromCenterSize(Point2(0,0), pad.l * 0.6, pad.w * 0.6) else: r = Rect.fromCenterSize(Point2(0,0), pad.l*0.8, pad.w*0.8) mat = cmp.matrix.dot(pad.translate_mat) r_top = Rect.fromRect(r) s = "%s: %s" % (pad.pad_no, pad.pad_name) ti = pad_batch.get_string(s) text_mat = mat.dot(ti.get_render_to_mat(r_top)) pad_batch.add(text_mat, ti) self.__top_side_pads.prepare() self.__top_side_labels.prepare() self.__bottom_side_labels.prepare() self.__bottom_side_pads.prepare()