Beispiel #1
0
    def __init__(self):
        core.set_main_window_size(720, 540)
        self.__width = 17
        self.__height = 7
        self.__total = self.__width * self.__height
        self.__board = {}
        size = core.get_main_window_size()
        self.__paddle = [size[0] * .475, size[1] * .85]
        self.__paddleSize = (80, 8)
        # x, y, angle (rads), speed
        self.__radius = 6
        self.__speed = 300
        self.__paddleSpeed = 1000
        self.__speedMax = self.__speed * 3
        self.__pos = (size[0] * .5, size[1] * .8, 0, -self.__speed)

        with simple.window("main"):
            with simple.group("scoreboard"):
                core.add_label_text("score")
                core.add_same_line()
                core.add_text("score-value")
                # core.add_same_line()
                core.add_label_text("time")
                core.add_same_line()
                core.add_text("time-value")
            core.add_drawing("canvas", width=size[0], height=size[1])
            core.draw_circle("canvas",
                             size,
                             self.__radius, (255, 255, 255, 255),
                             fill=(128, 128, 128, 255),
                             tag="ball")
            core.draw_rectangle("canvas", [
                self.__paddle[0] - self.__paddleSize[0],
                self.__paddle[1] - self.__paddleSize[1]
            ], [
                self.__paddle[0] + self.__paddleSize[0],
                self.__paddle[1] + self.__paddleSize[1]
            ], (255, 255, 255, 255),
                                fill=(128, 128, 128, 255),
                                tag="paddle")

        core.set_resize_callback(self.__resize)
        core.set_render_callback(self.__render)
        core.set_key_down_callback(self.__keydown)
        core.set_mouse_wheel_callback(self.__mousewheel)
def example_two():
    """
    Commands to put into input
    """
    with s.window("Hello World", autosize=True):
        c.add_text("Hello world!")

    c.show_logger()
    c.log_info("Foo")
    c.log_info("Check it out ma - no IDE!")

    with s.window("Canvas", x_pos=0, y_pos=300, autosize=True):
        c.add_drawing("Draw", width=300, height=300)
        c.draw_circle(
            "Draw",
            center=[150, 150],
            radius=50,
            color=[125, 125, 125],
            fill=[125, 125, 200],
        )
Beispiel #3
0
    def draw_visualisation(self):
        maxNeurons = max(self.containerData.listOfLayerNeurons) if max(self.containerData.listOfLayerNeurons) <10 else 10
        ratio = (self.containerData.numberOfLayers) / maxNeurons
        if (self.height > self.width * ratio):
            gap = int(self.width / (self.scaleParam*maxNeurons))
            radius = int(self.width / (self.scaleParam * 6 * maxNeurons))
            thickness = int(self.width / 1200)
        else:
            gap = int(self.height / (self.scaleParam*self.containerData.numberOfLayers))
            radius = int(self.height / (self.scaleParam*(6 * self.containerData.numberOfLayers)))
            thickness = int(self.height / 1200)
        core.clear_drawing(self.drawingName)
        for layer in range(self.containerData.numberOfLayers):
            if (self.containerData.listOfLayerTypes[layer] == 'Activation') or (self.containerData.listOfLayerTypes[layer] == 'Flatten'):
                self.containerData.listOfLayerNeurons[layer] = 1
            additionalNeurons = self.containerData.listOfLayerNeurons[layer] - 10
            outputString = ('\n+' + str(additionalNeurons) + " more")
            core.draw_text(self.drawingName, pos=[self.width - gap, self.coordinate_of_text(layer, 0, gap)[1]], text=(self.containerData.listOfLayerTypes[layer]+"\n"+self.containerData.listOfActivations[layer]
                                                                                                                 +(outputString if additionalNeurons > 0 else '')), color=self.white, size=radius)

        for layer in range(self.containerData.numberOfLayers):
            for neuron in range(self.containerData.listOfLayerNeurons[layer] if self.containerData.listOfLayerNeurons[layer]<10 else 10):
                if layer != self.containerData.numberOfLayers - 1:
                    for nextNeuron in range(self.containerData.listOfLayerNeurons[layer+1] if self.containerData.listOfLayerNeurons[layer+1]<10 else 10):
                        core.draw_line(self.drawingName, self.coordinate_of(layer, neuron, gap),
                                  self.coordinate_of(layer + 1, nextNeuron, gap), color=self.grey,
                                  thickness=thickness)

        for layer in range(self.containerData.numberOfLayers):
            if layer == 0:
                color = [0, 200, 0, 255]
            elif layer == self.containerData.numberOfLayers - 1:
                color = [200, 0, 0, 255]
            else:
                color = [0, 0, 200, 255]
            if (self.containerData.listOfLayerTypes[layer] != 'Activation') and (self.containerData.listOfLayerTypes[layer] != 'Flatten'):
                for neuron in range(self.containerData.listOfLayerNeurons[layer] if self.containerData.listOfLayerNeurons[layer]<10 else 10):
                    core.draw_circle(self.drawingName, self.coordinate_of(layer, neuron, gap), radius, color=color, fill=color)
            else:
                core.draw_triangle(self.drawingName, p1=[self.width/2-self.width/30, layer*gap+gap/2], p2=[self.width/2 - self.width/30 - gap/2, layer*gap], p3=[self.width/2-self.width/30+gap/2, layer*gap], color=self.white, fill=self.white)
