Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PLOP ENGINE - POUR LES PLAYERS AUDIO/VIDEO


Information sur la source

Catégorie :API Classé sous : plopengine, api, multimedia, audio, plop Niveau : Initié Date de création : 21/12/2005 Date de mise à jour : 22/12/2005 18:14:56 Vu / téléchargé: 3 532 / 440

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Salut a tous!

Voila, ma toute derniere nouveautée, Plop Engine(v1.0.2)

Qu'est-ce que Plop Engine ?
Plop est un moteur (une API) pour les lecteurs multimedia, qu'ils soient basés sur FMOD, BASS, DSPACK ou n'importe qu'elle autre API Video/Audio.

Qu'est-ce que fait Plop Engine ?
Plop ne fait que le strict minimum pour le moment. Il fournis des fonctions, procedures, constantes, composants et classes necessaires pour faire un lecteur multimedia, comme toute API qui se respecte.

Je pose un composant et pouf! j'ai une lecteur multimedia ?
Non Non et Non, Plop ne vas pas jusque la. Il fournis juste quelques trucs utiles que vous n'aurez donc pas a developper. J'ai tenter d'apporter un grand soins a l'ecriture du code pour que Plop soit performant et n'handicape pas vos projets. Mais pour l'instant, Plop est tout jeune donc il se peu que certaines chose ne passe pas correctement.

Alors que contient Plop Engine precisement ?
Plop est constituer pour le moment de 5 unités distincte. PlopEngine, PlopTape, PlopTrack, PlopPanel et PlopGauge.

- PlopEngine est l'unité principale de Plop, elle contient tout ce qui n'est pas visuel, fonctions, types, constantes, variables ect... Vous devrez declarer manuellement PlopEngine dans la close uses de votre projet pour pouvoir acceder a tout ceci. (la source de PlopEngine.pas est largement commentée pour en expliquer le fonctionnement).

- PlopTape est l'unité de l'objet experimental(!) TPlopTape. TPlopTape est un objet permettant tout simplement de gerer trois boutton (play, stop pause) peut importe leurs type. Il est juste la pour gerer les etats (play, stop, pause) de votre lecteur multimedia. Pour utiliser TPlopTape vous devrez le créer dynamiquement dans votre projet.

- PlopTrack est l'unité de l'objet experimental(!) TPlopTrack. TPlopTrack est un objet permettant de fournir un certain nombre de champs standard et utile a n'importe quel lecteur multimedia : titre, album, artiste, genre, nom du fichier, extention du fichier, repertoire du fichier, durée de la piste, durée en cours de la piste, temps restant ...Pour utiliser TPlopTrack vous devrez le créer dynamiquement dans votre projet.

(!) risque d'etre modifier a l'avenir.

- PlopPanel est l'unité du composant visuel TPlopPanel qui a un look ecran LCD (parametrable, simple mais efficace), de par ses propriétés TPlopPanel peut etre utilisé comme un Label ou un Boutton bien qu'il ne soit initialement pas prevus pour cela.

- PlopGauge est l'unité du composant visuel TPlopGauge qui a egalement un look ecran LCD (en harmonie avec TPlopPanel).

En installant le package PlopEngineD7.dpk, ces deux nouveaux composants seront presents dans la palette "Plop Engine".

J'ai essayer de fournir un maximum de propriétés aux composants TPlopPanel et TPlopGauge pour qu'ils soient des plus pratique a utiliser.

Vous y retrouverez donc les propriétés (publiées) DoubleBuffered (a true par defaut), PopupMenu, TabStop, TabOrder, la plupart des evenements Souris, Clavier, Tabulation... et meme l'ajout des evenements OnMouseLeave et OnMouseEnter pour votre plus grand plaisir.

TPlopPanel possede egalement une propriété Caption gérée par deux autres propriétés TextHAlign et TextVAlign permettant de definir sa position, cela vous permettras de l'utiliser comme simple Label d'affichage.

 

