Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/devtools/ScaleTypeTest/scaleTest.py
blob: 42212dbb304db6639d155f3311a6f357eb22f6ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#! /usr/bin/env python
import pygame, time
pygame.init()

print "Scale Test - Authors Dave Silverman and Scott Mengel"
print "Set size window to 600 x 400 px"
print "Running..."

#--------------------------------------------------------------
#CONSTANTS AND VARIABLES

make=input("How many images would you like to load?\n>")
trial=input("How many runs per trial?\n>")
sizeTo=input("What would you like to resize to? Seperate with a comma, eg: x,y\n>" )

img={}
ft="" #filetype
r=0 #frame refreshes
i=1 #cycles images
size = width, height = 600,400 #screen sizes
t=0 #trial number n
colorkey=(255, 152, 0)

ftArr=[ ["bmp","BMP16100/"] ,
    ["bmp","BMP16173/"] ,
    ["bmp","BMP16200/"] ,
    ["bmp","BMP16400/"] ,
    ["bmp","BMP24100/"] , 
    ["bmp","BMP24173/"] , 
    ["bmp","BMP24200/"] , 
    ["bmp","BMP24400/"] , 
    ["gif","GIF100/"] , 
    ["gif","GIF173/"] ,  
    ["gif","GIF200/"] ,  
    ["gif","GIF400/"] , 
    ["gif","GIFT100/"] , 
    ["gif","GIFT173/"] ,  
    ["gif","GIFT200/"] ,  
    ["gif","GIFT400/"] , 
    ["png","PNG100/"] , 
    ["png","PNG173/"] , 
    ["png","PNG200/"] , 
    ["png","PNG400/"] , 
    ["png","PNGT100/"] , 
    ["png","PNGT173/"] , 
    ["png","PNGT200/"] , 
    ["png","PNGT400/"] ]

screen = pygame.display.set_mode(size) #Screen Set 600x400
background = 152, 251, 152 # pale green

#23456789123456789212345678931234567894123456789512345678961234567897123456789*

# This is the beginning of the actual test loops; this program is a very rough 
# learning exercise which we desire to polish to such a state that it can be 
# used to accurately benchmark the XO laptop's speed capabilities
while 1:
    cnt=make
    ft=ftArr[t]
    print "Testing: "+ft[1]+" extension "+ft[0]
    trialthis=trial
    start=time.time() 
# This timer will reflect the time taken to load and resize images in memory
    switcher = {
# This is also where we need advise regarding implementing convert()
        1: pygame.transform.scale( pygame.image.load("%s2.%s"%(ft[1],ft[0])).convert(),(sizeTo[0],sizeTo[1] )),
        2: pygame.transform.scale( pygame.image.load("%s3.%s"%(ft[1],ft[0])).convert(),(sizeTo[0],sizeTo[1] )),
        3: pygame.transform.scale( pygame.image.load("%s4.%s"%(ft[1],ft[0])).convert(),(sizeTo[0],sizeTo[1] )),
        4: pygame.transform.scale( pygame.image.load("%s5.%s"%(ft[1],ft[0])).convert(),(sizeTo[0],sizeTo[1] )),
        5: pygame.transform.scale( pygame.image.load("%s6.%s"%(ft[1],ft[0])).convert(),(sizeTo[0],sizeTo[1] )),
        6: pygame.transform.scale( pygame.image.load("%s7.%s"%(ft[1],ft[0])).convert(),(sizeTo[0],sizeTo[1] )),
        7: pygame.transform.scale( pygame.image.load("%s8.%s"%(ft[1],ft[0])).convert(),(sizeTo[0],sizeTo[1] )),
        8: pygame.transform.scale( pygame.image.load("%s9.%s"%(ft[1],ft[0])).convert(),(sizeTo[0],sizeTo[1] )),
        9: pygame.transform.scale( pygame.image.load("%s1.%s"%(ft[1],ft[0])).convert(),(sizeTo[0],sizeTo[1] ))
    }
    print "Time taken to load this test at ",
    print sizeTo
    print " pixels was "
    print time.time()-start
# Here ends the loading section, and hereafter we jump into the main loop
    while trialthis>0:
        while cnt>0: 
# establish the initial state for the images of the next trial
            img[cnt,0]= pygame.image.load("%s1.%s"%(ft[1],ft[0]))
            img[cnt,0]= pygame.transform.scale(img[cnt,0],(sizeTo[0], sizeTo[1])) 
            img[cnt,1]=  img[cnt,0].get_rect()
            img[cnt,2]= [2,2] #speed
            m=cnt*40
# Here I move images to avoid indistinguishable stacks of image rectangles
            img[cnt,1]=img[cnt,1].move(m,m) 
            cnt=cnt-1
        r=0
        start=time.time()

        while 1:
# This loop is the 'main event' so to speak, as it is the section that is
# measured in terms of frames per second

            cnt=make # For each 'ball' icon loaded
            while cnt>0: # Cycle and check if the 'ball' should bounce off the wall
                print cnt
                img[cnt,0]=switcher.get(i,None)
                if img[cnt,1].left < 0 or img[cnt,1].right > width:
                    img[cnt,2]=[ -img[cnt,2][0], img[cnt,2][1] ]
                if img[cnt,1].top < 0 or img[cnt,1].bottom > height:
                    img[cnt,2]=[ img[cnt,2][0], -img[cnt,2][1] ]
                img[cnt,1] = img[cnt,1].move(img[cnt,2]) 
# Move the 'ball' image accordingly, plot the change
                screen.blit(img[cnt,0],img[cnt,1])
                cnt=cnt-1 
            pygame.display.flip()
# "Make it so, number two," on those changes above
            i=i+1
            if i>9: i=1
            screen.fill(background)
            r=r+1
            if r>500: break
# After 500 frames, we print the average frame rate to the terminal
        print 1/((time.time()-start)/r)
        trialthis=trialthis-1
    t=t+1