Random Homebrew: NO-KXploit Patcher
patch
Friends: Coding 'n Cracking - Nymphaea - PS3 Forum - darkforestgroup - daxhordes.org - Tgames - coldbird - gopsp.it - pspstation.org - prometheus - hgoel.info - MakeSmartTV - ps vita

[Tutorial] Python PSP Programming Part III

Forum rules
Any post not directly related to programming will be moderated.
Do not request people to code something for you.
Avoid posting messages that do not bring anything to the conversation. We want the threads in this subforum to stay focused.

[Tutorial] Python PSP Programming Part III

Postby Acid_Snake » Sun Aug 19, 2012 11:46 am

Working with Images.

Working with images in psp2d is essential to make your app nicer. Opening an image is simple as we saw before:
Code: Select all
image = psp2d.Image("image.png")


An image can be of any size up to the psp's screen resolution (480x272), and it can be moved around, resized, blend, cleared, etc


Placing an image:
You can place an image anywhere on the screen based on the x y coordinates.
Code: Select all
screen = psp2d.Screen()
image = psp2d.Image("image.png")
screen.blit(image, dx=50, dy=50)
the values dx and dy takes care of placing the image into the coordinates you give it, if none are given then the default (dx=0, dy=0) is used.


Redimentioning:
Just like placing, redimentioning takes place at the time of doing a screen.blit:
Code: Select all
screen.blit(image, dw=50, dh=50, blend=True)
dw and dh are values for width and height respectively.

Let's take a look at this code:
Code: Select all
import psp2d
screen = psp2d.Screen()
image = psp2d.Image("ICON0.PNG")
screen.blit(image, dx=50, dy=50)
screen.blit(image, dx=200, dy=150, dw=32, blend=True)
screen.swap()
while True:
   pad = psp2d.Controller()
   if pad.circle: break

and it's result:
example.png
example.png (24.87 KiB) Viewed 923 times



Working with colors:
The function psp2d.Color is used to create color palettes based on an RGB basis:
Code: Select all
psp2d.Color(R,G,B)

with that said, to make the red color we use:
Code: Select all
psp2d.Color(255,0,0)
0 is minimum and 255 maximum. The same applies to green and blue:
Code: Select all
psp2d.Color(0,255,0) # Green
psp2d.Color(0,0,255) # Blue
If you have ever studied art class you probably know that mixing different colors give you another color, here is some other colors I have found through trial and error:
Code: Select all
WHITE_COLOR = psp2d.Color(255,255,255)
CLEAR_COLOR = psp2d.Color(0,0,0)
RED_COLOR   = psp2d.Color(255, 0, 0)
GREEN_COLOR = psp2d.Color(0, 255, 0)
BLUE_COLOR  = psp2d.Color(0,50,255)
YELLOW_COLOR  = psp2d.Color(255,255,0)
CLEAR_COLOR is nothing more than black. Play around with the different numbers to get different colors.

Here is the example code for psptools' pixel fixer:
Code: Select all
def pixel_fix():
   # Stuck pixel fixer
   x12 = True
   log.write("pixel fixer started\n")
   while x12 == True:
      pad = psp2d.Controller()
      time.sleep(0.07)
      img.clear(WHITE_COLOR)
      scr.blit(img)
      scr.swap()
      time.sleep(0.07)
      img.clear(RED_COLOR)
      scr.blit(img)
      scr.swap()
      time.sleep(0.07)
      img.clear(GREEN_COLOR)
      scr.blit(img)
      scr.swap()
      time.sleep(0.07)
      img.clear(BLUE_COLOR)
      scr.blit(img)
      scr.swap()
      time.sleep(0.07)
      img.clear(YELLOW_COLOR)
      scr.blit(img)
      scr.swap()
      if pad.triangle:
         x12 = False
         log.write("pixel fixer ended by user\n")
         main()

There is no much mystery here, basically the same code gets repeted over and over again until the user press circle, the main code is:
Code: Select all
time.sleep(0.07)  # Delay between screen change
img.clear(COLOR) # The color to fill the screen with, this is the only thing that changes in the entire function
scr.blit(img) # You should already know this by now
scr.swap() # # You should already know this by now


This is all for now.

Previous: viewtopic.php?f=5&t=13373
"V2h5IGFyZSB5b3UgcmVhZGluZyBteSBzaWduYXR1cmU/\n".decode("base64")
My forum:
Console Heaven
My Homebrews:
pyMenu 0.3.2, multiBootMenu V3, PSvid 3.0, PSP Tools 0.2
User avatar
Acid_Snake
Moderator
 
Posts: 2045
Joined: Tue May 01, 2012 11:32 am
Location: Behind you!

Advertising

Return to Programming

Who is online

Users browsing this forum: No registered users and 1 guest