| Amiga Impact

  · Accueil
  · Actualités
   · Proposer une info
  · Agenda
   · Proposer une date
  · Articles
  · Forum
  · Petites Annonces
  · Chat IRC
  · À propos du site
   · Confidentialité



 | Connexion

Identifiant :

Mot de passe :

 Mémoriser

  · Inscription
  · Mot de passe oublié



 | En ligne

Aucun membre ne se trouve actuellement sur le site




 | Nous suivre

Flux RSSGoogle+TwitterFacebook





Forum

/   Forums d'Amiga Impact
   /  Datatypes sur OS3.x: PNG ? TGA ? JPG? alpha? DoMethod?

Accueil Forums AmigaOS, MorphOS et AROS Développement Datatypes sur OS3.x: PNG ? TGA ? JPG? alpha? DoMethod?

Ce sujet a 6 réponses, 3 participants et a été mis à jour par  thellier, il y a 6 ans et 8 mois.

7 sujets de 1 à 7 (sur un total de 7)

Auteur Messages   
#177714 Datatypes sur OS3.x: PNG ? TGA ? JPG? alpha? DoMethod?
 le 31/01/2013 à 10:48


thellier

Participant
  • Messages : 610

Hello

Actuellement dans Microbe3D j’utilise les Datatypes sur OS4 et un loader simpliste .BMP pour Os3
Mais je demandais dans quel mesure je peut utiliser les Datatypes sur OS3 notamment pour récupérer les images (textures) avec transparence alpha ?

cad:
IDoMethod(dto,
PDTM_READPIXELARRAY,
T->pixels,
PBPAFMT_RGBA,
large*bits/8,
0,
0,
large,
high
);

Donc la question les datatypes OS3 supportent ils la couche alpha ?
notamment les TGA & PNG
Par ailleurs (or du problème Alpha) suis je assuré que le datatatype JPG marche sur OS3 ?
Enfin quid du problem de DoMethod() qui marche pas pareil selon les versions de l’OS

Bref suis je assuré que ça va toujours marcher sur OS3 ?

#177741 Répondre à: Datatypes sur OS3.x: PNG ? TGA ? JPG? alpha? DoMethod?
 le 31/01/2013 à 18:38


bigdan

Admin bbPress
  • Messages : 4656

 

Pas facile IMHO.Tu as regardé du coté des WarpDT ?

Tu as même encore des OS3.x avec un vieux picture.datatype (<v43) et des datatypes .PNG / .TGA antédiluviens.

Les réponses à ce fil m’intéressent aussi 😉

 

 

#177764 Répondre à: Datatypes sur OS3.x: PNG ? TGA ? JPG? alpha? DoMethod?
 le 31/01/2013 à 22:32


henes

Participant
  • Messages : 2564

Quel problème de DoMethod() ?

C’est une fonction qui n’est pas présente dans l’OS mais dans une bibliothèque statique (libamiga.a/amiga.lib, non ?) venant avec les compilateur et SDK/NDK.

 

#177766 Répondre à: Datatypes sur OS3.x: PNG ? TGA ? JPG? alpha? DoMethod?
 le 31/01/2013 à 22:56


thellier

Participant
  • Messages : 610

>DoMethod une fonction qui n’est pas présente dans l’OS mais dans une bibliothèque statique (libamiga.a)

Justement je vais compiler (a terme) Microbe3D comme une .library
Pourrais je alors la lier avec libamiga.a ? normalement je devrais plutot ouvrir manuellement la library qui contient ? ou alors faire mon propre DoMethod ?
Les datatypes c’est bien gentil mais une simple fonction qui aurait pris un nom de fichier et renvoyé une nouvelle bitmap contenant l’image aurait été bien plus utile…

>Tu as regardé du coté des WarpDT ?
Non je vais y jeter un oeil …

Alain

#177775 Répondre à: Datatypes sur OS3.x: PNG ? TGA ? JPG? alpha? DoMethod?
 le 01/02/2013 à 10:53


henes

Participant
  • Messages : 2564

Oui tu peux bien sûr utiliser les fonctions de la libamiga dans une bibliothèque partagée. C’est le but.

Tu n’as pas besoin d’une quelconque libbase pour utiliser domethod.

Tu peux voir une implémentation parmis d’autres dans le source de clib2 : http://clib2.cvs.sourceforge.net/viewvc/clib2/library/amiga_domethod.c?&view=markup

C’est tellement simple et basic que ce que font sas/c, vbcc etc est identique.

 

#177781 Répondre à: Datatypes sur OS3.x: PNG ? TGA ? JPG? alpha? DoMethod?
 le 01/02/2013 à 11:47


thellier

Participant
  • Messages : 610

Merci

c’est effectivement très simple à implémenter
Puis je utiliser utility.library/CallHookPkt() et ainsi ne plus avoir besoin de libamiga de cette manière:

ULONG DoMethodA(Object * obj,Msg msg)
{
ULONG result = 0;

ENTER();

SHOWPOINTER(obj);
SHOWPOINTER(msg);

assert(obj != NULL);

if(obj != NULL)
{
Class * cl;

cl = OCLASS(obj);

assert( cl != NULL );

if(cl != NULL)
result =CallHookPkt(&cl->cl_Dispatcher,obj,msg);
}

RETURN(result);
return(result);
}

#178931 Répondre à: Datatypes sur OS3.x: PNG ? TGA ? JPG? alpha? DoMethod?
 le 17/02/2013 à 17:01