Source

  • { -------------------------------------------------------------------- }
  • { -------------------------------------------------------------------- }
  • {
  • A propos de PlopEngine.pas
  • PlopEngine contient divers types, variables, constantes, fonctions
  • et procedures utilisable dans n'importe quel projet de lecteur
  • multimedia
  • }
  • procedure SetTimeFormat(const val : string);
  • function MinutesToTime(const Minutes : integer) : TDateTime;
  • function MinutesToStr(const Minutes : integer) : string;
  • function SecondsToTime(const Seconds : integer) : TDateTime;
  • function SecondsToStr(const Seconds : integer) : string;
  • function MillisecsToTime(const MilliSecs : integer) : TDateTime;
  • function MillisecsToStr(const MilliSecs : integer) : string;
  • function TimeRemain(const Ps,Len : TDateTime) : TDateTime;
  • function TimeRemainStr(const Ps,Len : TDateTime) : string;
  • function GenreToStr(const GenreID : byte) : string;
  • function ValueToPercent(const P,Max : single;const Min : single = 0) : single;
  • function ValueToPercentStr(const P,Max : single;const Min : single = 0) : string;
  • function ShuffleAPC(const PlaylistCount,CurrentTrackIndex : integer) : integer;
  • function ShufflePlayList(var PlayList) : integer;
  • Procedure PlopEngine_Close;
  • Procedure PLOPPANIK;
  • { -------------------------------------------------------------------- }
  • { -------------------------------------------------------------------- }
  • {
  • A propos de PlopGraphics.pas
  • PlopGraphics contient deux tout nouveaux types TPointFloat, TRectFloat
  • et egalement leurs equivalent pointeurs PPointFloat et PRectFloat.
  • Elle contient egalement diverses methodes pour gerer tout ce qui est
  • d'ordre graphique (point, rect, pointfloat, rectfloat ect...)
  • (!) le type TRectFloat est réellement derivé de TRect.
  • (!) le type TPointFloat est réellement derivé de TPoint.
  • }
  • function RectFloat(ALeft,ATop,ARight,ABottom : Single) : TRectFloat; overload;
  • function RectFloat(ATopLeft,ABottomRight : TPointFloat) : TRectFloat; overload;
  • function PointFloat(AX,AY : Single) : TPointFloat;
  • procedure FusionRect(const Src : TRect; var Dest : TRect);
  • procedure FusionRectFloat(const Src : TRectFloat; var Dest : TRectFloat);
  • function CollideRect(const R1,R2 : TRect) : boolean; overload;
  • function CollideRect(const R1,R2 : TRectFloat) : Boolean; overload;
  • function RectCenter(const ARect: TRect): TPoint;
  • function RectFloatCenter(const ARect: TRectFloat): TPointFloat;
  • function IsEmptyRect(const ARect : TRect) : boolean; overload;
  • function IsEmptyRect(const ARect : TRectFloat) : boolean; overload;
  • function IsZeroPoint(const APoint : TPoint) : boolean; overload;
  • function IsZeroPoint(const APoint : TPointFloat) : boolean; overload;
  • function IsPositivePoint(const APoint : TPoint) : boolean; overload;
  • function IsPositivePoint(const APoint : TPointFloat) : boolean; overload;
  • function PointInRect(const APoint : TPoint; const ARect : TRect) : boolean; overload;
  • function PointInRect(const APoint : TPointFloat; const ARect : TRect) : boolean; overload;
  • function PointInRect(const APoint : TPoint; const ARect : TRectFloat) : boolean; overload;
  • function PointInRect(const APoint : TPointFloat; const ARect : TRectFloat) : boolean; overload;
  • function PointFloatToPoint(const APoint : TPointFloat; const Scale : Single = 0) : TPoint;
  • function PointToPointFloat(const APoint : TPoint; const Scale : Single = 0) : TPointFloat;
  • function RectFloatToRect(const ARect : TRectFloat; const Scale : Single = 0) : TRect;
  • function RectToRectFloat(const ARect : TRect; const Scale : Single = 0) : TRectFloat;
  • function SetRect(ALeft,ATop,ARight,ABottom : Integer) : TRect; overload;
  • function SetRect(ATopLeft,ABottomRight : TPoint) : TRect; overload;
  • function SetPoint(AX,AY : Integer) : TPoint;
  • function SetRectFloat(ALeft,ATop,ARight,ABottom : Single) : TRectFloat; overload;
  • function SetRectFloat(ATopLeft,ABottomRight : TPointFloat) : TRectFloat; overload;
  • function SetPointFloat(AX,AY : Single) : TPointFloat;
{ -------------------------------------------------------------------- }
{ -------------------------------------------------------------------- }
{
A propos de PlopEngine.pas

PlopEngine contient divers types, variables, constantes, fonctions 
et procedures utilisable dans n'importe quel projet de lecteur 
multimedia
}

