Page 4 sur 14

Publié : mar. 04/mars/2008 20:41
par Anonyme2
Je n'ai simplement plus pensé à #FIF_PNG que j'avais pourtant utilisé.


Sinon, je ne comprend pas ta phrase

"Par contre, je peux te faire un wrapper pour une librairie d'import pour la DLL LibPNG en tant qu'une librairie statique puisse etre réalisé. Dis moi si cela t'intéresse."

C'est un wrapper pour la dll ou directement une librairie d'après le code C (donc sans la Dll) ?

Publié : mar. 04/mars/2008 20:46
par Progi1984
La différence entre une lib d'import et une lib statique est que la lib d'import a besoin de la DLL. Donc en attendant que la lib statique soit créée, cela permettrait de faire des tests sans qu'il n'y ait de code à changer. Il suffira juste de remplacer la DLL & la lib d'import par la lib statique.

Publié : mar. 04/mars/2008 20:58
par Anonyme2
Ok et allons-y et merci. :D

L'enregistrement du Png fonctionne bien.

A+
Denis

Publié : mer. 05/mars/2008 11:04
par Progi1984
Donc oui ou non pour le wrapper ?

C'est comme tu veux... Par contre, je ne sais pas le temps que ca me prendra...

[EDIT] Je vais ptet faire ton bonheur....
Je viens de trouver une lib statique pour LibPNG.
Ici > http://gnuwin32.sourceforge.net/packages/libpng.htm

Par contre, c'est la version 1.2.24... et la dernière étant la 1.2.25

Donc si ca t'intéresse, je commence à wrapper ce midi les 208 fonctions de LibPNG. Dis moi...

Publié : mer. 05/mars/2008 14:24
par Anonyme2
Oui je suis interessé.

Tu peux utiliser l'outil Lib2PBImport Version 1.2 de Ts-soft pour les imports

ici sur le forum anglais
http://www.purebasic.fr/english/viewtopic.php?t=25353

Merci
A+
Denis

Publié : mer. 05/mars/2008 15:02
par Progi1984
Denis a écrit :Oui je suis interessé.

Tu peux utiliser l'outil Lib2PBImport Version 1.2 de Ts-soft pour les imports

ici sur le forum anglais
http://www.purebasic.fr/english/viewtopic.php?t=25353

Merci
A+
Denis
Oki bah je m'y mets dés demain midi... Je bosse sur mon code tous les midis (1h30)... donc ca avance assez vite.

Pour Lib2PBImport, je l'utilise régulièrement depuis sa sortie donc merci :p

Publié : mer. 05/mars/2008 15:10
par Anonyme2
Je me suis fait un petit outil qui marche comme il peut pour convertir certaines valeurs des fichiers h (constantes et enumération) mais il fonctionne plus ou moins bien mais ça m'aide parfois, des fois ça ne converti rien (j'ai fait ça sans rien connaîte au C)

Voilà le résultats du fichier png.h de l'archive du lien que qu tu a mis, il y a des trucs à revoir ...

Code : Tout sélectionner

