Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
    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)
Example #9
0
    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()
Example #10
0
    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()
Example #11
0
 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)
Example #12
0
 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)
Example #13
0
 def theta_bbox(self):
     return Rect.fromCenterSize(self.center, self.body_width(), self.body_length())
Example #14
0
 def bbox(self):
     longest_dim = max(self.w, self.l)
     return Rect.fromCenterSize(self.center, longest_dim, longest_dim)
Example #15
0
File: pad.py Project: balr0g/pcbre
 def bbox(self):
     longest_dim = max(self.w, self.l)
     return Rect.fromCenterSize(self.center, longest_dim, longest_dim)
Example #16
0
 def theta_bbox(self):
     return Rect.fromCenterSize(self.center, self.body_width(),
                                self.body_length())