thellier

Participant
  • Messages : 610

Hello je m’autoréponds car la solution peut intéresser des coders
Donc ça marche (au moins)en OS 3.9 68k et en OS4 ppc , avec le même code source , avec les warp datatypes JPG et BMP sans avoir besoin de amiga.lib
J’ai pas testé avec des images avec alpha mais c’est sensé marché…

J’ai rajouté un test (somme des pixels dans grey==0) pour voir si l’image a bien été chargé

/*==================================================================================*/
void FlipBitmap(UBYTE *RGB,WORD large,WORD high,WORD bits)
{
register UBYTE *RGB2;
register UWORD LineSize;
register UBYTE temp;
register ULONG x,y,size;

REM(FlipBitmap)
LineSize=large*bits/8;
size=LineSize*high;
RGB2=&RGB;
YLOOP(high/2)
{
XLOOP(LineSize)
{SWAP(RGB[x],RGB2[x]);}
RGB =RGB +LineSize;
RGB2=RGB2-LineSize;
}
}
/*==================================================================================*/
#include (intuition/classes.h)
#include (proto/utility.h)
/*==================================================================================*/
ULONG MyDoMethodA(Object * obj,Msg msg)
{
ULONG result=0;
Class * cl;

REM(MyDoMethodA)
if(obj==NULL)
return(result);
cl = OCLASS(obj);

if(cl==NULL)
return(result);

result =CallHookPkt(&cl->cl_Dispatcher,obj,msg);
VAR(result)
return(result);
}
/*==================================================================================*/
Texture3D *OSLoadDT(UBYTE *filename)
{
Texture3D *T;
struct BitMapHeader *bitMapHeader = NULL;
struct pdtBlitPixelArray bpa;
Object* dto=NULL;
UWORD large,high,bits;
ULONG result;
ULONG x,y,grey;
UBYTE *RGB;

REM(OSLoadDT)
dto= NewDTObject(filename, DTA_SourceType,DTST_FILE, DTA_GroupID, GID_PICTURE,PDTA_DestMode, PMODE_V43,PDTA_Remap, FALSE,TAG_DONE);
if(!dto)
{errorprintf(« Error: Could not open texture file\n »); goto Error;}

if(GetDTAttrs(dto,PDTA_BitMapHeader,(ULONG)&bitMapHeader,TAG_DONE) != 1)
{errorprintf(« Error: Could not obtain the picture objects bitmap header\n »); goto Error;}

large =bitMapHeader->bmh_Width;
high =bitMapHeader->bmh_Height;
bits =bitMapHeader->bmh_Depth;
if(bits!=32)
bits=24;

T=AllocT(large,high,bits);
if (T==NULL)
{errorprintf(« Error: Cant AllocT: No memory Texture3D %s (%ld x %ld)\n »,filename, T->width, T->height);goto Error;}

/* Extract the bitmap data from the picture object. NOTE: Need PDTM_READPIXELARRAY to recover the alpha channel. */
bpa.MethodID = PDTM_READPIXELARRAY;
bpa.pbpa_PixelData = (APTR)T->pixels;
if(bits==24)
bpa.pbpa_PixelFormat = PBPAFMT_RGB;
else
bpa.pbpa_PixelFormat = PBPAFMT_RGBA;
bpa.pbpa_PixelArrayMod = large*bits/8;
bpa.pbpa_Left = 0;
bpa.pbpa_Top = 0;
bpa.pbpa_Width = large;
bpa.pbpa_Height = high;
result=MyDoMethodA(dto,(Msg)&bpa);

RGB=T->pixels;
grey=0;
YLOOP(high)
XLOOP(large)
{
grey+=(RGB[0]+RGB[1]+RGB[2]);
RGB+=bits/8;
}
VAR(grey)
if(grey==0)
errorprintf(« Error: picture empty\n »);

FlipBitmap(T->pixels,large,high,bits);
Error:
if (dto) DisposeDTObject(dto);
return(T);
}
/*=================================================================*/


7 sujets de 1 à 7 (sur un total de 7)

Vous devez être connecté pour répondre à ce sujet.

                   
Derniers sujetsFraîcheur
 · A500 – Modifié en stock Retrohax.net il y a 4 heures et 9 minutes
 · MorphOS au quotidien il y a 4 heures et 13 minutes
 · Vendredi 18/10/19 à 21h : 8ème soirée Chat IRC sur #amigaimpact il y a 4 heures et 45 minutes
 · Alchimie treize il y a 7 heures et 32 minutes
 · Skynet ! Le commencement ! il y a 10 heures et 9 minutes
 · [VENDS] APOLLO 1230 turbo MK3 – 68030+68882 40Mhz + 8 Go il y a 11 heures et 9 minutes
 · raspberry pi ami amiga os 4 il y a 11 heures et 14 minutes
 · Goex Drive pour Amiga 1200 il y a 11 heures et 55 minutes
 · L'histoire Amiga de Team 17 il y a 15 heures et 20 minutes
 · [VENDS] Calculatrice HP-48GX il y a 16 heures et 10 minutes





RechercheFraîcheur


Copyright © 2004-2019 Amiga Impact. Tous droits réservés. Les marques citées sont déposées par leurs propriétaires respectifs.
Conditions d'Utilisation, Politique de Confidentialité et Information sur les cookies.


Fil RSS WordPressNicolas Gressard, Conseil et développement informatique

Do NOT follow this link or you will be banned from the site!