#PNG_H = ?
#PNG_LIBPNG_VER_STRING = #"1.2.24"
#PNG_HEADER_VERSION_STRING = #\
#PNG_LIBPNG_VER_SONUM = 0
#PNG_LIBPNG_VER_DLLNUM = 13
#PNG_LIBPNG_VER_MAJOR = 1
#PNG_LIBPNG_VER_MINOR = 2
#PNG_LIBPNG_VER_RELEASE = 24
#PNG_LIBPNG_VER_BUILD = 0
#PNG_LIBPNG_BUILD_ALPHA = 1
#PNG_LIBPNG_BUILD_BETA = 2
#PNG_LIBPNG_BUILD_RC = 3
#PNG_LIBPNG_BUILD_STABLE = 4
#PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK = 7
#PNG_LIBPNG_BUILD_PATCH = 8 ; Can be OR'ed with
#PNG_LIBPNG_BUILD_PRIVATE = 16 ; Cannot be OR'ed with
#PNG_LIBPNG_BUILD_SPECIAL = 32 ; Cannot be OR'ed with
#PNG_LIBPNG_BUILD_BASE_TYPE = #PNG_LIBPNG_BUILD_STABLE
#PNG_LIBPNG_VER = 10224 ; 1.2.24
#ne = #PNG_LIBPNG_BUILD_TYPE \
#fine = #PNG_LIBPNG_BUILD_TYPE \
#int_p_NULL = #Null
#png_bytep_NULL = #Null
#png_bytepp_NULL = #Null
#png_doublep_NULL = #Null
#png_error_ptr_NULL = #Null
#png_flush_ptr_NULL = #Null
#png_free_ptr_NULL = #Null
#png_infopp_NULL = #Null
#png_malloc_ptr_NULL = #Null
#png_read_status_ptr_NULL = #Null
#png_rw_ptr_NULL = #Null
#png_structp_NULL = #Null
#png_uint_16p_NULL = #Null
#png_voidp_NULL = #Null
#png_write_status_ptr_NULL = #Null
#PNG_TEXT_COMPRESSION_NONE_WR = -3
#PNG_TEXT_COMPRESSION_zTXt_WR = -2
#PNG_TEXT_COMPRESSION_NONE = -1
#PNG_TEXT_COMPRESSION_zTXt = 0
#PNG_ITXT_COMPRESSION_NONE = 1
#PNG_ITXT_COMPRESSION_zTXt = 2
#PNG_TEXT_COMPRESSION_LAST = 3  ; Not a valid value
#PNG_CHUNK_NAME_LENGTH = 5
#PNG_MAX_UINT = #PNG_UINT_31_MAX
#PNG_COLOR_MASK_PALETTE = 1
#PNG_COLOR_MASK_COLOR = 2
#PNG_COLOR_MASK_ALPHA = 4
#PNG_COLOR_TYPE_GRAY = 0
#PNG_COLOR_TYPE_RGBA = #PNG_COLOR_TYPE_RGB_ALPHA
#PNG_COLOR_TYPE_GA = #PNG_COLOR_TYPE_GRAY_ALPHA
#PNG_COMPRESSION_TYPE_BASE = 0 ; Deflate method 8  32K window
#PNG_COMPRESSION_TYPE_DEFAULT = #PNG_COMPRESSION_TYPE_BASE
#PNG_FILTER_TYPE_BASE = 0 ; Single row per-byte filtering
#PNG_INTRAPIXEL_DIFFERENCING = 64 ; Used only in MNG datastreams
#PNG_FILTER_TYPE_DEFAULT = #PNG_FILTER_TYPE_BASE
#PNG_INTERLACE_NONE = 0 ; Non-interlaced image
#PNG_INTERLACE_ADAM7 = 1 ; Adam7 interlacing
#PNG_INTERLACE_LAST = 2 ; Not a valid value
#PNG_OFFSET_PIXEL = 0 ; Offset in pixels
#PNG_OFFSET_LAST = 2 ; Not a valid value
#PNG_EQUATION_LINEAR = 0 ; Linear transformation
#PNG_EQUATION_BASE_E = 1 ; Exponential base e transform
#PNG_EQUATION_ARBITRARY = 2 ; Arbitrary base exponential transform
#PNG_EQUATION_HYPERBOLIC = 3 ; Hyperbolic sine transformation
#PNG_EQUATION_LAST = 4 ; Not a valid value
#PNG_SCALE_METER = 1 ; meters per pixel
#PNG_SCALE_RADIAN = 2 ; radians per pixel
#PNG_SCALE_LAST = 3 ; Not a valid value
#PNG_RESOLUTION_METER = 1 ; pixels/meter
#PNG_RESOLUTION_LAST = 2 ; Not a valid value
#PNG_sRGB_INTENT_PERCEPTUAL = 0
#PNG_sRGB_INTENT_RELATIVE = 1
#PNG_sRGB_INTENT_SATURATION = 2
#PNG_sRGB_INTENT_ABSOLUTE = 3
#PNG_sRGB_INTENT_LAST = 4 ; Not a valid value
#PNG_KEYWORD_MAX_LENGTH = 79
#PNG_MAX_PALETTE_LENGTH = 256
#PNG_INFO_gAMA = $0001
#PNG_INFO_sBIT = $0002
#PNG_INFO_cHRM = $0004
#PNG_INFO_PLTE = $0008
#PNG_INFO_tRNS = $0010
#PNG_INFO_bKGD = $0020
#PNG_INFO_hIST = $0040
#PNG_INFO_pHYs = $0080
#PNG_INFO_oFFs = $0100
#PNG_INFO_tIME = $0200
#PNG_INFO_pCAL = $0400
#PNG_INFO_sRGB = $0800   ; GR-P  0.96A
#PNG_INFO_iCCP = $1000   ; ESR  1.0.6
#PNG_INFO_sPLT = $2000   ; ESR  1.0.6
#PNG_INFO_sCAL = $4000   ; ESR  1.0.6
#PNG_INFO_IDAT = $8000L  ; ESR  1.0.6
#PNG_TRANSFORM_IDENTITY = $0000    ; READ AND WRITE
#PNG_TRANSFORM_STRIP_16 = $0001    ; READ ONLY
#PNG_TRANSFORM_STRIP_ALPHA = $0002    ; READ ONLY
#PNG_TRANSFORM_PACKING = $0004    ; READ AND WRITE
#PNG_TRANSFORM_PACKSWAP = $0008    ; READ AND WRITE
#PNG_TRANSFORM_EXPAND = $0010    ; READ ONLY
#PNG_TRANSFORM_INVERT_MONO = $0020    ; READ AND WRITE
#PNG_TRANSFORM_SHIFT = $0040    ; READ AND WRITE
#PNG_TRANSFORM_BGR = $0080    ; READ AND WRITE
#PNG_TRANSFORM_SWAP_ALPHA = $0100    ; READ AND WRITE
#PNG_TRANSFORM_SWAP_ENDIAN = $0200    ; READ AND WRITE
#PNG_TRANSFORM_INVERT_ALPHA = $0400    ; READ AND WRITE
#PNG_TRANSFORM_STRIP_FILLER = $0800    ; WRITE ONLY
#PNG_FLAG_MNG_EMPTY_PLTE = $01
#PNG_FLAG_MNG_FILTER_64 = $04
#PNG_ALL_MNG_FEATURES = $05
#PNG_FILLER_BEFORE = 0
#PNG_FILLER_AFTER = 1
#PNG_BACKGROUND_GAMMA_UNKNOWN = 0
#PNG_BACKGROUND_GAMMA_SCREEN = 1
#PNG_BACKGROUND_GAMMA_FILE = 2
#PNG_BACKGROUND_GAMMA_UNIQUE = 3
#PNG_CRC_DEFAULT = 0  ; error/quit          warn/discard data
#PNG_CRC_ERROR_QUIT = 1  ; error/quit          error/quit
#PNG_CRC_WARN_USE = 3  ; warn/use data       warn/use data
#PNG_CRC_QUIET_USE = 4  ; quiet/use data      quiet/use data
#PNG_CRC_NO_CHANGE = 5  ; use current value   use current value
#PNG_NO_FILTERS = $00
#PNG_FILTER_NONE = $08
#PNG_FILTER_SUB = $10
#PNG_FILTER_UP = $20
#PNG_FILTER_AVG = $40
#PNG_FILTER_PAETH = $80
#PNG_FILTER_VALUE_NONE = 0
#PNG_FILTER_VALUE_SUB = 1
#PNG_FILTER_VALUE_UP = 2
#PNG_FILTER_VALUE_AVG = 3
#PNG_FILTER_VALUE_PAETH = 4
#PNG_FILTER_VALUE_LAST = 5
#PNG_FILTER_HEURISTIC_DEFAULT = 0  ; Currently "UNWEIGHTED"
#PNG_FILTER_HEURISTIC_UNWEIGHTED = 1  ; Used by libpng < 0.95
#PNG_FILTER_HEURISTIC_WEIGHTED = 2  ; Experimental feature
#PNG_FILTER_HEURISTIC_LAST = 3  ; Not a valid value
#ne = #png_malloc_warn png_malloc
#PNG_DESTROY_WILL_FREE_DATA = 1
#PNG_SET_WILL_FREE_DATA = 1
#PNG_USER_WILL_FREE_DATA = 2
#PNG_FREE_HIST = $0008
#PNG_FREE_ICCP = $0010
#PNG_FREE_SPLT = $0020
#PNG_FREE_ROWS = $0040
#PNG_FREE_PCAL = $0080
#PNG_FREE_SCAL = $0100
#PNG_FREE_UNKN = $0200
#PNG_FREE_LIST = $0400
#PNG_FREE_PLTE = $1000
#PNG_FREE_TRNS = $2000
#PNG_FREE_TEXT = $4000
#PNG_FREE_ALL = $7FFF
#PNG_FREE_MUL = $4220 ; PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN
#PNG_DEBUG_FILE = #stderr
#png_debug(l,m) = #\
#png_debug1(l,m,p1) = #\
#png_debug2(l,m,p1,p2) = #\
#png_debug(l, = #m)
#png_debug1(l, = #m  p1)
#png_debug2(l, = #m  p1  p2)
#PNG_HANDLE_CHUNK_AS_DEFAULT = 0
#PNG_HANDLE_CHUNK_NEVER = 1
#PNG_HANDLE_CHUNK_IF_SAFE = 2
#PNG_HANDLE_CHUNK_ALWAYS = 3
#PNG_ASM_FLAG_MMX_SUPPORT_COMPILED = $01  ; NOT USER-SETTABLE
#PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU = $02  ; NOT USER-SETTABLE
#PNG_ASM_FLAG_MMX_READ_COMBINE_ROW = $04
#PNG_ASM_FLAG_MMX_READ_INTERLACE = $08
#PNG_ASM_FLAG_MMX_READ_FILTER_SUB = $10
#PNG_ASM_FLAG_MMX_READ_FILTER_UP = $20
#PNG_ASM_FLAG_MMX_READ_FILTER_AVG = $40
#PNG_ASM_FLAG_MMX_READ_FILTER_PAETH = $80
#PNG_ASM_FLAGS_INITIALIZED = $80000000  ; NOT USER-SETTABLE
#PNG_SELECT_READ = 1
#PNG_SELECT_WRITE = 2
#PNG_HAVE_IHDR = $01
#PNG_HAVE_PLTE = $02
#PNG_HAVE_IDAT = $04
#PNG_AFTER_IDAT = $08 ; HAVE COMPLETE ZLIB DATASTREAM
#PNG_HAVE_IEND = $10
#PNG_HAVE_gAMA = $20
#PNG_HAVE_cHRM = $40
#PNG_HAVE_sRGB = $80
#PNG_HAVE_CHUNK_HEADER = $100
#PNG_WROTE_tIME = $200
#PNG_WROTE_INFO_BEFORE_PLTE = $400
#PNG_BACKGROUND_IS_GRAY = $800
#PNG_HAVE_PNG_SIGNATURE = $1000
#PNG_HAVE_CHUNK_AFTER_IDAT = $2000 ; HAVE ANOTHER CHUNK AFTER IDAT
#PNG_BGR = $0001
#PNG_INTERLACE = $0002
#PNG_PACK = $0004
#PNG_SHIFT = $0008
#PNG_SWAP_BYTES = $0010
#PNG_INVERT_MONO = $0020
#PNG_DITHER = $0040
#PNG_BACKGROUND = $0080
#PNG_BACKGROUND_EXPAND = $0100
#PNG_16_TO_8 = $0400
#PNG_RGBA = $0800
#PNG_EXPAND = $1000
#PNG_GAMMA = $2000
#PNG_GRAY_TO_RGB = $4000
#PNG_FILLER = $8000
#PNG_PACKSWAP = $10000
#PNG_SWAP_ALPHA = $20000
#PNG_STRIP_ALPHA = $40000
#PNG_INVERT_ALPHA = $80000
#PNG_USER_TRANSFORM = $100000
#PNG_RGB_TO_GRAY_ERR = $200000
#PNG_RGB_TO_GRAY_WARN = $400000
#PNG_RGB_TO_GRAY = $600000L  ; TWO BITS  RGB_TO_GRAY_ERR|WARN
#PNG_ADD_ALPHA = $1000000L  ; ADDED TO LIBPNG-1.2.7
#PNG_EXPAND_tRNS = $2000000L  ; ADDED TO LIBPNG-1.2.9
#PNG_STRUCT_PNG = $0001
#PNG_STRUCT_INFO = $0002
#PNG_WEIGHT_SHIFT = 8
#PNG_COST_SHIFT = 3
#PNG_FLAG_ZLIB_CUSTOM_STRATEGY = $0001
#PNG_FLAG_ZLIB_CUSTOM_LEVEL = $0002
#PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL = $0004
#PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS = $0008
#PNG_FLAG_ZLIB_CUSTOM_METHOD = $0010
#PNG_FLAG_ZLIB_FINISHED = $0020
#PNG_FLAG_ROW_INIT = $0040
#PNG_FLAG_FILLER_AFTER = $0080
#PNG_FLAG_CRC_ANCILLARY_USE = $0100
#PNG_FLAG_CRC_ANCILLARY_NOWARN = $0200
#PNG_FLAG_CRC_CRITICAL_USE = $0400
#PNG_FLAG_CRC_CRITICAL_IGNORE = $0800
#PNG_FLAG_FREE_PLTE = $1000
#PNG_FLAG_FREE_TRNS = $2000
#PNG_FLAG_FREE_HIST = $4000
#PNG_FLAG_KEEP_UNKNOWN_CHUNKS = $8000
#PNG_FLAG_KEEP_UNSAFE_CHUNKS = $10000
#PNG_FLAG_LIBRARY_MISMATCH = $20000
#PNG_FLAG_STRIP_ERROR_NUMBERS = $40000
#PNG_FLAG_STRIP_ERROR_TEXT = $80000
#PNG_FLAG_MALLOC_NULL_MEM_OK = $100000
#PNG_FLAG_ADD_ALPHA = $200000L  ; ADDED TO LIBPNG-1.2.8
#PNG_FLAG_STRIP_ALPHA = $400000L  ; ADDED TO LIBPNG-1.2.8
#PNG_ROWBYTES(pixel_bits, = #width) \
#PNG_OUT_OF_RANGE(value, = #ideal  delta) \
#PNG_IHDR = #png_byte png_IHDR[5] = { 73   72   68   82  '\0'}
#PNG_IDAT = #png_byte png_IDAT[5] = { 73   68   65   84  '\0'}
#PNG_IEND = #png_byte png_IEND[5] = { 73   69   78   68  '\0'}
#PNG_PLTE = #png_byte png_PLTE[5] = { 80   76   84   69  '\0'}
#PNG_bKGD = #png_byte png_bKGD[5] = { 98   75   71   68  '\0'}
#PNG_cHRM = #png_byte png_cHRM[5] = { 99   72   82   77  '\0'}
#PNG_gAMA = #png_byte png_gAMA[5] = {103   65   77   65  '\0'}
#PNG_hIST = #png_byte png_hIST[5] = {104   73   83   84  '\0'}
#PNG_iCCP = #png_byte png_iCCP[5] = {105   67   67   80  '\0'}
#PNG_iTXt = #png_byte png_iTXt[5] = {105   84   88  116  '\0'}
#PNG_oFFs = #png_byte png_oFFs[5] = {111   70   70  115  '\0'}
#PNG_pCAL = #png_byte png_pCAL[5] = {112   67   65   76  '\0'}
#PNG_sCAL = #png_byte png_sCAL[5] = {115   67   65   76  '\0'}
#PNG_pHYs = #png_byte png_pHYs[5] = {112   72   89  115  '\0'}
#PNG_sBIT = #png_byte png_sBIT[5] = {115   66   73   84  '\0'}
#PNG_sPLT = #png_byte png_sPLT[5] = {115   80   76   84  '\0'}
#PNG_sRGB = #png_byte png_sRGB[5] = {115   82   71   66  '\0'}
#PNG_tEXt = #png_byte png_tEXt[5] = {116   69   88  116  '\0'}
#PNG_tIME = #png_byte png_tIME[5] = {116   73   77   69  '\0'}
#PNG_tRNS = #png_byte png_tRNS[5] = {116   82   78   83  '\0'}
#PNG_zTXt = #png_byte png_zTXt[5] = {122   84   88  116  '\0'}
et la conversion du fichier pngconf.h ne donne rien d'exploitable (mon convertisseur n'aime pas les #define)