Beispiel #4
0
def draw_graph(architecture, mapping, diameter=20):
    """
    Draws a physical architecture and labels mapped nodes.

    Parameters: 
    architecture (str): Architecture type.
    mapping (dict): Mapping from circuit graph to pysical architecture.
    diameter (float): Diameter of the graph nodes. Also determines the size of resulting graph.

    Returns: 
    None 
    """
    with simple.window('Graph',
                       width=800,
                       height=800,
                       on_close=delete_items(['Graph'])):
        core.add_drawing('drawing1',
                         width=int(diameter * diameter * 2),
                         height=int((diameter / 2)**2))

    start_x = diameter
    start_y = diameter * 4
    color_white = [255, 255, 255, 255]
    color_black = [0, 0, 0, 255]
    color_orange = [255, 170, 23, 255]
    color_blue = [15, 27, 115, 255]
    line_width = 5

    num_of_nodes = {
        architecture == 'ibmq_armonk':
        1,
        architecture == 'ibmq_athens' or architecture == 'ibmq_santiago' or architecture == 'ibmqx2' or architecture == 'ibmq_vigo' or architecture == 'ibmq_valencia' or architecture == 'ibmq_ourence':
        5,
        architecture == 'ibmq_16_melbourne':
        15
    }[True]

    ###
    if architecture == 'ibmq_armonk':
        # draw one node
        core.draw_circle('drawing1', [start_x, start_y],
                         diameter,
                         color_orange,
                         fill=color_orange)
        core.draw_text('drawing1',
                       [start_x - diameter, start_y + (diameter / 2)],
                       mapping[0],
                       color=color_black,
                       size=diameter)

    ###
    elif architecture == 'ibmq_athens' or architecture == 'ibmq_santiago':
        for k in range(num_of_nodes):
            if k in mapping.keys():
                core.draw_circle('drawing1', [start_x, start_y],
                                 diameter,
                                 color_orange,
                                 fill=color_orange)
                core.draw_text('drawing1',
                               [start_x - diameter, start_y + (diameter / 2)],
                               mapping[k],
                               color=color_black,
                               size=diameter)
            else:
                core.draw_circle('drawing1', [start_x, start_y],
                                 diameter,
                                 color_white,
                                 fill=color_white)
                core.draw_text('drawing1',
                               [start_x - diameter, start_y + (diameter / 2)],
                               str(k),
                               color=color_blue,
                               size=diameter)
            # draw an edge only if it is not the last node
            if k < 4:
                core.draw_line("drawing1", [start_x + diameter, start_y],
                               [start_x + (diameter * 2), start_y],
                               color_white, line_width)
                start_x += diameter * 3

    ###
    elif architecture == 'ibmq_vigo' or architecture == 'ibmq_valencia' or architecture == 'ibmq_ourence':
        for k in range(num_of_nodes):
            if k == 2:
                # save previous coordinates
                previous_x, previous_y = start_x, start_y
                # adjust coordinates
                start_x -= (diameter * 3)
                start_y -= (diameter * 3)
                if k in mapping.keys():
                    core.draw_circle('drawing1', [start_x, start_y],
                                     diameter,
                                     color_orange,
                                     fill=color_orange)
                    core.draw_text(
                        'drawing1',
                        [start_x - diameter, start_y + (diameter / 2)],
                        mapping[k],
                        color=color_black,
                        size=diameter)
                else:
                    core.draw_circle('drawing1', [start_x, start_y],
                                     diameter,
                                     color_white,
                                     fill=color_white)
                    core.draw_text(
                        'drawing1',
                        [start_x - diameter, start_y + (diameter / 2)],
                        str(k),
                        color=color_blue,
                        size=diameter)
                core.draw_line("drawing1", [start_x, start_y + diameter],
                               [start_x, start_y + (diameter * 2)],
                               color_white, line_width)
                # restore coordinates
                start_x, start_y = previous_x, previous_y
            else:
                if k in mapping.keys():
                    core.draw_circle('drawing1', [start_x, start_y],
                                     diameter,
                                     color_orange,
                                     fill=color_orange)
                    core.draw_text(
                        'drawing1',
                        [start_x - diameter, start_y + (diameter / 2)],
                        mapping[k],
                        color=color_black,
                        size=diameter)
                else:
                    core.draw_circle('drawing1', [start_x, start_y],
                                     diameter,
                                     color_white,
                                     fill=color_white)
                    core.draw_text(
                        'drawing1',
                        [start_x - diameter, start_y + (diameter / 2)],
                        str(k),
                        color=color_blue,
                        size=diameter)
                # draw an edge only if it is not the last node
                if k < 4:
                    core.draw_line("drawing1", [start_x + diameter, start_y],
                                   [start_x + (diameter * 2), start_y],
                                   color_white, line_width)
                    start_x += diameter * 3

    ###
    elif architecture == 'ibmqx2':
        k = 0
        start_y = diameter
        if k in mapping.keys():
            core.draw_circle('drawing1', [start_x, start_y],
                             diameter,
                             color_orange,
                             fill=color_orange)
            core.draw_text('drawing1',
                           [start_x - diameter, start_y + (diameter / 2)],
                           mapping[k],
                           color=color_black,
                           size=diameter)
        else:
            core.draw_circle('drawing1', [start_x, start_y],
                             diameter,
                             color_white,
                             fill=color_white)
            core.draw_text('drawing1',
                           [start_x - diameter, start_y + (diameter / 2)],
                           str(k),
                           color=color_blue,
                           size=diameter)
        core.draw_line("drawing1", [start_x, start_y + diameter],
                       [start_x, start_y + (diameter * 2)], color_white,
                       line_width)
        k += 1
        start_y += diameter * 3
        if k in mapping.keys():
            core.draw_circle('drawing1', [start_x, start_y],
                             diameter,
                             color_orange,
                             fill=color_orange)
            core.draw_text('drawing1',
                           [start_x - diameter, start_y + (diameter / 2)],
                           mapping[k],
                           color=color_black,
                           size=diameter)
        else:
            core.draw_circle('drawing1', [start_x, start_y],
                             diameter,
                             color_white,
                             fill=color_white)
            core.draw_text('drawing1',
                           [start_x - diameter, start_y + (diameter / 2)],
                           str(k),
                           color=color_blue,
                           size=diameter)
        k += 1
        start_x += diameter * 3
        start_y -= diameter * 1.5
        if k in mapping.keys():
            core.draw_circle('drawing1', [start_x, start_y],
                             diameter,
                             color_orange,
                             fill=color_orange)
            core.draw_text('drawing1',
                           [start_x - diameter, start_y + (diameter / 2)],
                           mapping[k],
                           color=color_black,
                           size=diameter)
        else:
            core.draw_circle('drawing1', [start_x, start_y],
                             diameter,
                             color_white,
                             fill=color_white)
            core.draw_text('drawing1',
                           [start_x - diameter, start_y + (diameter / 2)],
                           str(k),
                           color=color_blue,
                           size=diameter)
        core.draw_line(
            "drawing1",
            [start_x + (diameter / 2) + 5, start_y - (diameter / 2) - 5],
            [start_x + (diameter * 2), start_y - (diameter * 1.5)],
            color_white, line_width)
        core.draw_line(
            "drawing1",
            [start_x + (diameter / 2) + 5, start_y + (diameter / 2) + 5],
            [start_x + (diameter * 2), start_y + (diameter * 1.5)],
            color_white, line_width)
        core.draw_line(
            "drawing1",
            [start_x - (diameter / 2) - 5, start_y - (diameter / 2) - 5],
            [start_x - (diameter * 2), start_y - (diameter * 1.5)],
            color_white, line_width)
        core.draw_line(
            "drawing1",
            [start_x - (diameter / 2) - 5, start_y + (diameter / 2) + 5],
            [start_x - (diameter * 2), start_y + (diameter * 1.5)],
            color_white, line_width)
        k += 1
        start_x += diameter * 3
        start_y += diameter * 1.5
        if k in mapping.keys():
            core.draw_circle('drawing1', [start_x, start_y],
                             diameter,
                             color_orange,
                             fill=color_orange)
            core.draw_text('drawing1',
                           [start_x - diameter, start_y + (diameter / 2)],
                           mapping[k],
                           color=color_black,
                           size=diameter)
        else:
            core.draw_circle('drawing1', [start_x, start_y],
                             diameter,
                             color_white,
                             fill=color_white)
            core.draw_text('drawing1',
                           [start_x - diameter, start_y + (diameter / 2)],
                           str(k),
                           color=color_blue,
                           size=diameter)
        k += 1
        start_y -= diameter * 3
        if k in mapping.keys():
            core.draw_circle('drawing1', [start_x, start_y],
                             diameter,
                             color_orange,
                             fill=color_orange)
            core.draw_text('drawing1',
                           [start_x - diameter, start_y + (diameter / 2)],
                           mapping[k],
                           color=color_black,
                           size=diameter)
        else:
            core.draw_circle('drawing1', [start_x, start_y],
                             diameter,
                             color_white,
                             fill=color_white)
            core.draw_text('drawing1',
                           [start_x - diameter, start_y + (diameter / 2)],
                           str(k),
                           color=color_blue,
                           size=diameter)
        core.draw_line("drawing1", [start_x, start_y + diameter],
                       [start_x, start_y + (diameter * 2)], color_white,
                       line_width)

    ###
    elif architecture == 'ibmq_16_melbourne':
        start_y = diameter
        for k in range(num_of_nodes):
            temp_key = num_of_nodes - (k + 1)

            if temp_key in mapping.keys():
                core.draw_circle('drawing1', [start_x, start_y],
                                 diameter,
                                 color_orange,
                                 fill=color_orange)
                temp_key = num_of_nodes - (k + 1)
                core.draw_text('drawing1',
                               [start_x - diameter, start_y + (diameter / 2)],
                               mapping[temp_key],
                               color=color_black,
                               size=diameter)
            else:
                core.draw_circle('drawing1', [start_x, start_y],
                                 diameter,
                                 color_white,
                                 fill=color_white)
                core.draw_text('drawing1',
                               [start_x - diameter, start_y + (diameter / 2)],
                               str(temp_key),
                               color=color_blue,
                               size=diameter)

            if k != 7 and k != 8:
                core.draw_line("drawing1", [start_x + diameter, start_y],
                               [start_x + (diameter * 2), start_y],
                               color_white, line_width)

            if (k < 7):
                core.draw_line("drawing1", [start_x, start_y + diameter],
                               [start_x, start_y + (diameter * 2)],
                               color_white, line_width)
                start_x += diameter * 3
            else:
                start_x -= diameter * 3

            if (k == 7):
                start_y += diameter * 3
