Page 1 sur 2

Pingtix Player

Publié : dim. 13/mars/2005 18:08
par Pingtix
Voici le premier "vrai" programme que j'ai fait en PureBasic, le Pingtix Player.

Image
C'est un petit player multimedia (audio et video) qui tient en un EXE.
Attention il reste dans la barre des taches si on ferme la fenetre.
Image

Il faut le préciser, le programme utilise les libs ToolbarXP de LSI, MoreProgressBarGadget de Denis et Video de Chris !
Et le visualiseur est fait par Garzul !

Le programme n'est pas encore parfait, mais dites moi ce que vous en pensez !

Vu que le programme utilise la lib de Chris (et donc l'api windows) pour lire les fichiers vous aurez peut-etre besoin d'installer un filtre OGG séparément pour pouvoir profiter de ce merveilleux format :D

Télécharger depuis PureStorage

Publié : dim. 13/mars/2005 19:08
par Le Soldat Inconnu
Cool ;)

mais il manque un truc, quand tu redimmensionnes la fen, il faudrait que la vidéo garde son format d'rigine en replissant au mieux la fen, plutot que de déformer la vidéo en fonction de la fen :wink:

Publié : dim. 13/mars/2005 20:54
par nico
J'ai remarqué que la ToolbarXP a du mal a réagir au passage de la souris, le mouseover est trop lent!

Publié : dim. 13/mars/2005 21:18
par Le Soldat Inconnu
Effectivement, y'a un prob, ça doit pouvoir aller plus vite.
Tu as mis un delay dans ta boucle d'évènement ???

Publié : dim. 13/mars/2005 22:11
par venom
cool :D je le trouve bien ce petit lecteur leger simple bref efficasse :lol:
je trouve que tu a fait du bon bouleau pingtix :D bravo siregarde j'en ai commencer un que j'ai pas totalement fini tu verra. faudra que je mi remette :D

Code : Tout sélectionner

Enumeration 
  #Window_0 
EndEnumeration 

Enumeration 
  #liste 
  #play 
  #PauseMovie
  #StopMovie
  #repeat  
  #AffichageCurseurLecture 
  #volume
EndEnumeration 
  
If InitMovie() = 0 
  MessageRequester("Erreur", "Impossible de lire des vidéos", 0) 
  End 
EndIf 

If CreateImage(0, 255, 255) 
  StartDrawing(ImageOutput()) 
  For k=0 To 255 
    FrontColor(k,120, 20) 
    Line(0, k, 255, 0) 
  Next 
  DrawingMode(1) 
  Locate(63, 40) 
  FrontColor(255,255,0) 
  DrawText("AUDIO PLAYER 1.0") 
  StopDrawing() 
EndIf 

Procedure WindowCallback(WindowID, message, lParam, wParam) 
  
  Select message 
    Case #PB_Event_Repaint 
      StartDrawing(WindowOutput()) 
      DrawImage(UseImage(0), 10, 45, 635, 320) 
      StopDrawing() 
  EndSelect 
  
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 

