Exemplo n.º 1
0
    def test_scene(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")

        temp = get_temp_folder(__file__, "temp_scene")

        s = Scene(Repere(), math.pi / 1.5, 400, 300)
        s.ajoute_source(Source(Vecteur(0, 10, 10), Couleur(1, 1, 1)))
        s.ajoute_source(Source(Vecteur(10, 10, 5), Couleur(0.5, 0.5, 0.5)))
        s.ajoute_objet(Sphere(Vecteur(0, 0, 12), 3, Couleur(1, 0, 0)))
        s.ajoute_objet(Sphere(Vecteur(0, -400, 12),
                              396, Couleur(0.5, 0.5, 0.5)))
        fLOG(s)

        if is_travis_or_appveyor() == "travis":
            warnings.warn("pygame is not available")
            return

        import pygame
        from src.ensae_teaching_cs.helpers.pygame_helper import wait_event

        screen = pygame.display.set_mode(s.dim)
        screen.fill((255, 255, 255))
        s.construit_image(screen, pygame=pygame, fLOG=fLOG)

        pygame.image.save(screen, os.path.join(temp, "scene.png"))

        if __name__ == "__main__":
            wait_event(pygame)
Exemplo n.º 2
0
    def test_scene_phong(self):
        fLOG(__file__, self._testMethodName, OutputPrint=__name__ == "__main__")

        temp = get_temp_folder(__file__, "temp_scene_phong")

        s = ScenePhong(Repere(), math.pi / 1.5, 400, 300)

        s.ajoute_source(Source(Vecteur(0, 10, 10), Couleur(1, 1, 1)))
        s.ajoute_source(Source(Vecteur(10, 10, 5), Couleur(0.5, 0.5, 0.5)))
        s.ajoute_objet(Sphere(Vecteur(0, 0, 12), 3, Couleur(1, 0, 0)))
        s.ajoute_objet(Sphere(Vecteur(0, -400, 12), 396, Couleur(0.5, 0.5, 0.5)))

        if is_travis_or_appveyor() == "travis":
            warnings.warn("pygame is not available")
            return

        import pygame

        screen = pygame.display.set_mode(s.dim)
        screen.fill((255, 255, 255))
        s.construit_image(screen, pygame=pygame, fLOG=fLOG)

        from src.ensae_teaching_cs.helpers.pygame_helper import wait_event

        pygame.image.save(screen, os.path.join(temp, "scene_phong.png"))

        if __name__ == "__main__":
            wait_event(pygame)
Exemplo n.º 3
0
    def test_diff_full(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")

        seq1 = "zab zab2 zabc3 zabcd zabc4".split()
        seq2 = "ab ab2 abc3 abc4 abc adb".split()
        diff = SequenceMatcher(a=seq1, b=seq2)

        h = 20
        size = 500, 500
        white = 255, 255, 255

        if is_travis_or_appveyor() in ("travis",):
            # pygame.error: No available video device
            return
        import pygame
        if is_travis_or_appveyor() == "circleci":
            # os.environ["SDL_VIDEODRIVER"] = "x11"
            flags = pygame.NOFRAME
        else:
            flags = 0

        pygame, screen, fonts = get_pygame_screen_font(h, size, flags=flags)

        from src.ensae_teaching_cs.helpers.pygame_helper import wait_event

        bars = [random.randint(10, 500) / 500.0 for s in seq2]
        screen.fill(white)
        build_diff_image(pygame, screen, h=h, maxw=size[1], seq1=seq1, seq2=seq2, diff=diff,
                         fonts=fonts, bars=bars)
        pygame.display.flip()
        temp = get_temp_folder(__file__, "temp_video_diff_full")

        for i in range(0, 21):
            screen.fill(white)
            build_diff_image(pygame, screen, h=h, maxw=size[0], seq1=seq1, seq2=seq2, diff=diff,
                             fonts=fonts, bars=bars, progress=i / 20.0, prev_bars=None)
            pygame.time.wait(60)
            pygame.display.flip()
            pygame.image.save(screen, os.path.join(temp, "diff%d.png" % i))

        if __name__ == "__main__":

            from src.ensae_teaching_cs.helpers.video_helper import make_video
            png = [os.path.join(temp, _)
                   for _ in os.listdir(temp) if ".png" in _]
            out = os.path.join(temp, "diff.avi")
            make_video(png, out, size=(350, 250), format="XVID", fps=5)

            wait_event(pygame)

        for font in fonts.values():
            del font
        pygame.quit()
    def test_scene_image(self):
        fLOG(__file__,
             self._testMethodName,
             OutputPrint=__name__ == "__main__")

        temp = get_temp_folder(__file__, "temp_scene_bette")
        image = os.path.join(temp, "..", "data", "bette_davis.png")

        s = ScenePhong(Repere(), math.pi / 1.5, 400, 200)

        s.ajoute_source(Source(Vecteur(0, 8, 8), Couleur(0.4, 0.4, 0.4)))
        s.ajoute_source(Source(Vecteur(10, 0, 0), Couleur(0.4, 0.4, 0.4)))
        s.ajoute_source(Source(Vecteur(8, 8, 4.5), Couleur(0.4, 0.4, 0.4)))
        s.ajoute_objet(Sphere(Vecteur(3, -4, 7), 1, Couleur(1, 0, 0)))
        s.ajoute_objet(
            SphereReflet(Vecteur(0, -400, 12), 396, Couleur(0.5, 0.5, 0.5),
                         0.5))

        s.ajoute_source(Source(Vecteur(7, 2, 8), Couleur(0.2, 0.2, 0.2)))
        s.ajoute_source(Source(Vecteur(12.5, 3, 5), Couleur(0.2, 0.2, 0.2)))
        s.ajoute_source(Source(Vecteur(-12.5, 1, 6), Couleur(0.2, 0.2, 0.2)))

        s.ajoute_objet(
            Rectangle(Vecteur(-12.4, 0.99, 5.9), Vecteur(-12.6, 0.99, 5.9),
                      Vecteur(-12.6, 0.99, 6.1), None, Couleur(0, 0, 0)))

        if is_travis_or_appveyor() == "travis":
            warnings.warn("pygame is not available")
            return

        import pygame

        s.ajoute_objet(
            RectangleImage(Vecteur(8, -3.5, 9),
                           Vecteur(2, -3.5, 8),
                           Vecteur(2, 3.8, 8),
                           None,
                           image,
                           invertx=True,
                           pygame=pygame))

        from src.ensae_teaching_cs.helpers.pygame_helper import wait_event

        screen = pygame.display.set_mode(s.dim)
        screen.fill((255, 255, 255))
        s.construit_image(screen, pygame=pygame, fLOG=fLOG)

        pygame.image.save(screen, os.path.join(temp, "scene_bette.png"))

        if __name__ == "__main__":
            wait_event(pygame)
Exemplo n.º 5
0
    def test_diff(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")

        seq1 = "ab ab2 abc3 abcd abc4".split()
        seq2 = "ab ab2 abc3 abc4 abc adb".split()
        diff = SequenceMatcher(a=seq1, b=seq2)
        nb = 0
        for opcode in diff.get_opcodes():
            fLOG(opcode)
            nb += 1
        self.assertEqual(nb, 4)

        h = 20
        size = 500, 500
        white = 255, 255, 255

        if is_travis_or_appveyor() == "travis":
            warnings.warn("pygame is not available")
            return
        pygame, screen, fonts = get_pygame_screen_font(h, size)

        from src.ensae_teaching_cs.helpers.pygame_helper import wait_event

        bars = [random.randint(10, 500) / 500.0 for s in seq2]
        screen.fill(white)
        build_diff_image(pygame, screen, h=h, maxw=size[1], seq1=seq1, seq2=seq2, diff=diff,
                         fonts=fonts, bars=bars)
        pygame.display.flip()
        temp = get_temp_folder(__file__, "temp_video_diff")

        for i in range(0, 21):
            screen.fill(white)
            build_diff_image(pygame, screen, h=h, maxw=size[0], seq1=seq1, seq2=seq2, diff=diff,
                             fonts=fonts, bars=bars, progress=i / 20.0, prev_bars=None)
            pygame.time.wait(60)
            pygame.display.flip()
            pygame.image.save(screen, os.path.join(temp, "diff%d.png" % i))

        if __name__ == "__main__":

            from src.ensae_teaching_cs.helpers.video_helper import make_video
            png = [os.path.join(temp, _)
                   for _ in os.listdir(temp) if ".png" in _]
            out = os.path.join(temp, "diff.avi")
            make_video(png, out, size=(350, 250), format="XVID", fps=5)

            wait_event(pygame)
Exemplo n.º 6
0
    def test_scene_image(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")

        temp = get_temp_folder(__file__, "temp_scene_bette")
        image = os.path.join(temp, "..", "data", "bette_davis.png")

        s = ScenePhong(Repere(), math.pi / 1.5, 400, 200)

        s.ajoute_source(Source(Vecteur(0, 8, 8), Couleur(0.4, 0.4, 0.4)))
        s.ajoute_source(Source(Vecteur(10, 0, 0), Couleur(0.4, 0.4, 0.4)))
        s.ajoute_source(Source(Vecteur(8, 8, 4.5), Couleur(0.4, 0.4, 0.4)))
        s.ajoute_objet(Sphere(Vecteur(3, -4, 7), 1, Couleur(1, 0, 0)))
        s.ajoute_objet(SphereReflet(Vecteur(0, -400, 12),
                                    396, Couleur(0.5, 0.5, 0.5), 0.5))

        s.ajoute_source(Source(Vecteur(7, 2, 8), Couleur(0.2, 0.2, 0.2)))
        s.ajoute_source(Source(Vecteur(12.5, 3, 5), Couleur(0.2, 0.2, 0.2)))
        s.ajoute_source(Source(Vecteur(-12.5, 1, 6), Couleur(0.2, 0.2, 0.2)))

        s.ajoute_objet(Rectangle(Vecteur(-12.4, 0.99, 5.9), Vecteur(-12.6, 0.99, 5.9),
                                 Vecteur(-12.6, 0.99, 6.1), None, Couleur(0, 0, 0)))

        if is_travis_or_appveyor() == "travis":
            warnings.warn("pygame is not available")
            return

        import pygame

        s.ajoute_objet(RectangleImage(Vecteur(8, -3.5, 9), Vecteur(2, -3.5, 8),
                                      Vecteur(2, 3.8, 8), None, image, invertx=True, pygame=pygame))

        from src.ensae_teaching_cs.helpers.pygame_helper import wait_event

        screen = pygame.display.set_mode(s.dim)
        screen.fill((255, 255, 255))
        s.construit_image(screen, pygame=pygame, fLOG=fLOG)

        pygame.image.save(screen, os.path.join(temp, "scene_bette.png"))

        if __name__ == "__main__":
            wait_event(pygame)
Exemplo n.º 7
0
    def test_diff(self):
        fLOG(__file__,
             self._testMethodName,
             OutputPrint=__name__ == "__main__")

        seq1 = "ab ab2 abc3 abcd abc4".split()
        seq2 = "ab ab2 abc3 abc4 abc adb".split()
        diff = SequenceMatcher(a=seq1, b=seq2)
        nb = 0
        for opcode in diff.get_opcodes():
            fLOG(opcode)
            nb += 1
        self.assertEqual(nb, 4)

        h = 20
        size = 500, 500
        white = 255, 255, 255

        if is_travis_or_appveyor() == "travis":
            warnings.warn("pygame is not available")
            return
        pygame, screen, fonts = get_pygame_screen_font(h, size)

        from src.ensae_teaching_cs.helpers.pygame_helper import wait_event

        bars = [random.randint(10, 500) / 500.0 for s in seq2]
        screen.fill(white)
        build_diff_image(pygame,
                         screen,
                         h=h,
                         maxw=size[1],
                         seq1=seq1,
                         seq2=seq2,
                         diff=diff,
                         fonts=fonts,
                         bars=bars)
        pygame.display.flip()
        temp = get_temp_folder(__file__, "temp_video_diff")

        for i in range(0, 21):
            screen.fill(white)
            build_diff_image(pygame,
                             screen,
                             h=h,
                             maxw=size[0],
                             seq1=seq1,
                             seq2=seq2,
                             diff=diff,
                             fonts=fonts,
                             bars=bars,
                             progress=i / 20.0,
                             prev_bars=None)
            pygame.time.wait(60)
            pygame.display.flip()
            pygame.image.save(screen, os.path.join(temp, "diff%d.png" % i))

        if __name__ == "__main__":

            from src.ensae_teaching_cs.helpers.video_helper import make_video
            png = [
                os.path.join(temp, _) for _ in os.listdir(temp) if ".png" in _
            ]
            out = os.path.join(temp, "diff.avi")
            make_video(png, out, size=(350, 250), format="XVID", fps=5)

            wait_event(pygame)

        for k, font in fonts.items():
            del font
        pygame.quit()