Plop engine - pour les players audio/video

Soyez le premier à donner votre avis sur cette source.

Vue 7 333 fois - Téléchargée 808 fois


Description

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 / Exemple :


{ -------------------------------------------------------------------- }
{ -------------------------------------------------------------------- }
{
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.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
32
Salut,

Oui le projet est abandonné, rien ne t'empêche de le reprendre, c'est fait un peu pour cela. Faudra dépoussiérer j'ai fais ça a mes tout début ou presque.

J'ai fais ce que je voulais de bass et suis passé à d'autres choses.
Messages postés
13
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
14 avril 2013

bonjour
As tu un projet de demo pour utiliser tes compos ?
car je debute et aimerais etre guidé ...

As tu avancé avec BASS ?

Je sais cela fait deja quelques années, tu as peut etre abandonné le projet...

merci
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
32
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.
Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020
34
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.