Suite à l'excellent tutoriel mis en ligne par Jean-Marc:
http://membres.lycos.fr/jeanmarcn/cvb/cetvb.htm
8-)
Je souhaite fabriquer une dll C++ pour traiter des calculs sur une image
noir et blanc.
Je gère l'image,pour la lecture/ecriture et la partie data du DIB, grâce
à la dll GFLSdk dispo sur www.xnview.com
Au travers d'un DIB pour l'affichage.
C'est à dire que j'utilise le champs data de la structure Gfl_Bitmap
déclarer dans un module public selon la spec de l'auteur de GFL:
'Structure BITMAP
Public Type GFL_BITMAP
Type As Integer
Origin As Integer
Width As Long
Height As Long
BytesPerLine As Long
LinePadding As Integer
BitsPerComponent As Integer
ComponentsPerPixel As Integer
BytesPerPixel As Integer
Xdpi As Integer
Ydpi As Integer
TransparentIndex As Integer
ColorUsed As Long
ColorMap As Long
Data As Long
Comment As Long
MetaData As Long
End Type
Le champ Data de l'image (ou du DIB) étant fournie par la dll lors de la
lecture ou par la reservation d'un espace bitmap au travers d'une
fonction équivalente à createDIBsection, de la dll GFLsdK.
Il s'agit d'un long (pointeur sur le début de la zone mémoire).
Pour le reste j'utilise la fonction (Cf code fin de post)
extGetDIBFromBitmap
Et je gère un DIB.
Ma question est la suivante:
Si je passe à une dll C++ cet entier long et la taille de la zone
mémoire réservée, puis-je dans ma dll C++ "copier" cette zone mémoire
(sans utiliser d'API, je veux rester C++ "pur").
dans une nouvelle structure.
Et puis-je Renvoyer cette structure vers VB
Type ResultDIB
Data as long 'pointeur sur la zone de données
ScanLineWidth as long
Height as long
End type
Et ensuite de faire un CopyMemory de data renvoyé vers le champ data de
la structure Gfl_Bitmap correctement prédimensionnée?
Le but du jeu étant de gérer des opérations complexe et gourmandes en
calcul (rotation d'image, gestion d'une région polygonale associée,
transformations non conformes) et ce pour des images Noir et Blanc donc
opération au niveau du bit, avec un gain de temps qui a déjà été prouvé.
:-)
J'ajoute qu'au niveau C++ mes connaissances sont uniquement littéraire,
j'ai pas encore mis en pratique, mais j'aimerais avoir une vue
d'ensemble des possibilités avant de me lancer.
Pour ceux qui s'interressent à cette question et qui souhaitent utiliser
la Sdk avec VB6, je peux leurs fournir en complément un module de classe
permettant la gestion des images et l'affichage,
qui marche avec un module de gestion des DC de PictureBox Cf post
"Ecrire le long d'une ligne" 12/08/05.
A+
Christophe
*****
Il s'agit du code original de Jérôme Quintard (contact@jeromequintard.com)
Modifier par mes soins, pour la gestion des DIB N&B et 16 couleurs et
X&Y pixelpermeter non nul
Public Function scanalign(pwidth&) As Long
scanalign = (pwidth& + 3) And &HFFFFFFFC
End Function
Public Function byteperscanline(ByVal pwidth&, ByVal bitcount&) As Long
Select Case bitcount&
Case 1
byteperscanline = scanalign((pwidth& + 7) \ 8)
Case 4
byteperscanline = scanalign((pwidth& + 1) \ 2)
Case 8
byteperscanline = scanalign(pwidth&)
Case 24
byteperscanline = scanalign(pwidth& * 3)
Case 32
'byteperscanline
End Select
End Function
Public Function extGetDIBFromBitmap(ByRef BITMAP As GFL_BITMAP) As
BITMAPINFO
Dim DIBInfo As BITMAPINFO
Dim ColorMap As GFL_COLORMAP
Dim Ind As Integer
With DIBInfo.bmiHeader
.biSize = Len(DIBInfo.bmiHeader) 'La taille de la structure
.biWidth = BITMAP.Width 'Largeur du bitmap
.biHeight = BITMAP.Height 'Hauteur du bitmap
.biPlanes = 1 'Nombre de plans
.biCompression = BI_RGB 'Toujours BI_RGB
.biClrImportant = 0 'Toujours 0
If BITMAP.Xdpi = BITMAP.Ydpi Then
If BITMAP.Xdpi <> 0 Then
Select Case BITMAP.Type 'Suivant le type de bitmap
Case GFL_COLORS 'Si GFL_COLORS (une palette de couleurs indexé
de 0 à 255)
extGetGflColorMapFromPtr BITMAP.ColorMap, ColorMap 'On
récupère les index du bitmap dans une structure GflColorMap
For Ind = 0 To 255 'Pour chaque index on indique à la
structure Dib_Info
.bmiColors(Ind).rgbBlue = ColorMap.Blue(Ind) 'La valeur
du bleu
.bmiColors(Ind).rgbGreen = ColorMap.Green(Ind) 'La
valeur du vert
.bmiColors(Ind).rgbRed = ColorMap.Red(Ind) 'La valeur du
rouge
Next Ind
Case GFL_BINARY 'Si GFL_BINARY (seulement noir et blanc donc 2
couleurs indexés) on indique à Dib_Info qu'il y a deux index
.bmiColors(0).rgbBlue = 0: .bmiColors(0).rgbGreen = 0:
.bmiColors(0).rgbRed = 0 'Le premier vaut Red=0,Green=0,Blue=0 donc du
noir (#000000)
.bmiColors(1).rgbBlue = 255: .bmiColors(1).rgbGreen = 255:
.bmiColors(1).rgbRed = 255 'Le second vaut Red=255,Green=255,Blue=255
donc blanc (#FFFFFF)
Case GFL_GREY 'Si GFL_GREY (On travaille sur 256 nuances)
For Ind = 0 To 255 'Pour chaque index de Dib_Info on indique
une nuance de gris
.bmiColors(Ind).rgbBlue = Ind ' Il y a 256 index et 256
gris on donne à chaque index
.bmiColors(Ind).rgbGreen = Ind ' et pour chaque canaux
la valeur de la nuance
.bmiColors(Ind).rgbRed = Ind
Next Ind
End Select
End With
extGetDIBFromBitmap = DIBInfo
End Function
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc
"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de news:43243b6b$0$17225$
Suite à l'excellent tutoriel mis en ligne par Jean-Marc: http://membres.lycos.fr/jeanmarcn/cvb/cetvb.htm 8-)
Je souhaite fabriquer une dll C++ pour traiter des calculs sur une image noir et blanc.
Je gère l'image,pour la lecture/ecriture et la partie data du DIB, grâce à la dll GFLSdk dispo sur www.xnview.com Au travers d'un DIB pour l'affichage.
C'est à dire que j'utilise le champs data de la structure Gfl_Bitmap déclarer dans un module public selon la spec de l'auteur de GFL:
'Structure BITMAP Public Type GFL_BITMAP Type As Integer Origin As Integer Width As Long Height As Long BytesPerLine As Long LinePadding As Integer BitsPerComponent As Integer ComponentsPerPixel As Integer BytesPerPixel As Integer Xdpi As Integer Ydpi As Integer TransparentIndex As Integer ColorUsed As Long ColorMap As Long Data As Long Comment As Long MetaData As Long End Type
Le champ Data de l'image (ou du DIB) étant fournie par la dll lors de la lecture ou par la reservation d'un espace bitmap au travers d'une fonction équivalente à createDIBsection, de la dll GFLsdK. Il s'agit d'un long (pointeur sur le début de la zone mémoire). Pour le reste j'utilise la fonction (Cf code fin de post) extGetDIBFromBitmap Et je gère un DIB.
Ma question est la suivante:
Si je passe à une dll C++ cet entier long et la taille de la zone mémoire réservée, puis-je dans ma dll C++ "copier" cette zone mémoire (sans utiliser d'API, je veux rester C++ "pur"). dans une nouvelle structure. Et puis-je Renvoyer cette structure vers VB
Type ResultDIB
Data as long 'pointeur sur la zone de données ScanLineWidth as long Height as long
End type
Et ensuite de faire un CopyMemory de data renvoyé vers le champ data de la structure Gfl_Bitmap correctement prédimensionnée?
Le but du jeu étant de gérer des opérations complexe et gourmandes en calcul (rotation d'image, gestion d'une région polygonale associée, transformations non conformes) et ce pour des images Noir et Blanc donc opération au niveau du bit, avec un gain de temps qui a déjà été prouvé. :-) J'ajoute qu'au niveau C++ mes connaissances sont uniquement littéraire, j'ai pas encore mis en pratique, mais j'aimerais avoir une vue d'ensemble des possibilités avant de me lancer.
Hello,
Tout d'abord, attention à ne pas confondre C et C++. Ce sont 2 langages totalement différents, le fait qu'ils portent des noms proches étant probablement leur seule ressemblance (avec un air de famille dans la syntaxe).
Mon petit tutorial marche avec C, je ne sais absolument pas si ça marcherait en C++, je n'ai jamais essayé.
Pour revenir au C, je ne vois pas de problèmes pour réaliser ce que tu souhaites, du moins à priori. Il faudrait faire un test de faisabilité pour s'assurer que tout est ok, mais sur le principe, je ne vois pas de difficultés.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de
news:43243b6b$0$17225$8fcfb975@news.wanadoo.fr...
Suite à l'excellent tutoriel mis en ligne par Jean-Marc:
http://membres.lycos.fr/jeanmarcn/cvb/cetvb.htm
8-)
Je souhaite fabriquer une dll C++ pour traiter des calculs sur une image
noir et blanc.
Je gère l'image,pour la lecture/ecriture et la partie data du DIB, grâce
à la dll GFLSdk dispo sur www.xnview.com
Au travers d'un DIB pour l'affichage.
C'est à dire que j'utilise le champs data de la structure Gfl_Bitmap
déclarer dans un module public selon la spec de l'auteur de GFL:
'Structure BITMAP
Public Type GFL_BITMAP
Type As Integer
Origin As Integer
Width As Long
Height As Long
BytesPerLine As Long
LinePadding As Integer
BitsPerComponent As Integer
ComponentsPerPixel As Integer
BytesPerPixel As Integer
Xdpi As Integer
Ydpi As Integer
TransparentIndex As Integer
ColorUsed As Long
ColorMap As Long
Data As Long
Comment As Long
MetaData As Long
End Type
Le champ Data de l'image (ou du DIB) étant fournie par la dll lors de la
lecture ou par la reservation d'un espace bitmap au travers d'une
fonction équivalente à createDIBsection, de la dll GFLsdK.
Il s'agit d'un long (pointeur sur le début de la zone mémoire).
Pour le reste j'utilise la fonction (Cf code fin de post)
extGetDIBFromBitmap
Et je gère un DIB.
Ma question est la suivante:
Si je passe à une dll C++ cet entier long et la taille de la zone
mémoire réservée, puis-je dans ma dll C++ "copier" cette zone mémoire
(sans utiliser d'API, je veux rester C++ "pur").
dans une nouvelle structure.
Et puis-je Renvoyer cette structure vers VB
Type ResultDIB
Data as long 'pointeur sur la zone de données
ScanLineWidth as long
Height as long
End type
Et ensuite de faire un CopyMemory de data renvoyé vers le champ data de
la structure Gfl_Bitmap correctement prédimensionnée?
Le but du jeu étant de gérer des opérations complexe et gourmandes en
calcul (rotation d'image, gestion d'une région polygonale associée,
transformations non conformes) et ce pour des images Noir et Blanc donc
opération au niveau du bit, avec un gain de temps qui a déjà été prouvé.
:-)
J'ajoute qu'au niveau C++ mes connaissances sont uniquement littéraire,
j'ai pas encore mis en pratique, mais j'aimerais avoir une vue
d'ensemble des possibilités avant de me lancer.
Hello,
Tout d'abord, attention à ne pas confondre C et C++. Ce sont 2 langages
totalement différents, le fait qu'ils portent des noms proches étant
probablement leur seule ressemblance (avec un air de famille dans la
syntaxe).
Mon petit tutorial marche avec C, je ne sais absolument pas
si ça marcherait en C++, je n'ai jamais essayé.
Pour revenir au C, je ne vois pas de problèmes pour réaliser ce que tu
souhaites, du moins à priori. Il faudrait faire un test de faisabilité
pour s'assurer que tout est ok, mais sur le principe, je ne vois pas
de difficultés.
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de news:43243b6b$0$17225$
Suite à l'excellent tutoriel mis en ligne par Jean-Marc: http://membres.lycos.fr/jeanmarcn/cvb/cetvb.htm 8-)
Je souhaite fabriquer une dll C++ pour traiter des calculs sur une image noir et blanc.
Je gère l'image,pour la lecture/ecriture et la partie data du DIB, grâce à la dll GFLSdk dispo sur www.xnview.com Au travers d'un DIB pour l'affichage.
C'est à dire que j'utilise le champs data de la structure Gfl_Bitmap déclarer dans un module public selon la spec de l'auteur de GFL:
'Structure BITMAP Public Type GFL_BITMAP Type As Integer Origin As Integer Width As Long Height As Long BytesPerLine As Long LinePadding As Integer BitsPerComponent As Integer ComponentsPerPixel As Integer BytesPerPixel As Integer Xdpi As Integer Ydpi As Integer TransparentIndex As Integer ColorUsed As Long ColorMap As Long Data As Long Comment As Long MetaData As Long End Type
Le champ Data de l'image (ou du DIB) étant fournie par la dll lors de la lecture ou par la reservation d'un espace bitmap au travers d'une fonction équivalente à createDIBsection, de la dll GFLsdK. Il s'agit d'un long (pointeur sur le début de la zone mémoire). Pour le reste j'utilise la fonction (Cf code fin de post) extGetDIBFromBitmap Et je gère un DIB.
Ma question est la suivante:
Si je passe à une dll C++ cet entier long et la taille de la zone mémoire réservée, puis-je dans ma dll C++ "copier" cette zone mémoire (sans utiliser d'API, je veux rester C++ "pur"). dans une nouvelle structure. Et puis-je Renvoyer cette structure vers VB
Type ResultDIB
Data as long 'pointeur sur la zone de données ScanLineWidth as long Height as long
End type
Et ensuite de faire un CopyMemory de data renvoyé vers le champ data de la structure Gfl_Bitmap correctement prédimensionnée?
Le but du jeu étant de gérer des opérations complexe et gourmandes en calcul (rotation d'image, gestion d'une région polygonale associée, transformations non conformes) et ce pour des images Noir et Blanc donc opération au niveau du bit, avec un gain de temps qui a déjà été prouvé. :-) J'ajoute qu'au niveau C++ mes connaissances sont uniquement littéraire, j'ai pas encore mis en pratique, mais j'aimerais avoir une vue d'ensemble des possibilités avant de me lancer.
Hello,
Tout d'abord, attention à ne pas confondre C et C++. Ce sont 2 langages totalement différents, le fait qu'ils portent des noms proches étant probablement leur seule ressemblance (avec un air de famille dans la syntaxe).
Mon petit tutorial marche avec C, je ne sais absolument pas si ça marcherait en C++, je n'ai jamais essayé.
Pour revenir au C, je ne vois pas de problèmes pour réaliser ce que tu souhaites, du moins à priori. Il faudrait faire un test de faisabilité pour s'assurer que tout est ok, mais sur le principe, je ne vois pas de difficultés.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> <title></title> </head> <body bgcolor="#ffffff" text="#000000"> Jean-Marc a écrit : <blockquote cite="mid4324580b$0$343$" type="cite"> <pre wrap="">"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de <a class="moz-txt-link-freetext" href="news:43243b6b$0$17225$">news:43243b6b$0$17225$</a>... </pre> <blockquote type="cite"> <pre wrap="">Suite à l'excellent tutoriel mis en ligne par Jean-Marc: <a class="moz-txt-link-freetext" href="http://membres.lycos.fr/jeanmarcn/cvb/cetvb.htm">http://membres.lycos.fr/jeanmarcn/cvb/cetvb.htm</a> 8-)
Je souhaite fabriquer une dll C++ pour traiter des calculs sur une image noir et blanc.
Je gère l'image,pour la lecture/ecriture et la partie data du DIB, grâce à la dll GFLSdk dispo sur <a class="moz-txt-link-abbreviated" href="http://www.xnview.com">www.xnview.com</a> Au travers d'un DIB pour l'affichage.
C'est à dire que j'utilise le champs data de la structure Gfl_Bitmap déclarer dans un module public selon la spec de l'auteur de GFL:
'Structure BITMAP Public Type GFL_BITMAP Type As Integer Origin As Integer Width As Long Height As Long BytesPerLine As Long LinePadding As Integer BitsPerComponent As Integer ComponentsPerPixel As Integer BytesPerPixel As Integer Xdpi As Integer Ydpi As Integer TransparentIndex As Integer ColorUsed As Long ColorMap As Long Data As Long Comment As Long MetaData As Long End Type
Le champ Data de l'image (ou du DIB) étant fournie par la dll lors de la lecture ou par la reservation d'un espace bitmap au travers d'une fonction équivalente à createDIBsection, de la dll GFLsdK. Il s'agit d'un long (pointeur sur le début de la zone mémoire). Pour le reste j'utilise la fonction (Cf code fin de post) extGetDIBFromBitmap Et je gère un DIB.
Ma question est la suivante:
Si je passe à une dll C++ cet entier long et la taille de la zone mémoire réservée, puis-je dans ma dll C++ "copier" cette zone mémoire (sans utiliser d'API, je veux rester C++ "pur"). dans une nouvelle structure. Et puis-je Renvoyer cette structure vers VB
Type ResultDIB
Data as long 'pointeur sur la zone de données ScanLineWidth as long Height as long
End type
Et ensuite de faire un CopyMemory de data renvoyé vers le champ data de la structure Gfl_Bitmap correctement prédimensionnée?
Le but du jeu étant de gérer des opérations complexe et gourmandes en calcul (rotation d'image, gestion d'une région polygonale associée, transformations non conformes) et ce pour des images Noir et Blanc donc opération au niveau du bit, avec un gain de temps qui a déjà été prouvé. :-) J'ajoute qu'au niveau C++ mes connaissances sont uniquement littéraire, j'ai pas encore mis en pratique, mais j'aimerais avoir une vue d'ensemble des possibilités avant de me lancer. </pre> </blockquote> <pre wrap=""><!---->
Hello,
Tout d'abord, attention à ne pas confondre C et C++. Ce sont 2 langages totalement différents, le fait qu'ils portent des noms proches étant probablement leur seule ressemblance (avec un air de famille dans la syntaxe).
Mon petit tutorial marche avec C, je ne sais absolument pas si ça marcherait en C++, je n'ai jamais essayé.
Pour revenir au C, je ne vois pas de problèmes pour réaliser ce que tu souhaites, du moins à priori. Il faudrait faire un test de faisabilité pour s'assurer que tout est ok, mais sur le principe, je ne vois pas de difficultés.
</pre> </blockquote> <br> Tout d'abord merci.<br> <br> Je ne confond plus C et C++, après relecture attentive du tutoriel et du chapitre 1 de mon bouquin (différence entre C Cansi et C++) <span class="moz-smiley-s7"><span> :- </span></span>.<br> Ton exemple utilises le compilateur C++ et les problèmes de compatibilité principaux résident dans la syntaxe pour la partie commue à C C++.<br> Il est précicé dans mon bouquin que les différences sur les arguments et valeur d'une fonction existent pour les fonctions sans arguments ou sans valeur de retour ce qui ne sera pas mon cas.<br> Pour le reste tant qu'à investir dans un nouveau langage je veux profiter de la POO.<br> Mais je note aussi que pour la partie traitement d'image je n'en ai pas besoin, je m'efforcerai donc d'écrire ces parties avec une syntaxe compatible.<br> Je pense que nous en reparlerons quand je m'y mettrai.<span class="moz-smiley-s13"><span> :-! </span></span><br> <br> En tout cas ton tutoriel et ta réponse m'ouvre des horizons très interressant car la gestion de raster 12000*8000 pixels c'est gourmand !<br> <br> A+<br> <br> Christophe<br> <br> <br> <br> </body> </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Jean-Marc a écrit :
<blockquote cite="mid4324580b$0$343$ba620e4c@news.skynet.be" type="cite">
<pre wrap="">"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de
<a class="moz-txt-link-freetext" href="news:43243b6b$0$17225$8fcfb975@news.wanadoo.fr">news:43243b6b$0$17225$8fcfb975@news.wanadoo.fr</a>...
</pre>
<blockquote type="cite">
<pre wrap="">Suite à l'excellent tutoriel mis en ligne par Jean-Marc:
<a class="moz-txt-link-freetext" href="http://membres.lycos.fr/jeanmarcn/cvb/cetvb.htm">http://membres.lycos.fr/jeanmarcn/cvb/cetvb.htm</a>
8-)
Je souhaite fabriquer une dll C++ pour traiter des calculs sur une image
noir et blanc.
Je gère l'image,pour la lecture/ecriture et la partie data du DIB, grâce
à la dll GFLSdk dispo sur <a class="moz-txt-link-abbreviated" href="http://www.xnview.com">www.xnview.com</a>
Au travers d'un DIB pour l'affichage.
C'est à dire que j'utilise le champs data de la structure Gfl_Bitmap
déclarer dans un module public selon la spec de l'auteur de GFL:
'Structure BITMAP
Public Type GFL_BITMAP
Type As Integer
Origin As Integer
Width As Long
Height As Long
BytesPerLine As Long
LinePadding As Integer
BitsPerComponent As Integer
ComponentsPerPixel As Integer
BytesPerPixel As Integer
Xdpi As Integer
Ydpi As Integer
TransparentIndex As Integer
ColorUsed As Long
ColorMap As Long
Data As Long
Comment As Long
MetaData As Long
End Type
Le champ Data de l'image (ou du DIB) étant fournie par la dll lors de la
lecture ou par la reservation d'un espace bitmap au travers d'une
fonction équivalente à createDIBsection, de la dll GFLsdK.
Il s'agit d'un long (pointeur sur le début de la zone mémoire).
Pour le reste j'utilise la fonction (Cf code fin de post)
extGetDIBFromBitmap
Et je gère un DIB.
Ma question est la suivante:
Si je passe à une dll C++ cet entier long et la taille de la zone
mémoire réservée, puis-je dans ma dll C++ "copier" cette zone mémoire
(sans utiliser d'API, je veux rester C++ "pur").
dans une nouvelle structure.
Et puis-je Renvoyer cette structure vers VB
Type ResultDIB
Data as long 'pointeur sur la zone de données
ScanLineWidth as long
Height as long
End type
Et ensuite de faire un CopyMemory de data renvoyé vers le champ data de
la structure Gfl_Bitmap correctement prédimensionnée?
Le but du jeu étant de gérer des opérations complexe et gourmandes en
calcul (rotation d'image, gestion d'une région polygonale associée,
transformations non conformes) et ce pour des images Noir et Blanc donc
opération au niveau du bit, avec un gain de temps qui a déjà été prouvé.
:-)
J'ajoute qu'au niveau C++ mes connaissances sont uniquement littéraire,
j'ai pas encore mis en pratique, mais j'aimerais avoir une vue
d'ensemble des possibilités avant de me lancer.
</pre>
</blockquote>
<pre wrap=""><!---->
Hello,
Tout d'abord, attention à ne pas confondre C et C++. Ce sont 2 langages
totalement différents, le fait qu'ils portent des noms proches étant
probablement leur seule ressemblance (avec un air de famille dans la
syntaxe).
Mon petit tutorial marche avec C, je ne sais absolument pas
si ça marcherait en C++, je n'ai jamais essayé.
Pour revenir au C, je ne vois pas de problèmes pour réaliser ce que tu
souhaites, du moins à priori. Il faudrait faire un test de faisabilité
pour s'assurer que tout est ok, mais sur le principe, je ne vois pas
de difficultés.
</pre>
</blockquote>
<br>
Tout d'abord merci.<br>
<br>
Je ne confond plus C et C++, après relecture attentive du tutoriel et
du chapitre 1 de mon bouquin (différence entre C Cansi et C++) <span
class="moz-smiley-s7"><span> :- </span></span>.<br>
Ton exemple utilises le compilateur C++ et les problèmes de
compatibilité principaux résident dans la syntaxe pour la partie commue
à C C++.<br>
Il est précicé dans mon bouquin que les différences sur les arguments
et valeur d'une fonction existent pour les fonctions sans arguments ou
sans valeur de retour ce qui ne sera pas mon cas.<br>
Pour le reste tant qu'à investir dans un nouveau langage je veux
profiter de la POO.<br>
Mais je note aussi que pour la partie traitement d'image je n'en ai pas
besoin, je m'efforcerai donc d'écrire ces parties avec une syntaxe
compatible.<br>
Je pense que nous en reparlerons quand je m'y mettrai.<span
class="moz-smiley-s13"><span> :-! </span></span><br>
<br>
En tout cas ton tutoriel et ta réponse m'ouvre des horizons très
interressant car la gestion de raster 12000*8000 pixels c'est gourmand !<br>
<br>
A+<br>
<br>
Christophe<br>
<br>
<br>
<br>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> <title></title> </head> <body bgcolor="#ffffff" text="#000000"> Jean-Marc a écrit : <blockquote cite="mid4324580b$0$343$" type="cite"> <pre wrap="">"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de <a class="moz-txt-link-freetext" href="news:43243b6b$0$17225$">news:43243b6b$0$17225$</a>... </pre> <blockquote type="cite"> <pre wrap="">Suite à l'excellent tutoriel mis en ligne par Jean-Marc: <a class="moz-txt-link-freetext" href="http://membres.lycos.fr/jeanmarcn/cvb/cetvb.htm">http://membres.lycos.fr/jeanmarcn/cvb/cetvb.htm</a> 8-)
Je souhaite fabriquer une dll C++ pour traiter des calculs sur une image noir et blanc.
Je gère l'image,pour la lecture/ecriture et la partie data du DIB, grâce à la dll GFLSdk dispo sur <a class="moz-txt-link-abbreviated" href="http://www.xnview.com">www.xnview.com</a> Au travers d'un DIB pour l'affichage.
C'est à dire que j'utilise le champs data de la structure Gfl_Bitmap déclarer dans un module public selon la spec de l'auteur de GFL:
'Structure BITMAP Public Type GFL_BITMAP Type As Integer Origin As Integer Width As Long Height As Long BytesPerLine As Long LinePadding As Integer BitsPerComponent As Integer ComponentsPerPixel As Integer BytesPerPixel As Integer Xdpi As Integer Ydpi As Integer TransparentIndex As Integer ColorUsed As Long ColorMap As Long Data As Long Comment As Long MetaData As Long End Type
Le champ Data de l'image (ou du DIB) étant fournie par la dll lors de la lecture ou par la reservation d'un espace bitmap au travers d'une fonction équivalente à createDIBsection, de la dll GFLsdK. Il s'agit d'un long (pointeur sur le début de la zone mémoire). Pour le reste j'utilise la fonction (Cf code fin de post) extGetDIBFromBitmap Et je gère un DIB.
Ma question est la suivante:
Si je passe à une dll C++ cet entier long et la taille de la zone mémoire réservée, puis-je dans ma dll C++ "copier" cette zone mémoire (sans utiliser d'API, je veux rester C++ "pur"). dans une nouvelle structure. Et puis-je Renvoyer cette structure vers VB
Type ResultDIB
Data as long 'pointeur sur la zone de données ScanLineWidth as long Height as long
End type
Et ensuite de faire un CopyMemory de data renvoyé vers le champ data de la structure Gfl_Bitmap correctement prédimensionnée?
Le but du jeu étant de gérer des opérations complexe et gourmandes en calcul (rotation d'image, gestion d'une région polygonale associée, transformations non conformes) et ce pour des images Noir et Blanc donc opération au niveau du bit, avec un gain de temps qui a déjà été prouvé. :-) J'ajoute qu'au niveau C++ mes connaissances sont uniquement littéraire, j'ai pas encore mis en pratique, mais j'aimerais avoir une vue d'ensemble des possibilités avant de me lancer. </pre> </blockquote> <pre wrap=""><!---->
Hello,
Tout d'abord, attention à ne pas confondre C et C++. Ce sont 2 langages totalement différents, le fait qu'ils portent des noms proches étant probablement leur seule ressemblance (avec un air de famille dans la syntaxe).
Mon petit tutorial marche avec C, je ne sais absolument pas si ça marcherait en C++, je n'ai jamais essayé.
Pour revenir au C, je ne vois pas de problèmes pour réaliser ce que tu souhaites, du moins à priori. Il faudrait faire un test de faisabilité pour s'assurer que tout est ok, mais sur le principe, je ne vois pas de difficultés.
</pre> </blockquote> <br> Tout d'abord merci.<br> <br> Je ne confond plus C et C++, après relecture attentive du tutoriel et du chapitre 1 de mon bouquin (différence entre C Cansi et C++) <span class="moz-smiley-s7"><span> :- </span></span>.<br> Ton exemple utilises le compilateur C++ et les problèmes de compatibilité principaux résident dans la syntaxe pour la partie commue à C C++.<br> Il est précicé dans mon bouquin que les différences sur les arguments et valeur d'une fonction existent pour les fonctions sans arguments ou sans valeur de retour ce qui ne sera pas mon cas.<br> Pour le reste tant qu'à investir dans un nouveau langage je veux profiter de la POO.<br> Mais je note aussi que pour la partie traitement d'image je n'en ai pas besoin, je m'efforcerai donc d'écrire ces parties avec une syntaxe compatible.<br> Je pense que nous en reparlerons quand je m'y mettrai.<span class="moz-smiley-s13"><span> :-! </span></span><br> <br> En tout cas ton tutoriel et ta réponse m'ouvre des horizons très interressant car la gestion de raster 12000*8000 pixels c'est gourmand !<br> <br> A+<br> <br> Christophe<br> <br> <br> <br> </body> </html>
Jean-Marc
"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de news:432462b2$0$17233$
Je ne confond plus C et C++, après relecture attentive du tutoriel et du
chapitre 1 de mon bouquin
(différence entre C Cansi et C++) :- . Ton exemple utilises le compilateur C++ et les problèmes de compatibilité
principaux résident dans la
syntaxe pour la partie commue à C C++. Il est précicé dans mon bouquin que les différences sur les arguments et
valeur d'une fonction existent pour > les fonctions sans arguments ou sans valeur de retour ce qui ne sera pas mon cas.
Mon exemple utilise le compilateur C, ce qui se fait automatiquement quand on compile un fichier avec l'extension .c. Visual Studio utilise le compilateur C++ si les fichiers portent l'extension .cpp
Pour le reste tant qu'à investir dans un nouveau langage je veux profiter
de la POO.
Mais je note aussi que pour la partie traitement d'image je n'en ai pas
besoin, je m'efforcerai donc
d'écrire ces parties avec une syntaxe compatible.
C'est la chose à faire à mon avis. D'autant qu'il est facile de trouver du code C ultra optimisé pour faire les manips dont tu parles.
Je pense que nous en reparlerons quand je m'y mettrai. :-! En tout cas ton tutoriel et ta réponse m'ouvre des horizons très
interressant car la gestion de raster 12000*8000 pixels c'est gourmand !
Oui c'est sur! Et c'est typiquement pour ce genre de choses que le C est d'une grande efficacité.
En tout cas, bonne prog!
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de
news:432462b2$0$17233$8fcfb975@news.wanadoo.fr...
Je ne confond plus C et C++, après relecture attentive du tutoriel et du
chapitre 1 de mon bouquin
(différence entre C Cansi et C++) :- .
Ton exemple utilises le compilateur C++ et les problèmes de compatibilité
principaux résident dans la
syntaxe pour la partie commue à C C++.
Il est précicé dans mon bouquin que les différences sur les arguments et
valeur d'une fonction existent pour > les fonctions sans arguments ou sans
valeur de retour ce qui ne sera pas mon cas.
Mon exemple utilise le compilateur C, ce qui
se fait automatiquement quand on compile un
fichier avec l'extension .c. Visual Studio
utilise le compilateur C++ si les fichiers
portent l'extension .cpp
Pour le reste tant qu'à investir dans un nouveau langage je veux profiter
de la POO.
Mais je note aussi que pour la partie traitement d'image je n'en ai pas
besoin, je m'efforcerai donc
d'écrire ces parties avec une syntaxe compatible.
C'est la chose à faire à mon avis. D'autant qu'il
est facile de trouver du code C ultra optimisé
pour faire les manips dont tu parles.
Je pense que nous en reparlerons quand je m'y mettrai. :-!
En tout cas ton tutoriel et ta réponse m'ouvre des horizons très
interressant car la gestion de raster 12000*8000 pixels c'est gourmand !
Oui c'est sur! Et c'est typiquement pour ce genre de choses
que le C est d'une grande efficacité.
En tout cas, bonne prog!
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de news:432462b2$0$17233$
Je ne confond plus C et C++, après relecture attentive du tutoriel et du
chapitre 1 de mon bouquin
(différence entre C Cansi et C++) :- . Ton exemple utilises le compilateur C++ et les problèmes de compatibilité
principaux résident dans la
syntaxe pour la partie commue à C C++. Il est précicé dans mon bouquin que les différences sur les arguments et
valeur d'une fonction existent pour > les fonctions sans arguments ou sans valeur de retour ce qui ne sera pas mon cas.
Mon exemple utilise le compilateur C, ce qui se fait automatiquement quand on compile un fichier avec l'extension .c. Visual Studio utilise le compilateur C++ si les fichiers portent l'extension .cpp
Pour le reste tant qu'à investir dans un nouveau langage je veux profiter
de la POO.
Mais je note aussi que pour la partie traitement d'image je n'en ai pas
besoin, je m'efforcerai donc
d'écrire ces parties avec une syntaxe compatible.
C'est la chose à faire à mon avis. D'autant qu'il est facile de trouver du code C ultra optimisé pour faire les manips dont tu parles.
Je pense que nous en reparlerons quand je m'y mettrai. :-! En tout cas ton tutoriel et ta réponse m'ouvre des horizons très
interressant car la gestion de raster 12000*8000 pixels c'est gourmand !
Oui c'est sur! Et c'est typiquement pour ce genre de choses que le C est d'une grande efficacité.
En tout cas, bonne prog!
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;