def render(self, mat, pad, render_mode=RENDER_STANDARD, render_hint=RENDER_HINT_NORMAL): """ :type pad: Pad :param mat: :param pad: :return: """ textcol = self.parent.text_color() textcol_a = textcol + [1] color = self.parent.color_for_pad(pad) color_a = color + [1] if render_mode & RENDER_SELECTED: color_a = [1, 1, 1, 1] if pad.is_through(): self.parent.via_renderer.deferred(pad.center, pad.l / 2, pad.th_diam / 2, render_mode, render_hint) r = Rect.fromCenterSize(Point2(0, 0), pad.l * 0.6, pad.w * 0.6) _text_to(self.view, pad, r, mat, textcol_a) else: t = pad.trace_repr self.parent.trace_renderer.deferred(t, render_mode, render_hint) r = Rect.fromCenterSize(Point2(0, 0), pad.l * 0.8, pad.w * 0.8) _text_to(self.view, pad, r, mat, textcol_a)
def render(self, mat, pad, render_mode=RENDER_STANDARD, render_hint=RENDER_HINT_NORMAL): """ :type pad: Pad :param mat: :param pad: :return: """ textcol = self.parent.text_color() textcol_a = textcol + [1] color = self.parent.color_for_pad(pad) color_a = color + [1] if render_mode & RENDER_SELECTED: color_a = [1,1,1,1] if pad.is_through(): self.parent.via_renderer.deferred(pad.center, pad.l/2, pad.th_diam/2, render_mode, render_hint) r = Rect.fromCenterSize(Point2(0,0), pad.l * 0.6, pad.w * 0.6) _text_to(self.view, pad,r, mat, textcol_a) else: t = pad.trace_repr self.parent.trace_renderer.deferred(t, render_mode, render_hint) r = Rect.fromCenterSize(Point2(0,0), pad.l*0.8, pad.w*0.8) _text_to(self.view, pad, r, mat, textcol_a)
def get_keypoint_viewport_box(self, keypoint): """ Get a bbox rect in view coordinates for a keypoint :param keypoint: :return: """ p = self.get_keypoint_viewport_center(keypoint) return Rect.fromCenterSize(p, width=self.d1 * 2, height=self.d1 * 2)
def __init__(self, pt, viapair, r, net=None): self.pt = pt self.r = r self.viapair = viapair self.net = net self.bbox = Rect.fromCenterSize(pt, r * 2, r * 2) self._project = None self.__poly_repr = ShapelyPoint(pt).buffer(self.r)
def __init__(self, pt, viapair, r, net = None): self.pt = pt self.r = r self.viapair = viapair self.net = net self.bbox = Rect.fromCenterSize(pt, r*2, r*2) self._project = None self.__poly_repr = ShapelyPoint(pt).buffer(self.r)
def theta_bbox(self): if self.side_pins[0] or self.side_pins[2]: x_axis = self.dim_2_pincenter + self.pin_contact_length + self.pin_contact_width * 2 else: x_axis = self.dim_2_body if self.side_pins[1] or self.side_pins[3]: y_axis = self.dim_1_pincenter + self.pin_contact_length + self.pin_contact_width * 2 else: y_axis = self.dim_1_body return Rect.fromCenterSize(Point2(0, 0), x_axis, y_axis)
def theta_bbox(self): if self.side_pins[0] or self.side_pins[2]: x_axis = self.dim_2_pincenter + self.pin_contact_length + self.pin_contact_width * 2 else: x_axis = self.dim_2_body if self.side_pins[1] or self.side_pins[3]: y_axis = self.dim_1_pincenter + self.pin_contact_length + self.pin_contact_width * 2 else: y_axis = self.dim_1_body return Rect.fromCenterSize(Point2(0,0), x_axis, y_axis)
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()
def theta_bbox(self): l = max(self.pin_d + self.pin_corner_vec.x, self.body_corner_vec.x) w = max(self.pin_corner_vec.y, self.body_corner_vec.y) return Rect.fromCenterSize(self.center, l * 2, w * 2)
def theta_bbox(self): return Rect.fromCenterSize(self.center, self.body_width(), self.body_length())
def bbox(self): longest_dim = max(self.w, self.l) return Rect.fromCenterSize(self.center, longest_dim, longest_dim)