Procedure Rafraichir(Valeur.l) 
  Repeat 
    Delay(Valeur) 
    Position = MovieStatus() 
    If Position > 0 
      SetGadgetState(#AffichageCurseurLecture, Int(1000 * Position / MovieLength())) 
    EndIf 
  ForEver 
EndProcedure 

If OpenWindow(0, 0, 0, 700, 400 , #PB_Window_SystemMenu | #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered , "audio player 1.0") 
   SetWindowCallback(@WindowCallback()) 
  
  If CreateGadgetList(WindowID()) 
    ButtonGadget(#liste, 2, 1, 138, 30, "LISTE ~~")
    GadgetToolTip(0,"choisir un titre dans une liste")  
    ButtonGadget(#play, 140, 1, 140, 30, "LECTURE >")
    GadgetToolTip(1,"lire le fichier qui a etait choisi")  
    ButtonGadget(#PauseMovie, 280, 1, 140, 30, "PAUSE II", #PB_Button_Toggle )
    GadgetToolTip(2,"metre / reprendre le fichier en pause") 
    ButtonGadget(#StopMovie, 420, 1, 140, 30, "STOP #")
    GadgetToolTip(3,"arret du fichier")  
    ButtonGadget(#repeat, 560, 1, 140, 30, "repeat", #PB_Button_Toggle) : DisableGadget(4,1)
    GadgetToolTip(4,"repeter le fichier a l'infini")         
    ProgressBarGadget(#AffichageCurseurLecture, 10, 377, 680, 15, 0, 1000)
    GadgetToolTip(5,"indicateur de temps")  
    
    TrackBarGadget(#volume,677, 60, 20,285,0,100, #PB_TrackBar_Vertical)
    GadgetToolTip(6,"augmente / baisse le volume")  
    TextGadget    (10, 676,40,200, 20,"son") 
    TextGadget    (20, 677,350,200, 20,"son") 
    TextGadget    (30, 652,328,200, 20,"0") 
    TextGadget    (40, 650,62,200, 20,"100") 
    TextGadget    (50, 650,196,200, 20,"50") 
  EndIf 
EndIf 
SetGadgetState(#volume, 50) :volume=50 

;la tu fais ta boucle 
Repeat 
  Event = WaitWindowEvent()    
  If Event = #PB_EventGadget          
    Select EventGadgetID() 
      
      Case #volume 
        volume = GetGadgetState(#volume) 
        MovieAudio(volume, Balance) 
        
      Case #liste  
        NomFichier$ = OpenFileRequester("Titre", "::{450d8fba-ad25-11d0-98a8-0800361b1103}\", "wave. mp3. midi|*.wav;*.wave;*.mp3;*.mid", 0) 
        If NomFichier$ 
          LoadMovie(1, NomFichier$) 
        EndIf 
        
      Case #play 
        PlayMovie(1, WindowID()) 
        ResizeMovie(150, 50, MovieWidth(), MovieHeight())  
        ThreadID = CreateThread(@Rafraichir(), 250) 
        
      Case #StopMovie 
        StopMovie() 
        KillThread(ThreadID)
              
      Case #PauseMovie 
        If GetGadgetState(#PauseMovie) = 1 
          PauseMovie() 
        Else 
          ResumeMovie() 
        EndIf                
    EndSelect 
  EndIf 
Until Event = #PB_EventCloseWindow 
voila et je dit quand meme merci a toutes les personnes qui mon aider il se reconnaiterons :D

encore bravo j'aime bien
@++

Publié : dim. 13/mars/2005 22:51
par Droopy
très sympa

juste un pb : quand tu selectionne un menu ça reste marqué en blanc sur la vidéo, même en fermant le menu ?

sinon tu peux pas rajouter un passage en mode fullscreen / windows avec un double clic dans la fenêtre ?

encore bravo

Publié : lun. 14/mars/2005 7:10
par garzul
:) VIVE LE PINGTIX PLAYER !!!!!!

Publié : lun. 14/mars/2005 8:52
par Pingtix
Oui j'ai un Delay(20) je vais mettre 10 alors, par contre ça va bouffer plus de ressources processeur..
quand tu selectionne un menu ça reste marqué en blanc sur la vidéo, même en fermant le menu
ok
sinon tu peux pas rajouter un passage en mode fullscreen / windows avec un double clic dans la fenêtre ?
Je fais ça comment ?
mais il manque un truc, quand tu redimmensionnes la fen, il faudrait que la vidéo garde son format d'rigine en replissant au mieux la fen, plutot que de déformer la vidéo en fonction de la fen
Ok je vais essayer, on va voir ce que ça va donner :D

Publié : lun. 14/mars/2005 9:07
par Pingtix
J'ai réduit le delay et je pense avoir corrigé le problème du menu qui laisse une trace sur la video, dites moi si ça marche meux chez vous.

Je ferai les autres corrections ce soir.

Publié : lun. 14/mars/2005 9:26
par Crystal Noir
Cool :)

On peut le mettre sur 2dev en téléchargement ? :)

Publié : lun. 14/mars/2005 12:16
par Pingtix
Bien sur !

Publié : lun. 14/mars/2005 12:30
par nico
@Soldat Inconnu

Tu penses faire de ta ToolbarXP une version servant à afficher des menus, ça serait du plus bel effet ?

Publié : lun. 14/mars/2005 12:50
par Pingtix
Si je me souviens bien, il l'a déja fait en combinant sa toolbar avec un PopupMenu.
Mais bon peut-etre que je me souviens mal :D

EDIT: Voila maintenant quand on double clique sur la video ça passe en Fullscreen.
Par contre j'ai pas trop pigé comment garder les proportions de la video.

Publié : lun. 14/mars/2005 19:40
par Droopy
nickel pour le double clic / pb de trace blanches sur le menu

pour le redimensionement
quand tu fais info tu a la taille originale de la vidéo
Il faut que le redimensionnement de la fenêtre conserve ce rapport
rapport = largeur/hauteur

Publié : lun. 14/mars/2005 21:12
par Le Soldat Inconnu
Tu penses faire de ta ToolbarXP une version servant à afficher des menus, ça serait du plus bel effet ?
euh, dans le style de mon PopupMenu Editeur (voir mon site) ?

Ma toolbar n'est pas propremement dis une vrai toolbar pour avoir toute la souplesse dont j'avais besoin en terme de design et de possibilité de fonctionnement (comme mettre la toolbar en bas de la fen par exemple)