procedure SetTimeFormat(const val : string);

function MinutesToTime(const Minutes : integer) : TDateTime;
function MinutesToStr(const Minutes : integer) : string;

function SecondsToTime(const Seconds : integer) : TDateTime;
function SecondsToStr(const Seconds : integer) : string;

function MillisecsToTime(const MilliSecs : integer) : TDateTime;
function MillisecsToStr(const MilliSecs : integer) : string;

function TimeRemain(const Ps,Len : TDateTime) : TDateTime;
function TimeRemainStr(const Ps,Len : TDateTime) : string;

function GenreToStr(const GenreID : byte) : string;

function ValueToPercent(const P,Max : single;const Min : single = 0) : single;
function ValueToPercentStr(const P,Max : single;const Min : single = 0) : string;

function ShuffleAPC(const PlaylistCount,CurrentTrackIndex : integer) : integer;
function ShufflePlayList(var PlayList) : integer;

Procedure PlopEngine_Close;

Procedure PLOPPANIK;

{ -------------------------------------------------------------------- }
{ -------------------------------------------------------------------- }
{
A propos de PlopGraphics.pas

PlopGraphics contient deux tout nouveaux types TPointFloat, TRectFloat 
et egalement leurs equivalent pointeurs PPointFloat et PRectFloat.
Elle contient egalement diverses methodes pour gerer tout ce qui est 
d'ordre graphique (point, rect, pointfloat, rectfloat ect...)

(!) le type TRectFloat est réellement derivé de TRect.
(!) le type TPointFloat est réellement derivé de TPoint.
}

function RectFloat(ALeft,ATop,ARight,ABottom : Single) : TRectFloat; overload;
function RectFloat(ATopLeft,ABottomRight : TPointFloat) : TRectFloat; overload;
function PointFloat(AX,AY : Single) : TPointFloat;

procedure FusionRect(const Src : TRect; var Dest : TRect);
procedure FusionRectFloat(const Src : TRectFloat; var Dest : TRectFloat);

function CollideRect(const R1,R2 : TRect) : boolean; overload;
function CollideRect(const R1,R2 : TRectFloat) : Boolean; overload;

function RectCenter(const ARect: TRect): TPoint;
function RectFloatCenter(const ARect: TRectFloat): TPointFloat;

function IsEmptyRect(const ARect : TRect) : boolean; overload;
function IsEmptyRect(const ARect : TRectFloat) : boolean; overload;

function IsZeroPoint(const APoint : TPoint) : boolean; overload;
function IsZeroPoint(const APoint : TPointFloat) : boolean; overload;

function IsPositivePoint(const APoint : TPoint) : boolean; overload;
function IsPositivePoint(const APoint : TPointFloat) : boolean; overload;

function PointInRect(const APoint : TPoint; const ARect : TRect) : boolean; overload;
function PointInRect(const APoint : TPointFloat; const ARect : TRect) : boolean; overload;
function PointInRect(const APoint : TPoint; const ARect : TRectFloat) : boolean; overload;
function PointInRect(const APoint : TPointFloat; const ARect : TRectFloat) : boolean; overload;

