--FUNCTIONS FOR PSPIXEL V2.0 BY ALEXANDRE RIMBOT. 2011. FOR PSP GENESIS COMPETITION

function blitter()
  if pad:cross() then fond:blit(xcurseur-153,ycurseur-8,pixel_couleur)
    elseif pad:circle() then fond:blit(xcurseur-153,ycurseur-8,pixel_blanc)
    elseif pad:triangle() then fond:blit(xcurseur-153,ycurseur-8,pixel_memoire)
  end
end
function taille()
  if taille_curseur==1 then largeur=8;hauteur=8;curseur = curseur_grand
    elseif taille_curseur==0 then largeur=4;hauteur=4;curseur = curseur_petit
  end
  if pad:square() and oldpad:square()~=pad:square() and taille_curseur==1 then taille_curseur = 0
    elseif pad:square() and oldpad:square()~=pad:square() and xcurseur~=469 and ycurseur~=220 and taille_curseur==0 then taille_curseur = 1
  end
end
function pipette()
  if pad:select() then memoire = fond:pixel(xcurseur-153,ycurseur-8) end
end
function deplacements_palette()
  if not pad:r() and not pad:l() then
      if ((pad:up() and oldpad:up()~=pad:up()) or pad:analogY() < -60) and ycurseur~=8 then ycurseur = ycurseur - hauteur end
      if ((pad:down() and oldpad:down()~=pad:down()) or pad:analogY() > 60) and ycurseur~=(224-hauteur)  then ycurseur = ycurseur + hauteur end
      if ((pad:left() and oldpad:left()~=pad:left()) or pad:analogX() < -60) and xcurseur~=153 then xcurseur = xcurseur - largeur end
      if ((pad:right() and oldpad:right()~=pad:right()) or pad:analogX() > 60) and xcurseur~=(473-largeur) then xcurseur = xcurseur + largeur end
  end
  if xcurseur<153 then xcurseur = 153 end
  if xcurseur+largeur>473 then xcurseur = (473-largeur) end
  if ycurseur<8 then ycurseur=8 end
  if ycurseur+hauteur>224 then ycurseur = (224-hauteur) end
end
function deplacements_menu()
  if pad:up() and oldpad:up()~=pad:up() and ycurseur_menu~=45 then ycurseur_menu = ycurseur_menu - 31
    elseif pad:down() and oldpad:down()~=pad:down() and ycurseur_menu~=200 then ycurseur_menu = ycurseur_menu + 31
  end
end

function changer_couleur()
    if pad:r() and pad:up() then v = v + 1
      elseif pad:r() and pad:down() then v = v - 1
    end
    if pad:r() and pad:left() then r = r - 1
      elseif pad:r() and pad:right() then r = r + 1
    end
    if pad:l() and pad:up() then b = b + 1
      elseif pad:l() and pad:down() then b = b - 1
    end
    if r>255 then r=0 end
    if r<0 then r=255 end
    if v>255 then v=0 end
    if v<0 then v=255 end
    if b>255 then b=0 end
    if b<0 then b=255 end
end
function charger_image()
ligne = 0
y=0
selecteur=1
affichage=false
charger=false
nom=""
debut=1
repertoire="ms0:/picture/PsPixel v2.0/"