A+
Merci
Denis

Publié : mer. 05/mars/2008 16:03
par Progi1984
Il fait peur ton fichier, je vais regarder de mon coté, mais je pense utiliser une bonne partie. Je m'en occupe en priorité et je te donne une beta pour vendredi... C'est bon ?

Publié : mer. 05/mars/2008 17:23
par Anonyme2
Faut pas avoir peur, c'est qu'une aide qui dégrossie pas mal les choses. Il m'a beaucoup aidé pour retrouver les constantes GDI+
Faudrait que je trouve le temps de le peaufiner mais c'est pas urgent.

Sinon Ok pour le wrapper pour vendredi.

Pour les fonctions unicode comme FreeImage_SaveU, FreeImage_LoadU etc, il faut modifier le wrapper pour chaque fonction comme l'exemple suivant pour utiliser une chaîne unicode même en compilation ASCII, filename.l devient filename.p-unicode et là ça fonctionne en compilation ASCII (j'ai fait un test avec FreeImage_SaveU), sinon la fonction unicode ne fonctionne pas.

Code : Tout sélectionner

  FreeImage_SaveU(fif.l,dib.l,filename.p-unicode,flags.l=0) As "_FreeImage_SaveU@16" ; dib = *ptr.FIBITMAP ; filename = ptrUnicode.s