Beispiel #5
0
 def _draw_internal(self, draw_args) -> None:
     dpgcore.draw_circle(self.canvas.id, tag=self.id, **draw_args)
Beispiel #6
0
def show_demo():

    with cxt.collapsing_header(label="Drawlists"):

        with cxt.group():

            dpg.add_radio_button(
                ("Layer 1", "Layer 2", "Layer 3"),
                default_value="Layer 1",
                callback=lambda sender: _set_layer(dpg.get_value(sender)))
            dpg.add_listbox(("Line", "Circle"),
                            label="Draw Item",
                            default_value="Line",
                            width=100,
                            callback=_switch_group)

            with cxt.group(width=200) as g:
                global line_group
                line_group = g
                p1_input = dpg.add_input_intx(label="p1",
                                              size=2,
                                              default_value=(10, 10))
                p2_input = dpg.add_input_intx(label="p2",
                                              size=2,
                                              default_value=(100, 100))
                thickness_input = dpg.add_input_int(label="thickness",
                                                    default_value=1)
                color_input = dpg.add_color_picker(label="color",
                                                   default_value=(255, 255,
                                                                  255, 255))
                dpg.add_button(label="Add",
                               callback=lambda: dpg.draw_line(
                                   dpg.get_value(p1_input),
                                   dpg.get_value(p2_input),
                                   thickness=dpg.get_value(thickness_input),
                                   color=dpg.get_value(color_input),
                                   parent=current_layer))

            with cxt.group(show=False, width=200) as g:
                global circle_group
                circle_group = g
                center_input = dpg.add_input_intx(label="center",
                                                  size=2,
                                                  default_value=(100, 100))
                radius_input = dpg.add_input_int(label="radius",
                                                 default_value=20)
                thickness_input = dpg.add_input_int(label="thickness",
                                                    default_value=1)
                seg_input = dpg.add_input_int(label="segments",
                                              default_value=0)
                color_input = dpg.add_color_picker(label="color",
                                                   default_value=(255, 255,
                                                                  255, 255))
                fill_input = dpg.add_color_picker(label="fill",
                                                  default_value=(0, 0, 0, 0),
                                                  alpha_bar=True)
                dpg.add_button(label="Add",
                               callback=lambda: dpg.draw_circle(
                                   dpg.get_value(center_input),
                                   dpg.get_value(radius_input),
                                   thickness=dpg.get_value(thickness_input),
                                   segments=dpg.get_value(seg_input),
                                   color=dpg.get_value(color_input),
                                   fill=dpg.get_value(fill_input),
                                   parent=current_layer))

        dpg.add_same_line()

        with cxt.drawlist(id="drawlist_demo", width=800, height=500):
            global current_layer, layer_1, layer_2, layer_3
            dpg.draw_rectangle((0, 0), (800, 500),
                               color=(100, 100, 100, 250),
                               thickness=2)
            layer_1 = dpg.add_draw_layer()
            layer_2 = dpg.add_draw_layer()
            layer_3 = dpg.add_draw_layer()
            current_layer = layer_1