function PointFloatToPoint(const APoint : TPointFloat; const Scale : Single = 0) : TPoint;
function PointToPointFloat(const APoint : TPoint; const Scale : Single = 0) : TPointFloat;

function RectFloatToRect(const ARect : TRectFloat; const Scale : Single = 0) : TRect;
function RectToRectFloat(const ARect : TRect; const Scale : Single = 0) : TRectFloat;

function SetRect(ALeft,ATop,ARight,ABottom : Integer) : TRect; overload;
function SetRect(ATopLeft,ABottomRight : TPoint) : TRect; overload;
function SetPoint(AX,AY : Integer) : TPoint;

function SetRectFloat(ALeft,ATop,ARight,ABottom : Single) : TRectFloat; overload;
function SetRectFloat(ATopLeft,ABottomRight : TPointFloat) : TRectFloat; overload;
function SetPointFloat(AX,AY : Single) : TPointFloat;

Conclusion

Si vous avez des suggestions, si vous remarquez des bugs ou ameliorations possible, postez un commentaire.

Si vous desirez prendre par au developpement de PlopEngine, contactez moi par Message privé.

version en cours : PlopEngine v1.0.2

(!) le package est marquer D7 mais il se peut qu'il soit installable sur d'autre version de Delphi. (au moins delphi 6 - 8 et 9)

(!) a venir : de nouveaux composants visuel au look Plop! De nouvelles fonctions et trucs utile.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