fichiers = System.listDirectory(repertoire)
nombre_fichiers = table.getn(fichiers)

	while true do
		if affichage==false then
		screen:clear()
		screen:blit(0,0,fondcharger)
		pad = Controls.read()

			for i = debut,nombre_fichiers do
			longueur = string.len(fichiers[selecteur].name)
			nom = string.sub(fichiers[selecteur].name, longueur-3)
			screen:print(133,ligne,fichiers[i].name,gris)
			ligne = ligne + 10
				if i == nombre_fichiers then ligne = 0 end
				screen:print(125,y,">",gris)
					if pad:square() and affichage==false and (nom==".png" or nom==".jpg" or nom==".PNG" or nom==".JPG") then
					affichage = true
					charger = true
				end
			end

			if pad:down() and pad:down()~=oldpad:down() and selecteur ~= nombre_fichiers and nombre_fichiers<=27 then y=y+10;selecteur=selecteur+1
				elseif pad:down() and pad:down()~=oldpad:down() and selecteur ~= nombre_fichiers and nombre_fichiers>27 and y<=250 then y=y+10;selecteur=selecteur+1
				elseif pad:down() and pad:down()~=oldpad:down() and selecteur ~= nombre_fichiers and nombre_fichiers>27 and y==260 then selecteur=selecteur+1;debut = debut + 1
			end
			if pad:up() and pad:up()~=oldpad:up() and selecteur ~= 1 and nombre_fichiers<=27 then y=y-10;selecteur=selecteur-1
				elseif pad:up() and pad:up()~=oldpad:up() and selecteur ~= 1 and nombre_fichiers>27 and y>=10 then y=y-10;selecteur=selecteur-1
				elseif pad:up() and pad:up()~=oldpad:up() and selecteur ~= 1 and nombre_fichiers>27 and y==0 then selecteur=selecteur-1;debut = debut - 1
			end

			if pad:analogY() > 60 and selecteur ~= nombre_fichiers and nombre_fichiers<=27 then y=y+10;selecteur=selecteur+1
				elseif pad:analogY() > 60 and selecteur ~= nombre_fichiers and nombre_fichiers>27 and y<=250 then y=y+10;selecteur=selecteur+1
				elseif pad:analogY() > 60 and selecteur ~= nombre_fichiers and nombre_fichiers>27 and y==260 then selecteur=selecteur+1;debut = debut + 1
			end
			if pad:analogY() < -60 and selecteur ~= 1 and nombre_fichiers<=27 then y=y-10;selecteur=selecteur-1
				elseif pad:analogY() < -60 and selecteur ~= 1 and nombre_fichiers>27 and y>=10 then y=y-10;selecteur=selecteur-1
				elseif pad:analogY() < -60 and selecteur ~= 1 and nombre_fichiers>27 and y==0 then selecteur=selecteur-1;debut = debut - 1
			end
		screen:blit(350,0,antidebordement)
		end

	if affichage==true then
	screen:clear()
	pad=Controls.read()
		if pad:down() and pad:down()~=oldpad:down() and selecteur ~= nombre_fichiers and nombre_fichiers<=27 then y=y+10;selecteur=selecteur+1;charger = true
			elseif pad:down() and pad:down()~=oldpad:down() and selecteur ~= nombre_fichiers and nombre_fichiers>27 and y<=250 then y=y+10;selecteur=selecteur+1;charger = true
			elseif pad:down() and pad:down()~=oldpad:down() and selecteur ~= nombre_fichiers and nombre_fichiers>27 and y==260 then selecteur=selecteur+1;debut = debut + 1;charger = true
		end
		if pad:up() and pad:up()~=oldpad:up() and selecteur ~= 1 and nombre_fichiers<=27 then y=y-10;selecteur=selecteur-1;charger = true
			elseif pad:up() and pad:up()~=oldpad:up() and selecteur ~= 1 and nombre_fichiers>27 and y>=10 then y=y-10;selecteur=selecteur-1;charger = true
			elseif pad:up() and pad:up()~=oldpad:up() and selecteur ~= 1 and nombre_fichiers>27 and y==0 then selecteur=selecteur-1;debut = debut - 1;charger = true
		end

		if charger==true then
			longueur = string.len(fichiers[selecteur].name)
			nom = string.sub(fichiers[selecteur].name, longueur-3)
			if (nom==".png" or nom==".jpg" or nom==".PNG" or nom==".JPG") then
				img = fichiers[selecteur].name
				image = Image.load(repertoire..img)
				charger = false
				else charger = false
				end
			end
			screen:blit((480-image:width())/2,(272-image:height())/2,image)
			if pad:circle() then affichage = false end
	end

			if pad:cross() then
			longueur = string.len(fichiers[selecteur].name)
			nom = string.sub(fichiers[selecteur].name, longueur-3)
				if (nom==".png" or nom==".jpg" or nom==".PNG" or nom==".JPG") then
				img = fichiers[selecteur].name
				image_load = Image.load(repertoire..img)
				fond:blit(0,0,image_load)
				menu_graphisme=false
				fonction_charger_image=false
				break
				end
			end

		if pad:circle() then
		fonction_charger_image=false
		menu_graphisme=false
		break
		end

	screen.waitVblankStart()
	oldpad=pad
	screen.flip()
	end
end

function ChangeCouleur()
colonne_changecouleur = 0
ligne_changecouleur = 0
pixel_changecouleur = Image.createEmpty(4,4)
pixel_changecouleur:clear(couleur)
  while ligne_changecouleur < fond:height() do
    if colonne_changecouleur == fond:width() then
      colonne_changecouleur = 0
      ligne_changecouleur = ligne_changecouleur + 4
    end
    if ligne_changecouleur < fond:height() and colonne_changecouleur < fond:width() then 
      lecture = fond:pixel(colonne_changecouleur,ligne_changecouleur)
    end
    if lecture == memoire then
      fond:blit(colonne_changecouleur,ligne_changecouleur,pixel_changecouleur)
    end
    if colonne_changecouleur < fond:width() then
      colonne_changecouleur = colonne_changecouleur + 4
    end
  end
end