Je cherche à traduire deux codes C++ en PB. Mais je n'y arrive pas... Vu que ma connaissance du C++ n'est qu'assez rudimentaire.... Mercide votre aide.
Mais je bloque sur différents points :
- sur ce qui semble être des doubles for, mais je n'ai jamais vu ca avant
- BYTE *bits = (BYTE *)FreeImage_GetScanLine(clone, y);... Après cela, on utilise Bits en tableau alors qu'il est déclaré en BYTE.
Quand il y a du C sur msdn, tu as les déclarations tout ça, donc je me repère, mais là il y a des fonctions, que je n'y compris rien.
En gros, il te lit une image octet par octet et puis fait une vérif sur chaque octet lu, mais tu ne mets pas la fonction throw, rien! Donc c'est un peu vague (beaucoup, surtout pour une burne comme moi).
If(FreeImage_GetBPP(clone) = 8)
For y = 0 To FreeImage_GetHeight(clone)-1
*bits = FreeImage_GetScanLine(clone, y)
For x = 0 To FreeImage_GetWidth(clone)-1
If(bits(x) <> 128)
throw(1)
EndIf
Next
Next
EndIf
j'te traduit l'autre dans les 30 mn ...
Dernière modification par tmyke le sam. 06/oct./2007 17:05, modifié 1 fois.
y = -cY
For i = height To 0 step -1
*dst_bits = FreeImage_GetScanLine(dst, i)
x=-cX
For j = width To 0 step -1
d = ((x * x + y * y) * scale) >> 8
dst_bits(j) = sinTab[d & $FF];
x+1
Next
y+1
Next
Mais je bloque sur différents points :
- sur ce qui semble être des doubles for, mais je n'ai jamais vu ca avant
- BYTE *bits = (BYTE *)FreeImage_GetScanLine(clone, y);... Après cela, on utilise Bits en tableau alors qu'il est déclaré en BYTE.
c'est parce que les pointeurs sont assimilés à des tableaux
@tmyke
je pense pas (à vue de nez) que ton code soit bon
Sinon, BYTE *bits signifie que tu déclare un pointeur de type BYTE (unsigned char).
en suite, en C++, tu peux ecrire/lire pour avoir accès au élément de la zone
comme dans un tableau une syntaxe bits[n], ou tu obtiens le n ième élément
de la zone pointé (élément au format BYTE bien sur, équivalent du type .c en
PB).
Par contre, je n'ai pas traduit en PB l'accès au tableau à partir du pointeur, mais Progui sait le faire, donc pas de soucis....
Structure Bytes
b.b[0]
EndStructure
If FreeImage_GetBPP(clone) = 8
For y = 0 To FreeImage_GetHeight(clone) - 1
*bits.Bytes = FreeImage_GetScanLine(clone, y)
For x = 0 To FreeImage_GetWidth(clone) - 1
If bits\b[x] <> 128
throw(1)
EndIf
Next x
Next y
EndIf
Structure Bytes
b.b[0]
EndStructure
y = -cY
For i = height To 0 Step -1
*dst_bits.Bytes = FreeImage_GetScanLine(dst, i)
x = -cX
For j = width To 0 Step -1
d = ((x * x + y * y) * scale) >> 8
*dst_bits\b[j] = sinTab(d & $FF)
x + 1
Next j
y + 1
Next i