21 décembre 2005 17:58:57 :
correction de la source affichée, because // grrr
21 décembre 2005 18:00:52 :
idem que la precedente! Nix ton colorisateur syntaxique bug! (c'est pas grave, ça arrive...)
21 décembre 2005 18:03:40 :
pfff decidement...
22 décembre 2005 17:53:00 :
Ajout d'une unité "PlopGraphics" permettant la manipulation des types TPoint TRect et egalement TPointFloat et TRectFloat. Ajout d'un tableau des noms des effets d'environnement standard EAX dans PlopEngine.
22 décembre 2005 18:00:38 :
Niveau passe de Debutant a Initié (j'avais oublier de le faire)
22 décembre 2005 18:14:56 :
Suppression d'une erreur dans la fonction PointToPointFloat et egalement l'oublis de publier les fonctions RectToRectFloat et RectFloatToRect.

Commentaires et avis

signaler à un administrateur
Commentaire de cirec le 26/01/2006 16:30:57 administrateur CS

Salut f0xi,
N’ayant qu'une connaissance très limitée dans le multimédia je ne pense pas pouvoir t'être d'une aide à la hauteur de tes attentes (en réponse à ta demande sur le forum) mais j'ai toute fois une où deux remarques à formuler

- pourquoi utilises-tu Paint pour redessiner les contrôles au lieu de Invalidate qui est plus rapide me semble t'il.

- pourrais-tu commenter la partie de code dans PlopGraphics qui utilise (*$HPPEMIT 'namespace Types'*) etc. je dois avouer que je ne connais pas et que ça m'intrigue beaucoup.

- si non le code est réellement bien écrit d'une lisibilité sans faille c'est vraiment agréable. Bravo et merci (ça fait beaucoup de bien ^_^)

- et concrètement si je désir utiliser PlopEngine pour en faire un lecteur Multimédia comment dois-je m'y prendre ?

Conclusion même si j'ai pas tout bien compris je met quand même une note de 10 pour la qualité du code (facilité de lecture, commentaires, et somme de travail)

@+
Cirec

signaler à un administrateur
Commentaire de f0xi le 27/01/2006 15:40:50 administrateur CS

alors tout d'abord, merci de t'etre penché sur plop.

J'ai utiliser la methode paint car je ne savais pas qu'on pouvait utiliser Invalidate, il faut dire que PlopGauge et PlopPanel sont mes composant visuel les plus aboutis et je manque encore de pratique de ce coté la.

Pour les HPPEMIT je ne citerais que ce conseil :
"La directive NODEFINE empêche le symbole indiqué d'être inclus dans le fichier d'en-tête généré pour le C++ tout en permettant la génération d'information dans le fichier OBJ.
Quand vous employez NODEFINE, il est de votre responsabilité de définir n'importe quels types nécessaires avec HPPEMIT."

http://laurent-dardenne.developpez.com/articles/Delphi/2005/Evolution/Langage/ (chapitre 4.4)

Et comme je voulais un code prochede celui de borland pour les types TPoint et TRect, j'ai donc fait cela en bon et due forme ... mais l'utilitée reste par ailleur assé variable.

Pour ce qui est de l'ecriture du code, j'essaye toujours au maximum de respecter la meme discipline d'ecriture ... je pense que c'est mieux d'avoir une certaine façon de faire claire, precise, propre et j'essaye au maximum de la repetée dans tout un projet.

Concretement, ce n'est pas avec PlopEngine que le lecteur multimedia fonctionneras tout seul, Plopengine pour l'instant est assé sommaire dans ses possibilitée.
On pourrais meme retenir que seul PlopEngine et PlopGraphics ont un réel interet en fournissant des fonctions utile deja toute faite, comme la convertion de temps etc...

J'espere pouvoir réelement offrir de plus en plus d'elements pour faciliter la creation d'un lecteur multimedia presque "clef en main" (lecteur audio/video)
La je bosse sur l'inclusion non dependante des API MCI, BASS et FMOD, Excercice assé difficile en sois et donc les prochains ajout seront surrement les composant PlopSound, PlopFMOD et PlopBass, mais il faudrat etre patient. De plus certains elements de plop necessite des ameliorations majeur.

voila.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Les Api Windows [ par twoupy ] Est-ce que quelqu'un possède ou sait où je pourrais trouver l'aide sur les Api Windows (win32.hlp) en français. ce serait bien cool, parce que l'angl documentation API [ par Noureddine ] Bonjour,je cherche la documentation pour comprendre L'API, si vous avez une adresse ou je peut télécharger une documentation en français SVPMerci. problème avec une api [ par fabiin ] SalutEst-ce que kelk'un rencontre un problème lors de l'utilisation desetDCbrushcoloren Delphi 6Merci par avance@+Fabse Comment utiliser une API avec Delphi 5? [ par Manthis ] Salut,Je débute tout juste en Delphi 5. J'avais commencer par le VB. Et donc voila j'ai un problème comment utiliser une API avec Delphi?Ou doit-on la API sndPlaySoundA [ par jlg75 ] j'utilise l'API 'sndPlaySoundA' tirée de 'winmm.dll' pour lire des .wav dans un prog DELPHI. Je déclare explicitement cet API comme fonction 'external CHERCHE TUT DELPHI API [ par golum ] Salut je suis a la recherche d'un tut Delphi et API un peu comme EstDev pour VBAuriez vous quelque chose ? des adresses ? Winsock [ par SMoG ] Yop... Je desespere de trouver un jour de la doc sur l'api winsock avec des exemples delphi...Si qqn pouvait m'expliquer comment deux machines se con API msn messenger [ par achovovich ] BonjourJe voudrai creer un add on pour msn messenger. Je sais ke ceci es faisable en VB et bcp d'exemples existent mais en delphi, rien. Je ne sais me fenetres bizzarres [ par ak47 ] bonjour a tous,J'ai lu dans un article qu'on pouvait faire des fenetres "bizarres" (de part leurs formes) grace a une api de windows. Malheureusement, Fonction API GetOpenFileName ??? [ par PhGORMAND ] Salut à tous.Je cherche à utiliser la fonction API GetOpenFileName, mais je ne parvient pas à l'utiliser.Dans le code ci dessous, je fais appel à la f


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.