A+
Denis

Publié : mer. 05/mars/2008 17:29
par Progi1984
Denis a écrit :Faut pas avoir peur, c'est qu'une aide qui dégrossie pas mal les choses. Il m'a beaucoup aidé pour retrouver les constantes GDI+
Faudrait que je trouve le temps de le peaufiner mais c'est pas urgent.

Sinon Ok pour le wrapper pour vendredi.
Ouaip klur, mais le pb c'est que les journées ne durent que 24h :'( :lol:
Denis a écrit : Pour les fonctions unicode comme FreeImage_SaveU, FreeImage_LoadU etc, il faut modifier le wrapper pour chaque fonction comme l'exemple suivant pour utiliser une chaîne unicode même en compilation ASCII, filename.l devient filename.p-unicode et là ça fonctionne en compilation ASCII (j'ai fait un test avec FreeImage_SaveU), sinon la fonction unicode ne fonctionne pas.

Code : Tout sélectionner

  FreeImage_SaveU(fif.l,dib.l,filename.p-unicode,flags.l=0) As "_FreeImage_SaveU@16" ; dib = *ptr.FIBITMAP ; filename = ptrUnicode.s
Prochaine MAJ de FreeImage, je te le mets... mais je finis deux wrappers dont le tien et je le fais :)

Publié : mer. 05/mars/2008 17:38
par Anonyme2
Comment ça les journées n'ont que 24h ?
Tu ne vas pas me dire que tu n'as que 2 bras :mrgreen:

Merci pour ton travail :wink:

A+
Denis

Publié : mer. 05/mars/2008 18:37
par Progi1984
Denis a écrit :Comment ça les journées n'ont que 24h ?
Tu ne vas pas me dire que tu n'as que 2 bras :mrgreen:

Merci pour ton travail :wink:

A+
Denis
Et désolé je n'ai que deux bras... pour l'instant...
De rien.... Je fais ce que je peux pour aider PB...
Donc je te redis vendredi où j'en suis ...

Publié : mer. 05/mars/2008 18:43
par Anonyme2
Merci, y' a pas le feu :D

Denis

Publié : jeu. 06/mars/2008 8:38
par Progi1984
Raté, ce n'est qu'une lib d'import et non une librairie statique :(

Publié : jeu. 06/mars/2008 14:23
par Anonyme2
Ca fait rien, les dll vont aussi bien.

A+
Denis